annotate lisp/progmodes/idlwave.el @ 108830:0d7ed8742a5f

emulation/cua-base.el: Recognize `right-char', `left-char' as movement commands.
author Juanma Barranquero <lekktu@gmail.com>
date Sun, 30 May 2010 06:44:46 +0200
parents 731a16c5bb20
children 60516122d066
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1 ;; idlwave.el --- IDL editing mode for GNU Emacs
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74587
diff changeset
2
101002
3b3c7e10cd97 Replace last-command-char with last-command-event.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
3 ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106396
diff changeset
4 ;; 2008, 2009, 2010 Free Software Foundation, Inc.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6 ;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
60690
d23604c1b411 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 59246
diff changeset
7 ;; Carsten Dominik <dominik@science.uva.nl>
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8 ;; Chris Chase <chase@att.com>
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9 ;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
10 ;; Version: 6.1_em22
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
11 ;; Keywords: languages
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
12
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
13 ;; This file is part of GNU Emacs.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
14
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92294
diff changeset
15 ;; GNU Emacs is free software: you can redistribute it and/or modify
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
16 ;; it under the terms of the GNU General Public License as published by
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92294
diff changeset
17 ;; the Free Software Foundation, either version 3 of the License, or
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92294
diff changeset
18 ;; (at your option) any later version.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
19
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
20 ;; GNU Emacs is distributed in the hope that it will be useful,
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
21 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
22 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
23 ;; GNU General Public License for more details.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
24
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
25 ;; You should have received a copy of the GNU General Public License
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 92294
diff changeset
26 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
27
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
28 ;;; Commentary:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
29
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
30 ;; IDLWAVE enables feature-rich development and interaction with IDL,
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
31 ;; the Interactive Data Language. It provides a compelling,
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
32 ;; full-featured alternative to the IDLDE development environment
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
33 ;; bundled with IDL.
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
34
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
35 ;; In the remotely distant past, based on pascal.el, though bears
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
36 ;; little resemblance to it now.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
37 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
38 ;; Incorporates many ideas, such as abbrevs, action routines, and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
39 ;; continuation line indenting, from wave.el.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
40 ;; wave.el original written by Lubos Pochman, Precision Visuals, Boulder.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
41 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
42 ;; See the mode description ("C-h m" in idlwave-mode or "C-h f idlwave-mode")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
43 ;; for features, key bindings, and info.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
44 ;; Also, Info format documentation is available with `M-x idlwave-info'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
45 ;;
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
46 ;; New versions of IDLWAVE, documentation, and more information
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
47 ;; available from:
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
48 ;; http://idlwave.org
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
49 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
50 ;; INSTALLATION
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
51 ;; ============
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
52 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
53 ;; Follow the instructions in the INSTALL file of the distribution.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
54 ;; In short, put this file on your load path and add the following
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
55 ;; lines to your .emacs file:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
56 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
57 ;; (autoload 'idlwave-mode "idlwave" "IDLWAVE Mode" t)
27107
7b2b73f13427 Renamed idlwave-*.el into idlw-*.el.
Eli Zaretskii <eliz@gnu.org>
parents: 26956
diff changeset
58 ;; (autoload 'idlwave-shell "idlw-shell" "IDLWAVE Shell" t)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
59 ;; (setq auto-mode-alist (cons '("\\.pro\\'" . idlwave-mode) auto-mode-alist))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
60 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
61 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
62 ;; SOURCE
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
63 ;; ======
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
64 ;;
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
65 ;; The newest version of this file is available from the maintainer's
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
66 ;; Webpage:
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
67 ;;
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
68 ;; http://idlwave.org
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
69 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
70 ;; DOCUMENTATION
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
71 ;; =============
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
72 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
73 ;; IDLWAVE is documented online in info format. A printable version
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
74 ;; of the documentation is available from the maintainers webpage (see
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
75 ;; SOURCE).
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
76 ;;
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
77 ;;
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
78 ;; ACKNOWLEDGMENTS
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
79 ;; ===============
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
80 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
81 ;; Thanks to the following people for their contributions and comments:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
82 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
83 ;; Ulrik Dickow <dickow_at_nbi.dk>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
84 ;; Eric E. Dors <edors_at_lanl.gov>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
85 ;; Stein Vidar H. Haugan <s.v.h.haugan_at_astro.uio.no>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
86 ;; David Huenemoerder <dph_at_space.mit.edu>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
87 ;; Kevin Ivory <Kevin.Ivory_at_linmpi.mpg.de>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
88 ;; Dick Jackson <dick_at_d-jackson.com>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
89 ;; Xuyong Liu <liu_at_stsci.edu>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
90 ;; Simon Marshall <Simon.Marshall_at_esrin.esa.it>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
91 ;; Laurent Mugnier <mugnier_at_onera.fr>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
92 ;; Lubos Pochman <lubos_at_rsinc.com>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
93 ;; Bob Portmann <portmann_at_al.noaa.gov>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
94 ;; Patrick M. Ryan <pat_at_jaameri.gsfc.nasa.gov>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
95 ;; Marty Ryba <ryba_at_ll.mit.edu>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
96 ;; Paul Sorenson <aardvark62_at_msn.com>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
97 ;; Phil Sterne <sterne_at_dublin.llnl.gov>
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
98 ;; Phil Williams <williams_at_irc.chmcc.org>
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
99 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
100 ;; CUSTOMIZATION:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
101 ;; =============
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
102 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
103 ;; IDLWAVE has extensive customize support; to learn about the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
104 ;; variables which control the mode's behavior, use `M-x
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
105 ;; idlwave-customize'.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
106 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
107 ;; You can set your own preferred values with Customize, or with Lisp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
108 ;; code in .emacs. For an example of what to put into .emacs, check
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
109 ;; the TexInfo documentation or see a complete .emacs available at the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
110 ;; website.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
111 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
112 ;; KNOWN PROBLEMS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
113 ;; ==============
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
114 ;;
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
115 ;; IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
116 ;; Numerics, Inc. is growing less and less complete as the two
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
117 ;; languages grow increasingly apart. The mode probably shouldn't
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
118 ;; even have "WAVE" in its title, but it's catchy, and was required
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
119 ;; to avoid conflict with the CORBA idl.el mode. Caveat WAVEor.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
120 ;;
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
121 ;; Moving the point backwards in conjunction with abbrev expansion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
122 ;; does not work as I would like it, but this is a problem with
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
123 ;; emacs abbrev expansion done by the self-insert-command. It ends
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
124 ;; up inserting the character that expanded the abbrev after moving
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
125 ;; point backward, e.g., "\cl" expanded with a space becomes
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
126 ;; "LONG( )" with point before the close paren. This is solved by
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
127 ;; using a temporary function in `post-command-hook' - not pretty,
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
128 ;; but it works.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
129 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
130 ;; Tabs and spaces are treated equally as whitespace when filling a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
131 ;; comment paragraph. To accomplish this, tabs are permanently
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
132 ;; replaced by spaces in the text surrounding the paragraph, which
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
133 ;; may be an undesirable side-effect. Replacing tabs with spaces is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
134 ;; limited to comments only and occurs only when a comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
135 ;; paragraph is filled via `idlwave-fill-paragraph'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
136 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
137 ;; Muti-statement lines (using "&") on block begin and end lines can
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
138 ;; ruin the formatting. For example, multiple end statements on a
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
139 ;; line: endif & endif. Using "&" outside of block begin/end lines
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
140 ;; should be okay.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
141 ;;
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
142 ;; Determining the expression at point for printing and other
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
143 ;; examination commands is somewhat rough: currently only fairly
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
144 ;; simple entities are found. You can always drag-select or examine
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
145 ;; a pre-selected region.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
146 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
147 ;; When forcing completion of method keywords, the initial
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
148 ;; query for a method has multiple entries for some methods. Would
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
149 ;; be too difficult to fix this hardly used case.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
150 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
151
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
152 ;;; Code:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
153
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
154
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
155 (eval-when-compile (require 'cl))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
156 (require 'idlw-help)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
157
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
158 ;; For XEmacs
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
159 (unless (fboundp 'line-beginning-position)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
160 (defalias 'line-beginning-position 'point-at-bol))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
161 (unless (fboundp 'line-end-position)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
162 (defalias 'line-end-position 'point-at-eol))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
163 (unless (fboundp 'char-valid-p)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
164 (defalias 'char-valid-p 'characterp))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
165 (unless (fboundp 'match-string-no-properties)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
166 (defalias 'match-string-no-properties 'match-string))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
167
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
168 (if (not (fboundp 'cancel-timer))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
169 (condition-case nil
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
170 (require 'timer)
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
171 (error nil)))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
172
86503
2c08ad76fc1f * progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85282
diff changeset
173 (declare-function idlwave-shell-get-path-info "idlw-shell")
2c08ad76fc1f * progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85282
diff changeset
174 (declare-function idlwave-shell-temp-file "idlw-shell")
2c08ad76fc1f * progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85282
diff changeset
175 (declare-function idlwave-shell-is-running "idlw-shell")
2c08ad76fc1f * progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85282
diff changeset
176 (declare-function widget-value "wid-edit" (widget))
2c08ad76fc1f * progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85282
diff changeset
177 (declare-function comint-dynamic-complete-filename "comint" ())
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
178
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
179 (defgroup idlwave nil
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
180 "Major mode for editing IDL .pro files."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
181 :tag "IDLWAVE"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
182 :link '(url-link :tag "Home Page"
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
183 "http://idlwave.org")
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
184 :link '(emacs-commentary-link :tag "Commentary in idlw-shell.el"
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
185 "idlw-shell.el")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
186 :link '(emacs-commentary-link :tag "Commentary in idlwave.el" "idlwave.el")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
187 :link '(custom-manual "(idlwave)Top")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
188 :prefix "idlwave"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
189 :group 'languages)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
190
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
191
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
192 ;;; Variables for indentation behavior ---------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
193
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
194 (defgroup idlwave-code-formatting nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
195 "Indentation and formatting options for IDLWAVE mode."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
196 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
197
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
198 (defcustom idlwave-main-block-indent 2
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
199 "*Extra indentation for the main block of code.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
200 That is the block between the FUNCTION/PRO statement and the END
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
201 statement for that program unit."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
202 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
203 :type 'integer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
204
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
205 (defcustom idlwave-block-indent 3
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
206 "*Extra indentation applied to block lines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
207 If you change this, you probably also want to change `idlwave-end-offset'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
208 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
209 :type 'integer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
210
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
211 (defcustom idlwave-end-offset -3
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
212 "*Extra indentation applied to block END lines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
213 A value equal to negative `idlwave-block-indent' will make END lines
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
214 line up with the block BEGIN lines."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
215 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
216 :type 'integer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
217
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
218 (defcustom idlwave-continuation-indent 3
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
219 "*Extra indentation applied to continuation lines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
220 This extra offset applies to the first of a set of continuation lines.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
221 The following lines receive the same indentation as the first."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
222 :group 'idlwave-code-formatting
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
223 :type 'integer)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
224
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
225 (defcustom idlwave-max-extra-continuation-indent 40
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
226 "*Maximum additional indentation for special continuation indent.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
227 Several special indentations are tried to help line up continuation
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
228 lines in routine calls or definitions, other statements with
47125
8eeb03f91048 (idlwave-max-extra-continuation-indent): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 46529
diff changeset
229 parentheses, or assignment statements. This variable specifies a
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
230 maximum amount by which this special indentation can exceed the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
231 standard continuation indentation, otherwise defaulting to a fixed
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
232 offset. Set to 0 to effectively disable all special continuation
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
233 indentation, or to a large number (like 100) to enable it in all
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
234 cases. See also `idlwave-indent-to-open-paren', which can override
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
235 this variable."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
236 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
237 :type 'integer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
238
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
239 (defcustom idlwave-indent-to-open-paren t
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
240 "*Non-nil means, indent continuation lines to innermost open parenthesis.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
241 This indentation occurs even if otherwise disallowed by
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
242 `idlwave-max-extra-continuation-indent'. Matching parens and the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
243 interleaving args are lined up. Example:
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
244
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
245 x = function_a(function_b(function_c( a, b, [1,2,3, $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
246 4,5,6 $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
247 ], $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
248 c, d $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
249 )))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
250
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
251 When this variable is nil, paren alignment may still occur, based on
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
252 the value of `idlwave-max-extra-continuation-indent', which, if zero,
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
253 would yield:
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
254
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
255 x = function_a(function_b(function_c( a, b, [1,2,3, $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
256 4,5,6 $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
257 ], $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
258 c, d $
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
259 )))"
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
260 :group 'idlwave-code-formatting
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
261 :type 'boolean)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
262
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
263 (defcustom idlwave-indent-parens-nested nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
264 "*Non-nil means, indent continuation lines with parens by nesting
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
265 lines at consecutively deeper levels."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
266 :group 'idlwave-code-formatting
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
267 :type 'boolean)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
268
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
269
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
270 (defcustom idlwave-hanging-indent t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
271 "*If set non-nil then comment paragraphs are indented under the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
272 hanging indent given by `idlwave-hang-indent-regexp' match in the first line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
273 of the paragraph."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
274 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
275 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
276
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
277 (defcustom idlwave-hang-indent-regexp "- "
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
278 "*Regular expression matching the position of the hanging indent
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
279 in the first line of a comment paragraph. The size of the indent
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
280 extends to the end of the match for the regular expression."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
281 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
282 :type 'regexp)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
283
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
284 (defcustom idlwave-use-last-hang-indent nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
285 "*If non-nil then use last match on line for `idlwave-indent-regexp'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
286 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
287 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
288
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
289 (defcustom idlwave-fill-comment-line-only t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
290 "*If non-nil then auto fill will only operate on comment lines."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
291 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
292 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
293
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
294 (defcustom idlwave-auto-fill-split-string t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
295 "*If non-nil then auto fill will split strings with the IDL `+' operator.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
296 When the line end falls within a string, string concatenation with the
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
297 '+' operator will be used to distribute a long string over lines.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
298 If nil and a string is split then a terminal beep and warning are issued.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
299
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
300 This variable is ignored when `idlwave-fill-comment-line-only' is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
301 non-nil, since in this case code is not auto-filled."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
302 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
303 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
304
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
305 (defcustom idlwave-split-line-string t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
306 "*If non-nil then `idlwave-split-line' will split strings with `+'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
307 When the splitting point of a line falls inside a string, split the string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
308 using the `+' string concatenation operator. If nil and a string is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
309 split then a terminal beep and warning are issued."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
310 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
311 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
312
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
313 (defcustom idlwave-no-change-comment ";;;"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
314 "*The indentation of a comment that starts with this regular
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
315 expression will not be changed. Note that the indentation of a comment
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
316 at the beginning of a line is never changed."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
317 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
318 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
319
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
320 (defcustom idlwave-begin-line-comment nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
321 "*A comment anchored at the beginning of line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
322 A comment matching this regular expression will not have its
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
323 indentation changed. If nil the default is \"^;\", i.e., any line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
324 beginning with a \";\". Expressions for comments at the beginning of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
325 the line should begin with \"^\"."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
326 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
327 :type '(choice (const :tag "Any line beginning with `;'" nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
328 'regexp))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
329
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
330 (defcustom idlwave-code-comment ";;[^;]"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
331 "*A comment that starts with this regular expression on a line by
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
332 itself is indented as if it is a part of IDL code. As a result if
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
333 the comment is not preceded by whitespace it is unchanged."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
334 :group 'idlwave-code-formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
335 :type 'regexp)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
336
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
337 ;; Comments not matching any of the above will be indented as a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
338 ;; right-margin comment, i.e., to a minimum of `comment-column'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
339
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
340 ;;; Routine Info and Completion ---------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
341
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
342 (defgroup idlwave-routine-info nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
343 "Routine Info options for IDLWAVE mode."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
344 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
345
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
346 (defcustom idlwave-use-library-catalogs t
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
347 "*Non-nil means search the IDL path for library catalog files.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
348
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
349 These files, named .idlwave_catalog, document routine information for
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
350 individual directories and libraries of IDL .pro files. Many popular
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
351 libraries come with catalog files by default, so leaving this on is
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
352 usually a good idea."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
353 :group 'idlwave-routine-info
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
354 :type 'boolean)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
355
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
356 (defcustom idlwave-init-rinfo-when-idle-after 10
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
357 "*Seconds of idle time before routine info is automatically initialized.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
358 Initializing the routine info can take a long time, in particular if a
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
359 large number of library catalogs are involved. When Emacs is idle for
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
360 more than the number of seconds specified by this variable, it starts
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
361 the initialization. The process is split into five steps, in order to
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
362 keep work interruption as short as possible. If one of the steps
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
363 finishes, and no user input has arrived in the mean time, initialization
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
364 proceeds immediately to the next step. A good value for this variable
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
365 is about 1/3 of the time initialization take in your setup. So if you
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
366 have a fast machine and no problems with a slow network connection,
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
367 don't hesitate to set this to 2 seconds. A value of 0 means, don't
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
368 initialize automatically, but instead wait until routine information is
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
369 needed, and initialize then."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
370 :group 'idlwave-routine-info
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
371 :type 'number)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
372
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
373 (defcustom idlwave-scan-all-buffers-for-routine-info t
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
374 "*Non-nil means, scan buffers for IDL programs when updating info.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
375 The scanning is done by the command `idlwave-update-routine-info'.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
376 The following values are allowed:
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
377
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
378 nil Don't scan any buffers.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
379 t Scan all `idlwave-mode' buffers in the current editing session.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
380 current Scan only the current buffer, but no other buffers."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
381 :group 'idlwave-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
382 :type '(choice
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
383 (const :tag "No buffer" nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
384 (const :tag "All buffers" t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
385 (const :tag "Current buffer only" 'current)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
386
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
387 (defcustom idlwave-query-shell-for-routine-info t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
388 "*Non-nil means query the shell for info about compiled routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
389 Querying the shell is useful to get information about compiled modules,
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
390 and it is turned on by default. However, when you have a complete library
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
391 scan, this is not necessary."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
392 :group 'idlwave-routine-info
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
393 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
394
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
395 (defcustom idlwave-auto-routine-info-updates
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
396 '(find-file save-buffer kill-buffer compile-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
397 "*Controls under what circumstances routine info is updated automatically.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
398 Possible values:
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
399 nil Never
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
400 t All available
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
401 \(...) A list of circumstances. Allowed members are:
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
402 find-file Add info for new IDLWAVE buffers.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
403 save-buffer Update buffer info when buffer is saved
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
404 kill-buffer Remove buffer info when buffer gets killed
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
405 compile-buffer Update shell info after `idlwave-shell-save-and...'"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
406 :group 'idlwave-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
407 :type '(choice
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
408 (const :tag "Never" nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
409 (const :tag "As often as possible" t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
410 (set :tag "Checklist" :greedy t
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
411 (const :tag "When visiting a file" find-file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
412 (const :tag "When saving a buffer" save-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
413 (const :tag "After a buffer was killed" kill-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
414 (const :tag "After a buffer was compiled successfully, update shell info" compile-buffer))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
415
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
416 (defcustom idlwave-rinfo-max-source-lines 5
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
417 "*Maximum number of source files displayed in the Routine Info window.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
418 When an integer, it is the maximum number of source files displayed.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
419 A value of t means to show all source files."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
420 :group 'idlwave-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
421 :type 'integer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
422
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
423 (defcustom idlwave-library-path nil
74587
3d9741bb11f1 (idlwave-library-path): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 74456
diff changeset
424 "Library path for Windows and MacOS (OS9). Not needed under UNIX.
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
425 When selecting the directories to scan for IDL user catalog routine
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
426 info, IDLWAVE can, under UNIX, query the shell for the exact search
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
427 path \(the value of !PATH). However, under Windows and MacOS
74587
3d9741bb11f1 (idlwave-library-path): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 74456
diff changeset
428 \(pre-OSX), the IDLWAVE shell does not work. In this case, this
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
429 variable can be set to specify the paths where IDLWAVE can find PRO
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
430 files. The shell will only be asked for a list of paths when this
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
431 variable is nil. The value is a list of directories. A directory
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
432 preceeded by a `+' will be searched recursively. If you set this
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
433 variable on a UNIX system, the shell will not be queried. See also
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
434 `idlwave-system-directory'."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
435 :group 'idlwave-routine-info
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
436 :type '(repeat (directory)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
437
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
438 (defcustom idlwave-system-directory ""
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
439 "The IDL system directory for Windows and MacOS. Not needed under
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
440 UNIX. Set this to the value of the `!DIR' system variable in IDL.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
441 IDLWAVE uses this to find out which of the library routines belong to
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
442 the official system library. All files inside the `lib' subdirectory
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
443 are considered system library files - so don't install private stuff
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
444 in this directory. On UNIX systems, IDLWAVE queries the shell for the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
445 value of `!DIR'. See also `idlwave-library-path'."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
446 :group 'idlwave-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
447 :type 'directory)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
448
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
449 ;; Configuration files
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
450 (defcustom idlwave-config-directory
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
451 (convert-standard-filename "~/.idlwave")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
452 "*Directory for configuration files and user-library catalog."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
453 :group 'idlwave-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
454 :type 'file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
455
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
456 (defvar idlwave-user-catalog-file "idlusercat.el")
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
457 (defvar idlwave-xml-system-rinfo-converted-file "idl_xml_rinfo.el")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
458 (defvar idlwave-path-file "idlpath.el")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
459
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
460 (defvar idlwave-libinfo-file nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
461 "*Obsolete variable, no longer used.")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
462
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
463 (defcustom idlwave-special-lib-alist nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
464 "Alist of regular expressions matching special library directories.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
465 When listing routine source locations, IDLWAVE gives a short hint where
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
466 the file defining the routine is located. By default it lists `SystemLib'
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
467 for routines in the system library `!DIR/lib' and `Library' for anything
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
468 else. This variable can define additional types. The car of each entry
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
469 is a regular expression matching the file name (they normally will match
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
470 on the path). The cdr is the string to be used as identifier. Max 10
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
471 chars are allowed."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
472 :group 'idlwave-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
473 :type '(repeat
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
474 (cons regexp string)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
475
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
476 (defcustom idlwave-auto-write-paths t
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
477 "Write out path (!PATH) and system directory (!DIR) info automatically.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
478 Path info is needed to locate library catalog files. If non-nil,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
479 whenever the path-list changes as a result of shell-query, etc., it is
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
480 written to file. Otherwise, the menu option \"Write Paths\" can be
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
481 used to force a write."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
482 :group 'idlwave-routine-info
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
483 :type 'boolean)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
484
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
485 (defgroup idlwave-completion nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
486 "Completion options for IDLWAVE mode."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
487 :prefix "idlwave"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
488 :group 'idlwave)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
489
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
490 (eval-and-compile
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
491 (defconst idlwave-tmp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
492 '(choice :tag "by applying the function"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
493 (const upcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
494 (const downcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
495 (const capitalize)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
496 (const preserve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
497 (symbol :tag "Other"))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
498
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
499 (defcustom idlwave-completion-case '((routine . upcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
500 (keyword . upcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
501 (class . preserve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
502 (method . preserve))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
503 "Association list setting the case of completed words.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
504
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
505 This variable determines the case (UPPER/lower/Capitalized...) of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
506 words inserted into the buffer by completion. The preferred case can
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
507 be specified separately for routine names, keywords, classes and
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
508 methods.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
509 This alist should therefore have entries for `routine' (normal
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
510 functions and procedures, i.e. non-methods), `keyword', `class', and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
511 `method'. Plausible values are
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
512
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
513 upcase upcase whole word, like `BOX_CURSOR'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
514 downcase downcase whole word, like `read_ppm'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
515 capitalize capitalize each part, like `Widget_Control'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
516 preserve preserve case as is, like `IDLgrView'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
517
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
518 The value can also be any Emacs Lisp function which transforms the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
519 case of characters in a string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
520
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
521 A value of `preserve' means that the case of the completed word is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
522 identical to the way it was written in the definition statement of the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
523 routine. This was implemented to allow for mixed-case completion, in
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
524 particular of object classes and methods.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
525 If a completable word is defined in multiple locations, the meaning of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
526 `preserve' is not unique since the different definitions might be
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
527 cased differently. Therefore IDLWAVE always takes the case of the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
528 *first* definition it encounters during routine info collection and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
529 uses the case derived from it consistently.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
530
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
531 Note that a lowercase-only string in the buffer will always be completed in
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
532 lower case (but see the variable `idlwave-completion-force-default-case').
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
533
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
534 After changing this variable, you need to either restart Emacs or press
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
535 `C-u C-c C-i' to update the internal lists."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
536 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
537 :type `(repeat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
538 (cons (symbol :tag "Derive completion case for")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
539 ,idlwave-tmp)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
540
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
541 (defcustom idlwave-completion-force-default-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
542 "*Non-nil means, completion will always honor `idlwave-completion-case'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
543 When nil, only the completion of a mixed case or upper case string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
544 will honor the default settings in `idlwave-completion-case', while
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
545 the completion of lower case strings will be completed entirely in
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
546 lower case."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
547 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
548 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
549
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
550 (defcustom idlwave-complete-empty-string-as-lower-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
551 "*Non-nil means, the empty string is considered downcase for completion.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
552 The case of what is already in the buffer determines the case of completions.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
553 When this variable is non-nil, the empty string is considered to be downcase.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
554 Completing on the empty string then offers downcase versions of the possible
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
555 completions."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
556 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
557 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
558
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
559 (defvar idlwave-default-completion-case-is-down nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
560 "Obsolete variable. See `idlwave-complete-empty-string-as-lower-case' and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
561 `idlwave-completion-case'.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
562
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
563 (defcustom idlwave-buffer-case-takes-precedence nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
564 "*Non-nil means, the case of tokens in buffers dominates over system stuff.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
565 To make this possible, we need to re-case everything each time we update
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
566 the routine info from the buffers. This is slow.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
567 The default is to consider the case given in the system and library files
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
568 first which makes updating much faster."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
569 :group 'idlwave-completion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
570 :type 'boolean)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
571
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
572 (defcustom idlwave-highlight-help-links-in-completion t
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
573 "*Non-nil means, highlight completions for which system help is available.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
574 Help can then be accessed with mouse-3.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
575 This option is only effective when the online help system is installed."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
576 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
577 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
578
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
579 (defcustom idlwave-support-inheritance t
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
580 "Non-nil means, treat inheritance with completion, online help etc.
47261
863b1f0c98f8 (idlwave-support-inheritance, idlwave-routine-entry-compare): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents: 47125
diff changeset
581 When nil, IDLWAVE only knows about the native methods and tags of a class,
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
582 not about inherited ones."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
583 :group 'idlwave-routine-info
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
584 :type 'boolean)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
585
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
586 (defcustom idlwave-keyword-class-inheritance '("^[gs]etproperty$" "^init$")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
587 "List of regular expressions for class-driven keyword inheritance.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
588 Keyword inheritance is often tied to class inheritance by \"chaining\"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
589 up the class tree. While it cannot be assumed that the presence of an
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
590 _EXTRA or _REF_EXTRA symbol guarantees such chaining will occur, for
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
591 certain methods this assumption is almost always true. The methods
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
592 for which to assume this can be set here."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
593 :group 'idlwave-routine-info
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
594 :type '(repeat (regexp :tag "Match method:")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
595
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
596
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
597 (defcustom idlwave-completion-show-classes 1
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
598 "*Number of classes to show when completing object methods and keywords.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
599 When completing methods or keywords for an object with unknown class,
60925
a9c571ede913 * progmodes/cperl-mode.el, progmodes/idlw-shell.el,
Werner LEMBERG <wl@gnu.org>
parents: 60917
diff changeset
600 the *Completions* buffer will show the valid classes for each completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
601 like this:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
602
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
603 MyMethod <Class1,Class2,Class3>
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
604
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
605 The value of this variable may be nil to inhibit display, or an integer to
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
606 indicate the maximum number of classes to display.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
607
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
608 On XEmacs, a full list of classes will also be placed into a `help-echo'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
609 property on the competion items, so that the list of classes for the current
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
610 item is displayed in the echo area. If the value of this variable is a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
611 negative integer, the `help-echo' property will be suppressed."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
612 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
613 :type '(choice (const :tag "Don't show" nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
614 (integer :tag "Number of classes shown" 1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
615
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
616 (defcustom idlwave-completion-fontify-classes t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
617 "*Non-nil means, fontify the classes in completions buffer.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
618 This makes it easier to distinguish the completion items from the extra
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
619 class info listed. See `idlwave-completion-show-classes'."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
620 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
621 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
622
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
623 (defcustom idlwave-query-class '((method-default . nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
624 (keyword-default . nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
625 "Association list governing specification of object classes for completion.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
626
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
627 When IDLWAVE tries to complete object-oriented methods, it usually
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
628 cannot determine the class of a given object from context. In order
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
629 to provide the user with a correct list of methods or keywords, it
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
630 needs to determine the appropriate class. IDLWAVE has two ways of
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
631 doing this (well, three ways if you count the shell... see
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
632 `idlwave-shell-query-for-class'):
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
633
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
634 1. Combine the items of all available classes which contain this
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
635 method for the purpose of completion. So when completing a method,
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
636 all methods of all known classes are available, and when completing
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
637 a keyword, all keywords allowed for this method in any class are
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
638 shown. This behavior is very much like normal completion and is
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
639 therefore the default. It works much better than one might think -
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
640 only for the INIT, GETPROPERTY and SETPROPERTY the keyword lists
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
641 become uncomfortably long. See also
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
642 `idlwave-completion-show-classes'.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
643
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
644 2. The second possibility is to ask the user on each occasion. To
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
645 make this less interruptive, IDLWAVE can store the class as a text
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
646 property on the object operator `->'. For a given object in the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
647 source code, class selection will then be needed only once
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
648 - for example to complete the method. Keywords to the method can
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
649 then be completed directly, because the class is already known.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
650 You will have to turn on the storage of the selected class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
651 explicitly with the variable `idlwave-store-inquired-class'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
652
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
653 This variable allows you to configure IDLWAVE's method and
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
654 method-keyword completion behavior. Its value is an alist, which
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
655 should contain at least two elements: (method-default . VALUE) and
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
656 \(keyword-default . VALUE), where VALUE is either t or nil. These
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
657 specify if the class should be found during method and keyword
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
658 completion, respectively.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
659
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
660 The alist may have additional entries specifying exceptions from the
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
661 keyword completion rule for specific methods, like INIT or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
662 GETPROPERTY. In order to turn on class specification for the INIT
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
663 method, add an entry (\"INIT\" . t). The method name must be ALL-CAPS."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
664 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
665 :type '(list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
666 (cons (const method-default)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
667 (boolean :tag "Determine class when completing METHODS "))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
668 (cons (const keyword-default)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
669 (boolean :tag "Determine class when completing KEYWORDS "))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
670 (repeat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
671 :tag "Exceptions to defaults"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
672 :inline t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
673 (cons (string :tag "MODULE" :value "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
674 (boolean :tag "Determine class for this method")))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
675
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
676 (defcustom idlwave-store-inquired-class t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
677 "*Non-nil means, store class of a method call as text property on `->'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
678 IDLWAVE sometimes has to ask the user for the class associated with a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
679 particular object method call. This happens during the commands
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
680 `idlwave-routine-info' and `idlwave-complete', depending upon the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
681 value of the variable `idlwave-query-class'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
682
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
683 When you specify a class, this information can be stored as a text
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
684 property on the `->' arrow in the source code, so that during the same
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
685 editing session, IDLWAVE will not have to ask again. When this
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
686 variable is non-nil, IDLWAVE will store and reuse the class information.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
687 The class stored can be checked and removed with `\\[idlwave-routine-info]'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
688 on the arrow.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
689
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
690 The default of this variable is nil, since the result of commands then
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
691 is more predictable. However, if you know what you are doing, it can
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
692 be nice to turn this on.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
693
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
694 An arrow which knows the class will be highlighted with
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
695 `idlwave-class-arrow-face'. The command \\[idlwave-routine-info]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
696 displays (with prefix arg: deletes) the class stored on the arrow
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
697 at point."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
698 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
699 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
700
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
701 (defcustom idlwave-class-arrow-face 'bold
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
702 "*Face to highlight object operator arrows `->' which carry a class property.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
703 When IDLWAVE stores a class name as text property on an object arrow
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
704 \(see variable `idlwave-store-inquired-class', it highlights the arrow
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
705 with this font in order to remind the user that this arrow is special."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
706 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
707 :type 'symbol)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
708
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
709 (defcustom idlwave-resize-routine-help-window t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
710 "*Non-nil means, resize the Routine-info *Help* window to fit the content."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
711 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
712 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
713
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
714 (defcustom idlwave-keyword-completion-adds-equal t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
715 "*Non-nil means, completion automatically adds `=' after completed keywords."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
716 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
717 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
718
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
719 (defcustom idlwave-function-completion-adds-paren t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
720 "*Non-nil means, completion automatically adds `(' after completed function.
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41739
diff changeset
721 nil means, don't add anything.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
722 A value of `2' means, also add the closing parenthesis and position cursor
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
723 between the two."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
724 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
725 :type '(choice (const :tag "Nothing" nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
726 (const :tag "(" t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
727 (const :tag "()" 2)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
728
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
729 (defcustom idlwave-completion-restore-window-configuration t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
730 "*Non-nil means, try to restore the window configuration after completion.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
731 When completion is not unique, Emacs displays a list of completions.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
732 This messes up your window configuration. With this variable set, IDLWAVE
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
733 restores the old configuration after successful completion."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
734 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
735 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
736
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
737 ;;; Variables for abbrev and action behavior -----------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
738
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
739 (defgroup idlwave-abbrev-and-indent-action nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
740 "IDLWAVE performs actions when expanding abbreviations or indenting lines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
741 The variables in this group govern this."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
742 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
743
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
744 (defcustom idlwave-do-actions nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
745 "*Non-nil means performs actions when indenting.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
746 The actions that can be performed are listed in `idlwave-indent-action-table'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
747 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
748 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
749
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
750 (defcustom idlwave-abbrev-start-char "\\"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
751 "*A single character string used to start abbreviations in abbrev mode.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
752 Possible characters to chose from: ~`\%
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
753 or even '?'. '.' is not a good choice because it can make structure
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
754 field names act like abbrevs in certain circumstances.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
755
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
756 Changes to this in `idlwave-mode-hook' will have no effect. Instead a user
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
757 must set it directly using `setq' in the .emacs file before idlwave.el
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
758 is loaded."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
759 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
760 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
761
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
762 (defcustom idlwave-surround-by-blank nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
763 "*Non-nil means, enable `idlwave-surround'.
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
764 If non-nil, `=',`<',`>',`&',`,', `->' are surrounded with spaces by
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
765 `idlwave-surround'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
766 See help for `idlwave-indent-action-table' for symbols using `idlwave-surround'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
767
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
768 Also see the default key bindings for keys using `idlwave-surround'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
769 Keys are bound and made into actions calling `idlwave-surround' with
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
770 `idlwave-action-and-binding'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
771 See help for `idlwave-action-and-binding' for examples.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
772
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
773 Also see help for `idlwave-surround'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
774 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
775 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
776
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
777 (defcustom idlwave-pad-keyword t
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
778 "*Non-nil means pad '=' in keywords (routine calls or defs) like assignment.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
779 Whenever `idlwave-surround' is non-nil then this affects how '=' is
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
780 padded for keywords and for variables. If t, pad the same as for
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
781 assignments. If nil then spaces are removed. With any other value,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
782 spaces are left unchanged."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
783 :group 'idlwave-abbrev-and-indent-action
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
784 :type '(choice
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
785 (const :tag "Pad like assignments" t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
786 (const :tag "Remove space near `='" nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
787 (const :tag "Keep space near `='" 'keep)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
788
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
789 (defcustom idlwave-show-block t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
790 "*Non-nil means point blinks to block beginning for `idlwave-show-begin'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
791 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
792 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
793
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
794 (defcustom idlwave-expand-generic-end nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
795 "*Non-nil means expand generic END to ENDIF/ENDELSE/ENDWHILE etc."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
796 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
797 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
798
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
799 (defcustom idlwave-reindent-end t
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
800 "*Non-nil means re-indent line after END was typed."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
801 :group 'idlwave-abbrev-and-indent-action
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
802 :type 'boolean)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
803
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
804 (defcustom idlwave-abbrev-move t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
805 "*Non-nil means the abbrev hook can move point.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
806 Set to nil by `idlwave-expand-region-abbrevs'. To see the abbrev
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
807 definitions, use the command `list-abbrevs', for abbrevs that move
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
808 point. Moving point is useful, for example, to place point between
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
809 parentheses of expanded functions.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
810
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
811 See `idlwave-check-abbrev'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
812 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
813 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
814
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
815 (defcustom idlwave-abbrev-change-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
816 "*Non-nil means all abbrevs will be forced to either upper or lower case.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
817 If the value t, all expanded abbrevs will be upper case.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
818 If the value is 'down then abbrevs will be forced to lower case.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
819 If nil, the case will not change.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
820 If `idlwave-reserved-word-upcase' is non-nil, reserved words will always be
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
821 upper case, regardless of this variable."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
822 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
823 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
824
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
825 (defcustom idlwave-reserved-word-upcase nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
826 "*Non-nil means, reserved words will be made upper case via abbrev expansion.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
827 If nil case of reserved words is controlled by `idlwave-abbrev-change-case'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
828 Has effect only if in abbrev-mode."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
829 :group 'idlwave-abbrev-and-indent-action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
830 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
831
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
832 ;;; Action/Expand Tables.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
833 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
834 ;; The average user may have difficulty modifying this directly. It
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
835 ;; can be modified/set in idlwave-mode-hook, but it is easier to use
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
836 ;; idlwave-action-and-binding. See help for idlwave-action-and-binding for
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
837 ;; examples of how to add an action.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
838 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
839 ;; The action table is used by `idlwave-indent-line' whereas both the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
840 ;; action and expand tables are used by `idlwave-indent-and-action'. In
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
841 ;; general, the expand table is only used when a line is explicitly
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
842 ;; indented. Whereas, in addition to being used when the expand table
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
843 ;; is used, the action table is used when a line is indirectly
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
844 ;; indented via line splitting, auto-filling or a new line creation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
845 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
846 ;; Example actions:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
847 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
848 ;; Capitalize system vars
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
849 ;; (idlwave-action-and-binding idlwave-sysvar '(capitalize-word 1) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
850 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
851 ;; Capitalize procedure name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
852 ;; (idlwave-action-and-binding "\\<\\(pro\\|function\\)\\>[ \t]*\\<"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
853 ;; '(capitalize-word 1) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
854 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
855 ;; Capitalize common block name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
856 ;; (idlwave-action-and-binding "\\<common\\>[ \t]+\\<"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
857 ;; '(capitalize-word 1) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
858 ;; Capitalize label
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
859 ;; (idlwave-action-and-binding (concat "^[ \t]*" idlwave-label)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
860 ;; '(capitalize-word -1) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
861
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
862 (defvar idlwave-indent-action-table nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
863 "*Associated array containing action lists of search string (car),
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
864 and function as a cdr. This table is used by `idlwave-indent-line'.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
865 See documentation for `idlwave-do-action' for a complete description of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
866 the action lists.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
867
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
868 Additions to the table are made with `idlwave-action-and-binding' when a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
869 binding is not requested.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
870 See help on `idlwave-action-and-binding' for examples.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
871
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
872 (defvar idlwave-indent-expand-table nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
873 "*Associated array containing action lists of search string (car),
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
874 and function as a cdr. The table is used by the
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
875 `idlwave-indent-and-action' function. See documentation for
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
876 `idlwave-do-action' for a complete description of the action lists.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
877
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
878 Additions to the table are made with `idlwave-action-and-binding' when a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
879 binding is requested.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
880 See help on `idlwave-action-and-binding' for examples.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
881
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
882 ;;; Documentation header and history keyword ---------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
883
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
884 (defgroup idlwave-documentation nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
885 "Options for documenting IDLWAVE files."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
886 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
887
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
888 ;; FIXME: make defcustom?
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
889 (defvar idlwave-file-header
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
890 (list nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
891 ";+
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
892 ; NAME:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
893 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
894 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
895 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
896 ; PURPOSE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
897 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
898 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
899 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
900 ; CATEGORY:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
901 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
902 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
903 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
904 ; CALLING SEQUENCE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
905 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
906 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
907 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
908 ; INPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
909 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
910 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
911 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
912 ; OPTIONAL INPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
913 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
914 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
915 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
916 ; KEYWORD PARAMETERS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
917 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
918 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
919 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
920 ; OUTPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
921 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
922 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
923 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
924 ; OPTIONAL OUTPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
925 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
926 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
927 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
928 ; COMMON BLOCKS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
929 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
930 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
931 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
932 ; SIDE EFFECTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
933 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
934 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
935 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
936 ; RESTRICTIONS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
937 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
938 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
939 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
940 ; PROCEDURE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
941 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
942 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
943 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
944 ; EXAMPLE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
945 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
946 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
947 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
948 ; MODIFICATION HISTORY:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
949 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
950 ;-
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
951 ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
952 "*A list (PATHNAME STRING) specifying the doc-header template to use for
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
953 summarizing a file. If PATHNAME is non-nil then this file will be included.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
954 Otherwise STRING is used. If nil, the file summary will be omitted.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
955 For example you might set PATHNAME to the path for the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
956 lib_template.pro file included in the IDL distribution.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
957
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
958 (defcustom idlwave-header-to-beginning-of-file t
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
959 "*Non-nil means, the documentation header will always be at start of file.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
960 When nil, the header is positioned between the PRO/FUNCTION line of
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
961 the current routine and the code, allowing several routine headers in
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
962 a file."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
963 :group 'idlwave-documentation
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
964 :type 'boolean)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
965
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
966 (defcustom idlwave-timestamp-hook 'idlwave-default-insert-timestamp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
967 "*The hook function used to update the timestamp of a function."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
968 :group 'idlwave-documentation
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
969 :type 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
970
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
971 (defcustom idlwave-doc-modifications-keyword "HISTORY"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
972 "*The modifications keyword to use with the log documentation commands.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
973 A ':' is added to the keyword end.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
974 Inserted by doc-header and used to position logs by doc-modification.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
975 If nil it will not be inserted."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
976 :group 'idlwave-documentation
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
977 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
978
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
979 (defcustom idlwave-doclib-start "^;+\\+"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
980 "*Regexp matching the start of a document library header."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
981 :group 'idlwave-documentation
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
982 :type 'regexp)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
983
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
984 (defcustom idlwave-doclib-end "^;+-"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
985 "*Regexp matching the end of a document library header."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
986 :group 'idlwave-documentation
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
987 :type 'regexp)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
988
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
989 ;;; External Programs -------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
990
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
991 (defgroup idlwave-external-programs nil
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
992 "Path locations of external commands used by IDLWAVE."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
993 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
994
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
995 (defcustom idlwave-shell-explicit-file-name "idl"
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
996 "*If non-nil, this is the command to run IDL.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
997 Should be an absolute file path or path relative to the current environment
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
998 execution search path. If you want to specify command line switches
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
999 for the IDL program, use `idlwave-shell-command-line-options'.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1000
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1001 I know the name of this variable is badly chosen, but I cannot change
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1002 it without compromising backwards-compatibility."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1003 :group 'idlwave-external-programs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1004 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1005
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1006 (defcustom idlwave-shell-command-line-options nil
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1007 "*A list of command line options for calling the IDL program.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1008 Since IDL is executed directly without going through a shell like /bin/sh,
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1009 this should be a list of strings like '(\"-rt=file\" \"-nw\") with a separate
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1010 string for each argument. But you may also give a single string which
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1011 contains the options whitespace-separated. Emacs will be kind enough to
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1012 split it for you."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1013 :type '(choice
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1014 string
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1015 (repeat (string :value "")))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1016 :group 'idlwave-external-programs)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1017
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1018 (defcustom idlwave-help-application "idlhelp"
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1019 "*The external application providing reference help for programming.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1020 Obsolete, if the IDL Assistant is being used for help."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1021 :group 'idlwave-external-programs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1022 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1023
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1024 ;;; Some Shell variables which must be defined here.-----------------------
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1025
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1026 (defcustom idlwave-shell-debug-modifiers '()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1027 "List of modifiers to be used for the debugging commands.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1028 Will be used to bind debugging commands in the shell buffer and in all
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1029 source buffers. These are additional convenience bindings, the debugging
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1030 commands are always available with the `C-c C-d' prefix.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1031 If you set this to '(control shift), this means setting a breakpoint will
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1032 be on `C-S-b', compiling a source file on `C-S-c' etc. Possible modifiers
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1033 are `control', `meta', `super', `hyper', `alt', and `shift'."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1034 :group 'idlwave-shell-general-setup
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1035 :type '(set :tag "Specify modifiers"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1036 (const control)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1037 (const meta)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1038 (const super)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1039 (const hyper)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1040 (const alt)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1041 (const shift)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1042
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1043 (defcustom idlwave-shell-automatic-start nil
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1044 "*If non-nil attempt invoke `idlwave-shell' if not already running.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1045 This is checked when an attempt to send a command to an
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1046 IDL process is made."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1047 :group 'idlwave-shell-general-setup
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1048 :type 'boolean)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1049
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1050 ;;; Miscellaneous variables -------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1051
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1052 (defgroup idlwave-misc nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1053 "Miscellaneous options for IDLWAVE mode."
66963
a11fdee52c05 Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 65584
diff changeset
1054 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1055 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1056
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1057 (defcustom idlwave-startup-message t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1058 "*Non-nil displays a startup message when `idlwave-mode' is first called."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1059 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1060 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1061
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1062 (defcustom idlwave-default-font-lock-items
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1063 '(pros-and-functions batch-files idlwave-idl-keywords label goto
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1064 common-blocks class-arrows)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1065 "Items which should be fontified on the default fontification level 2.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1066 IDLWAVE defines 3 levels of fontification. Level 1 is very little, level 3
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1067 is everything and level 2 is specified by this list.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1068 This variable must be set before IDLWAVE gets loaded.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1069 It is a list of symbols; the following symbols are allowed:
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1070
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1071 pros-and-functions Procedure and Function definitions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1072 batch-files Batch Files
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1073 idlwave-idl-keywords IDL Keywords
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1074 label Statement Labels
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1075 goto Goto Statements
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1076 common-blocks Common Blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1077 keyword-parameters Keyword Parameters in routine definitions and calls
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1078 system-variables System Variables
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1079 fixme FIXME: Warning in comments (on XEmacs only v. 21.0 and up)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1080 class-arrows Object Arrows with class property"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1081 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1082 :type '(set
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1083 :inline t :greedy t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1084 (const :tag "Procedure and Function definitions" pros-and-functions)
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1085 (const :tag "Batch Files" batch-files)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1086 (const :tag "IDL Keywords (reserved words)" idlwave-idl-keywords)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1087 (const :tag "Statement Labels" label)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1088 (const :tag "Goto Statements" goto)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1089 (const :tag "Tags in Structure Definition" structtag)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1090 (const :tag "Structure Name" structname)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1091 (const :tag "Common Blocks" common-blocks)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1092 (const :tag "Keyword Parameters" keyword-parameters)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1093 (const :tag "System Variables" system-variables)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1094 (const :tag "FIXME: Warning" fixme)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1095 (const :tag "Object Arrows with class property " class-arrows)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1096
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1097 (defcustom idlwave-mode-hook nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1098 "Normal hook. Executed when a buffer is put into `idlwave-mode'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1099 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1100 :type 'hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1101
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1102 (defcustom idlwave-load-hook nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1103 "Normal hook. Executed when idlwave.el is loaded."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1104 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1105 :type 'hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1106
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1107 (defvar idlwave-experimental nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1108 "Non-nil means turn on a few experimental features.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1109 This variable is only for the maintainer, to test difficult stuff,
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1110 while still distributing stable releases.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1111 As a user, you should not set this to t.")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1112
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1113 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1114 ;;; End customization variables section
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1115 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1116
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1117 ;;; Non customization variables
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1118
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1119 ;;; font-lock mode - Additions by Phil Williams, Ulrik Dickow and
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1120 ;;; Simon Marshall <simon_at_gnu.ai.mit.edu>
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1121 ;;; and Carsten Dominik...
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1122
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1123 ;; The following are the reserved words in IDL. Maybe we should
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1124 ;; highlight some more stuff as well?
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1125 ;; Procedure declarations. Fontify keyword plus procedure name.
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1126 (defvar idlwave-idl-keywords
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1127 ;; To update this regexp, update the list of keywords and
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1128 ;; evaluate the form.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1129 ;; (insert
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1130 ;; (prin1-to-string
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1131 ;; (concat
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1132 ;; "\\<\\("
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1133 ;; (regexp-opt
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1134 ;; '("||" "&&" "and" "or" "xor" "not"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1135 ;; "eq" "ge" "gt" "le" "lt" "ne"
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1136 ;; "for" "do" "endfor"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1137 ;; "if" "then" "endif" "else" "endelse"
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1138 ;; "case" "of" "endcase"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1139 ;; "switch" "break" "continue" "endswitch"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1140 ;; "begin" "end"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1141 ;; "repeat" "until" "endrep"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1142 ;; "while" "endwhile"
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1143 ;; "goto" "return"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1144 ;; "inherits" "mod"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1145 ;; "compile_opt" "forward_function"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1146 ;; "on_error" "on_ioerror")) ; on_error is not officially reserved
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1147 ;; "\\)\\>")))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1148 "\\<\\(&&\\|and\\|b\\(egin\\|reak\\)\\|c\\(ase\\|o\\(mpile_opt\\|ntinue\\)\\)\\|do\\|e\\(lse\\|nd\\(case\\|else\\|for\\|if\\|rep\\|switch\\|while\\)?\\|q\\)\\|for\\(ward_function\\)?\\|g\\(oto\\|[et]\\)\\|i\\(f\\|nherits\\)\\|l[et]\\|mod\\|n\\(e\\|ot\\)\\|o\\(n_\\(error\\|ioerror\\)\\|[fr]\\)\\|re\\(peat\\|turn\\)\\|switch\\|then\\|until\\|while\\|xor\\|||\\)\\>")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1149
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1150
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1151 (let* (;; Procedure declarations. Fontify keyword plus procedure name.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1152 ;; Function declarations. Fontify keyword plus function name.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1153 (pros-and-functions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1154 '("\\<\\(function\\|pro\\)\\>[ \t]+\\(\\sw+\\(::\\sw+\\)?\\)"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1155 (1 font-lock-keyword-face)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1156 (2 font-lock-function-name-face nil t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1157
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1158 ;; Common blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1159 (common-blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1160 '("\\<\\(common\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*,?"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1161 (1 font-lock-keyword-face) ; "common"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1162 (2 font-lock-reference-face nil t) ; block name
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1163 ("[ \t]*\\(\\sw+\\)[ ,]*"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1164 ;; Start with point after block name and comma
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1165 (goto-char (match-end 0)) ; needed for XEmacs, could be nil
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1166 nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1167 (1 font-lock-variable-name-face) ; variable names
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1168 )))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1169
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1170 ;; Batch files
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1171 (batch-files
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1172 '("^[ \t]*\\(@[^ \t\n]+\\)" (1 font-lock-string-face)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1173
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1174 ;; FIXME warning.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1175 (fixme
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1176 '("\\<FIXME:" (0 font-lock-warning-face t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1177
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1178 ;; Labels
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1179 (label
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1180 '("^[ \t]*\\([a-zA-Z]\\sw*:\\)" (1 font-lock-reference-face)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1181
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1182 ;; The goto statement and its label
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1183 (goto
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1184 '("\\(goto\\)[ \t]*,[ \t]*\\([a-zA-Z]\\sw*\\)"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1185 (1 font-lock-keyword-face)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1186 (2 font-lock-reference-face)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1187
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1188 ;; Tags in structure definitions. Note that this definition
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1189 ;; actually collides with labels, so we have to use the same
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1190 ;; face. It also matches named subscript ranges,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1191 ;; e.g. vec{bottom:top]. No good way around this.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1192 (structtag
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1193 '("\\<\\([a-zA-Z][a-zA-Z0-9_]*:\\)[^:]" (1 font-lock-reference-face)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1194
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1195 ;; Structure names
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1196 (structname
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1197 '("\\({\\|\\<inherits\\s-\\)\\s-*\\([a-zA-Z][a-zA-Z0-9_]*\\)[},\t \n]"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1198 (2 font-lock-function-name-face)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1199
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1200 ;; Keyword parameters, like /xlog or ,xrange=[]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1201 ;; This is anchored to the comma preceeding the keyword.
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1202 ;; Treats continuation lines, works only during whole buffer
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1203 ;; fontification. Slow, use it only in fancy fontification.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1204 (keyword-parameters
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1205 '("\\(,\\|[a-zA-Z0-9_](\\)[ \t]*\\(\\$[ \t]*\\(;.*\\)?\n\\([ \t]*\\(;.*\\)?\n\\)*[ \t]*\\)?\\(/[a-zA-Z_]\\sw*\\|[a-zA-Z_]\\sw*[ \t]*=\\)"
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1206 (6 font-lock-reference-face)))
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1207
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1208 ;; System variables start with a bang.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1209 (system-variables
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1210 '("\\(![a-zA-Z_0-9]+\\(\\.\\sw+\\)?\\)"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1211 (1 font-lock-variable-name-face)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1212
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1213 ;; Special and unusual operators (not used because too noisy)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1214 ;; (special-operators
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1215 ;; '("[<>#]" (0 font-lock-keyword-face)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1216
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1217 ;; All operators (not used because too noisy)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1218 ;; (all-operators
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1219 ;; '("[-*^#+<>/]" (0 font-lock-keyword-face)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1220
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1221 ;; Arrows with text property `idlwave-class'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1222 (class-arrows
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1223 '(idlwave-match-class-arrows (0 idlwave-class-arrow-face))))
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1224
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1225 (defconst idlwave-font-lock-keywords-1
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1226 (list pros-and-functions batch-files)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1227 "Subdued level highlighting for IDLWAVE mode.")
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1228
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1229 (defconst idlwave-font-lock-keywords-2
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1230 (mapcar 'symbol-value idlwave-default-font-lock-items)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1231 "Medium level highlighting for IDLWAVE mode.")
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1232
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1233 (defconst idlwave-font-lock-keywords-3
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1234 (list pros-and-functions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1235 batch-files
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1236 idlwave-idl-keywords
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1237 label goto
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1238 structtag
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1239 structname
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1240 common-blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1241 keyword-parameters
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1242 system-variables
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1243 class-arrows)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1244 "Gaudy level highlighting for IDLWAVE mode."))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1245
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1246 (defun idlwave-match-class-arrows (limit)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1247 ;; Match an object arrow with class property
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1248 (and idlwave-store-inquired-class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1249 (re-search-forward "->" limit 'limit)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1250 (get-text-property (match-beginning 0) 'idlwave-class)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1251
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1252 (defvar idlwave-font-lock-keywords idlwave-font-lock-keywords-2
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1253 "Default expressions to highlight in IDLWAVE mode.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1254
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1255 (defvar idlwave-font-lock-defaults
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1256 '((idlwave-font-lock-keywords
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1257 idlwave-font-lock-keywords-1
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1258 idlwave-font-lock-keywords-2
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1259 idlwave-font-lock-keywords-3)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1260 nil t
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1261 ((?$ . "w") (?_ . "w") (?. . "w") (?| . "w") (?& . "w"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1262 beginning-of-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1263
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1264 (put 'idlwave-mode 'font-lock-defaults
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1265 idlwave-font-lock-defaults) ; XEmacs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1266
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1267 (defconst idlwave-comment-line-start-skip "^[ \t]*;"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1268 "Regexp to match the start of a full-line comment.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1269 That is the _beginning_ of a line containing a comment delimiter `;' preceded
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1270 only by whitespace.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1271
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1272 (defconst idlwave-begin-block-reg
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1273 "\\<\\(pro\\|function\\|begin\\|case\\|switch\\)\\>"
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1274 "Regular expression to find the beginning of a block.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1275 The case does not matter. The search skips matches in comments.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1276
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1277 (defconst idlwave-begin-unit-reg "^\\s-*\\(pro\\|function\\)\\>\\|\\`"
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1278 "Regular expression to find the beginning of a unit.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1279 The case does not matter.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1280
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1281 (defconst idlwave-end-unit-reg "^\\s-*\\(pro\\|function\\)\\>\\|\\'"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1282 "Regular expression to find the line that indicates the end of unit.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1283 This line is the end of buffer or the start of another unit.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1284 The case does not matter. The search skips matches in comments.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1285
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1286 (defconst idlwave-continue-line-reg "\\<\\$"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1287 "Regular expression to match a continued line.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1288
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1289 (defconst idlwave-end-block-reg
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1290 "\\<end\\(\\|case\\|switch\\|else\\|for\\|if\\|rep\\|while\\)\\>"
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1291 "Regular expression to find the end of a block.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1292 The case does not matter. The search skips matches in comments.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1293
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1294 (defconst idlwave-block-matches
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1295 '(("pro" . "end")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1296 ("function" . "end")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1297 ("case" . "endcase")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1298 ("else" . "endelse")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1299 ("for" . "endfor")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1300 ("then" . "endif")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1301 ("repeat" . "endrep")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1302 ("switch" . "endswitch")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1303 ("while" . "endwhile"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1304 "Matches between statements and the corresponding END variant.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1305 The cars are the reserved words starting a block. If the block really
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1306 begins with BEGIN, the cars are the reserved words before the begin
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1307 which can be used to identify the block type.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1308 This is used to check for the correct END type, to close blocks and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1309 to expand generic end statements to their detailed form.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1310
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1311 (defconst idlwave-block-match-regexp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1312 "\\<\\(else\\|for\\|then\\|repeat\\|while\\)\\>"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1313 "Regular expression matching reserved words which can stand before
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1314 blocks starting with a BEGIN statement. The matches must have associations
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1315 `idlwave-block-matches'.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1316
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1317 (defconst idlwave-identifier "[a-zA-Z_][a-zA-Z0-9$_]*"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1318 "Regular expression matching an IDL identifier.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1319
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1320 (defconst idlwave-sysvar (concat "!" idlwave-identifier)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1321 "Regular expression matching IDL system variables.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1322
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1323 (defconst idlwave-variable (concat idlwave-identifier "\\|" idlwave-sysvar)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1324 "Regular expression matching IDL variable names.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1325
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1326 (defconst idlwave-label (concat idlwave-identifier ":")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1327 "Regular expression matching IDL labels.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1328
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1329 (defconst idlwave-method-call (concat idlwave-identifier "\\s *->"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1330 "\\(\\s *" idlwave-identifier "::\\)?"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1331 ))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1332
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1333 (defconst idlwave-statement-match
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1334 (list
45318
b80d723ad7cc Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 43351
diff changeset
1335 ;; "endif else" is the only possible "end" that can be
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1336 ;; followed by a statement on the same line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1337 '(endelse . ("end\\(\\|if\\)\\s +else" "end\\(\\|if\\)\\s +else"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1338 ;; all other "end"s can not be followed by a statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1339 (cons 'end (list idlwave-end-block-reg nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1340 '(if . ("if\\>" "then"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1341 '(for . ("for\\>" "do"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1342 '(begin . ("begin\\>" nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1343 '(pdef . ("pro\\>\\|function\\>" nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1344 '(while . ("while\\>" "do"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1345 '(repeat . ("repeat\\>" "repeat"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1346 '(goto . ("goto\\>" nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1347 '(case . ("case\\>" nil))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1348 '(switch . ("switch\\>" nil))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1349 (cons 'call (list (concat "\\(" idlwave-variable "\\) *= *"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1350 "\\(" idlwave-method-call "\\s *\\)?"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1351 idlwave-identifier
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1352 "\\s *(") nil))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1353 (cons 'call (list (concat
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1354 "\\(" idlwave-method-call "\\s *\\)?"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1355 idlwave-identifier
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1356 "\\( *\\($\\|\\$\\)\\|\\s *,\\)") nil))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1357 (cons 'assign (list (concat
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1358 "\\(" idlwave-variable "\\) *=") nil)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1359
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1360 "Associated list of statement matching regular expressions.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1361 Each regular expression matches the start of an IDL statement.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1362 The first element of each association is a symbol giving the statement
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1363 type. The associated value is a list. The first element of this list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1364 is a regular expression matching the start of an IDL statement for
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1365 identifying the statement type. The second element of this list is a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1366 regular expression for finding a substatement for the type. The
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1367 substatement starts after the end of the found match modulo
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1368 whitespace. If it is nil then the statement has no substatement. The
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1369 list order matters since matching an assignment statement exactly is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1370 not possible without parsing. Thus assignment statement become just
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1371 the leftover unidentified statements containing an equal sign.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1372
108241
731a16c5bb20 Use define-minor-mode for less obvious cases.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106837
diff changeset
1373 ;; FIXME: This var seems to only ever be set, but never actually used!
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1374 (defvar idlwave-fill-function 'auto-fill-function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1375 "IDL mode auto fill function.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1376
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1377 (defvar idlwave-comment-indent-function 'comment-indent-function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1378 "IDL mode comment indent function.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1379
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1380 ;; Note that this is documented in the v18 manuals as being a string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1381 ;; of length one rather than a single character.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1382 ;; The code in this file accepts either format for compatibility.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1383 (defvar idlwave-comment-indent-char ?\
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1384 "Character to be inserted for IDL comment indentation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1385 Normally a space.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1386
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1387 (defconst idlwave-continuation-char ?$
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1388 "Character which is inserted as a last character on previous line by
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1389 \\[idlwave-split-line] to begin a continuation line. Normally $.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1390
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
1391 (defconst idlwave-mode-version "6.1_em22")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1392
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1393 (defmacro idlwave-keyword-abbrev (&rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1394 "Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args."
41608
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 38436
diff changeset
1395 `(quote (lambda ()
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1396 ,(append '(idlwave-check-abbrev) args))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1397
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1398 ;; If I take the time I can replace idlwave-keyword-abbrev with
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1399 ;; idlwave-code-abbrev and remove the quoted abbrev check from
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1400 ;; idlwave-check-abbrev. Then, e.g, (idlwave-keyword-abbrev 0 t) becomes
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1401 ;; (idlwave-code-abbrev idlwave-check-abbrev 0 t). In fact I should change
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1402 ;; the name of idlwave-check-abbrev to something like idlwave-modify-abbrev.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1403
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1404 (defmacro idlwave-code-abbrev (&rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1405 "Creates a function for abbrev hooks that ensures abbrevs are not quoted.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1406 Specifically, if the abbrev is in a comment or string it is unexpanded.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1407 Otherwise ARGS forms a list that is evaluated."
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1408 ;; FIXME: it would probably be better to rely on the new :enable-function
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1409 ;; to enforce the "don't expand in comments or strings".
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1410 `(lambda ()
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1411 ,(prin1-to-string args) ;; Puts the code in the doc string
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1412 (if (idlwave-quoted)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1413 (progn (unexpand-abbrev) nil)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1414 ,(append args))))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1415
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1416 (autoload 'idlwave-shell "idlw-shell"
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1417 "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'." t)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1418 (autoload 'idlwave-shell-send-command "idlw-shell")
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1419 (autoload 'idlwave-shell-recenter-shell-window "idlw-shell"
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1420 "Run `idlwave-shell' and switch back to current window" t)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1421 (autoload 'idlwave-shell-save-and-run "idlw-shell"
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1422 "Save and run buffer under the shell." t)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1423 (autoload 'idlwave-shell-break-here "idlw-shell"
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1424 "Set breakpoint in current line." t)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1425 (autoload 'idlwave-shell-run-region "idlw-shell"
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1426 "Compile and run the region." t)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1427
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1428 (fset 'idlwave-debug-map (make-sparse-keymap))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1429
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1430 (defvar idlwave-mode-map
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1431 (let ((map (make-sparse-keymap)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1432 (define-key map "\C-c " 'idlwave-hard-tab)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1433 (define-key map [(control tab)] 'idlwave-hard-tab)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1434 ;;(define-key map "\C-c\C- " 'idlwave-hard-tab)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1435 (define-key map "'" 'idlwave-show-matching-quote)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1436 (define-key map "\"" 'idlwave-show-matching-quote)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1437 (define-key map "\C-g" 'idlwave-keyboard-quit)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1438 (define-key map "\C-c;" 'idlwave-toggle-comment-region)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1439 (define-key map "\C-\M-a" 'idlwave-beginning-of-subprogram)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1440 (define-key map "\C-\M-e" 'idlwave-end-of-subprogram)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1441 (define-key map "\C-c{" 'idlwave-beginning-of-block)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1442 (define-key map "\C-c}" 'idlwave-end-of-block)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1443 (define-key map "\C-c]" 'idlwave-close-block)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1444 (define-key map [(meta control h)] 'idlwave-mark-subprogram)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1445 (define-key map "\M-\C-n" 'idlwave-forward-block)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1446 (define-key map "\M-\C-p" 'idlwave-backward-block)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1447 (define-key map "\M-\C-d" 'idlwave-down-block)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1448 (define-key map "\M-\C-u" 'idlwave-backward-up-block)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1449 (define-key map "\M-\r" 'idlwave-split-line)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1450 (define-key map "\M-\C-q" 'idlwave-indent-subprogram)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1451 (define-key map "\C-c\C-p" 'idlwave-previous-statement)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1452 (define-key map "\C-c\C-n" 'idlwave-next-statement)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1453 ;; (define-key map "\r" 'idlwave-newline)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1454 ;; (define-key map "\t" 'idlwave-indent-line)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1455 (define-key map [(shift iso-lefttab)] 'idlwave-indent-statement)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1456 (define-key map "\C-c\C-a" 'idlwave-auto-fill-mode)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1457 (define-key map "\M-q" 'idlwave-fill-paragraph)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1458 (define-key map "\M-s" 'idlwave-edit-in-idlde)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1459 (define-key map "\C-c\C-h" 'idlwave-doc-header)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1460 (define-key map "\C-c\C-m" 'idlwave-doc-modification)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1461 (define-key map "\C-c\C-c" 'idlwave-case)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1462 (define-key map "\C-c\C-d" 'idlwave-debug-map)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1463 (when (and (listp idlwave-shell-debug-modifiers)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1464 (not (equal idlwave-shell-debug-modifiers '())))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1465 ;; Bind the debug commands also with the special modifiers.
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1466 (let ((shift (memq 'shift idlwave-shell-debug-modifiers))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1467 (mods-noshift
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1468 (delq 'shift (copy-sequence idlwave-shell-debug-modifiers))))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1469 (define-key map
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1470 (vector (append mods-noshift (list (if shift ?C ?c))))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1471 'idlwave-shell-save-and-run)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1472 (define-key map
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1473 (vector (append mods-noshift (list (if shift ?B ?b))))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1474 'idlwave-shell-break-here)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1475 (define-key map
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1476 (vector (append mods-noshift (list (if shift ?E ?e))))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1477 'idlwave-shell-run-region)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1478 (define-key map "\C-c\C-d\C-c" 'idlwave-shell-save-and-run)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1479 (define-key map "\C-c\C-d\C-b" 'idlwave-shell-break-here)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1480 (define-key map "\C-c\C-d\C-e" 'idlwave-shell-run-region)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1481 (define-key map "\C-c\C-f" 'idlwave-for)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1482 ;; (define-key map "\C-c\C-f" 'idlwave-function)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1483 ;; (define-key map "\C-c\C-p" 'idlwave-procedure)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1484 (define-key map "\C-c\C-r" 'idlwave-repeat)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1485 (define-key map "\C-c\C-w" 'idlwave-while)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1486 (define-key map "\C-c\C-k" 'idlwave-kill-autoloaded-buffers)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1487 (define-key map "\C-c\C-s" 'idlwave-shell)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1488 (define-key map "\C-c\C-l" 'idlwave-shell-recenter-shell-window)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1489 (define-key map "\C-c\C-b" 'idlwave-list-buffer-load-path-shadows)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1490 (define-key map "\C-c\C-v" 'idlwave-find-module)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1491 (define-key map "\C-c\C-t" 'idlwave-find-module-this-file)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1492 (define-key map "\C-c?" 'idlwave-routine-info)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1493 (define-key map "\M-?" 'idlwave-context-help)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1494 (define-key map [(control meta ?\?)]
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1495 'idlwave-help-assistant-help-with-topic)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1496 ;; Pickup both forms of Esc/Meta binding
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1497 (define-key map [(meta tab)] 'idlwave-complete)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1498 (define-key map [?\e?\t] 'idlwave-complete)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1499 (define-key map "\M-\C-i" 'idlwave-complete)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1500 (define-key map "\C-c\C-i" 'idlwave-update-routine-info)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1501 (define-key map "\C-c=" 'idlwave-resolve)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1502 (define-key map
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1503 (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)])
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1504 'idlwave-mouse-context-help)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1505 map)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1506 "Keymap used in IDL mode.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1507
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1508 (defvar idlwave-mode-syntax-table
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1509 (let ((st (make-syntax-table)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1510 (modify-syntax-entry ?+ "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1511 (modify-syntax-entry ?- "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1512 (modify-syntax-entry ?* "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1513 (modify-syntax-entry ?/ "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1514 (modify-syntax-entry ?^ "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1515 (modify-syntax-entry ?# "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1516 (modify-syntax-entry ?= "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1517 (modify-syntax-entry ?% "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1518 (modify-syntax-entry ?< "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1519 (modify-syntax-entry ?> "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1520 (modify-syntax-entry ?\' "\"" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1521 (modify-syntax-entry ?\" "\"" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1522 (modify-syntax-entry ?\\ "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1523 (modify-syntax-entry ?_ "_" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1524 (modify-syntax-entry ?{ "(}" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1525 (modify-syntax-entry ?} "){" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1526 (modify-syntax-entry ?$ "_" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1527 (modify-syntax-entry ?. "." st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1528 (modify-syntax-entry ?\; "<" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1529 (modify-syntax-entry ?\n ">" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1530 (modify-syntax-entry ?\f ">" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1531 st)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1532 "Syntax table in use in `idlwave-mode' buffers.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1533
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1534 (defvar idlwave-find-symbol-syntax-table
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1535 (let ((st (copy-syntax-table idlwave-mode-syntax-table)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1536 (modify-syntax-entry ?$ "w" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1537 (modify-syntax-entry ?_ "w" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1538 (modify-syntax-entry ?! "w" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1539 (modify-syntax-entry ?. "w" st)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1540 st)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1541 "Syntax table that treats symbol characters as word characters.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1542
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1543 (defmacro idlwave-with-special-syntax (&rest body)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1544 "Execute BODY with a different syntax table."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1545 `(let ((saved-syntax (syntax-table)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1546 (unwind-protect
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1547 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1548 (set-syntax-table idlwave-find-symbol-syntax-table)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1549 ,@body)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1550 (set-syntax-table saved-syntax))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1551
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1552 ;(defmacro idlwave-with-special-syntax1 (&rest body)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1553 ; "Execute BODY with a different syntax table."
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1554 ; `(let ((saved-syntax (syntax-table)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1555 ; (unwind-protect
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1556 ; (progn
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1557 ; (set-syntax-table idlwave-find-symbol-syntax-table)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1558 ; ,@body)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1559 ; (set-syntax-table saved-syntax))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1560
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1561 (defun idlwave-action-and-binding (key cmd &optional select)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1562 "KEY and CMD are made into a key binding and an indent action.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1563 KEY is a string - same as for the `define-key' function. CMD is a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1564 function of no arguments or a list to be evaluated. CMD is bound to
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1565 KEY in `idlwave-mode-map' by defining an anonymous function calling
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1566 `self-insert-command' followed by CMD. If KEY contains more than one
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1567 character a binding will only be set if SELECT is 'both.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1568
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1569 \(KEY . CMD\) is also placed in the `idlwave-indent-expand-table',
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1570 replacing any previous value for KEY. If a binding is not set then it
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1571 will instead be placed in `idlwave-indent-action-table'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1572
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1573 If the optional argument SELECT is nil then an action and binding are
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1574 created. If SELECT is 'noaction, then a binding is always set and no
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1575 action is created. If SELECT is 'both then an action and binding
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1576 will both be created even if KEY contains more than one character.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1577 Otherwise, if SELECT is non-nil then only an action is created.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1578
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1579 Some examples:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1580 No spaces before and 1 after a comma
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1581 (idlwave-action-and-binding \",\" '(idlwave-surround 0 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1582 A minimum of 1 space before and after `=' (see `idlwave-expand-equal').
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1583 (idlwave-action-and-binding \"=\" '(idlwave-expand-equal -1 -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1584 Capitalize system variables - action only
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1585 (idlwave-action-and-binding idlwave-sysvar '(capitalize-word 1) t)"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1586 (if (not (equal select 'noaction))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1587 ;; Add action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1588 (let* ((table (if select 'idlwave-indent-action-table
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1589 'idlwave-indent-expand-table))
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1590 (table-key (regexp-quote key))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1591 (cell (assoc table-key (eval table))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1592 (if cell
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1593 ;; Replace action command
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1594 (setcdr cell cmd)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1595 ;; New action
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1596 (set table (append (eval table) (list (cons table-key cmd)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1597 ;; Make key binding for action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1598 (if (or (and (null select) (= (length key) 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1599 (equal select 'noaction)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1600 (equal select 'both))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1601 (define-key idlwave-mode-map key
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1602 `(lambda ()
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1603 (interactive)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1604 (self-insert-command 1)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
1605 ,@(if (listp cmd) cmd (list cmd))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1606
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1607 ;; Set action and key bindings.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1608 ;; See description of the function `idlwave-action-and-binding'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1609 ;; Automatically add spaces for the following characters
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1610
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1611 ;; Actions for & are complicated by &&
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1612 (idlwave-action-and-binding "&" 'idlwave-custom-ampersand-surround)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1613
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1614 ;; Automatically add spaces to equal sign if not keyword. This needs
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1615 ;; to go ahead of > and <, so >= and <= will be treated correctly
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1616 (idlwave-action-and-binding "=" '(idlwave-expand-equal -1 -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1617
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1618 ;; Actions for > and < are complicated by >=, <=, and ->...
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1619 (idlwave-action-and-binding "<" '(idlwave-custom-ltgtr-surround nil))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1620 (idlwave-action-and-binding ">" '(idlwave-custom-ltgtr-surround 'gtr))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1621
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1622 (idlwave-action-and-binding "," '(idlwave-surround 0 -1 1))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1623
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1624
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1625 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1626 ;;; Abbrev Section
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1627 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1628 ;;; When expanding abbrevs and the abbrev hook moves backward, an extra
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1629 ;;; space is inserted (this is the space typed by the user to expanded
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1630 ;;; the abbrev).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1631 ;;;
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1632 (defvar idlwave-mode-abbrev-table nil
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1633 "Abbreviation table used for IDLWAVE mode.")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1634 (define-abbrev-table 'idlwave-mode-abbrev-table ())
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1635
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1636 (defun idlwave-define-abbrev (name expansion hook &optional noprefix table)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1637 "Define-abbrev with backward compatibility.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1638
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1639 If NOPREFIX is non-nil, don't prepend prefix character. Installs into
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1640 `idlwave-mode-abbrev-table' unless TABLE is non-nil."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1641 (let ((abbrevs-changed nil) ;; mask the current value to avoid save
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1642 (args (list (or table idlwave-mode-abbrev-table)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1643 (if noprefix name (concat idlwave-abbrev-start-char name))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1644 expansion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1645 hook)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1646 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1647 (apply 'define-abbrev (append args '(0 t)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1648 (error (apply 'define-abbrev args)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1649
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1650 (condition-case nil
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1651 (modify-syntax-entry (string-to-char idlwave-abbrev-start-char)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1652 "w" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1653 (error nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1654
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1655 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1656 ;; Templates
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1657 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1658 (idlwave-define-abbrev "c" "" (idlwave-code-abbrev idlwave-case))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1659 (idlwave-define-abbrev "sw" "" (idlwave-code-abbrev idlwave-switch))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1660 (idlwave-define-abbrev "f" "" (idlwave-code-abbrev idlwave-for))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1661 (idlwave-define-abbrev "fu" "" (idlwave-code-abbrev idlwave-function))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1662 (idlwave-define-abbrev "pr" "" (idlwave-code-abbrev idlwave-procedure))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1663 (idlwave-define-abbrev "r" "" (idlwave-code-abbrev idlwave-repeat))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1664 (idlwave-define-abbrev "w" "" (idlwave-code-abbrev idlwave-while))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1665 (idlwave-define-abbrev "i" "" (idlwave-code-abbrev idlwave-if))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1666 (idlwave-define-abbrev "elif" "" (idlwave-code-abbrev idlwave-elif))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1667 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1668 ;; Keywords, system functions, conversion routines
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1669 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1670 (idlwave-define-abbrev "ap" "arg_present()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1671 (idlwave-define-abbrev "b" "begin" (idlwave-keyword-abbrev 0 t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1672 (idlwave-define-abbrev "co" "common" (idlwave-keyword-abbrev 0 t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1673 (idlwave-define-abbrev "cb" "byte()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1674 (idlwave-define-abbrev "cx" "fix()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1675 (idlwave-define-abbrev "cl" "long()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1676 (idlwave-define-abbrev "cf" "float()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1677 (idlwave-define-abbrev "cs" "string()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1678 (idlwave-define-abbrev "cc" "complex()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1679 (idlwave-define-abbrev "cd" "double()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1680 (idlwave-define-abbrev "e" "else" (idlwave-keyword-abbrev 0 t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1681 (idlwave-define-abbrev "ec" "endcase" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1682 (idlwave-define-abbrev "es" "endswitch" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1683 (idlwave-define-abbrev "ee" "endelse" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1684 (idlwave-define-abbrev "ef" "endfor" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1685 (idlwave-define-abbrev "ei" "endif else if" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1686 (idlwave-define-abbrev "el" "endif else" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1687 (idlwave-define-abbrev "en" "endif" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1688 (idlwave-define-abbrev "er" "endrep" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1689 (idlwave-define-abbrev "ew" "endwhile" 'idlwave-show-begin)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1690 (idlwave-define-abbrev "g" "goto," (idlwave-keyword-abbrev 0 t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1691 (idlwave-define-abbrev "h" "help," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1692 (idlwave-define-abbrev "k" "keyword_set()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1693 (idlwave-define-abbrev "n" "n_elements()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1694 (idlwave-define-abbrev "on" "on_error," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1695 (idlwave-define-abbrev "oi" "on_ioerror," (idlwave-keyword-abbrev 0 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1696 (idlwave-define-abbrev "ow" "openw," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1697 (idlwave-define-abbrev "or" "openr," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1698 (idlwave-define-abbrev "ou" "openu," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1699 (idlwave-define-abbrev "p" "print," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1700 (idlwave-define-abbrev "pt" "plot," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1701 (idlwave-define-abbrev "re" "read," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1702 (idlwave-define-abbrev "rf" "readf," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1703 (idlwave-define-abbrev "ru" "readu," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1704 (idlwave-define-abbrev "rt" "return" (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1705 (idlwave-define-abbrev "sc" "strcompress()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1706 (idlwave-define-abbrev "sn" "strlen()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1707 (idlwave-define-abbrev "sl" "strlowcase()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1708 (idlwave-define-abbrev "su" "strupcase()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1709 (idlwave-define-abbrev "sm" "strmid()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1710 (idlwave-define-abbrev "sp" "strpos()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1711 (idlwave-define-abbrev "st" "strput()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1712 (idlwave-define-abbrev "sr" "strtrim()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1713 (idlwave-define-abbrev "t" "then" (idlwave-keyword-abbrev 0 t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1714 (idlwave-define-abbrev "u" "until" (idlwave-keyword-abbrev 0 t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1715 (idlwave-define-abbrev "wu" "writeu," (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1716 (idlwave-define-abbrev "iap" "if arg_present() then" (idlwave-keyword-abbrev 6))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1717 (idlwave-define-abbrev "ik" "if keyword_set() then" (idlwave-keyword-abbrev 6))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1718 (idlwave-define-abbrev "ine" "if n_elements() eq 0 then" (idlwave-keyword-abbrev 11))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1719 (idlwave-define-abbrev "inn" "if n_elements() ne 0 then" (idlwave-keyword-abbrev 11))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1720 (idlwave-define-abbrev "np" "n_params()" (idlwave-keyword-abbrev 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1721 (idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1722 (idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1723 (idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0))
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1724 (idlwave-define-abbrev "pv" "ptr_valid()" (idlwave-keyword-abbrev 1))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1725 (idlwave-define-abbrev "ipv" "if ptr_valid() then" (idlwave-keyword-abbrev 6))
63427
6cec4d429edd idlwave-complete-class-structure-tag-help): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 62772
diff changeset
1726
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1727 ;; This section is reserved words only. (From IDL user manual)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1728 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1729 (idlwave-define-abbrev "and" "and" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1730 (idlwave-define-abbrev "begin" "begin" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1731 (idlwave-define-abbrev "break" "break" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1732 (idlwave-define-abbrev "case" "case" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1733 (idlwave-define-abbrev "common" "common" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1734 (idlwave-define-abbrev "continue" "continue" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1735 (idlwave-define-abbrev "do" "do" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1736 (idlwave-define-abbrev "else" "else" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1737 (idlwave-define-abbrev "end" "end" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1738 (idlwave-define-abbrev "endcase" "endcase" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1739 (idlwave-define-abbrev "endelse" "endelse" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1740 (idlwave-define-abbrev "endfor" "endfor" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1741 (idlwave-define-abbrev "endif" "endif" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1742 (idlwave-define-abbrev "endrep" "endrep" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1743 (idlwave-define-abbrev "endswitch" "endswitch" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1744 (idlwave-define-abbrev "endwhi" "endwhi" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1745 (idlwave-define-abbrev "endwhile" "endwhile" 'idlwave-show-begin-check t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1746 (idlwave-define-abbrev "eq" "eq" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1747 (idlwave-define-abbrev "for" "for" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1748 (idlwave-define-abbrev "function" "function" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1749 (idlwave-define-abbrev "ge" "ge" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1750 (idlwave-define-abbrev "goto" "goto" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1751 (idlwave-define-abbrev "gt" "gt" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1752 (idlwave-define-abbrev "if" "if" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1753 (idlwave-define-abbrev "le" "le" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1754 (idlwave-define-abbrev "lt" "lt" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1755 (idlwave-define-abbrev "mod" "mod" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1756 (idlwave-define-abbrev "ne" "ne" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1757 (idlwave-define-abbrev "not" "not" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1758 (idlwave-define-abbrev "of" "of" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1759 (idlwave-define-abbrev "on_ioerror" "on_ioerror" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1760 (idlwave-define-abbrev "or" "or" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1761 (idlwave-define-abbrev "pro" "pro" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1762 (idlwave-define-abbrev "repeat" "repeat" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1763 (idlwave-define-abbrev "switch" "switch" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1764 (idlwave-define-abbrev "then" "then" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1765 (idlwave-define-abbrev "until" "until" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1766 (idlwave-define-abbrev "while" "while" (idlwave-keyword-abbrev 0 t) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1767 (idlwave-define-abbrev "xor" "xor" (idlwave-keyword-abbrev 0 t) t)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1768
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1769 (defvar imenu-create-index-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1770 (defvar extract-index-name-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1771 (defvar prev-index-position-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1772 (defvar imenu-extract-index-name-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1773 (defvar imenu-prev-index-position-function)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1774 ;; defined later - so just make the compiler hush
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1775 (defvar idlwave-mode-menu)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1776 (defvar idlwave-mode-debug-menu)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1777
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1778 ;;;###autoload
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1779 (defun idlwave-mode ()
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
1780 "Major mode for editing IDL source files (version 6.1_em22).
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1781
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1782 The main features of this mode are
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1783
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1784 1. Indentation and Formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1785 --------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1786 Like other Emacs programming modes, C-j inserts a newline and indents.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1787 TAB is used for explicit indentation of the current line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1788
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1789 To start a continuation line, use \\[idlwave-split-line]. This
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1790 function can also be used in the middle of a line to split the line
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1791 at that point. When used inside a long constant string, the string
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1792 is split at that point with the `+' concatenation operator.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1793
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1794 Comments are indented as follows:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1795
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1796 `;;;' Indentation remains unchanged.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1797 `;;' Indent like the surrounding code
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1798 `;' Indent to a minimum column.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1799
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1800 The indentation of comments starting in column 0 is never changed.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1801
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1802 Use \\[idlwave-fill-paragraph] to refill a paragraph inside a
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1803 comment. The indentation of the second line of the paragraph
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1804 relative to the first will be retained. Use
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1805 \\[idlwave-auto-fill-mode] to toggle auto-fill mode for these
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1806 comments. When the variable `idlwave-fill-comment-line-only' is
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1807 nil, code can also be auto-filled and auto-indented.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1808
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1809 To convert pre-existing IDL code to your formatting style, mark the
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1810 entire buffer with \\[mark-whole-buffer] and execute
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1811 \\[idlwave-expand-region-abbrevs]. Then mark the entire buffer
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1812 again followed by \\[indent-region] (`indent-region').
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1813
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1814 2. Routine Info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1815 ------------
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1816 IDLWAVE displays information about the calling sequence and the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1817 accepted keyword parameters of a procedure or function with
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1818 \\[idlwave-routine-info]. \\[idlwave-find-module] jumps to the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1819 source file of a module. These commands know about system
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1820 routines, all routines in idlwave-mode buffers and (when the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1821 idlwave-shell is active) about all modules currently compiled under
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1822 this shell. It also makes use of pre-compiled or custom-scanned
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1823 user and library catalogs many popular libraries ship with by
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1824 default. Use \\[idlwave-update-routine-info] to update this
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1825 information, which is also used for completion (see item 4).
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1826
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1827 3. Online IDL Help
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1828 ---------------
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1829
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1830 \\[idlwave-context-help] displays the IDL documentation relevant
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1831 for the system variable, keyword, or routines at point. A single
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1832 key stroke gets you directly to the right place in the docs. See
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1833 the manual to configure where and how the HTML help is displayed.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1834
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1835 4. Completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1836 ----------
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1837 \\[idlwave-complete] completes the names of procedures, functions
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1838 class names, keyword parameters, system variables and tags, class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1839 tags, structure tags, filenames and much more. It is context
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1840 sensitive and figures out what is expected at point. Lower case
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1841 strings are completed in lower case, other strings in mixed or
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1842 upper case.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1843
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1844 5. Code Templates and Abbreviations
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1845 --------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1846 Many Abbreviations are predefined to expand to code fragments and templates.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
1847 The abbreviations start generally with a `\\`. Some examples:
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1848
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1849 \\pr PROCEDURE template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1850 \\fu FUNCTION template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1851 \\c CASE statement template
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1852 \\sw SWITCH statement template
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1853 \\f FOR loop template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1854 \\r REPEAT Loop template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1855 \\w WHILE loop template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1856 \\i IF statement template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1857 \\elif IF-ELSE statement template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1858 \\b BEGIN
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1859
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1860 For a full list, use \\[idlwave-list-abbrevs]. Some templates also
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1861 have direct keybindings - see the list of keybindings below.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1862
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1863 \\[idlwave-doc-header] inserts a documentation header at the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1864 beginning of the current program unit (pro, function or main).
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1865 Change log entries can be added to the current program unit with
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1866 \\[idlwave-doc-modification].
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1867
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1868 6. Automatic Case Conversion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1869 -------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1870 The case of reserved words and some abbrevs is controlled by
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1871 `idlwave-reserved-word-upcase' and `idlwave-abbrev-change-case'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1872
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1873 7. Automatic END completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1874 ------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1875 If the variable `idlwave-expand-generic-end' is non-nil, each END typed
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1876 will be converted to the specific version, like ENDIF, ENDFOR, etc.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1877
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1878 8. Hooks
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1879 -----
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1880 Loading idlwave.el runs `idlwave-load-hook'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1881 Turning on `idlwave-mode' runs `idlwave-mode-hook'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1882
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1883 9. Documentation and Customization
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1884 -------------------------------
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1885 Info documentation for this package is available. Use
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1886 \\[idlwave-info] to display (complain to your sysadmin if that does
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1887 not work). For Postscript, PDF, and HTML versions of the
104029
55ba5af4bf3a Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 101002
diff changeset
1888 documentation, check IDLWAVE's homepage at URL `http://idlwave.org'.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1889 IDLWAVE has customize support - see the group `idlwave'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1890
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1891 10.Keybindings
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1892 -----------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1893 Here is a list of all keybindings of this mode.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1894 If some of the key bindings below show with ??, use \\[describe-key]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1895 followed by the key sequence to see what the key sequence does.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1896
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1897 \\{idlwave-mode-map}"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1898
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1899 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1900 (kill-all-local-variables)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1901
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1902 (if idlwave-startup-message
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1903 (message "Emacs IDLWAVE mode version %s." idlwave-mode-version))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1904 (setq idlwave-startup-message nil)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1905
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1906 (setq local-abbrev-table idlwave-mode-abbrev-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1907 (set-syntax-table idlwave-mode-syntax-table)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1908
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1909 (set (make-local-variable 'indent-line-function) 'idlwave-indent-and-action)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1910
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1911 (make-local-variable idlwave-comment-indent-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1912 (set idlwave-comment-indent-function 'idlwave-comment-hook)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1913
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1914 (set (make-local-variable 'comment-start-skip) ";+[ \t]*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1915 (set (make-local-variable 'comment-start) ";")
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1916 (set (make-local-variable 'comment-add) 1) ; ";;" for new and regions
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1917 (set (make-local-variable 'require-final-newline) t)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1918 (set (make-local-variable 'abbrev-all-caps) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1919 (set (make-local-variable 'indent-tabs-mode) nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1920 (set (make-local-variable 'completion-ignore-case) t)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1921
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1922 (use-local-map idlwave-mode-map)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1923
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1924 (when (featurep 'easymenu)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1925 (easy-menu-add idlwave-mode-menu idlwave-mode-map)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1926 (easy-menu-add idlwave-mode-debug-menu idlwave-mode-map))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1927
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1928 (setq mode-name "IDLWAVE")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1929 (setq major-mode 'idlwave-mode)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1930 (setq abbrev-mode t)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1931
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1932 (set (make-local-variable idlwave-fill-function) 'idlwave-auto-fill)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1933 (setq comment-end "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1934 (set (make-local-variable 'comment-multi-line) nil)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1935 (set (make-local-variable 'paragraph-separate)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1936 "[ \t\f]*$\\|[ \t]*;+[ \t]*$\\|;+[+=-_*]+$")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1937 (set (make-local-variable 'paragraph-start) "[ \t\f]\\|[ \t]*;+[ \t]")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1938 (set (make-local-variable 'paragraph-ignore-fill-prefix) nil)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1939 (set (make-local-variable 'parse-sexp-ignore-comments) t)
47930
43574ede3ab1 (idlwave-region-active-p): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47479
diff changeset
1940
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
1941 ;; ChangeLog
74587
3d9741bb11f1 (idlwave-library-path): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 74456
diff changeset
1942 (set (make-local-variable 'add-log-current-defun-function)
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
1943 'idlwave-current-routine-fullname)
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
1944
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1945 ;; Set tag table list to use IDLTAGS as file name.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1946 (if (boundp 'tag-table-alist)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1947 (add-to-list 'tag-table-alist '("\\.pro$" . "IDLTAGS")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1948
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
1949 ;; Font-lock additions
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1950 ;; Following line is for Emacs - XEmacs uses the corresponding property
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1951 ;; on the `idlwave-mode' symbol.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1952 (set (make-local-variable 'font-lock-defaults) idlwave-font-lock-defaults)
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1953 (set (make-local-variable 'font-lock-mark-block-function)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1954 'idlwave-mark-subprogram)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1955 (set (make-local-variable 'font-lock-fontify-region-function)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1956 'idlwave-font-lock-fontify-region)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1957
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1958 ;; Imenu setup
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1959 (set (make-local-variable 'imenu-create-index-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1960 'imenu-default-create-index-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1961 (set (make-local-variable 'imenu-extract-index-name-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1962 'idlwave-unit-name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1963 (set (make-local-variable 'imenu-prev-index-position-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1964 'idlwave-prev-index-position)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1965
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1966 ;; HideShow setup
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1967 (add-to-list 'hs-special-modes-alist
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1968 (list 'idlwave-mode
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1969 idlwave-begin-block-reg
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1970 idlwave-end-block-reg
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1971 ";"
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
1972 'idlwave-forward-block nil))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
1973
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1974 ;; Make a local post-command-hook and add our hook to it
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1975 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1976 ;; (make-local-hook 'post-command-hook)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1977 (add-hook 'post-command-hook 'idlwave-command-hook nil 'local)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1978
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1979 ;; Make local hooks for buffer updates
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1980 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1981 ;; (make-local-hook 'kill-buffer-hook)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1982 (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1983 ;; (make-local-hook 'after-save-hook)
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
1984 (add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1985 (add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1986
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1987 ;; Setup directories and file, if necessary
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1988 (idlwave-setup)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1989
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1990 ;; Update the routine info with info about current buffer?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1991 (idlwave-new-buffer-update)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1992
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1993 ;; Check help location
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1994 (idlwave-help-check-locations)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
1995
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1996 ;; Run the mode hook
62772
f2892faa87d4 * progmodes/ada-mode.el (ada-mode):
Lute Kamstra <lute@gnu.org>
parents: 62575
diff changeset
1997 (run-mode-hooks 'idlwave-mode-hook))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1998
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1999 (defvar idlwave-setup-done nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2000 (defun idlwave-setup ()
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2001 (unless idlwave-setup-done
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2002 (if (not (file-directory-p idlwave-config-directory))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2003 (make-directory idlwave-config-directory))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2004 (setq
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2005 idlwave-user-catalog-file (expand-file-name
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2006 idlwave-user-catalog-file
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2007 idlwave-config-directory)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2008 idlwave-xml-system-rinfo-converted-file
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2009 (expand-file-name
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2010 idlwave-xml-system-rinfo-converted-file
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2011 idlwave-config-directory)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2012 idlwave-path-file (expand-file-name
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2013 idlwave-path-file
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2014 idlwave-config-directory))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2015 (idlwave-read-paths) ; we may need these early
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2016 (setq idlwave-setup-done t)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2017
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2018 (defun idlwave-font-lock-fontify-region (beg end &optional verbose)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2019 "Fontify continuation lines correctly."
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2020 (let (pos)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2021 (save-excursion
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2022 (goto-char beg)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2023 (forward-line -1)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2024 (when (setq pos (idlwave-is-continuation-line))
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2025 (goto-char pos)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2026 (idlwave-beginning-of-statement)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2027 (setq beg (point)))))
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2028 (font-lock-default-fontify-region beg end verbose))
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2029
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2030 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2031 ;; Code Formatting ----------------------------------------------------
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2032 ;;
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2033
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2034 (defun idlwave-hard-tab ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2035 "Insert TAB in buffer in current position."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2036 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2037 (insert "\t"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2038
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2039 ;;; This stuff is experimental
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2040
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2041 (defvar idlwave-command-hook nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2042 "If non-nil, a list that can be evaluated using `eval'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2043 It is evaluated in the lisp function `idlwave-command-hook' which is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2044 placed in `post-command-hook'.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2045
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2046 (defun idlwave-command-hook ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2047 "Command run after every command.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2048 Evaluates a non-nil value of the *variable* `idlwave-command-hook' and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2049 sets the variable to zero afterwards."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2050 (and idlwave-command-hook
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2051 (listp idlwave-command-hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2052 (condition-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2053 (eval idlwave-command-hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2054 (error nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2055 (setq idlwave-command-hook nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2056
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2057 ;;; End experiment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2058
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2059 ;; It would be better to use expand.el for better abbrev handling and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2060 ;; versatility.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2061
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2062 (defun idlwave-check-abbrev (arg &optional reserved)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2063 "Reverse abbrev expansion if in comment or string.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2064 Argument ARG is the number of characters to move point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2065 backward if `idlwave-abbrev-move' is non-nil.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2066 If optional argument RESERVED is non-nil then the expansion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2067 consists of reserved words, which will be capitalized if
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2068 `idlwave-reserved-word-upcase' is non-nil.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2069 Otherwise, the abbrev will be capitalized if `idlwave-abbrev-change-case'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2070 is non-nil, unless its value is \`down in which case the abbrev will be
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2071 made into all lowercase.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2072 Returns non-nil if abbrev is left expanded."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2073 (if (idlwave-quoted)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2074 (progn (unexpand-abbrev)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2075 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2076 (if (and reserved idlwave-reserved-word-upcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2077 (upcase-region last-abbrev-location (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2078 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2079 ((equal idlwave-abbrev-change-case 'down)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2080 (downcase-region last-abbrev-location (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2081 (idlwave-abbrev-change-case
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2082 (upcase-region last-abbrev-location (point)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2083 (if (and idlwave-abbrev-move (> arg 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2084 (if (boundp 'post-command-hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2085 (setq idlwave-command-hook (list 'backward-char (1+ arg)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2086 (backward-char arg)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2087 t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2088
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2089 (defun idlwave-in-comment ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2090 "Return t if point is inside a comment, nil otherwise."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2091 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2092 (let ((here (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2093 (and (idlwave-goto-comment) (> here (point))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2094
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2095 (defun idlwave-goto-comment ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2096 "Move to start of comment delimiter on current line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2097 Moves to end of line if there is no comment delimiter.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2098 Ignores comment delimiters in strings.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2099 Returns point if comment found and nil otherwise."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2100 (let ((eos (progn (end-of-line) (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2101 (data (match-data))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2102 found)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2103 ;; Look for first comment delimiter not in a string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2104 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2105 (setq found (search-forward comment-start eos 'lim))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2106 (while (and found (idlwave-in-quote))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2107 (setq found (search-forward comment-start eos 'lim)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2108 (store-match-data data)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2109 (and found (not (idlwave-in-quote))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2110 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2111 (backward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2112 (point)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2113
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2114 (defun idlwave-region-active-p ()
87399
16b2c36a354d (idlwave-region-active-p): Use `use-region-p'.
Richard M. Stallman <rms@gnu.org>
parents: 87384
diff changeset
2115 "Should we operate on an active region?"
16b2c36a354d (idlwave-region-active-p): Use `use-region-p'.
Richard M. Stallman <rms@gnu.org>
parents: 87384
diff changeset
2116 (if (fboundp 'use-region-p)
16b2c36a354d (idlwave-region-active-p): Use `use-region-p'.
Richard M. Stallman <rms@gnu.org>
parents: 87384
diff changeset
2117 (use-region-p)
16b2c36a354d (idlwave-region-active-p): Use `use-region-p'.
Richard M. Stallman <rms@gnu.org>
parents: 87384
diff changeset
2118 (region-active-p)))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2119
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2120 (defun idlwave-show-matching-quote ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2121 "Insert quote and show matching quote if this is end of a string."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2122 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2123 (let ((bq (idlwave-in-quote))
101002
3b3c7e10cd97 Replace last-command-char with last-command-event.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
2124 (inq last-command-event))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2125 (if (and bq (not (idlwave-in-comment)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2126 (let ((delim (char-after bq)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2127 (insert inq)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2128 (if (eq inq delim)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2129 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2130 (goto-char bq)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2131 (sit-for 1))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2132 ;; Not the end of a string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2133 (insert inq))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2134
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2135 (defun idlwave-show-begin-check ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2136 "Ensure that the previous word was a token before `idlwave-show-begin'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2137 An END token must be preceded by whitespace."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2138 (if (not (idlwave-quoted))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2139 (if
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2140 (save-excursion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2141 (backward-word 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2142 (backward-char 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2143 (looking-at "[ \t\n\f]"))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2144 (idlwave-show-begin))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2145
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2146 (defun idlwave-show-begin ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2147 "Find the start of current block and blinks to it for a second.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2148 Also checks if the correct END statement has been used."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2149 ;; All end statements are reserved words
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2150 ;; Re-indent end line
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2151 ;;(insert-char ?\ 1) ;; So indent, etc. work well
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2152 ;;(backward-char 1)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2153 (let* ((pos (point-marker))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2154 (last-abbrev-marker (copy-marker last-abbrev-location))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2155 (eol-pos (save-excursion (end-of-line) (point)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2156 begin-pos end-pos end end1 )
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2157 (if idlwave-reindent-end (idlwave-indent-line))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2158 (setq last-abbrev-location (marker-position last-abbrev-marker))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2159 (when (and (idlwave-check-abbrev 0 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2160 idlwave-show-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2161 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2162 ;; Move inside current block
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2163 (goto-char last-abbrev-marker)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2164 (idlwave-block-jump-out -1 'nomark)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2165 (setq begin-pos (point))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2166 (idlwave-block-jump-out 1 'nomark)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2167 (setq end-pos (point))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2168 (if (> end-pos eol-pos)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2169 (setq end-pos pos))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2170 (goto-char end-pos)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2171 (setq end (buffer-substring
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2172 (progn
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2173 (skip-chars-backward "a-zA-Z")
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2174 (point))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2175 end-pos))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2176 (goto-char begin-pos)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2177 (when (setq end1 (cdr (idlwave-block-master)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2178 (cond
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2179 ((null end1)) ; no-operation
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2180 ((string= (downcase end) (downcase end1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2181 (sit-for 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2182 ((string= (downcase end) "end")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2183 ;; A generic end
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2184 (if idlwave-expand-generic-end
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2185 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2186 (goto-char pos)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2187 (backward-char 3)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2188 (insert (if (string= end "END") (upcase end1) end1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2189 (delete-char 3)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2190 (sit-for 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2191 (t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2192 (beep)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2193 (message "Warning: Shouldn't this be \"%s\" instead of \"%s\"?"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2194 end1 end)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2195 (sit-for 1))))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2196 ;;(delete-char 1))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2197
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2198 (defun idlwave-block-master ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2199 (let ((case-fold-search t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2200 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2201 (cond
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2202 ((looking-at "pro\\|case\\|switch\\|function\\>")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2203 (assoc (downcase (match-string 0)) idlwave-block-matches))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2204 ((looking-at "begin\\>")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2205 (let ((limit (save-excursion
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2206 (idlwave-beginning-of-statement)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2207 (point))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2208 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2209 ((re-search-backward ":[ \t]*\\=" limit t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2210 ;; seems to be a case thing
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2211 '("begin" . "end"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2212 ((re-search-backward idlwave-block-match-regexp limit t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2213 (assoc (downcase (match-string 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2214 idlwave-block-matches))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2215 (t
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2216 ;; Just a normal block
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2217 '("begin" . "end")))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2218 (t nil)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2219
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2220 (defun idlwave-close-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2221 "Terminate the current block with the correct END statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2222 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2223 ;; Start new line if we are not in a new line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2224 (unless (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2225 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2226 (bolp))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2227 (let ((idlwave-show-block nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2228 (newline-and-indent)))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2229 (let ((last-abbrev-location (point))) ; for upcasing
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2230 (insert "end")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2231 (idlwave-show-begin)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2232
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2233 (defun idlwave-custom-ampersand-surround (&optional is-action)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2234 "Surround &, leaving room for && (which surround as well)."
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2235 (let* ((prev-char (char-after (- (point) 2)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2236 (next-char (char-after (point)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2237 (amp-left (eq prev-char ?&))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2238 (amp-right (eq next-char ?&))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2239 (len (if amp-left 2 1)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2240 (unless amp-right ;no need to do it twice, amp-left will catch it.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2241 (idlwave-surround -1 (if (or is-action amp-left) -1) len))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2242
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2243 (defun idlwave-custom-ltgtr-surround (gtr &optional is-action)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2244 "Surround > and < by blanks, leaving room for >= and <=, and considering ->."
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2245 (let* ((prev-char (char-after (- (point) 2)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2246 (next-char (char-after (point)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2247 (method-invoke (and gtr (eq prev-char ?-)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2248 (len (if method-invoke 2 1)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2249 (unless (eq next-char ?=)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2250 ;; Key binding: pad only on left, to save for possible >=/<=
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2251 (idlwave-surround -1 (if (or is-action method-invoke) -1) len))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2252
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2253 (defun idlwave-surround (&optional before after length is-action)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2254 "Surround the LENGTH characters before point with blanks.
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2255 LENGTH defaults to 1.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2256 Optional arguments BEFORE and AFTER affect the behavior before and
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2257 after the characters (see also description of `idlwave-make-space'):
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2258
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2259 nil do nothing
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2260 0 force no spaces
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2261 integer > 0 force exactly n spaces
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2262 integer < 0 at least |n| spaces
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2263
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2264 The function does nothing if any of the following conditions is true:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2265 - `idlwave-surround-by-blank' is nil
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2266 - the character before point is inside a string or comment"
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2267 (when (and idlwave-surround-by-blank (not (idlwave-quoted)))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2268 (let ((length (or length 1))) ; establish a default for LENGTH
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2269 (backward-char length)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2270 (save-restriction
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2271 (let ((here (point)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2272 (skip-chars-backward " \t")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2273 (if (bolp)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2274 ;; avoid clobbering indent
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2275 (progn
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2276 (move-to-column (idlwave-calculate-indent))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2277 (if (<= (point) here)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2278 (narrow-to-region (point) here))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2279 (goto-char here)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2280 (idlwave-make-space before))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2281 (skip-chars-forward " \t"))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2282 (forward-char length)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2283 (idlwave-make-space after)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2284 ;; Check to see if the line should auto wrap
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2285 (if (and (equal (char-after (1- (point))) ?\ )
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2286 (> (current-column) fill-column))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2287 (funcall auto-fill-function)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2288
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2289 (defun idlwave-make-space (n)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2290 "Make space at point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2291 The space affected is all the spaces and tabs around point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2292 If n is non-nil then point is left abs(n) spaces from the beginning of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2293 the contiguous space.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2294 The amount of space at point is determined by N.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2295 If the value of N is:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2296 nil - do nothing.
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2297 > 0 - exactly N spaces.
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2298 < 0 - a minimum of -N spaces, i.e., do not change if there are
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2299 already -N spaces.
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2300 0 - no spaces (i.e. remove any existing space)."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2301 (if (integerp n)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2302 (let
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2303 ((start-col (progn (skip-chars-backward " \t") (current-column)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2304 (left (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2305 (end-col (progn (skip-chars-forward " \t") (current-column))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2306 (delete-horizontal-space)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2307 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2308 ((> n 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2309 (idlwave-indent-to (+ start-col n))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2310 (goto-char (+ left n)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2311 ((< n 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2312 (idlwave-indent-to end-col (- n))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2313 (goto-char (- left n)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2314 ;; n = 0, done
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2315 ))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2316
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2317 (defun idlwave-newline ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2318 "Insert a newline and indent the current and previous line."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2319 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2320 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2321 ;; Handle unterminated single and double quotes
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2322 ;; If not in a comment and in a string then insertion of a newline
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2323 ;; will mean unbalanced quotes.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2324 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2325 (if (and (not (idlwave-in-comment)) (idlwave-in-quote))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2326 (progn (beep)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2327 (message "Warning: unbalanced quotes?")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2328 (newline)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2329 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2330 ;; The current line is being split, the cursor should be at the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2331 ;; beginning of the new line skipping the leading indentation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2332 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2333 ;; The reason we insert the new line before indenting is that the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2334 ;; indenting could be confused by keywords (e.g. END) on the line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2335 ;; after the split point. This prevents us from just using
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2336 ;; `indent-for-tab-command' followed by `newline-and-indent'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2337 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2338 (beginning-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2339 (idlwave-indent-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2340 (forward-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2341 (idlwave-indent-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2342
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2343 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2344 ;; Use global variable 'comment-column' to set parallel comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2345 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2346 ;; Modeled on lisp.el
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2347 ;; Emacs Lisp and IDL (Wave CL) have identical comment syntax
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2348 (defun idlwave-comment-hook ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2349 "Compute indent for the beginning of the IDL comment delimiter."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2350 (if (or (looking-at idlwave-no-change-comment)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
2351 (looking-at (or idlwave-begin-line-comment "^;")))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2352 (current-column)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2353 (if (looking-at idlwave-code-comment)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2354 (if (save-excursion (skip-chars-backward " \t") (bolp))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2355 ;; On line by itself, indent as code
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2356 (let ((tem (idlwave-calculate-indent)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2357 (if (listp tem) (car tem) tem))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2358 ;; after code - do not change
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2359 (current-column))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2360 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2361 (max (if (bolp) 0 (1+ (current-column)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2362 comment-column))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2363
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2364 (defun idlwave-split-line ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2365 "Continue line by breaking line at point and indent the lines.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2366 For a code line insert continuation marker. If the line is a line comment
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2367 then the new line will contain a comment with the same indentation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2368 Splits strings with the IDL operator `+' if `idlwave-split-line-string' is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2369 non-nil."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2370 (interactive)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2371 ;; Expand abbreviation, just like normal RET would.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2372 (and abbrev-mode (expand-abbrev))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2373 (let (beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2374 (if (not (idlwave-in-comment))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2375 ;; For code line add continuation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2376 ;; Check if splitting a string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2377 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2378 (if (setq beg (idlwave-in-quote))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2379 (if idlwave-split-line-string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2380 ;; Split the string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2381 (progn (insert (setq beg (char-after beg)) " + "
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2382 idlwave-continuation-char beg)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2383 (backward-char 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2384 (newline-and-indent)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2385 (forward-char 1))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2386 ;; Do not split the string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2387 (beep)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2388 (message "Warning: continuation inside string!!")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2389 (insert " " idlwave-continuation-char))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2390 ;; Not splitting a string.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2391 (if (not (member (char-before) '(?\ ?\t)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2392 (insert " "))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2393 (insert idlwave-continuation-char)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2394 (newline-and-indent)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2395 (indent-new-comment-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2396 ;; Indent previous line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2397 (setq beg (- (point-max) (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2398 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2399 (idlwave-indent-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2400 (goto-char (- (point-max) beg))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2401 ;; Reindent new line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2402 (idlwave-indent-line)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2403
77493
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2404 (defun idlwave-beginning-of-subprogram (&optional nomark)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2405 "Move point to the beginning of the current program unit.
77493
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2406 If NOMARK is non-nil, do not push mark."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2407 (interactive)
77493
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2408 (idlwave-find-key idlwave-begin-unit-reg -1 nomark))
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2409
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2410 (defun idlwave-end-of-subprogram (&optional nomark)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2411 "Move point to the start of the next program unit.
77493
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2412 If NOMARK is non-nil, do not push mark."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2413 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2414 (idlwave-end-of-statement)
77493
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2415 (idlwave-find-key idlwave-end-unit-reg 1 nomark))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2416
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2417 (defun idlwave-mark-statement ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2418 "Mark current IDL statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2419 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2420 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2421 (let ((end (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2422 (idlwave-beginning-of-statement)
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2423 (push-mark end nil t)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2424
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2425 (defun idlwave-mark-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2426 "Mark containing block."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2427 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2428 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2429 (idlwave-backward-up-block -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2430 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2431 (let ((end (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2432 (idlwave-backward-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2433 (idlwave-beginning-of-statement)
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2434 (push-mark end nil t)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2435
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2436
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2437 (defun idlwave-mark-subprogram ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2438 "Put mark at beginning of program, point at end.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2439 The marks are pushed."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2440 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2441 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2442 (idlwave-beginning-of-subprogram)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2443 (let ((beg (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2444 (idlwave-forward-block)
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2445 (push-mark beg nil t))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2446 (exchange-point-and-mark))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2447
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2448 (defun idlwave-backward-up-block (&optional arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2449 "Move to beginning of enclosing block if prefix ARG >= 0.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2450 If prefix ARG < 0 then move forward to enclosing block end."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2451 (interactive "p")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2452 (idlwave-block-jump-out (- arg) 'nomark))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2453
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2454 (defun idlwave-beginning-of-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2455 "Go to the beginning of the current block."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2456 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2457 (idlwave-block-jump-out -1 'nomark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2458 (forward-word 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2459
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2460 (defun idlwave-end-of-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2461 "Go to the beginning of the current block."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2462 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2463 (idlwave-block-jump-out 1 'nomark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2464 (backward-word 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2465
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2466 (defun idlwave-forward-block (&optional arg)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2467 "Move across next nested block."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2468 (interactive)
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2469 (let ((arg (or arg 1)))
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2470 (if (idlwave-down-block arg)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2471 (idlwave-block-jump-out arg 'nomark))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2472
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2473 (defun idlwave-backward-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2474 "Move backward across previous nested block."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2475 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2476 (if (idlwave-down-block -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2477 (idlwave-block-jump-out -1 'nomark)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2478
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2479 (defun idlwave-down-block (&optional arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2480 "Go down a block.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2481 With ARG: ARG >= 0 go forwards, ARG < 0 go backwards.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2482 Returns non-nil if successfull."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2483 (interactive "p")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2484 (let (status)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2485 (if (< arg 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2486 ;; Backward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2487 (let ((eos (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2488 (idlwave-block-jump-out -1 'nomark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2489 (point))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2490 (if (setq status (idlwave-find-key
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2491 idlwave-end-block-reg -1 'nomark eos))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2492 (idlwave-beginning-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2493 (message "No nested block before beginning of containing block.")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2494 ;; Forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2495 (let ((eos (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2496 (idlwave-block-jump-out 1 'nomark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2497 (point))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2498 (if (setq status (idlwave-find-key
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2499 idlwave-begin-block-reg 1 'nomark eos))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2500 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2501 (message "No nested block before end of containing block."))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2502 status))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2503
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2504 (defun idlwave-mark-doclib ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2505 "Put point at beginning of doc library header, mark at end.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2506 The marks are pushed."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2507 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2508 (let (beg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2509 (here (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2510 (goto-char (point-max))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2511 (if (re-search-backward idlwave-doclib-start nil t)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2512 (progn
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2513 (setq beg (progn (beginning-of-line) (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2514 (if (re-search-forward idlwave-doclib-end nil t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2515 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2516 (forward-line 1)
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
2517 (push-mark beg nil t)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2518 (message "Could not find end of doc library header.")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2519 (message "Could not find doc library header start.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2520 (goto-char here)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2521
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
2522 (defun idlwave-current-routine-fullname ()
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
2523 (let ((name (idlwave-current-routine)))
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
2524 (idlwave-make-full-name (nth 2 name) (car name))))
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
2525
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2526 (defun idlwave-current-routine ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2527 "Return (NAME TYPE CLASS) of current routine."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2528 (idlwave-routines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2529 (save-excursion
77493
dd5c0a36a2d6 (idlwave-beginning-of-subprogram, idlwave-end-of-subprogram): Take
J.D. Smith <jdsmith@as.arizona.edu>
parents: 76866
diff changeset
2530 (idlwave-beginning-of-subprogram 'nomark)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2531 (if (looking-at "[ \t]*\\<\\(pro\\|function\\)\\>\\s-+\\(\\([a-zA-Z0-9$_]+\\)::\\)?\\([a-zA-Z0-9$_]+\\)")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2532 (let* ((type (if (string= (downcase (match-string 1)) "pro")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2533 'pro 'function))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2534 (class (idlwave-sintern-class (match-string 3)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2535 (name (idlwave-sintern-routine-or-method (match-string 4) class)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2536 (list name type class)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2537
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2538 (defvar idlwave-shell-prompt-pattern)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2539 (defun idlwave-beginning-of-statement ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2540 "Move to beginning of the current statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2541 Skips back past statement continuations.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2542 Point is placed at the beginning of the line whether or not this is an
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2543 actual statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2544 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2545 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2546 ((eq major-mode 'idlwave-shell-mode)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2547 (if (re-search-backward idlwave-shell-prompt-pattern nil t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2548 (goto-char (match-end 0))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2549 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2550 (if (save-excursion (forward-line -1) (idlwave-is-continuation-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2551 (idlwave-previous-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2552 (beginning-of-line)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2553
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2554 (defun idlwave-previous-statement ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2555 "Move point to beginning of the previous statement.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2556 Returns t if the current line before moving is the beginning of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2557 the first non-comment statement in the file, and nil otherwise."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2558 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2559 (let (first-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2560 (if (not (= (forward-line -1) 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2561 ;; first line in file
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2562 t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2563 ;; skip blank lines, label lines, include lines and line comments
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2564 (while (and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2565 ;; The current statement is the first statement until we
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2566 ;; reach another statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2567 (setq first-statement
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2568 (or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2569 (looking-at idlwave-comment-line-start-skip)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2570 (looking-at "[ \t]*$")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2571 (looking-at (concat "[ \t]*" idlwave-label "[ \t]*$"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2572 (looking-at "^@")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2573 (= (forward-line -1) 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2574 ;; skip continuation lines
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2575 (while (and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2576 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2577 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2578 (idlwave-is-continuation-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2579 (= (forward-line -1) 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2580 first-statement)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2581
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2582 (defun idlwave-end-of-statement ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2583 "Move point to the end of the current IDL statement.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2584 If not in a statement just moves to end of line. Returns position."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2585 (interactive)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2586 (while (and (idlwave-is-continuation-line)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2587 (= (forward-line 1) 0))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2588 (while (and (idlwave-is-comment-or-empty-line)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2589 (= (forward-line 1) 0))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2590 (end-of-line)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2591 (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2592
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2593 (defun idlwave-end-of-statement0 ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2594 "Move point to the end of the current IDL statement.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2595 If not in a statement just moves to end of line. Returns position."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2596 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2597 (while (and (idlwave-is-continuation-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2598 (= (forward-line 1) 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2599 (end-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2600 (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2601
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2602 (defun idlwave-next-statement ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2603 "Move point to beginning of the next IDL statement.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2604 Returns t if that statement is the last non-comment IDL statement
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2605 in the file, and nil otherwise."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2606 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2607 (let (last-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2608 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2609 ;; skip blank lines, label lines, include lines and line comments
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2610 (while (and (= (forward-line 1) 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2611 ;; The current statement is the last statement until
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2612 ;; we reach a new statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2613 (setq last-statement
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2614 (or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2615 (looking-at idlwave-comment-line-start-skip)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2616 (looking-at "[ \t]*$")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2617 (looking-at (concat "[ \t]*" idlwave-label "[ \t]*$"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2618 (looking-at "^@")))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2619 last-statement))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2620
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2621 (defun idlwave-skip-multi-commands (&optional lim)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2622 "Skip past multiple commands on a line (with `&')."
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2623 (let ((save-point (point)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2624 (when (re-search-forward ".*&" lim t)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2625 (goto-char (match-end 0))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2626 (if (idlwave-quoted)
58981
2d3d6e1fecc2 Check for && when skipping multiple commands on a line.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 58297
diff changeset
2627 (goto-char save-point)
2d3d6e1fecc2 Check for && when skipping multiple commands on a line.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 58297
diff changeset
2628 (if (eq (char-after (- (point) 2)) ?&) (goto-char save-point))))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2629 (point)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2630
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2631 (defun idlwave-skip-label-or-case ()
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2632 "Skip label or case statement element.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2633 Returns position after label.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2634 If there is no label point is not moved and nil is returned."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2635 ;; Case expressions and labels are terminated by a colon.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2636 ;; So we find the first colon in the line and make sure
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2637 ;; - no `?' is before it (might be a ? b : c)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2638 ;; - it is not in a comment
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2639 ;; - not in a string constant
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2640 ;; - not in parenthesis (like a[0:3])
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2641 ;; - not followed by another ":" in explicit class, ala a->b::c
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2642 ;; As many in this mode, this function is heuristic and not an exact
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2643 ;; parser.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2644 (let* ((start (point))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2645 (eos (save-excursion (idlwave-end-of-statement) (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2646 (end (idlwave-find-key ":" 1 'nomark eos)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2647 (if (and end
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2648 (= (nth 0 (parse-partial-sexp start end)) 0)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2649 (not (string-match "\\?" (buffer-substring start end)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2650 (not (string-match "^::" (buffer-substring end eos))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2651 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2652 (forward-char)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2653 (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2654 (goto-char start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2655 nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2656
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2657 (defun idlwave-start-of-substatement (&optional pre)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2658 "Move to start of next IDL substatement after point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2659 Uses the type of the current IDL statement to determine if the next
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2660 statement is on a new line or is a subpart of the current statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2661 Returns point at start of substatement modulo whitespace.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2662 If optional argument is non-nil move to beginning of current
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2663 substatement."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2664 (let ((orig (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2665 (eos (idlwave-end-of-statement))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2666 (ifnest 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2667 st nst last)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2668 (idlwave-beginning-of-statement)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2669 (idlwave-skip-label-or-case)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2670 (if (< (point) orig)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2671 (idlwave-skip-multi-commands orig))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2672 (setq last (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2673 ;; Continue looking for substatements until we are past orig
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2674 (while (and (<= (point) orig) (not (eobp)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2675 (setq last (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2676 (setq nst (nth 1 (cdr (setq st (car (idlwave-statement-type))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2677 (if (equal (car st) 'if) (setq ifnest (1+ ifnest)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2678 (cond ((and nst
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2679 (idlwave-find-key nst 1 'nomark eos))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2680 (goto-char (match-end 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2681 ((and (> ifnest 0) (idlwave-find-key "\\<else\\>" 1 'nomark eos))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2682 (setq ifnest (1- ifnest))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2683 (goto-char (match-end 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2684 (t (setq ifnest 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2685 (idlwave-next-statement))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2686 (if pre (goto-char last))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2687 ;; If a continuation line starts here, move to next line
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2688 (if (looking-at "[ \t]*\\$\\([ \t]*\\(;\\|$\\)\\)")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2689 (beginning-of-line 2))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2690 (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2691
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2692 (defun idlwave-statement-type ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2693 "Return the type of the current IDL statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2694 Uses `idlwave-statement-match' to return a cons of (type . point) with
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2695 point the ending position where the type was determined. Type is the
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2696 association from `idlwave-statement-match', i.e. the cons cell from the
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2697 list not just the type symbol. Returns nil if not an identifiable
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2698 statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2699 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2700 ;; Skip whitespace within a statement which is spaces, tabs, continuations
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2701 ;; and possibly comments
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2702 (while (looking-at "[ \t]*\\$")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2703 (forward-line 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2704 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2705 (let ((st idlwave-statement-match)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2706 (case-fold-search t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2707 (while (and (not (looking-at (nth 0 (cdr (car st)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2708 (setq st (cdr st))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2709 (if st
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2710 (append st (match-end 0))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2711
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2712 (defun idlwave-expand-equal (&optional before after is-action)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2713 "Pad '=' with spaces.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2714 Two cases: Assignment statement, and keyword assignment.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2715 Which case is determined using `idlwave-start-of-substatement' and
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2716 `idlwave-statement-type'. The equal sign will be surrounded by BEFORE
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2717 and AFTER blanks. If `idlwave-pad-keyword' is t then keyword assignment
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2718 is treated just like assignment statements. When nil, spaces are
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2719 removed for keyword assignment. Any other value keeps the current space
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2720 around the `='. Limits in for loops are treated as keyword assignment.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2721
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2722 Starting with IDL 6.0, a number of op= assignments are available.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2723 Since ambiguities of the form:
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2724
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2725 r and= b
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2726 rand= b
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2727
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2728 can occur, alphanumeric operator assignment will never be pre-padded,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2729 only post-padded. You must use a space before these to disambiguate
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2730 \(not just for padding, but for proper parsing by IDL too!). Other
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2731 operators, such as ##=, ^=, etc., will be pre-padded.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2732
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2733 IS-ACTION is ignored.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2734
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2735 See `idlwave-surround'."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2736 (if idlwave-surround-by-blank
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2737 (let
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2738 ((non-an-ops "\\(##\\|\\*\\|\\+\\|-\\|/\\|<\\|>\\|\\^\\)\\=")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2739 (an-ops
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2740 "\\s-\\(AND\\|EQ\\|GE\\|GT\\|LE\\|LT\\|MOD\\|NE\\|OR\\|XOR\\)\\=")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2741 (len 1))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2742
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2743 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2744 (let ((case-fold-search t))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2745 (backward-char)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2746 (if (or
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2747 (re-search-backward non-an-ops nil t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2748 ;; Why doesn't ##? work for both?
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2749 (re-search-backward "\\(#\\)\\=" nil t))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2750 (setq len (1+ (length (match-string 1))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2751 (when (re-search-backward an-ops nil t)
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
2752 ;(setq begin nil) ; won't modify begin
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2753 (setq len (1+ (length (match-string 1))))))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2754
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2755 (if (eq t idlwave-pad-keyword)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2756 ;; Everything gets padded equally
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2757 (idlwave-surround before after len)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2758 ;; Treating keywords/for variables specially...
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2759 (let ((st (save-excursion ; To catch "for" variables
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2760 (idlwave-start-of-substatement t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2761 (idlwave-statement-type)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2762 (what (save-excursion ; To catch keywords
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2763 (skip-chars-backward "= \t")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2764 (nth 2 (idlwave-where)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2765 (cond ((or (memq what '(function-keyword procedure-keyword))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2766 (memq (caar st) '(for pdef)))
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2767 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2768 ((null idlwave-pad-keyword)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2769 (idlwave-surround 0 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2770 ) ; remove space
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2771 (t))) ; leave any spaces alone
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2772 (t (idlwave-surround before after len))))))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2773
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2774
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2775 (defun idlwave-indent-and-action (&optional arg)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2776 "Call `idlwave-indent-line' and do expand actions.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2777 With prefix ARG non-nil, indent the entire sub-statement."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2778 (interactive "p")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2779 (save-excursion
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2780 (if (and idlwave-expand-generic-end
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2781 (re-search-backward "\\<\\(end\\)\\s-*\\="
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2782 (max 0 (- (point) 10)) t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2783 (looking-at "\\(end\\)\\([ \n\t]\\|\\'\\)"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2784 (progn (goto-char (match-end 1))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2785 ;;Expand the END abbreviation, just as RET or Space would have.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2786 (if abbrev-mode (expand-abbrev)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2787 (idlwave-show-begin)))))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2788 (when (and (not arg) current-prefix-arg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2789 (setq arg current-prefix-arg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2790 (setq current-prefix-arg nil))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2791 (if arg
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2792 (idlwave-indent-statement)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2793 (idlwave-indent-line t)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2794
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2795 (defun idlwave-indent-line (&optional expand)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2796 "Indent current IDL line as code or as a comment.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2797 The actions in `idlwave-indent-action-table' are performed.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2798 If the optional argument EXPAND is non-nil then the actions in
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2799 `idlwave-indent-expand-table' are performed."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2800 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2801 ;; Move point out of left margin.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2802 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2803 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2804 (bolp))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2805 (skip-chars-forward " \t"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2806 (let ((mloc (point-marker)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2807 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2808 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2809 (if (looking-at idlwave-comment-line-start-skip)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2810 ;; Indentation for a line comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2811 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2812 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2813 (idlwave-indent-left-margin (idlwave-comment-hook)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2814 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2815 ;; Code Line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2816 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2817 ;; Before indenting, run action routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2818 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2819 (if (and expand idlwave-do-actions)
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
2820 (mapc 'idlwave-do-action idlwave-indent-expand-table))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2821 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2822 (if idlwave-do-actions
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
2823 (mapc 'idlwave-do-action idlwave-indent-action-table))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2824 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2825 ;; No longer expand abbrevs on the line. The user can do this
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2826 ;; manually using expand-region-abbrevs.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2827 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2828 ;; Indent for code line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2829 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2830 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2831 (if (or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2832 ;; a label line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2833 (looking-at (concat "^" idlwave-label "[ \t]*$"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2834 ;; a batch command
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2835 (looking-at "^[ \t]*@"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2836 ;; leave flush left
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2837 nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2838 ;; indent the line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2839 (idlwave-indent-left-margin (idlwave-calculate-indent)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2840 ;; Adjust parallel comment
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2841 (end-of-line)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2842 (if (idlwave-in-comment)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2843 ;; Emacs 21 is too smart with fill-column on comment indent
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2844 (let ((fill-column (if (fboundp 'comment-indent-new-line)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2845 (1- (frame-width))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2846 fill-column)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2847 (indent-for-comment)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2848 (goto-char mloc)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2849 ;; Get rid of marker
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2850 (set-marker mloc nil)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2851
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2852 (defun idlwave-do-action (action)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2853 "Perform an action repeatedly on a line.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2854 ACTION is a list (REG . FUNC). REG is a regular expression. FUNC is
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2855 either a function name to be called with `funcall' or a list to be
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2856 evaluated with `eval'. The action performed by FUNC should leave
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2857 point after the match for REG - otherwise an infinite loop may be
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2858 entered. FUNC is always passed a final argument of 'is-action, so it
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2859 can discriminate between being run as an action, or a key binding."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2860 (let ((action-key (car action))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2861 (action-routine (cdr action)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2862 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2863 (while (idlwave-look-at action-key)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2864 (if (listp action-routine)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2865 (eval (append action-routine '('is-action)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
2866 (funcall action-routine 'is-action)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2867
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2868 (defun idlwave-indent-to (col &optional min)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2869 "Indent from point with spaces until column COL.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2870 Inserts space before markers at point."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2871 (if (not min) (setq min 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2872 (insert-before-markers
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2873 (make-string (max min (- col (current-column))) ?\ )))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2874
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2875 (defun idlwave-indent-left-margin (col)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2876 "Indent the current line to column COL.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2877 Indents such that first non-whitespace character is at column COL
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2878 Inserts spaces before markers at point."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2879 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2880 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2881 (delete-horizontal-space)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2882 (idlwave-indent-to col)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2883
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2884 (defun idlwave-indent-subprogram ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2885 "Indent program unit which contains point."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2886 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2887 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2888 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2889 (idlwave-beginning-of-subprogram)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2890 (let ((beg (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2891 (idlwave-forward-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2892 (message "Indenting subprogram...")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2893 (indent-region beg (point) nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2894 (message "Indenting subprogram...done.")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2895
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2896 (defun idlwave-indent-statement ()
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2897 "Indent current statement, including all continuation lines."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2898 (interactive)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2899 (save-excursion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2900 (idlwave-beginning-of-statement)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2901 (let ((beg (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2902 (idlwave-end-of-statement)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2903 (indent-region beg (point) nil))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2904
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2905 (defun idlwave-calculate-indent ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2906 "Return appropriate indentation for current line as IDL code."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2907 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2908 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2909 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2910 ;; Check for beginning of unit - main (beginning of buffer), pro, or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2911 ;; function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2912 ((idlwave-look-at idlwave-begin-unit-reg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2913 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2914 ;; Check for continuation line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2915 ((save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2916 (and (= (forward-line -1) 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2917 (idlwave-is-continuation-line)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2918 (idlwave-calculate-cont-indent))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2919 ;; calculate indent based on previous and current statements
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2920 (t (let* (beg-prev-pos
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2921 (the-indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2922 ;; calculate indent based on previous statement
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2923 (save-excursion
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2924 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2925 ;; Beginning of file
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2926 ((prog1
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2927 (idlwave-previous-statement)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2928 (setq beg-prev-pos (point)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2929 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2930 ;; Main block
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2931 ((idlwave-look-at idlwave-begin-unit-reg t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2932 (+ (idlwave-current-statement-indent)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2933 idlwave-main-block-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2934 ;; Begin block
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2935 ((idlwave-look-at idlwave-begin-block-reg t)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2936 (+ (idlwave-min-current-statement-indent)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2937 idlwave-block-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2938 ;; End Block
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2939 ((idlwave-look-at idlwave-end-block-reg t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2940 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2941 ;; Match to the *beginning* of the block opener
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2942 (goto-char beg-prev-pos)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2943 (idlwave-block-jump-out -1 'nomark) ; go to begin block
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2944 (idlwave-min-current-statement-indent)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2945 ;; idlwave-end-offset
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2946 ;; idlwave-block-indent))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2947
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2948 ;; Default to current indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2949 ((idlwave-current-statement-indent))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2950 ;; adjust the indentation based on the current statement
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2951 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2952 ;; End block
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2953 ((idlwave-look-at idlwave-end-block-reg)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2954 (+ the-indent idlwave-end-offset))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2955 (the-indent)))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2957 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2958 ;; Parentheses indent
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2959 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2960
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2961 (defun idlwave-calculate-paren-indent (beg-reg end-reg close-exp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2962 "Calculate the continuation indent inside a paren group.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
2963 Returns a cons-cell with (open . indent), where open is the
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2964 location of the open paren."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2965 (let ((open (nth 1 (parse-partial-sexp beg-reg end-reg))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2966 ;; Found an innermost open paren.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2967 (when open
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2968 (goto-char open)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2969 ;; Line up with next word unless this is a closing paren.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2970 (cons open
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2971 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2972 ;; Plain Kernighan-style nested indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2973 (idlwave-indent-parens-nested
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2974 (+ idlwave-continuation-indent (idlwave-current-indent)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2975
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2976 ;; This is a closed paren - line up under open paren.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2977 (close-exp
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2978 (current-column))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2979
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2980 ;; Empty (or just comment) follows -- revert to basic indent
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2981 ((progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2982 ;; Skip paren
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2983 (forward-char 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2984 (looking-at "[ \t$]*\\(;.*\\)?$"))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2985 nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2986
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2987 ;; Line up with first word after any blank space
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2988 ((progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2989 (skip-chars-forward " \t")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2990 (current-column))))))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2991
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2992 (defun idlwave-calculate-cont-indent ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2993 "Calculates the IDL continuation indent column from the previous statement.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2994 Note that here previous statement usually means the beginning of the
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2995 current statement if this statement is a continuation of the previous
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2996 line. Various special types of continuations, including assignments,
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
2997 routine definitions, and parenthetical groupings, are treated separately."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2998 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2999 (let* ((case-fold-search t)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3000 (end-reg (progn (beginning-of-line) (point)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3001 (beg-last-statement (save-excursion (idlwave-previous-statement)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3002 (point)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3003 (beg-reg (progn (idlwave-start-of-substatement 'pre)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3004 (if (eq (line-beginning-position) end-reg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3005 (goto-char beg-last-statement)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3006 (point))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3007 (basic-indent (+ (idlwave-min-current-statement-indent end-reg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3008 idlwave-continuation-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3009 fancy-nonparen-indent fancy-paren-indent)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3010 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3011 ;; Align then with its matching if, etc.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3012 ((let ((matchers '(("\\<if\\>" . "[ \t]*then")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3013 ("\\<\\(if\\|end\\(if\\)?\\)\\>" . "[ \t]*else")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3014 ("\\<\\(for\\|while\\)\\>" . "[ \t]*do")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3015 ("\\<\\(repeat\\|end\\(rep\\)?\\)\\>" .
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3016 "[ \t]*until")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3017 ("\\<case\\>" . "[ \t]*of")))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3018 match cont-re)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3019 (goto-char end-reg)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3020 (and
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3021 (setq cont-re
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3022 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3023 (while (setq match (car matchers))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3024 (if (looking-at (cdr match))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3025 (throw 'exit (car match)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3026 (setq matchers (cdr matchers)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3027 (idlwave-find-key cont-re -1 'nomark beg-last-statement)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3028 (if (looking-at "end") ;; that one's special
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3029 (- (idlwave-current-indent)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3030 (+ idlwave-block-indent idlwave-end-offset))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3031 (idlwave-current-indent)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3032
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3033 ;; Indent in from the previous line for continuing statements
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3034 ((let ((matchers '("\\<then\\>"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3035 "\\<do\\>"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3036 "\\<repeat\\>"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3037 "\\<else\\>"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3038 match)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3039 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3040 (goto-char end-reg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3041 (if (/= (forward-line -1) 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3042 (throw 'exit nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3043 (while (setq match (car matchers))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3044 (if (looking-at (concat ".*" match "[ \t]*\\$[ \t]*"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3045 "\\(;.*\\)?$"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3046 (throw 'exit t))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3047 (setq matchers (cdr matchers)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3048 (+ idlwave-continuation-indent (idlwave-current-indent)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3049
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3050 ;; Parenthetical indent, either traditional or Kernighan style
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3051 ((setq fancy-paren-indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3052 (let* ((end-reg end-reg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3053 (close-exp (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3054 (goto-char end-reg)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3055 (skip-chars-forward " \t")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3056 (looking-at "\\s)")))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3057 indent-cons)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3058 (catch 'loop
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3059 (while (setq indent-cons (idlwave-calculate-paren-indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3060 beg-reg end-reg close-exp))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3061 ;; First permitted containing paren
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3062 (if (or
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3063 idlwave-indent-to-open-paren
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3064 idlwave-indent-parens-nested
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3065 (null (cdr indent-cons))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3066 (< (- (cdr indent-cons) basic-indent)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3067 idlwave-max-extra-continuation-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3068 (throw 'loop (cdr indent-cons)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3069 (setq end-reg (car indent-cons))))))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3070 fancy-paren-indent)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3071
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3072 ;; A continued assignment, or procedure call/definition
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3073 ((and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3074 (> idlwave-max-extra-continuation-indent 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3075 (setq fancy-nonparen-indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3076 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3077 (goto-char beg-reg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3078 (while (idlwave-look-at "&")) ; skip continued statements
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3079 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3080 ;; A continued Procedure call or definition
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3081 ((progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3082 (idlwave-look-at "^[ \t]*\\(pro\\|function\\)") ;skip over
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3083 (looking-at "[ \t]*\\([a-zA-Z0-9.$_]+[ \t]*->[ \t]*\\)?[a-zA-Z][:a-zA-Z0-9$_]*[ \t]*\\(,\\)[ \t]*"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3084 (goto-char (match-end 0))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3085 ;; Comment only, or blank line with "$"? Basic indent.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3086 (if (save-match-data (looking-at "[ \t$]*\\(;.*\\)?$"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3087 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3088 (current-column)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3089
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3090 ;; Continued assignment (with =):
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3091 ((catch 'assign ;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3092 (while (looking-at "[^=\n\r]*\\(=\\)[ \t]*")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3093 (goto-char (match-end 0))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3094 (if (null (idlwave-what-function beg-reg))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3095 (throw 'assign t))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3096 (unless (or
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3097 (idlwave-in-quote)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3098 (looking-at "[ \t$]*\\(;.*\\)?$") ; use basic
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3099 (save-excursion
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3100 (goto-char beg-last-statement)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3101 (eq (caar (idlwave-statement-type)) 'for)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3102 (current-column))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3103 (< (- fancy-nonparen-indent basic-indent)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3104 idlwave-max-extra-continuation-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3105 (if fancy-paren-indent ;calculated but disallowed paren indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3106 (+ fancy-nonparen-indent idlwave-continuation-indent)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3107 fancy-nonparen-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3108
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3109 ;; Basic indent, by default
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3110 (t basic-indent)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3111
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3112
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3113
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3114 (defun idlwave-find-key (key-re &optional dir nomark limit)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3115 "Move to next match of the regular expression KEY-RE.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3116 Matches inside comments or string constants will be ignored.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3117 If DIR is negative, the search will be backwards.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3118 At a successful match, the mark is pushed unless NOMARK is non-nil.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3119 Searches are limited to LIMIT.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3120 Searches are case-insensitive and use a special syntax table which
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3121 treats `$' and `_' as word characters.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3122 Return value is the beginning of the match or (in case of failure) nil."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3123 (setq dir (or dir 0))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3124 (let ((case-fold-search t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3125 (search-func (if (> dir 0) 're-search-forward 're-search-backward))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3126 found)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3127 (idlwave-with-special-syntax
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3128 (save-excursion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3129 (catch 'exit
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3130 (while (funcall search-func key-re limit t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3131 (if (not (idlwave-quoted))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3132 (throw 'exit (setq found (match-beginning 0)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3133 (if (or (and (> dir 0) (eobp))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3134 (and (< dir 0) (bobp)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3135 (throw 'exit nil)))))))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3136 (if found
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3137 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3138 (if (not nomark) (push-mark))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3139 (goto-char found)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3140 found)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3141 nil)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3142
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3143 (defun idlwave-block-jump-out (&optional dir nomark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3144 "When optional argument DIR is non-negative, move forward to end of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3145 current block using the `idlwave-begin-block-reg' and `idlwave-end-block-reg'
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3146 regular expressions. When DIR is negative, move backwards to block beginning.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3147 Recursively calls itself to skip over nested blocks. DIR defaults to
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3148 forward. Calls `push-mark' unless the optional argument NOMARK is
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3149 non-nil. Movement is limited by the start of program units because of
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3150 possibility of unbalanced blocks."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3151 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3152 (or dir (setq dir 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3153 (let* ((here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3154 (case-fold-search t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3155 (limit (if (>= dir 0) (point-max) (point-min)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3156 (block-limit (if (>= dir 0)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3157 idlwave-begin-block-reg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3158 idlwave-end-block-reg))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3159 found
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3160 (block-reg (concat idlwave-begin-block-reg "\\|"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3161 idlwave-end-block-reg))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3162 (unit-limit (or (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3163 (if (< dir 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3164 (idlwave-find-key
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3165 idlwave-begin-unit-reg dir t limit)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3166 (end-of-line)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3167 (idlwave-find-key
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3168 idlwave-end-unit-reg dir t limit)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3169 limit)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3170 (if (>= dir 0) (end-of-line)) ;Make sure we are in current block
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3171 (if (setq found (idlwave-find-key block-reg dir t unit-limit))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3172 (while (and found (looking-at block-limit))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3173 (if (>= dir 0) (forward-word 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3174 (idlwave-block-jump-out dir t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3175 (setq found (idlwave-find-key block-reg dir t unit-limit))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3176 (if (not nomark) (push-mark here))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3177 (if (not found) (goto-char unit-limit)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3178 (if (>= dir 0) (forward-word 1)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3179
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3180 (defun idlwave-min-current-statement-indent (&optional end-reg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3181 "The minimum indent in the current statement."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3182 (idlwave-beginning-of-statement)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3183 (if (not (idlwave-is-continuation-line))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3184 (idlwave-current-indent)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3185 (let ((min (idlwave-current-indent)) comm-or-empty)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3186 (while (and (= (forward-line 1) 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3187 (or (setq comm-or-empty (idlwave-is-comment-or-empty-line))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3188 (idlwave-is-continuation-line))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3189 (or (null end-reg) (< (point) end-reg)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3190 (unless comm-or-empty (setq min (min min (idlwave-current-indent)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3191 (if (or comm-or-empty (and end-reg (>= (point) end-reg)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3192 min
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3193 (min min (idlwave-current-indent))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3194
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3195 (defun idlwave-current-statement-indent (&optional last-line)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3196 "Return indentation of the current statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3197 If in a statement, moves to beginning of statement before finding indent."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3198 (if last-line
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3199 (idlwave-end-of-statement)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3200 (idlwave-beginning-of-statement))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3201 (idlwave-current-indent))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3202
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3203 (defun idlwave-current-indent ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3204 "Return the column of the indentation of the current line.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3205 Skips any whitespace. Returns 0 if the end-of-line follows the whitespace."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3206 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3207 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3208 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3209 ;; if we are at the end of blank line return 0
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3210 (cond ((eolp) 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3211 ((current-column)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3212
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3213 (defun idlwave-is-continuation-line ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3214 "Test if current line is continuation line.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3215 Blank or comment-only lines following regular continuation lines (with
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3216 `$') count as continuations too."
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
3217 (let (p)
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
3218 (save-excursion
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3219 (or
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
3220 (idlwave-look-at "\\<\\$")
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
3221 (catch 'loop
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3222 (while (and (looking-at "^[ \t]*\\(;.*\\)?$")
70572
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
3223 (eq (forward-line -1) 0))
d6353257b05e (idlwave-push-mark): Removed obsolete compatibility function (Emacs 18/19).
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69822
diff changeset
3224 (if (setq p (idlwave-look-at "\\<\\$")) (throw 'loop p))))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3225
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3226 (defun idlwave-is-comment-line ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3227 "Test if the current line is a comment line."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3228 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3229 (beginning-of-line 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3230 (looking-at "[ \t]*;")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3231
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3232 (defun idlwave-is-comment-or-empty-line ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3233 "Test if the current line is a comment line."
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3234 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3235 (beginning-of-line 1)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3236 (looking-at "[ \t]*[;\n]")))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3237
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3238 (defun idlwave-look-at (regexp &optional cont beg)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3239 "Search current line from current point for REGEXP.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3240 If optional argument CONT is non-nil, searches to the end of
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3241 the current statement.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3242 If optional arg BEG is non-nil, search starts from the beginning of the
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3243 current statement.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3244 Ignores matches that end in a comment or inside a string expression.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3245 Returns point if successful, nil otherwise.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3246 This function produces unexpected results if REGEXP contains quotes or
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3247 a comment delimiter. The search is case insensitive.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3248 If successful leaves point after the match, otherwise, does not move point."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3249 (let ((here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3250 (case-fold-search t)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3251 (eos (save-excursion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3252 (if cont (idlwave-end-of-statement) (end-of-line))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3253 (point)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3254 found)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3255 (idlwave-with-special-syntax
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3256 (if beg (idlwave-beginning-of-statement))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3257 (while (and (setq found (re-search-forward regexp eos t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3258 (idlwave-quoted))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3259 (if (not found) (goto-char here))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3260 found))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3261
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3262 (defun idlwave-fill-paragraph (&optional nohang)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3263 "Fill paragraphs in comments.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3264 A paragraph is made up of all contiguous lines having the same comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3265 leader (the leading whitespace before the comment delimiter and the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3266 comment delimiter). In addition, paragraphs are separated by blank
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3267 line comments. The indentation is given by the hanging indent of the
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3268 first line, otherwise by the minimum indentation of the lines after
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3269 the first line. The indentation of the first line does not change.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3270 Does not effect code lines. Does not fill comments on the same line
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3271 with code. The hanging indent is given by the end of the first match
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3272 matching `idlwave-hang-indent-regexp' on the paragraph's first line.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3273 If the optional argument NOHANG is non-nil then the hanging indent is
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3274 ignored."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3275 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3276 ;; check if this is a line comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3277 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3278 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3279 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3280 (looking-at comment-start))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3281 (let
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3282 ((indent 999)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3283 pre here diff fill-prefix-reg bcl first-indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3284 hang start end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3285 ;; Change tabs to spaces in the surrounding paragraph.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3286 ;; The surrounding paragraph will be the largest containing block of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3287 ;; contiguous line comments. Thus, we may be changing tabs in
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3288 ;; a much larger area than is needed, but this is the easiest
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3289 ;; brute force way to do it.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3290 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3291 ;; This has the undesirable side effect of replacing the tabs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3292 ;; permanently without the user's request or knowledge.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3293 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3294 (backward-paragraph)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3295 (setq start (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3296 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3297 (forward-paragraph)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3298 (setq end (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3299 (untabify start end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3300 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3301 (setq here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3302 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3303 (setq bcl (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3304 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3305 (concat "^[ \t]*" comment-start "+")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3306 (save-excursion (end-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3307 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3308 ;; Get the comment leader on the line and its length
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3309 (setq pre (current-column))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3310 ;; the comment leader is the indentation plus exactly the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3311 ;; number of consecutive ";".
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3312 (setq fill-prefix-reg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3313 (concat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3314 (setq fill-prefix
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3315 (regexp-quote
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3316 (buffer-substring (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3317 (beginning-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3318 (point))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3319 "[^;]"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3320
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3321 ;; Mark the beginning and end of the paragraph
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3322 (goto-char bcl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3323 (while (and (looking-at fill-prefix-reg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3324 (not (looking-at paragraph-separate))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3325 (not (bobp)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3326 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3327 ;; Move to first line of paragraph
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3328 (if (/= (point) bcl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3329 (forward-line 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3330 (setq start (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3331 (goto-char bcl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3332 (while (and (looking-at fill-prefix-reg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3333 (not (looking-at paragraph-separate))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3334 (not (eobp)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3335 (forward-line 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3336 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3337 (if (or (not (looking-at fill-prefix-reg))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3338 (looking-at paragraph-separate))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3339 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3340 (end-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3341 ;; if at end of buffer add a newline (need this because
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3342 ;; fill-region needs END to be at the beginning of line after
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3343 ;; the paragraph or it will add a line).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3344 (if (eobp)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3345 (progn (insert ?\n) (backward-char 1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3346 ;; Set END to the beginning of line after the paragraph
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3347 ;; END is calculated as distance from end of buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3348 (setq end (- (point-max) (point) 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3349 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3350 ;; Calculate the indentation for the paragraph.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3351 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3352 ;; In the following while statements, after one iteration
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3353 ;; point will be at the beginning of a line in which case
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3354 ;; the while will not be executed for the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3355 ;; the first paragraph line and thus will not affect the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3356 ;; indentation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3357 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3358 ;; First check to see if indentation is based on hanging indent.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3359 (if (and (not nohang) idlwave-hanging-indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3360 (setq hang
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3361 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3362 (goto-char start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3363 (idlwave-calc-hanging-indent))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3364 ;; Adjust lines of paragraph by inserting spaces so that
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3365 ;; each line's indent is at least as great as the hanging
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3366 ;; indent. This is needed for fill-paragraph to work with
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3367 ;; a fill-prefix.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3368 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3369 (setq indent hang)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3370 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3371 (while (> (point) start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3372 (re-search-forward comment-start-skip
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3373 (save-excursion (end-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3374 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3375 (if (> (setq diff (- indent (current-column))) 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3376 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3377 (if (>= here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3378 ;; adjust the original location for the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3379 ;; inserted text.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3380 (setq here (+ here diff)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3381 (insert (make-string diff ?\ ))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3382 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3383 )
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3384
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3385 ;; No hang. Instead find minimum indentation of paragraph
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3386 ;; after first line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3387 ;; For the following while statement, since START is at the
45318
b80d723ad7cc Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 43351
diff changeset
3388 ;; beginning of line and END is at the end of line
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3389 ;; point is greater than START at least once (which would
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3390 ;; be the case for a single line paragraph).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3391 (while (> (point) start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3392 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3393 (setq indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3394 (min indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3395 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3396 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3397 comment-start-skip
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3398 (save-excursion (end-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3399 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3400 (current-column))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3401 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3402 )
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3403 (setq fill-prefix (concat fill-prefix
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3404 (make-string (- indent pre)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3405 ?\ )))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3406 ;; first-line indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3407 (setq first-indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3408 (max
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3409 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3410 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3411 comment-start-skip
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3412 (save-excursion (end-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3413 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3414 (current-column))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3415 indent))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3416
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3417 ;; try to keep point at its original place
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3418 (goto-char here)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3419
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3420 ;; In place of the more modern fill-region-as-paragraph, a hack
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3421 ;; to keep whitespace untouched on the first line within the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3422 ;; indent length and to preserve any indent on the first line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3423 ;; (first indent).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3424 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3425 (setq diff
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3426 (buffer-substring start (+ start first-indent -1)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3427 (subst-char-in-region start (+ start first-indent -1) ?\ ?~ nil)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3428 (fill-region-as-paragraph
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3429 start
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3430 (- (point-max) end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3431 (current-justification)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3432 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3433 (delete-region start (+ start first-indent -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3434 (goto-char start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3435 (insert diff))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3436 ;; When we want the point at the beginning of the comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3437 ;; body fill-region will put it at the beginning of the line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3438 (if (bolp) (skip-chars-forward (concat " \t" comment-start)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3439 (setq fill-prefix nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3440
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3441 (defun idlwave-calc-hanging-indent ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3442 "Calculate the position of the hanging indent for the comment paragraph.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3443 The hanging indent position is given by the first match with the
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3444 `idlwave-hang-indent-regexp'. If `idlwave-use-last-hang-indent' is
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3445 non-nil then use last occurrence matching `idlwave-hang-indent-regexp'
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3446 on the line.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3447 If not found returns nil."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3448 (if idlwave-use-last-hang-indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3449 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3450 (end-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3451 (if (re-search-backward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3452 idlwave-hang-indent-regexp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3453 (save-excursion (beginning-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3454 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3455 (+ (current-column) (length idlwave-hang-indent-regexp))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3456 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3457 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3458 (if (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3459 idlwave-hang-indent-regexp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3460 (save-excursion (end-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3461 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3462 (current-column)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3463
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3464 (defun idlwave-auto-fill ()
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3465 "Called to break lines in auto fill mode.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3466 Only fills non-comment lines if `idlwave-fill-comment-line-only' is
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3467 non-nil. Places a continuation character at the end of the line if
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3468 not in a comment. Splits strings with IDL concatenation operator `+'
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3469 if `idlwave-auto-fill-split-string' is non-nil."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3470 (if (<= (current-column) fill-column)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3471 nil ; do not to fill
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3472 (if (or (not idlwave-fill-comment-line-only)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3473 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3474 ;; Check for comment line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3475 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3476 (looking-at idlwave-comment-line-start-skip)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3477 (let (beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3478 (idlwave-indent-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3479 ;; Prevent actions do-auto-fill which calls indent-line-function.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3480 (let (idlwave-do-actions
76866
b71ececfef19 (idlwave-auto-fill): Revert paragraph-separate change.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 75581
diff changeset
3481 (paragraph-separate ".")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3482 (fill-nobreak-predicate
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3483 (if (and (idlwave-in-quote)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3484 idlwave-auto-fill-split-string)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3485 (lambda () ;; We'll need 5 spaces for " ' + $"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3486 (<= (- fill-column (current-column)) 5)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3487 ))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3488 (do-auto-fill))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3489 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3490 (end-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3491 ;; Indent the split line
75581
7cca60272387 (idlwave-xml-create-sysvar-alist): Trim leading whitespace in sysvar
J.D. Smith <jdsmith@as.arizona.edu>
parents: 75347
diff changeset
3492 (idlwave-indent-line))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3493 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3494 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3495 (looking-at idlwave-comment-line-start-skip))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3496 ;; A continued line comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3497 ;; We treat continued line comments as part of a comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3498 ;; paragraph. So we check for a hanging indent.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3499 (if idlwave-hanging-indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3500 (let ((here (- (point-max) (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3501 (indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3502 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3503 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3504 (idlwave-calc-hanging-indent))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3505 (if indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3506 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3507 ;; Remove whitespace between comment delimiter and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3508 ;; text, insert spaces for appropriate indentation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3509 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3510 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3511 comment-start-skip
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3512 (save-excursion (end-of-line) (point)) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3513 (delete-horizontal-space)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3514 (idlwave-indent-to indent)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3515 (goto-char (- (point-max) here)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3516 )))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3517 ;; Split code or comment?
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3518 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3519 (end-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3520 (idlwave-in-comment))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3521 ;; Splitting a non-full-line comment.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3522 ;; Insert the comment delimiter from split line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3523 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3524 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3525 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3526 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3527 ;; Insert blank to keep off beginning of line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3528 (insert " "
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3529 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3530 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3531 (buffer-substring (idlwave-goto-comment)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3532 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3533 (skip-chars-forward "; ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3534 (point))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3535 (idlwave-indent-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3536 ;; Split code line - add continuation character
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3537 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3538 (end-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3539 ;; Check to see if we split a string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3540 (if (and (setq beg (idlwave-in-quote))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3541 idlwave-auto-fill-split-string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3542 ;; Split the string and concatenate.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3543 ;; The first extra space is for the space
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3544 ;; the line was split. That space was removed.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3545 (insert " " (char-after beg) " +"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3546 (insert " $"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3547 (if beg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3548 (if idlwave-auto-fill-split-string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3549 ;; Make the second part of continued string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3550 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3551 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3552 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3553 (insert (char-after beg)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3554 ;; Warning
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3555 (beep)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3556 (message "Warning: continuation inside a string.")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3557 ;; Although do-auto-fill (via indent-new-comment-line) calls
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3558 ;; idlwave-indent-line for the new line, re-indent again
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3559 ;; because of the addition of the continuation character.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3560 (idlwave-indent-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3561 )))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3562
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3563 (defun idlwave-auto-fill-mode (arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3564 "Toggle auto-fill mode for IDL mode.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3565 With arg, turn auto-fill mode on if arg is positive.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3566 In auto-fill mode, inserting a space at a column beyond `fill-column'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3567 automatically breaks the line at a previous space."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3568 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3569 (prog1 (set idlwave-fill-function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3570 (if (if (null arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3571 (not (symbol-value idlwave-fill-function))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3572 (> (prefix-numeric-value arg) 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3573 'idlwave-auto-fill
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3574 nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3575 ;; update mode-line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3576 (set-buffer-modified-p (buffer-modified-p))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3577
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3578 ;(defun idlwave-fill-routine-call ()
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3579 ; "Fill a routine definition or statement, indenting appropriately."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3580 ; (let ((where (idlwave-where)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3581
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3582
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3583 (defun idlwave-doc-header (&optional nomark)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3584 "Insert a documentation header at the beginning of the unit.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3585 Inserts the value of the variable `idlwave-file-header'. Sets mark
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3586 before moving to do insertion unless the optional prefix argument
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3587 NOMARK is non-nil."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3588 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3589 (or nomark (push-mark))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3590 ;; make sure we catch the current line if it begins the unit
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3591 (if idlwave-header-to-beginning-of-file
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3592 (goto-char (point-min))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3593 (end-of-line)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3594 (idlwave-beginning-of-subprogram)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3595 (beginning-of-line)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3596 ;; skip function or procedure line
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3597 (if (idlwave-look-at "\\<\\(pro\\|function\\)\\>")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3598 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3599 (idlwave-end-of-statement)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3600 (if (> (forward-line 1) 0) (insert "\n")))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3601 (let ((pos (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3602 (if idlwave-file-header
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3603 (cond ((car idlwave-file-header)
62575
7f40f404ef37 (idlwave-doc-header): Use insert-file-contents.
Richard M. Stallman <rms@gnu.org>
parents: 60925
diff changeset
3604 (insert-file-contents (car idlwave-file-header)))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3605 ((stringp (car (cdr idlwave-file-header)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3606 (insert (car (cdr idlwave-file-header))))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3607 (goto-char pos)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3608
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3609 (defun idlwave-default-insert-timestamp ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3610 "Default timestamp insertion function."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3611 (insert (current-time-string))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3612 (insert ", " (user-full-name))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3613 (if (boundp 'user-mail-address)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3614 (insert " <" user-mail-address ">")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3615 (insert " <" (user-login-name) "@" (system-name) ">"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3616 ;; Remove extra spaces from line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3617 (idlwave-fill-paragraph)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3618 ;; Insert a blank line comment to separate from the date entry -
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3619 ;; will keep the entry from flowing onto date line if re-filled.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3620 (insert "\n;\n;\t\t"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3621
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3622 (defun idlwave-doc-modification ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3623 "Insert a brief modification log at the beginning of the current program.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3624 Looks for an occurrence of the value of user variable
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3625 `idlwave-doc-modifications-keyword' if non-nil. Inserts time and user
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3626 name and places the point for the user to add a log. Before moving, saves
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3627 location on mark ring so that the user can return to previous point."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3628 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3629 (push-mark)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3630 (let* (beg end)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3631 (if (and (or (re-search-backward idlwave-doclib-start nil t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3632 (progn
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3633 (goto-char (point-min))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3634 (re-search-forward idlwave-doclib-start nil t)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3635 (setq beg (match-beginning 0))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3636 (re-search-forward idlwave-doclib-end nil t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3637 (setq end (match-end 0)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3638 (progn
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3639 (goto-char beg)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3640 (if (re-search-forward
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3641 (concat idlwave-doc-modifications-keyword ":")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3642 end t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3643 (end-of-line)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3644 (goto-char end)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3645 (end-of-line -1)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3646 (insert "\n" comment-start "\n")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3647 (insert comment-start " " idlwave-doc-modifications-keyword ":"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3648 (insert "\n;\n;\t")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3649 (run-hooks 'idlwave-timestamp-hook))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3650 (error "No valid DOCLIB header"))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3651
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
3652
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3653 ;; CJC 3/16/93
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3654 ;; Interface to expand-region-abbrevs which did not work when the
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3655 ;; abbrev hook associated with an abbrev moves point backwards
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3656 ;; after abbrev expansion, e.g., as with the abbrev '.n'.
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3657 ;; The original would enter an infinite loop in attempting to expand
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3658 ;; .n (it would continually expand and unexpand the abbrev without expanding
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3659 ;; because the point would keep going back to the beginning of the
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3660 ;; abbrev instead of to the end of the abbrev). We now keep the
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3661 ;; abbrev hook from moving backwards.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3662 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3663 (defun idlwave-expand-region-abbrevs (start end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3664 "Expand each abbrev occurrence in the region.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3665 Calling from a program, arguments are START END."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3666 (interactive "r")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3667 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3668 (goto-char (min start end))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3669 (let ((idlwave-show-block nil) ;Do not blink
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3670 (idlwave-abbrev-move nil)) ;Do not move
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3671 (expand-region-abbrevs start end 'noquery))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3672
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3673 (defun idlwave-quoted ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3674 "Return t if point is in a comment or quoted string.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3675 Returns nil otherwise."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3676 (or (idlwave-in-comment) (idlwave-in-quote)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3677
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3678 (defun idlwave-in-quote ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3679 "Return location of the opening quote
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3680 if point is in a IDL string constant, nil otherwise.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3681 Ignores comment delimiters on the current line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3682 Properly handles nested quotation marks and octal
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3683 constants - a double quote followed by an octal digit."
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3684 ;; Treat an octal inside an apostrophe to be a normal string. Treat a
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3685 ;; double quote followed by an octal digit to be an octal constant
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3686 ;; rather than a string. Therefore, there is no terminating double
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3687 ;; quote.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3688 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3689 ;; Because single and double quotes can quote each other we must
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3690 ;; search for the string start from the beginning of line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3691 (let* ((start (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3692 (eol (progn (end-of-line) (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3693 (bq (progn (beginning-of-line) (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3694 (endq (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3695 (data (match-data))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3696 delim
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3697 found)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3698 (while (< endq start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3699 ;; Find string start
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3700 ;; Don't find an octal constant beginning with a double quote
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3701 (if (re-search-forward "[\"']" eol 'lim)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3702 ;; Find the string end.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3703 ;; In IDL, two consecutive delimiters after the start of a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3704 ;; string act as an
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3705 ;; escape for the delimiter in the string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3706 ;; Two consecutive delimiters alone (i.e., not after the
45318
b80d723ad7cc Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 43351
diff changeset
3707 ;; start of a string) is the null string.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3708 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3709 ;; Move to position after quote
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3710 (goto-char (1+ (match-beginning 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3711 (setq bq (1- (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3712 ;; Get the string delimiter
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3713 (setq delim (char-to-string (preceding-char)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3714 ;; Check for null string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3715 (if (looking-at delim)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3716 (progn (setq endq (point)) (forward-char 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3717 ;; Look for next unpaired delimiter
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3718 (setq found (search-forward delim eol 'lim))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3719 (while (looking-at delim)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3720 (forward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3721 (setq found (search-forward delim eol 'lim)))
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3722 (setq endq (if found (1- (point)) (point)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3723 ))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3724 (progn (setq bq (point)) (setq endq (point)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3725 (store-match-data data)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3726 ;; return string beginning position or nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3727 (if (> start bq) bq))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3728
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3729 (defun idlwave-is-pointer-dereference (&optional limit)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3730 "Determine if the character after point is a pointer dereference *."
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3731 (and
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3732 (eq (char-after) ?\*)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3733 (not (idlwave-in-quote))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3734 (save-excursion
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3735 (forward-char)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3736 (re-search-backward (concat "\\(" idlwave-idl-keywords
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
3737 "\\|[[(*+-/=,^><]\\)\\s-*\\*") limit t))))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3738
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3739
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3740 ;; Statement templates
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3741
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3742 ;; Replace these with a general template function, something like
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3743 ;; expand.el (I think there was also something with a name similar to
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3744 ;; dmacro.el)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3745
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3746 (defun idlwave-template (s1 s2 &optional prompt noindent)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3747 "Build a template with optional prompt expression.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3748
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3749 Opens a line if point is not followed by a newline modulo intervening
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3750 whitespace. S1 and S2 are strings. S1 is inserted at point followed
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3751 by S2. Point is inserted between S1 and S2. The case of S1 and S2 is
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3752 adjusted according to `idlwave-abbrev-change-case'. If optional
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3753 argument PROMPT is a string then it is displayed as a message in the
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3754 minibuffer. The PROMPT serves as a reminder to the user of an
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3755 expression to enter.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3756
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3757 The lines containing S1 and S2 are reindented using `indent-region'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3758 unless the optional second argument NOINDENT is non-nil."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3759 (if (eq major-mode 'idlwave-shell-mode)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3760 ;; This is a gross hack to avoit template abbrev expansion
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3761 ;; in the shell. FIXME: This is a dirty hack.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3762 (if (and (eq this-command 'self-insert-command)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3763 (equal last-abbrev-location (point)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3764 (insert last-abbrev-text)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3765 (error "No templates in idlwave-shell"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3766 (cond ((eq idlwave-abbrev-change-case 'down)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3767 (setq s1 (downcase s1) s2 (downcase s2)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3768 (idlwave-abbrev-change-case
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3769 (setq s1 (upcase s1) s2 (upcase s2))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3770 (let ((beg (save-excursion (beginning-of-line) (point)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3771 end)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3772 (if (not (looking-at "\\s-*\n"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3773 (open-line 1))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3774 (insert s1)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3775 (save-excursion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3776 (insert s2)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3777 (setq end (point)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3778 (if (not noindent)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3779 (indent-region beg end nil))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3780 (if (stringp prompt)
87170
e50a2e215441 * erc-stamp.el (erc-echo-timestamp):
David Kastrup <dak@gnu.org>
parents: 86871
diff changeset
3781 (message "%s" prompt)))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3782
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3783 (defun idlwave-rw-case (string)
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3784 "Make STRING have the case required by `idlwave-reserved-word-upcase'."
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3785 (if idlwave-reserved-word-upcase
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3786 (upcase string)
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3787 string))
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3788
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3789 (defun idlwave-elif ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3790 "Build skeleton IDL if-else block."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3791 (interactive)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3792 (idlwave-template
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3793 (idlwave-rw-case "if")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3794 (idlwave-rw-case " then begin\n\nendif else begin\n\nendelse")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3795 "Condition expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3796
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3797 (defun idlwave-case ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3798 "Build skeleton IDL case statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3799 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3800 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3801 (idlwave-rw-case "case")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3802 (idlwave-rw-case " of\n\nendcase")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3803 "Selector expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3804
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3805 (defun idlwave-switch ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3806 "Build skeleton IDL switch statement."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3807 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3808 (idlwave-template
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3809 (idlwave-rw-case "switch")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3810 (idlwave-rw-case " of\n\nendswitch")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3811 "Selector expression"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3812
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3813 (defun idlwave-for ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3814 "Build skeleton IDL loop statement."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3815 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3816 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3817 (idlwave-rw-case "for")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3818 (idlwave-rw-case " do begin\n\nendfor")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3819 "Loop expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3820
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3821 (defun idlwave-if ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3822 "Build skeleton IDL if statement."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3823 (interactive)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3824 (idlwave-template
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3825 (idlwave-rw-case "if")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3826 (idlwave-rw-case " then begin\n\nendif")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3827 "Scalar logical expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3828
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3829 (defun idlwave-procedure ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3830 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3831 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3832 (idlwave-rw-case "pro")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3833 (idlwave-rw-case "\n\nreturn\nend")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3834 "Procedure name"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3835
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3836 (defun idlwave-function ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3837 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3838 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3839 (idlwave-rw-case "function")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3840 (idlwave-rw-case "\n\nreturn\nend")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3841 "Function name"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3842
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3843 (defun idlwave-repeat ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3844 (interactive)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3845 (idlwave-template
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3846 (idlwave-rw-case "repeat begin\n\nendrep until")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3847 (idlwave-rw-case "")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3848 "Exit condition"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3849
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3850 (defun idlwave-while ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3851 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3852 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3853 (idlwave-rw-case "while")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3854 (idlwave-rw-case " do begin\n\nendwhile")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3855 "Entry condition"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3856
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3857 (defun idlwave-split-string (string &optional pattern)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3858 "Return a list of substrings of STRING which are separated by PATTERN.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3859 If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3860 (or pattern
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3861 (setq pattern "[ \f\t\n\r\v]+"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3862 (let (parts (start 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3863 (while (string-match pattern string start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3864 (setq parts (cons (substring string start (match-beginning 0)) parts)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3865 start (match-end 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3866 (nreverse (cons (substring string start) parts))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3867
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3868 (defun idlwave-replace-string (string replace_string replace_with)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3869 (let* ((start 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3870 (last (length string))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3871 (ret_string "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3872 end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3873 (while (setq end (string-match replace_string string start))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3874 (setq ret_string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3875 (concat ret_string (substring string start end) replace_with))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3876 (setq start (match-end 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3877 (setq ret_string (concat ret_string (substring string start last)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3878
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3879 (defun idlwave-get-buffer-visiting (file)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3880 ;; Return the buffer currently visiting FILE
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3881 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3882 ((boundp 'find-file-compare-truenames) ; XEmacs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3883 (let ((find-file-compare-truenames t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3884 (get-file-buffer file)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3885 ((fboundp 'find-buffer-visiting) ; Emacs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3886 (find-buffer-visiting file))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3887 (t (error "This should not happen (idlwave-get-buffer-visiting)"))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3888
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3889 (defvar idlwave-outlawed-buffers nil
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3890 "List of buffers pulled up by IDLWAVE for special reasons.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3891 Buffers in this list may be killed by `idlwave-kill-autoloaded-buffers'.")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3892
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3893 (defun idlwave-find-file-noselect (file &optional why)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3894 ;; Return a buffer visiting file.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3895 (or (idlwave-get-buffer-visiting file)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3896 (let ((buf (find-file-noselect file)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3897 (if why (add-to-list 'idlwave-outlawed-buffers (cons buf why)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3898 buf)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3899
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3900 (defun idlwave-kill-autoloaded-buffers ()
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3901 "Kill buffers created automatically by IDLWAVE.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3902 Function prompts for a letter to identify the buffers to kill.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3903 Possible letters are:
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3904
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3905 f Buffers created by the command \\[idlwave-find-module] or mouse
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3906 clicks in the routine info window.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3907 s Buffers created by the IDLWAVE Shell to display where execution
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3908 stopped or an error was found.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3909 a Both of the above.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3910
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3911 Buffers containing unsaved changes require confirmation before they are killed."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3912 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3913 (if (null idlwave-outlawed-buffers)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3914 (error "No IDLWAVE-created buffers available")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3915 (princ (format "Kill IDLWAVE-created buffers: [f]ind source(%d), [s]hell display(%d), [a]ll ? "
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3916 (idlwave-count-outlawed-buffers 'find)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3917 (idlwave-count-outlawed-buffers 'shell)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3918 (let ((c (read-char)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3919 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3920 ((member c '(?f ?\C-f))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3921 (idlwave-do-kill-autoloaded-buffers 'find))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3922 ((member c '(?s ?\C-s))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3923 (idlwave-do-kill-autoloaded-buffers 'shell))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3924 ((member c '(?a ?\C-a))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3925 (idlwave-do-kill-autoloaded-buffers t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3926 (t (error "Abort"))))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3927
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3928 (defun idlwave-count-outlawed-buffers (tag)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3929 "How many outlawed buffers have tag TAG?"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3930 (length (delq nil
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3931 (mapcar
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3932 (lambda (x) (eq (cdr x) tag))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3933 idlwave-outlawed-buffers))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3934
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3935 (defun idlwave-do-kill-autoloaded-buffers (&rest reasons)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3936 "Kill all buffers pulled up by IDLWAVE matching REASONS."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3937 (let* ((list (copy-sequence idlwave-outlawed-buffers))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3938 (cnt 0)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3939 entry)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3940 (while (setq entry (pop list))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3941 (if (buffer-live-p (car entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3942 (and (or (memq t reasons)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3943 (memq (cdr entry) reasons))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3944 (kill-buffer (car entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3945 (incf cnt)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3946 (setq idlwave-outlawed-buffers
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3947 (delq entry idlwave-outlawed-buffers)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3948 (setq idlwave-outlawed-buffers
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3949 (delq entry idlwave-outlawed-buffers))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3950 (message "%d buffer%s killed" cnt (if (= cnt 1) "" "s"))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3951
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3952 (defun idlwave-revoke-license-to-kill ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3953 "Remove BUFFER from the buffers which may be killed.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3954 Killing would be done by `idlwave-do-kill-autoloaded-buffers'.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3955 Intended for `after-save-hook'."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3956 (let* ((buf (current-buffer))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3957 (entry (assq buf idlwave-outlawed-buffers)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3958 ;; Revoke license
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3959 (if entry
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3960 (setq idlwave-outlawed-buffers
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3961 (delq entry idlwave-outlawed-buffers)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3962 ;; Remove this function from the hook.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3963 (remove-hook 'after-save-hook 'idlwave-revoke-license-to-kill 'local)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3964
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3965 (defvar idlwave-path-alist)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3966 (defun idlwave-locate-lib-file (file)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3967 ;; Find FILE on the scanned lib path and return a buffer visiting it
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3968 (let* ((dirs idlwave-path-alist)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3969 dir efile)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3970 (catch 'exit
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3971 (while (setq dir (car (pop dirs)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3972 (if (file-regular-p
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3973 (setq efile (expand-file-name file dir)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3974 (throw 'exit efile))))))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3975
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3976 (defun idlwave-expand-lib-file-name (file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3977 ;; Find FILE on the scanned lib path and return a buffer visiting it
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3978 ;; This is for, e.g., finding source with no user catalog
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3979 (cond
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3980 ((null file) nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3981 ((file-name-absolute-p file) file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3982 (t (idlwave-locate-lib-file file))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3983
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3984 (defun idlwave-make-tags ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3985 "Create the IDL tags file IDLTAGS in the current directory from
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3986 the list of directories specified in the minibuffer. Directories may be
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3987 for example: . /usr/local/rsi/idl/lib. All the subdirectories of the
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3988 specified top directories are searched if the directory name is prefixed
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
3989 by @. Specify @ directories with care, it may take a long, long time if
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3990 you specify /."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3991 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3992 (let (directory directories cmd append status numdirs dir getsubdirs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3993 buffer save_buffer files numfiles item errbuf)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
3994
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3995 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3996 ;; Read list of directories
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3997 (setq directory (read-string "Tag Directories: " "."))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3998 (setq directories (idlwave-split-string directory "[ \t]+"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3999 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4000 ;; Set etags command, vars
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4001 (setq cmd "etags --output=IDLTAGS --language=none --regex='/[
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4002 \\t]*[pP][Rr][Oo][ \\t]+\\([^ \\t,]+\\)/' --regex='/[
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4003 \\t]*[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn][ \\t]+\\([^ \\t,]+\\)/' ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4004 (setq append " ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4005 (setq status 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4006 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4007 ;; For each directory
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4008 (setq numdirs 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4009 (setq dir (nth numdirs directories))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4010 (while (and dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4011 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4012 ;; Find the subdirectories
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4013 (if (string-match "^[@]\\(.+\\)$" dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4014 (setq getsubdirs t) (setq getsubdirs nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4015 (if (and getsubdirs) (setq dir (substring dir 1 (length dir))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4016 (setq dir (expand-file-name dir))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4017 (if (file-directory-p dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4018 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4019 (if (and getsubdirs)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4020 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4021 (setq buffer (get-buffer-create "*idltags*"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4022 (call-process "sh" nil buffer nil "-c"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4023 (concat "find " dir " -type d -print"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4024 (setq save_buffer (current-buffer))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4025 (set-buffer buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4026 (setq files (idlwave-split-string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4027 (idlwave-replace-string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4028 (buffer-substring 1 (point-max))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4029 "\n" "/*.pro ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4030 "[ \t]+"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4031 (set-buffer save_buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4032 (kill-buffer buffer))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4033 (setq files (list (concat dir "/*.pro"))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4034 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4035 ;; For each subdirectory
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4036 (setq numfiles 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4037 (setq item (nth numfiles files))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4038 (while (and item)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4039 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4040 ;; Call etags
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4041 (if (not (string-match "^[ \\t]*$" item))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4042 (progn
65584
6dbba0bd58df Message format fixes, commit no. 3
Deepak Goel <deego@gnufans.org>
parents: 64085
diff changeset
4043 (message "%s" (concat "Tagging " item "..."))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4044 (setq errbuf (get-buffer-create "*idltags-error*"))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4045 (setq status (+ status
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4046 (if (eq 0 (call-process
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4047 "sh" nil errbuf nil "-c"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4048 (concat cmd append item)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4049 0
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4050 1)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4051 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4052 ;; Append additional tags
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4053 (setq append " --append ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4054 (setq numfiles (1+ numfiles))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4055 (setq item (nth numfiles files)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4056 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4057 (setq numfiles (1+ numfiles))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4058 (setq item (nth numfiles files))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4059 )))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4060
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4061 (setq numdirs (1+ numdirs))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4062 (setq dir (nth numdirs directories)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4063 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4064 (setq numdirs (1+ numdirs))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4065 (setq dir (nth numdirs directories)))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4066
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4067 (setq errbuf (get-buffer-create "*idltags-error*"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4068 (if (= status 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4069 (kill-buffer errbuf))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4070 (message "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4071 ))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4072
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4073 (defun idlwave-toggle-comment-region (beg end &optional n)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4074 "Comment the lines in the region if the first non-blank line is
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4075 commented, and conversely, uncomment region. If optional prefix arg
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4076 N is non-nil, then for N positive, add N comment delimiters or for N
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4077 negative, remove N comment delimiters.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4078 Uses `comment-region' which does not place comment delimiters on
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4079 blank lines."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4080 (interactive "r\nP")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4081 (if n
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4082 (comment-region beg end (prefix-numeric-value n))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4083 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4084 (goto-char beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4085 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4086 ;; skip blank lines
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4087 (skip-chars-forward " \t\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4088 (if (looking-at (concat "[ \t]*\\(" comment-start "+\\)"))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4089 (if (fboundp 'uncomment-region)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4090 (uncomment-region beg end)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4091 (comment-region beg end
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4092 (- (length (buffer-substring
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4093 (match-beginning 1)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4094 (match-end 1))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4095 (comment-region beg end)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4096
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4097
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4098 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4099 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4100 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4101 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4102 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4103 ;; Completion and Routine Info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4104 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4105
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4106 ;; String "intern" functions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4107
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4108 ;; For the completion and routine info function, we want to normalize
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4109 ;; the case of procedure names etc. We do this by "interning" these
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4110 ;; string is a hand-crafted way. Hashes are used to map the downcase
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4111 ;; version of the strings to the cased versions. Most *-sint-*
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4112 ;; variables consist of *two* hashes, a buffer+shell, followed by a
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4113 ;; system hash. The former is re-scanned, and the latter takes case
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4114 ;; precedence.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4115 ;;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4116 ;; Since these cased versions are really lisp objects, we can use `eq'
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4117 ;; to search, which is a large performance boost. All new strings
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4118 ;; need to be "sinterned". We do this as early as possible after
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4119 ;; getting these strings from completion or buffer substrings. So
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4120 ;; most of the code can simply assume to deal with "sinterned"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4121 ;; strings. The only exception is that the functions which scan whole
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4122 ;; buffers for routine information do not intern the grabbed strings.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4123 ;; This is only done afterwards. Therefore in these functions it is
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4124 ;; *not* safe to assume the strings can be compared with `eq' and be
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4125 ;; fed into the routine assq functions.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4126
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4127 ;; Here we define the hashing functions.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4128
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4129 ;; The variables which hold the hashes.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4130 (defvar idlwave-sint-routines '(nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4131 (defvar idlwave-sint-keywords '(nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4132 (defvar idlwave-sint-methods '(nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4133 (defvar idlwave-sint-classes '(nil))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4134 (defvar idlwave-sint-dirs '(nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4135 (defvar idlwave-sint-libnames '(nil))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4136
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4137 (defun idlwave-reset-sintern (&optional what)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4138 "Reset all sintern hashes."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4139 ;; Make sure the hash functions are accessible.
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4140 (unless (and (fboundp 'gethash)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4141 (fboundp 'puthash))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4142 (require 'cl)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4143 (or (fboundp 'puthash)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4144 (defalias 'puthash 'cl-puthash)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4145 (let ((entries '((idlwave-sint-routines 1000 10)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4146 (idlwave-sint-keywords 1000 10)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4147 (idlwave-sint-methods 100 10)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4148 (idlwave-sint-classes 10 10))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4149
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4150 ;; Make sure these are lists
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4151 (loop for entry in entries
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4152 for var = (car entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4153 do (if (not (consp (symbol-value var))) (set var (list nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4154
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4155 ;; Reset the system & library hash
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4156 (when (or (eq what t) (eq what 'syslib)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4157 (null (cdr idlwave-sint-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4158 (loop for entry in entries
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4159 for var = (car entry) for size = (nth 1 entry)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4160 do (setcdr (symbol-value var)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4161 (make-hash-table ':size size ':test 'equal)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4162 (setq idlwave-sint-dirs nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4163 idlwave-sint-libnames nil))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4164
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4165 ;; Reset the buffer & shell hash
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4166 (when (or (eq what t) (eq what 'bufsh)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4167 (null (car idlwave-sint-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4168 (loop for entry in entries
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4169 for var = (car entry) for size = (nth 1 entry)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4170 do (setcar (symbol-value var)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4171 (make-hash-table ':size size ':test 'equal))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4172
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4173 (defun idlwave-sintern-routine-or-method (name &optional class set)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4174 (if class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4175 (idlwave-sintern-method name set)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4176 (idlwave-sintern-routine name set)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4177
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4178 (defun idlwave-sintern (stype &rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4179 (apply (intern (concat "idlwave-sintern-" (symbol-name stype))) args))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4180
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4181 ;;(defmacro idlwave-sintern (type var)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4182 ;; `(cond ((not (stringp name)) name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4183 ;; ((gethash (downcase name) (cdr ,var)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4184 ;; ((gethash (downcase name) (car ,var)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4185 ;; (set (idlwave-sintern-set name ,type ,var set))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4186 ;; (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4187
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4188 (defun idlwave-sintern-routine (name &optional set)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4189 (cond ((not (stringp name)) name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4190 ((gethash (downcase name) (cdr idlwave-sint-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4191 ((gethash (downcase name) (car idlwave-sint-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4192 (set (idlwave-sintern-set name 'routine idlwave-sint-routines set))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4193 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4194 (defun idlwave-sintern-keyword (name &optional set)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4195 (cond ((not (stringp name)) name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4196 ((gethash (downcase name) (cdr idlwave-sint-keywords)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4197 ((gethash (downcase name) (car idlwave-sint-keywords)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4198 (set (idlwave-sintern-set name 'keyword idlwave-sint-keywords set))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4199 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4200 (defun idlwave-sintern-method (name &optional set)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4201 (cond ((not (stringp name)) name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4202 ((gethash (downcase name) (cdr idlwave-sint-methods)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4203 ((gethash (downcase name) (car idlwave-sint-methods)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4204 (set (idlwave-sintern-set name 'method idlwave-sint-methods set))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4205 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4206 (defun idlwave-sintern-class (name &optional set)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4207 (cond ((not (stringp name)) name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4208 ((gethash (downcase name) (cdr idlwave-sint-classes)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4209 ((gethash (downcase name) (car idlwave-sint-classes)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4210 (set (idlwave-sintern-set name 'class idlwave-sint-classes set))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4211 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4212
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4213 (defun idlwave-sintern-dir (dir &optional set)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4214 (car (or (member dir idlwave-sint-dirs)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4215 (setq idlwave-sint-dirs (cons dir idlwave-sint-dirs)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4216 (defun idlwave-sintern-libname (name &optional set)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4217 (car (or (member name idlwave-sint-libnames)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4218 (setq idlwave-sint-libnames (cons name idlwave-sint-libnames)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4219
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4220 (defun idlwave-sintern-set (name type tables set)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4221 (let* ((func (or (cdr (assq type idlwave-completion-case))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4222 'identity))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4223 (iname (funcall (if (eq func 'preserve) 'identity func) name))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4224 (table (if (eq set 'sys) (cdr tables) (car tables))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4225 (puthash (downcase name) iname table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4226 iname))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4227
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4228 (defun idlwave-sintern-keyword-list (kwd-list &optional set)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4229 "Sintern a set of keywords (file (key . link) (key2 . link2) ...)"
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
4230 (mapc (lambda(x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
4231 (setcar x (idlwave-sintern-keyword (car x) set)))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
4232 (cdr kwd-list))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4233 kwd-list)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4234
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4235 (defun idlwave-sintern-rinfo-list (list &optional set default-dir)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4236 "Sintern all strings in the rinfo LIST.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4237 With optional parameter SET: also set new patterns. Probably this
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4238 will always have to be t. If DEFAULT-DIR is passed, it is used as
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4239 the base of the directory."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4240 (let (entry name type class kwds res source call new)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4241 (while list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4242 (setq entry (car list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4243 list (cdr list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4244 name (car entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4245 type (nth 1 entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4246 class (nth 2 entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4247 source (nth 3 entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4248 call (nth 4 entry)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4249 kwds (nthcdr 5 entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4250
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4251 ;; The class and name
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4252 (if class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4253 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4254 (if (symbolp class) (setq class (symbol-name class)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4255 (setq class (idlwave-sintern-class class set))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4256 (setq name (idlwave-sintern-method name set)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4257 (setq name (idlwave-sintern-routine name set)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4258
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4259 ;; The source
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4260 (let ((source-type (car source))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4261 (source-file (nth 1 source))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4262 (source-dir (if default-dir
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4263 (file-name-as-directory default-dir)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4264 (nth 2 source)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4265 (source-lib (nth 3 source)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4266 (if (stringp source-dir)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4267 (setq source-dir (idlwave-sintern-dir source-dir set)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4268 (if (stringp source-lib)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4269 (setq source-lib (idlwave-sintern-libname source-lib set)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4270 (setq source (list source-type source-file source-dir source-lib)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4271
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4272 ;; The keywords
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4273 (setq kwds (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4274 (idlwave-sintern-keyword-list x set))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4275 kwds))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4276
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4277 ;; Build a canonicalized list
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4278 (setq new (nconc (list name type class source call) kwds)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4279 res (cons new res)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4280 (nreverse res)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4281
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4282 ;; Creating new sintern tables
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4283
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4284 (defun idlwave-new-sintern-type (tag)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4285 "Define a variable and a function to sintern the new type TAG.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4286 This defines the function `idlwave-sintern-TAG' and the variable
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4287 `idlwave-sint-TAGs'."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4288 (let* ((name (symbol-name tag))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4289 (names (concat name "s"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4290 (var (intern (concat "idlwave-sint-" names)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4291 (func (intern (concat "idlwave-sintern-" name))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4292 (set var nil) ; initial value of the association list
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4293 (fset func ; set the function
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4294 `(lambda (name &optional set)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4295 (cond ((not (stringp name)) name)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4296 ((cdr (assoc (downcase name) ,var)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4297 (set
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4298 (setq ,var (cons (cons (downcase name) name) ,var))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4299 name)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4300 (name))))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4301
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4302 (defun idlwave-reset-sintern-type (tag)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4303 "Reset the sintern variable associated with TAG."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4304 (set (intern (concat "idlwave-sint-" (symbol-name tag) "s")) nil))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4305
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4306 ;;---------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4307
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4308
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4309 ;; The variables which hold the information
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4310 (defvar idlwave-system-routines nil
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4311 "Holds the routine-info obtained by scanning buffers.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4312 (defvar idlwave-buffer-routines nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4313 "Holds the routine-info obtained by scanning buffers.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4314 (defvar idlwave-compiled-routines nil
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4315 "Holds the routine-info obtained by asking the shell.")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4316 (defvar idlwave-unresolved-routines nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4317 "Holds the unresolved routine-info obtained by asking the shell.")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4318 (defvar idlwave-user-catalog-routines nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4319 "Holds the procedure routine-info from the user scan.")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4320 (defvar idlwave-library-catalog-routines nil
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4321 "Holds the procedure routine-info from the .idlwave_catalog library files.")
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4322 (defvar idlwave-library-catalog-libname nil
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4323 "Name of library catalog loaded from .idlwave_catalog files.")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4324 (defvar idlwave-path-alist nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4325 "Alist with !PATH directories and zero or more flags if the dir has
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4326 been scanned in a user catalog ('user) or discovered in a library
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4327 catalog \('lib).")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4328 (defvar idlwave-true-path-alist nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4329 "Like `idlwave-path-alist', but with true filenames.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4330 (defvar idlwave-routines nil
77887
189495e510b9 (idlwave-routines): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 77493
diff changeset
4331 "Holds the combined procedure/function/method routine-info.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4332 (defvar idlwave-class-alist nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4333 "Holds the class names known to IDLWAVE.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4334 (defvar idlwave-class-history nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4335 "The history of classes selected with the minibuffer.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4336 (defvar idlwave-force-class-query nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4337 (defvar idlwave-before-completion-wconf nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4338 "The window configuration just before the completion buffer was displayed.")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4339 (defvar idlwave-last-system-routine-info-cons-cell nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4340 "The last cons cell in the system routine info.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4341
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4342 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4343 ;; The code to get routine info from different sources.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4344
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4345 (defvar idlwave-system-routines)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4346 (defvar idlwave-catalog-process nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4347 "The background process currently updating the catalog.")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4348
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4349 (defun idlwave-routines ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4350 "Provide a list of IDL routines.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4351 This routine loads the builtin routines on the first call.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4352 Later it only returns the value of the variable."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4353 (if (and idlwave-catalog-process
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4354 (processp idlwave-catalog-process))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4355 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4356 (cond
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4357 ((equal (process-status idlwave-catalog-process) 'exit)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4358 (message "updating........")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4359 (setq idlwave-catalog-process nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4360 (idlwave-update-routine-info '(4)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4361 ((equal (process-status idlwave-catalog-process) 'run)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4362 ;; Keep it running...
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4363 )
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4364 (t
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4365 ;; Something is wrong, get rid of the process
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4366 (message "Problem with catalog process") (beep)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4367 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4368 (kill-process idlwave-catalog-process)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4369 (error nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4370 (setq idlwave-catalog-process nil)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4371 (or idlwave-routines
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4372 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4373 (idlwave-update-routine-info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4374 ;; return the current value
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4375 idlwave-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4376
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4377 (defvar idlwave-update-rinfo-hook nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4378 "List of functions which should run after a global rinfo update.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4379 Does not run after automatic updates of buffer or the shell.")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4380
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4381 (defun idlwave-rescan-catalog-directories ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
4382 "Rescan the previously selected directories. For batch processing."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4383 (idlwave-update-routine-info '(16)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4384
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4385 (defun idlwave-rescan-asynchronously ()
73733
92287004e36f (idlwave-rescan-asynchronously): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 72833
diff changeset
4386 "Dispatch another Emacs instance to update the idlwave catalog.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4387 After the process finishes normally, the first access to routine info
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4388 will re-read the catalog."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4389 (interactive)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4390 (if (processp idlwave-catalog-process)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4391 (if (eq (process-status idlwave-catalog-process) 'run)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4392 (if (yes-or-no-p "A catalog-updating process is running. Kill it? ")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4393 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4394 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4395 (kill-process idlwave-catalog-process)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4396 (error nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4397 (error "Process killed, no new process started"))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4398 (error "Quit"))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4399 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4400 (kill-process idlwave-catalog-process)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4401 (error nil))))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4402 (if (or (not idlwave-user-catalog-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4403 (not (stringp idlwave-user-catalog-file))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4404 (not (file-regular-p idlwave-user-catalog-file)))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4405 (error "No catalog has been produced yet"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4406 (let* ((emacs (concat invocation-directory invocation-name))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4407 (args (list "-batch"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4408 "-l" (expand-file-name "~/.emacs")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4409 "-l" "idlwave"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4410 "-f" "idlwave-rescan-catalog-directories"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4411 (process (apply 'start-process "idlcat"
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4412 nil emacs args)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4413 (setq idlwave-catalog-process process)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4414 (set-process-sentinel
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4415 process
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4416 (lambda (pro why)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4417 (when (string-match "finished" why)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4418 (setq idlwave-routines nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4419 idlwave-system-routines nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4420 idlwave-catalog-process nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4421 (or (idlwave-start-load-rinfo-timer)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4422 (idlwave-update-routine-info '(4))))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4423 (message "Background job started to update catalog file")))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4424
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4425
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4426 ;; Format for all routine info user catalog, library catalogs, etc.:
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4427 ;;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4428 ;; ("ROUTINE" type class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4429 ;; (system) | (lib pro_file dir "LIBNAME") | (user pro_file dir "USERLIB") |
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4430 ;; (buffer pro_file dir) | (compiled pro_file dir)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4431 ;; "calling_string" ("HELPFILE" (("KWD1" . link1) ...))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4432 ;; ("HELPFILE2" (("KWD2" . link) ...)) ...)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4433 ;;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4434 ;; DIR will be supplied dynamically while loading library catalogs,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4435 ;; and is sinterned to save space, as is LIBNAME. PRO_FILE can be a
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4436 ;; complete filepath, in which case DIR is unnecessary. HELPFILE can
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4437 ;; be nil, as can LINK1, etc., if no HTML help is available.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4438
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4439
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4440 (defvar idlwave-load-rinfo-idle-timer)
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4441 (defvar idlwave-shell-path-query)
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4442
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4443 (defun idlwave-update-routine-info (&optional arg no-concatenate)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4444 "Update the internal routine-info lists.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4445 These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4446 and by `idlwave-complete' (\\[idlwave-complete]) to provide information
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4447 about individual routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4448
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4449 The information can come from 4 sources:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4450 1. IDL programs in the current editing session
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4451 2. Compiled modules in an IDL shell running as Emacs subprocess
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4452 3. A list which covers the IDL system routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4453 4. A list which covers the prescanned library files.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4454
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4455 Scans all IDLWAVE-mode buffers of the current editing session (see
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4456 `idlwave-scan-all-buffers-for-routine-info').
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4457 When an IDL shell is running, this command also queries the IDL program
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4458 for currently compiled routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4459
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4460 With prefix ARG, also reload the system and library lists.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4461 With two prefix ARG's, also rescans the chosen user catalog tree.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4462 With three prefix args, dispatch asynchronous process to do the update.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4463
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4464 If NO-CONCATENATE is non-nil, don't pre-concatenate the routine info
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4465 lists, but instead wait for the shell query to complete and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4466 asynchronously finish updating routine info. This is set
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4467 automatically when called interactively. When you need routine
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4468 information updated immediately, leave NO-CONCATENATE nil."
57821
de4da107405e (idlwave-update-routine-info): Don't use interactive-p.
Richard M. Stallman <rms@gnu.org>
parents: 54770
diff changeset
4469 (interactive "P\np")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4470 ;; Stop any idle processing
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4471 (if (or (and (fboundp 'itimerp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4472 (itimerp idlwave-load-rinfo-idle-timer))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4473 (and (fboundp 'timerp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4474 (timerp idlwave-load-rinfo-idle-timer)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4475 (cancel-timer idlwave-load-rinfo-idle-timer))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4476 (cond
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4477 ((equal arg '(64))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4478 ;; Start a background process which updates the catalog.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4479 (idlwave-rescan-asynchronously))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4480 ((equal arg '(16))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4481 ;; Update the user catalog now, and wait for them.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4482 (idlwave-create-user-catalog-file t))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4483 (t
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4484 (let* ((load (or arg
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4485 idlwave-buffer-case-takes-precedence
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4486 (null idlwave-routines)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4487 ;; The override-idle means, even if the idle timer has done some
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4488 ;; preparing work, load and renormalize everything anyway.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4489 (override-idle (or arg idlwave-buffer-case-takes-precedence)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4490
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4491 (setq idlwave-buffer-routines nil
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4492 idlwave-compiled-routines nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4493 idlwave-unresolved-routines nil)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4494 ;; Reset the appropriate hashes
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4495 (if (get 'idlwave-reset-sintern 'done-by-idle)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4496 ;; reset was already done in idle time, so skip this step now once
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4497 (put 'idlwave-reset-sintern 'done-by-idle nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4498 (idlwave-reset-sintern (cond (load t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4499 ((null idlwave-system-routines) t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4500 (t 'bufsh))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4501
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4502 (if idlwave-buffer-case-takes-precedence
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4503 ;; We can safely scan the buffer stuff first
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4504 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4505 (idlwave-update-buffer-routine-info)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4506 (and load (idlwave-load-all-rinfo override-idle)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4507 ;; We first do the system info, and then the buffers
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4508 (and load (idlwave-load-all-rinfo override-idle))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4509 (idlwave-update-buffer-routine-info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4510
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4511 ;; Let's see if there is a shell
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4512 (let* ((shell-is-running (and (fboundp 'idlwave-shell-is-running)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4513 (idlwave-shell-is-running)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4514 (ask-shell (and shell-is-running
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4515 idlwave-query-shell-for-routine-info)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4516
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4517 ;; Load the library catalogs again, first re-scanning the path
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4518 (when arg
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4519 (if shell-is-running
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4520 (idlwave-shell-send-command idlwave-shell-path-query
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4521 '(progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4522 (idlwave-shell-get-path-info)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4523 (idlwave-scan-library-catalogs))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4524 'hide)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4525 (idlwave-scan-library-catalogs)))
47930
43574ede3ab1 (idlwave-region-active-p): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47479
diff changeset
4526
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4527 (if (or (not ask-shell)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4528 (not no-concatenate))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4529 ;; 1. If we are not going to ask the shell, we need to do the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4530 ;; concatenation now.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4531 ;; 2. When this function is called non-interactively, it
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4532 ;; means that someone needs routine info *now*. The
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4533 ;; shell update causes the concatenation to be
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4534 ;; *delayed*, so not in time for the current command.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4535 ;; Therefore, we do a concatenation now, even though
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4536 ;; the shell might do it again.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4537 (idlwave-concatenate-rinfo-lists nil 'run-hooks))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4538
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4539 (when ask-shell
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4540 ;; Ask the shell about the routines it knows of.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4541 (message "Querying the shell")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4542 (idlwave-shell-update-routine-info nil t)))))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4543
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4544
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4545 (defvar idlwave-load-rinfo-steps-done (make-vector 6 nil))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4546 (defvar idlwave-load-rinfo-idle-timer nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4547 (defun idlwave-start-load-rinfo-timer ()
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4548 (if (or (and (fboundp 'itimerp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4549 (itimerp idlwave-load-rinfo-idle-timer))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4550 (and (fboundp 'timerp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4551 (timerp idlwave-load-rinfo-idle-timer)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4552 (cancel-timer idlwave-load-rinfo-idle-timer))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4553 (setq idlwave-load-rinfo-steps-done (make-vector 6 nil))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4554 (setq idlwave-load-rinfo-idle-timer nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4555 (if (and idlwave-init-rinfo-when-idle-after
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4556 (numberp idlwave-init-rinfo-when-idle-after)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4557 (not (equal 0 idlwave-init-rinfo-when-idle-after))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4558 (not idlwave-routines))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4559 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4560 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4561 (setq idlwave-load-rinfo-idle-timer
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4562 (run-with-idle-timer
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4563 idlwave-init-rinfo-when-idle-after
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4564 nil 'idlwave-load-rinfo-next-step)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4565 (error nil))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4566
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4567 (defvar idlwave-library-routines nil "Obsolete variable.")
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4568
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4569 ;;------ XML Help routine info system
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4570 (defun idlwave-load-system-routine-info ()
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4571 ;; Load the system routine info from the cached routine info file,
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4572 ;; which, if necessary, will be re-created from the XML file on
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4573 ;; disk. As a last fallback, load the (likely outdated) idlw-rinfo
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4574 ;; file distributed with older IDLWAVE versions (<6.0)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4575 (unless (and (load idlwave-xml-system-rinfo-converted-file
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4576 'noerror 'nomessage)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4577 (idlwave-xml-system-routine-info-up-to-date))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4578 ;; See if we can create it from XML source
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4579 (condition-case nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4580 (idlwave-convert-xml-system-routine-info)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4581 (error
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4582 (unless (load idlwave-xml-system-rinfo-converted-file
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4583 'noerror 'nomessage)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4584 (if idlwave-system-routines
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4585 (message
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4586 "Failed to load converted routine info, using old conversion.")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4587 (message
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4588 "Failed to convert XML routine info, falling back on idlw-rinfo.")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4589 (if (not (load "idlw-rinfo" 'noerror 'nomessage))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4590 (message
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4591 "Could not locate any system routine information."))))))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4592
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4593 (defun idlwave-xml-system-routine-info-up-to-date()
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4594 (let* ((dir (file-name-as-directory
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4595 (expand-file-name "help/online_help" (idlwave-sys-dir))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4596 (catalog-file (expand-file-name "idl_catalog.xml" dir)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4597 (file-newer-than-file-p ;converted file is newer than catalog
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4598 idlwave-xml-system-rinfo-converted-file
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4599 catalog-file)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4600
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4601 (defvar idlwave-system-class-info nil) ; Gathered from idlw-rinfo
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4602 (defvar idlwave-system-variables-alist nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4603 "Alist of system variables and the associated structure tags.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4604 Gets set in cached XML rinfo, or `idlw-rinfo.el'.")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4605 (defvar idlwave-executive-commands-alist nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4606 "Alist of system variables and their help files.")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4607 (defvar idlwave-help-special-topic-words nil)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4608
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4609
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4610 (defun idlwave-shorten-syntax (syntax name &optional class)
106837
855f55740303 Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents: 106815
diff changeset
4611 ;; From a list of syntax statements, shorten with %s and group with "or"
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4612 (let ((case-fold-search t))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4613 (mapconcat
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4614 (lambda (x)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4615 (while (string-match name x)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4616 (setq x (replace-match "%s" t t x)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4617 (if class
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4618 (while (string-match class x)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4619 (setq x (replace-match "%s" t t x))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4620 x)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4621 (nreverse syntax)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4622 " or ")))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4623
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4624 (defun idlwave-xml-create-class-method-lists (xml-entry)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4625 ;; Create a class list entry from the xml parsed list., returning a
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4626 ;; cons of form (class-entry method-entries).
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4627 (let* ((nameblock (nth 1 xml-entry))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4628 (class (cdr (assq 'name nameblock)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4629 (link (cdr (assq 'link nameblock)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4630 (params (cddr xml-entry))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4631 (case-fold-search t)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4632 class-entry
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4633 method methods-entry extra-kwds
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4634 props get-props set-props init-props inherits
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4635 pelem ptype)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4636 (while params
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4637 (setq pelem (car params))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4638 (when (listp pelem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4639 (setq ptype (car pelem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4640 props (car (cdr pelem)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4641 (cond
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4642 ((eq ptype 'SUPERCLASS)
74456
dbed1aaa1237 (idlwave-xml-create-class-method-lists): Trim out spurious class
J.D. Smith <jdsmith@as.arizona.edu>
parents: 74319
diff changeset
4643 (let ((pname (cdr (assq 'name props)))
dbed1aaa1237 (idlwave-xml-create-class-method-lists): Trim out spurious class
J.D. Smith <jdsmith@as.arizona.edu>
parents: 74319
diff changeset
4644 (plink (cdr (assq 'link props))))
dbed1aaa1237 (idlwave-xml-create-class-method-lists): Trim out spurious class
J.D. Smith <jdsmith@as.arizona.edu>
parents: 74319
diff changeset
4645 (unless (and (string= pname "None")
dbed1aaa1237 (idlwave-xml-create-class-method-lists): Trim out spurious class
J.D. Smith <jdsmith@as.arizona.edu>
parents: 74319
diff changeset
4646 (string= plink "None"))
dbed1aaa1237 (idlwave-xml-create-class-method-lists): Trim out spurious class
J.D. Smith <jdsmith@as.arizona.edu>
parents: 74319
diff changeset
4647 (push pname inherits))))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4648
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4649 ((eq ptype 'PROPERTY)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4650 (let ((pname (cdr (assq 'name props)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4651 (plink (cdr (assq 'link props)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4652 (get (string= (cdr (assq 'get props)) "Yes"))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4653 (set (string= (cdr (assq 'set props)) "Yes"))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4654 (init (string= (cdr (assq 'init props)) "Yes")))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4655 (if get (push (list pname plink) get-props))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4656 (if set (push (list pname plink) set-props))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4657 (if init (push (list pname plink) init-props))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4658
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4659 ((eq ptype 'METHOD)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4660 (setq method (cdr (assq 'name props)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4661 (setq extra-kwds ;;Assume all property keywords are gathered already
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4662 (cond
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4663 ((string-match (concat class "::Init") method)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4664 (put 'init-props 'matched t)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4665 init-props)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4666 ((string-match (concat class "::GetProperty") method)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4667 (put 'get-props 'matched t)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4668 get-props)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4669 ((string-match (concat class "::SetProperty") method)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4670 (put 'set-props 'matched t)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4671 set-props)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4672 (t nil)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4673 (setq methods-entry
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4674 (nconc (idlwave-xml-create-rinfo-list pelem class extra-kwds)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4675 methods-entry)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4676 (t)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4677 (setq params (cdr params)))
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4678 ;;(unless (get 'init-props 'matched)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4679 ;; (message "Failed to match Init in class %s" class))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4680 ;;(unless (get 'get-props 'matched)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4681 ;; (message "Failed to match GetProperty in class %s" class))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4682 ;;(unless (get 'set-props 'matched)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4683 ;; (message "Failed to match SetProperty in class %s" class))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4684 (setq class-entry
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4685 (if inherits
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4686 (list class (append '(inherits) inherits) (list 'link link))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4687 (list class (list 'link link))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4688 (cons class-entry methods-entry)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4689
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4690 (defun idlwave-xml-create-rinfo-list (xml-entry &optional class extra-kws)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4691 ;; Create correctly structured list elements from ROUTINE or METHOD
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4692 ;; XML list structures. Return a list of list elements, with more
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4693 ;; than one sub-list possible if a routine can serve as both
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4694 ;; procedure and function (e.g. call_method).
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4695 (let* ((nameblock (nth 1 xml-entry))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4696 (name (cdr (assq 'name nameblock)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4697 (link (cdr (assq 'link nameblock)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4698 (params (cddr xml-entry))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4699 (syntax-vec (make-vector 3 nil)) ; procedure, function, exec command
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4700 (case-fold-search t)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4701 syntax kwd klink pref-list kwds pelem ptype props result type)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4702 (if class ;; strip out class name from class method name string
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4703 (if (string-match (concat class "::") name)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4704 (setq name (substring name (match-end 0)))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4705 (while params
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4706 (setq pelem (car params))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4707 (when (listp pelem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4708 (setq ptype (car pelem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4709 props (car (cdr pelem)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4710 (cond
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4711 ((eq ptype 'SYNTAX)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4712 (setq syntax (cdr (assq 'name props)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4713 (if (string-match "-&gt;" syntax)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4714 (setq syntax (replace-match "->" t nil syntax)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4715 (setq type (cdr (assq 'type props)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4716 (push syntax
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4717 (aref syntax-vec (cond
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4718 ((string-match "^pro" type) 0)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4719 ((string-match "^fun" type) 1)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4720 ((string-match "^exec" type) 2)))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4721 ((eq ptype 'KEYWORD)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4722 (setq kwd (cdr (assq 'name props))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4723 klink (cdr (assq 'link props)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4724 (if (string-match "^\\[XY\\(Z?\\)\\]" kwd)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4725 (progn
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4726 (setq pref-list
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4727 (if (match-string 1 kwd) '("X" "Y" "Z") '("X" "Y"))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4728 kwd (substring kwd (match-end 0)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4729 (loop for x in pref-list do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4730 (push (list (concat x kwd) klink) kwds)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4731 (push (list kwd klink) kwds)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4732
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4733 (t))); Do nothing for the others
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4734 (setq params (cdr params)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4735
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4736 ;; Debug
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4737 ;; (if (and (null (aref syntax-vec 0))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4738 ;; (null (aref syntax-vec 1))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4739 ;; (null (aref syntax-vec 2)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4740 ;; (with-current-buffer (get-buffer-create "IDL_XML_catalog_complaints")
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4741 ;; (if class
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4742 ;; (insert (format "Missing SYNTAX entry for %s::%s\n" class name))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4743 ;; (insert (message "Missing SYNTAX entry for %s\n" name)))))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4744
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4745 ;; Executive commands are treated specially
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4746 (if (aref syntax-vec 2)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4747 (cons (substring name 1) link)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4748 (if extra-kws (setq kwds (nconc kwds extra-kws)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4749 (setq kwds (idlwave-rinfo-group-keywords kwds link))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4750 (loop for idx from 0 to 1 do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4751 (if (aref syntax-vec idx)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4752 (push (append (list name (if (eq idx 0) 'pro 'fun)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4753 class '(system)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4754 (idlwave-shorten-syntax
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4755 (aref syntax-vec idx) name class))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4756 kwds) result)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4757 result)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4758
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4759
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4760 (defun idlwave-rinfo-group-keywords (kwds master-link)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4761 ;; Group keywords by link file, as a list with elements
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4762 ;; (linkfile ( ("KWD1" . link1) ("KWD2" . link2))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4763 (let (kwd link anchor linkfiles block master-elt)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4764 (while kwds
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4765 (setq kwd (car kwds)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4766 link (idlwave-split-link-target (nth 1 kwd))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4767 anchor (cdr link)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4768 link (car link)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4769 kwd (car kwd))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4770 (if (setq block (assoc link linkfiles))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4771 (push (cons kwd anchor) (cdr block))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4772 (push (list link (cons kwd anchor)) linkfiles))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4773 (setq kwds (cdr kwds)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4774 ;; Ensure the master link is there
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4775 (if (setq master-elt (assoc master-link linkfiles))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4776 (if (eq (car linkfiles) master-elt)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4777 linkfiles
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4778 (cons master-elt (delq master-elt linkfiles)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4779 (push (list master-link) linkfiles))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4780
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4781 (defun idlwave-convert-xml-clean-statement-aliases (aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4782 ;; Clean up the syntax of routines which are actually aliases by
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4783 ;; removing the "OR" from the statements
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4784 (let (syntax entry)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4785 (loop for x in aliases do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4786 (setq entry (assoc x idlwave-system-routines))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4787 (when entry
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4788 (while (string-match " +or +" (setq syntax (nth 4 entry)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4789 (setf (nth 4 entry) (replace-match ", " t t syntax)))))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4790
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4791 (defun idlwave-convert-xml-clean-routine-aliases (aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4792 ;; Duplicate and trim original routine aliases from rinfo list
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4793 ;; This if for, e.g. OPENR/OPENW/OPENU
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4794 (let (alias remove-list new parts all-parts)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4795 (loop for x in aliases do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4796 (when (setq parts (split-string (cdr x) "/"))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4797 (setq new (assoc (cdr x) all-parts))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4798 (unless new
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4799 (setq new (cons (cdr x) parts))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4800 (push new all-parts))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4801 (setcdr new (delete (car x) (cdr new)))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4802
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4803 ;; Add any missing aliases (separate by slashes)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4804 (loop for x in all-parts do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4805 (if (cdr x)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4806 (push (cons (nth 1 x) (car x)) aliases)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4807
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4808 (loop for x in aliases do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4809 (when (setq alias (assoc (cdr x) idlwave-system-routines))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4810 (unless (memq alias remove-list) (push alias remove-list))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4811 (setq alias (copy-sequence alias))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4812 (setcar alias (car x))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4813 (push alias idlwave-system-routines)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4814 (loop for x in remove-list do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4815 (delq x idlwave-system-routines))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4816
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4817 (defun idlwave-convert-xml-clean-sysvar-aliases (aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4818 ;; Duplicate and trim original routine aliases from rinfo list
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4819 ;; This if for, e.g. !X, !Y, !Z.
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4820 (let (alias remove-list)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4821 (loop for x in aliases do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4822 (when (setq alias (assoc (cdr x) idlwave-system-variables-alist))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4823 (unless (memq alias remove-list) (push alias remove-list))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4824 (setq alias (copy-sequence alias))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4825 (setcar alias (car x))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4826 (push alias idlwave-system-variables-alist)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4827 (loop for x in remove-list do
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4828 (delq x idlwave-system-variables-alist))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4829
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4830
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4831 (defun idlwave-xml-create-sysvar-alist (xml-entry)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4832 ;; Create a sysvar list entry from the xml parsed list.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4833 (let* ((nameblock (nth 1 xml-entry))
75581
7cca60272387 (idlwave-xml-create-sysvar-alist): Trim leading whitespace in sysvar
J.D. Smith <jdsmith@as.arizona.edu>
parents: 75347
diff changeset
4834 (name (cdr (assq 'name nameblock)))
77887
189495e510b9 (idlwave-routines): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 77493
diff changeset
4835 (sysvar (substring name (progn (string-match "^ *!" name)
75581
7cca60272387 (idlwave-xml-create-sysvar-alist): Trim leading whitespace in sysvar
J.D. Smith <jdsmith@as.arizona.edu>
parents: 75347
diff changeset
4836 (match-end 0))))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4837 (link (cdr (assq 'link nameblock)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4838 (params (cddr xml-entry))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4839 (case-fold-search t)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4840 pelem ptype props tags)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4841 (while params
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4842 (setq pelem (car params))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4843 (when (listp pelem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4844 (setq ptype (car pelem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4845 props (car (cdr pelem)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4846 (cond
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4847 ((eq ptype 'FIELD)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4848 (push (cons (cdr (assq 'name props))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4849 (cdr
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4850 (idlwave-split-link-target (cdr (assq 'link props)))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4851 tags))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4852 (setq params (cdr params)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4853 (delq nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4854 (list sysvar (if tags (cons 'tags tags)) (list 'link link)))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4855
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4856
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4857 (defvar idlwave-xml-routine-info-file nil)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4858
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4859 (defun idlwave-save-routine-info ()
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4860 (if idlwave-xml-routine-info-file
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4861 (with-temp-file idlwave-xml-system-rinfo-converted-file
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4862 (insert
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4863 (concat ";; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4864 ;; IDLWAVE Routine Information File (IDLWAVE version " idlwave-mode-version ")
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4865 ;; Automatically generated from source file:
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4866 ;; " idlwave-xml-routine-info-file "
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4867 ;; on " (current-time-string) "
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4868 ;; Do not edit."))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4869 (insert (format "\n(setq idlwave-xml-routine-info-file \n \"%s\")"
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4870 idlwave-xml-routine-info-file))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4871 (insert "\n(setq idlwave-system-routines\n '")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4872 (prin1 idlwave-system-routines (current-buffer))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4873 (insert ")")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4874 (insert "\n(setq idlwave-system-variables-alist\n '")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4875 (prin1 idlwave-system-variables-alist (current-buffer))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4876 (insert ")")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4877 (insert "\n(setq idlwave-system-class-info\n '")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4878 (prin1 idlwave-system-class-info (current-buffer))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4879 (insert ")")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4880 (insert "\n(setq idlwave-executive-commands-alist\n '")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4881 (prin1 idlwave-executive-commands-alist (current-buffer))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4882 (insert ")")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4883 (insert "\n(setq idlwave-help-special-topic-words\n '")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4884 (prin1 idlwave-help-special-topic-words (current-buffer))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4885 (insert ")"))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4886
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4887 (defun idlwave-convert-xml-system-routine-info ()
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4888 "Convert XML supplied IDL routine info into internal form.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4889 Cache to disk for quick recovery."
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4890 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4891 (let* ((dir (file-name-as-directory
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4892 (expand-file-name "help/online_help" (idlwave-sys-dir))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4893 (catalog-file (expand-file-name "idl_catalog.xml" dir))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4894 (elem-cnt 0)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4895 props rinfo msg-cnt elem type nelem class-result alias
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4896 routines routine-aliases statement-aliases sysvar-aliases)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4897 (if (not (file-exists-p catalog-file))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4898 (error "No such XML routine info file: %s" catalog-file)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4899 (if (not (file-readable-p catalog-file))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4900 (error "Cannot read XML routine info file: %s" catalog-file)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4901 (message "Reading XML routine info...")
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
4902 (setq rinfo (xml-parse-file catalog-file))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4903 (message "Reading XML routine info...done")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4904 (setq rinfo (assq 'CATALOG rinfo))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4905 (unless rinfo (error "Failed to parse XML routine info"))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4906 ;;(setq rinfo (car rinfo)) ; Skip the catalog stuff.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4907
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
4908 (setq rinfo (cddr rinfo))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4909
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4910 (setq nelem (length rinfo)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4911 msg-cnt (/ nelem 20))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4912
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4913 (setq idlwave-xml-routine-info-file nil)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4914 (message "Converting XML routine info...")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4915 (setq idlwave-system-routines nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4916 idlwave-system-variables-alist nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4917 idlwave-system-class-info nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4918 idlwave-executive-commands-alist nil
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4919 idlwave-help-special-topic-words nil)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4920
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4921 (while rinfo
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4922 (setq elem (car rinfo)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4923 rinfo (cdr rinfo))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4924 (incf elem-cnt)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4925 (when (listp elem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4926 (setq type (car elem)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4927 props (car (cdr elem)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4928 (if (= (mod elem-cnt msg-cnt) 0)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4929 (message "Converting XML routine info...%2d%%"
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4930 (/ (* elem-cnt 100) nelem)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4931 (cond
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4932 ((eq type 'ROUTINE)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4933 (if (setq alias (assq 'alias_to props))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4934 (push (cons (cdr (assq 'name props)) (cdr alias))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4935 routine-aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4936 (setq routines (idlwave-xml-create-rinfo-list elem))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4937 (if (listp (cdr routines))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4938 (setq idlwave-system-routines
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4939 (nconc idlwave-system-routines routines))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4940 ;; a cons cell is an executive commands
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4941 (push routines idlwave-executive-commands-alist))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4942
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4943 ((eq type 'CLASS)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4944 (setq class-result (idlwave-xml-create-class-method-lists elem))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4945 (push (car class-result) idlwave-system-class-info)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4946 (setq idlwave-system-routines
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4947 (nconc idlwave-system-routines (cdr class-result))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4948
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4949 ((eq type 'STATEMENT)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4950 (push (cons (cdr (assq 'name props))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4951 (cdr (assq 'link props)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4952 idlwave-help-special-topic-words)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4953 ;; Save the links to those which are statement aliases (not routines)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4954 (if (setq alias (assq 'alias_to props))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4955 (unless (member (cdr alias) statement-aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4956 (push (cdr alias) statement-aliases))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4957
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4958 ((eq type 'SYSVAR)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4959 (if (setq alias (cdr (assq 'alias_to props)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4960 (push (cons (substring (cdr (assq 'name props)) 1)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4961 (substring alias 1))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4962 sysvar-aliases)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4963 (push (idlwave-xml-create-sysvar-alist elem)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4964 idlwave-system-variables-alist)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4965 (t))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4966 (idlwave-convert-xml-clean-routine-aliases routine-aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4967 (idlwave-convert-xml-clean-statement-aliases statement-aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4968 (idlwave-convert-xml-clean-sysvar-aliases sysvar-aliases)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4969
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4970 (setq idlwave-xml-routine-info-file catalog-file)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4971 (idlwave-save-routine-info)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4972 (message "Converting XML routine info...done")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4973
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4974
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4975 ;; ("ROUTINE" type class
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4976 ;; (system) | (lib pro_file dir "LIBNAME") | (user pro_file dir "USERLIB") |
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4977 ;; (buffer pro_file dir) | (compiled pro_file dir)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4978 ;; "calling_string" ("HELPFILE" (("KWD1" . link1) ...))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4979 ;; ("HELPFILE2" (("KWD2" . link) ...)) ...)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4980
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4981
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4982 (defun idlwave-load-rinfo-next-step ()
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4983 (let ((inhibit-quit t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4984 (arr idlwave-load-rinfo-steps-done))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4985 (if (catch 'exit
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4986 (when (not (aref arr 0))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4987 (message "Loading system routine info in idle time...")
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4988 (idlwave-load-system-routine-info)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4989 ;;(load "idlw-rinfo" 'noerror 'nomessage)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
4990 (message "Loading system routine info in idle time...done")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4991 (aset arr 0 t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4992 (throw 'exit t))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
4993
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4994 (when (not (aref arr 1))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4995 (message "Normalizing idlwave-system-routines in idle time...")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4996 (idlwave-reset-sintern t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4997 (put 'idlwave-reset-sintern 'done-by-idle t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4998 (setq idlwave-system-routines
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4999 (idlwave-sintern-rinfo-list idlwave-system-routines 'sys))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5000 (message "Normalizing idlwave-system-routines in idle time...done")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5001 (aset arr 1 t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5002 (throw 'exit t))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5003
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5004 (when (not (aref arr 2))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5005 (when (and (stringp idlwave-user-catalog-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5006 (file-regular-p idlwave-user-catalog-file))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5007 (message "Loading user catalog in idle time...")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5008 (condition-case nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5009 (load-file idlwave-user-catalog-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5010 (error (throw 'exit nil)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5011 ;; Check for the old style catalog and warn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5012 (if (and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5013 (boundp 'idlwave-library-routines)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5014 idlwave-library-routines)
47930
43574ede3ab1 (idlwave-region-active-p): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47479
diff changeset
5015 (progn
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5016 (setq idlwave-library-routines nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5017 (ding)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5018 (message "Outdated user catalog: %s... recreate"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5019 idlwave-user-catalog-file))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5020 (message "Loading user catalog in idle time...done")))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5021 (aset arr 2 t)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5022 (throw 'exit t))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5023
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5024 (when (not (aref arr 3))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5025 (when idlwave-user-catalog-routines
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5026 (message "Normalizing user catalog routines in idle time...")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5027 (setq idlwave-user-catalog-routines
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5028 (idlwave-sintern-rinfo-list
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5029 idlwave-user-catalog-routines 'sys))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5030 (message
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5031 "Normalizing user catalog routines in idle time...done"))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5032 (aset arr 3 t)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5033 (throw 'exit t))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5034
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5035 (when (not (aref arr 4))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5036 (idlwave-scan-library-catalogs
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5037 "Loading and normalizing library catalogs in idle time...")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5038 (aset arr 4 t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5039 (throw 'exit t))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5040 (when (not (aref arr 5))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5041 (message "Finishing initialization in idle time...")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5042 (idlwave-routines)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5043 (message "Finishing initialization in idle time...done")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5044 (aset arr 5 t)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5045 (throw 'exit nil)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5046 ;; restart the timer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5047 (if (sit-for 1)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5048 (idlwave-load-rinfo-next-step)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5049 (setq idlwave-load-rinfo-idle-timer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5050 (run-with-idle-timer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5051 idlwave-init-rinfo-when-idle-after
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5052 nil 'idlwave-load-rinfo-next-step))))))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5053
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5054 (defvar idlwave-after-load-rinfo-hook nil)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5055
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5056 (defun idlwave-load-all-rinfo (&optional force)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5057 ;; Load and case-treat the system, user catalog, and library routine
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5058 ;; info files.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5059
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5060 ;; System
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5061 (when (or force (not (aref idlwave-load-rinfo-steps-done 0)))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5062 ;;(load "idlw-rinfo" 'noerror 'nomessage))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5063 (idlwave-load-system-routine-info))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5064 (when (or force (not (aref idlwave-load-rinfo-steps-done 1)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5065 (message "Normalizing idlwave-system-routines...")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5066 (setq idlwave-system-routines
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5067 (idlwave-sintern-rinfo-list idlwave-system-routines 'sys))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5068 (message "Normalizing idlwave-system-routines...done"))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5069 (when idlwave-system-routines
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5070 (setq idlwave-routines (copy-sequence idlwave-system-routines))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5071 (setq idlwave-last-system-routine-info-cons-cell
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5072 (nthcdr (1- (length idlwave-routines)) idlwave-routines)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5073
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5074 ;; User catalog
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5075 (when (and (stringp idlwave-user-catalog-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5076 (file-regular-p idlwave-user-catalog-file))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5077 (condition-case nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5078 (when (or force (not (aref idlwave-load-rinfo-steps-done 2)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5079 (load-file idlwave-user-catalog-file))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5080 (error nil))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5081 (when (and
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5082 (boundp 'idlwave-library-routines)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5083 idlwave-library-routines)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5084 (setq idlwave-library-routines nil)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5085 (error "Outdated user catalog: %s... recreate"
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5086 idlwave-user-catalog-file))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5087 (setq idlwave-true-path-alist nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5088 (when (or force (not (aref idlwave-load-rinfo-steps-done 3)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5089 (message "Normalizing user catalog routines...")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5090 (setq idlwave-user-catalog-routines
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5091 (idlwave-sintern-rinfo-list
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5092 idlwave-user-catalog-routines 'sys))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5093 (message "Normalizing user catalog routines...done")))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5094
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5095 ;; Library catalog
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5096 (when (or force (not (aref idlwave-load-rinfo-steps-done 4)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5097 (idlwave-scan-library-catalogs
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5098 "Loading and normalizing library catalogs..."))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5099 (run-hooks 'idlwave-after-load-rinfo-hook))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5100
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5101
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5102 (defun idlwave-update-buffer-routine-info ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5103 (let (res)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5104 (cond
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5105 ((eq idlwave-scan-all-buffers-for-routine-info t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5106 ;; Scan all buffers, current buffer last
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5107 (message "Scanning all buffers...")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5108 (setq res (idlwave-get-routine-info-from-buffers
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5109 (reverse (buffer-list)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5110 ((null idlwave-scan-all-buffers-for-routine-info)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5111 ;; Don't scan any buffers
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5112 (setq res nil))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5113 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5114 ;; Just scan this buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5115 (if (eq major-mode 'idlwave-mode)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5116 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5117 (message "Scanning current buffer...")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5118 (setq res (idlwave-get-routine-info-from-buffers
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5119 (list (current-buffer))))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5120 ;; Put the result into the correct variable
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5121 (setq idlwave-buffer-routines
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5122 (idlwave-sintern-rinfo-list res 'set))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5123
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5124 (defun idlwave-concatenate-rinfo-lists (&optional quiet run-hook)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5125 "Put the different sources for routine information together."
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5126 ;; The sequence here is important because earlier definitions shadow
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5127 ;; later ones. We assume that if things in the buffers are newer
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5128 ;; then in the shell of the system, they are meant to be different.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5129 (setcdr idlwave-last-system-routine-info-cons-cell
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5130 (append idlwave-buffer-routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5131 idlwave-compiled-routines
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5132 idlwave-library-catalog-routines
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5133 idlwave-user-catalog-routines))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5134 (setq idlwave-class-alist nil)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5135
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5136 ;; Give a message with information about the number of routines we have.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5137 (unless quiet
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5138 (message
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5139 "Routines Found: buffer(%d) compiled(%d) library(%d) user(%d) system(%d)"
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5140 (length idlwave-buffer-routines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5141 (length idlwave-compiled-routines)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5142 (length idlwave-library-catalog-routines)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5143 (length idlwave-user-catalog-routines)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5144 (length idlwave-system-routines)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5145 (if run-hook
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5146 (run-hooks 'idlwave-update-rinfo-hook)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5147
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5148 (defun idlwave-class-alist ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5149 "Return the class alist - make it if necessary."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5150 (or idlwave-class-alist
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5151 (let (class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5152 (loop for x in idlwave-routines do
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5153 (when (and (setq class (nth 2 x))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5154 (not (assq class idlwave-class-alist)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5155 (push (list class) idlwave-class-alist)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5156 idlwave-class-alist)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5157
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5158 ;; Three functions for the hooks
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5159 (defun idlwave-save-buffer-update ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5160 (idlwave-update-current-buffer-info 'save-buffer))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5161 (defun idlwave-kill-buffer-update ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5162 (idlwave-update-current-buffer-info 'kill-buffer))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5163 (defun idlwave-new-buffer-update ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5164 (idlwave-update-current-buffer-info 'find-file))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5165
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5166 (defun idlwave-update-current-buffer-info (why)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5167 "Update `idlwave-routines' for current buffer.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5168 Can run from `after-save-hook'."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5169 (when (and (eq major-mode 'idlwave-mode)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5170 (or (eq t idlwave-auto-routine-info-updates)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5171 (memq why idlwave-auto-routine-info-updates))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5172 idlwave-scan-all-buffers-for-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5173 idlwave-routines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5174 (condition-case nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5175 (let (routines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5176 (idlwave-replace-buffer-routine-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5177 (buffer-file-name)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5178 (if (eq why 'kill-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5179 nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5180 (setq routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5181 (idlwave-sintern-rinfo-list
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5182 (idlwave-get-routine-info-from-buffers
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5183 (list (current-buffer))) 'set))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5184 (idlwave-concatenate-rinfo-lists 'quiet)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5185 routines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5186 (error nil))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5187
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5188 (defun idlwave-replace-buffer-routine-info (file new)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5189 "Cut the part from FILE out of `idlwave-buffer-routines' and add NEW."
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5190 (let ((list idlwave-buffer-routines)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5191 found)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5192 (while list
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5193 ;; The following test uses eq to make sure it works correctly
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5194 ;; when two buffers visit the same file. Then the file names
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5195 ;; will be equal, but not eq.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5196 (if (eq (idlwave-routine-source-file (nth 3 (car list))) file)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5197 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5198 (setcar list nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5199 (setq found t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5200 (if found
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5201 ;; End of that section reached. Jump.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5202 (setq list nil)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5203 (setq list (cdr list)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5204 (setq idlwave-buffer-routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5205 (append new (delq nil idlwave-buffer-routines)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5206
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5207 ;;----- Scanning buffers -------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5208
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5209 (defun idlwave-get-routine-info-from-buffers (buffers)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5210 "Call `idlwave-get-buffer-routine-info' on idlwave-mode buffers in BUFFERS."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5211 (let (buf routine-lists res)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5212 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5213 (while (setq buf (pop buffers))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5214 (set-buffer buf)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5215 (if (and (eq major-mode 'idlwave-mode)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5216 buffer-file-name)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5217 ;; yes, this buffer has the right mode.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5218 (progn (setq res (condition-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5219 (idlwave-get-buffer-routine-info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5220 (error nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5221 (push res routine-lists)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5222 ;; Concatenate the individual lists and return the result
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5223 (apply 'nconc routine-lists)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5224
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5225 (defun idlwave-get-buffer-routine-info ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5226 "Scan the current buffer for routine info. Return (PRO-LIST FUNC-LIST)."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5227 (let* ((case-fold-search t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5228 routine-list string entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5229 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5230 (save-restriction
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5231 (widen)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5232 (goto-char (point-min))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5233 (while (re-search-forward
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5234 "^[ \t]*\\(pro\\|function\\)[ \t]" nil t)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5235 (setq string (buffer-substring-no-properties
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5236 (match-beginning 0)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5237 (progn
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5238 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5239 (point))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5240 (setq entry (idlwave-parse-definition string))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5241 (push entry routine-list))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5242 routine-list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5243
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5244 (defvar idlwave-scanning-lib-dir)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5245 (defvar idlwave-scanning-lib)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5246 (defun idlwave-parse-definition (string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5247 "Parse a module definition."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5248 (let ((case-fold-search t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5249 start name args type keywords class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5250 ;; Remove comments
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5251 (while (string-match ";.*" string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5252 (setq string (replace-match "" t t string)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5253 ;; Remove the continuation line stuff
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5254 (while (string-match "\\([^a-zA-Z0-9$_]\\)\\$[ \t]*\n" string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5255 (setq string (replace-match "\\1 " t nil string)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5256 (while (string-match "\n" string)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5257 (setq string (replace-match " " t nil string)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5258 ;; Match the name and type.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5259 (when (string-match
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5260 "\\<\\(pro\\|function\\)\\>\\s-+\\(\\([a-zA-Z0-9$_]+\\)::\\)?\\([a-zA-Z0-9$_]+\\)" string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5261 (setq start (match-end 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5262 (setq type (downcase (match-string 1 string)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5263 (if (match-beginning 3)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5264 (setq class (match-string 3 string)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5265 (setq name (match-string 4 string)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5266 ;; Match normal args and keyword args
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5267 (while (string-match
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5268 ",\\s-*\\([a-zA-Z][a-zA-Z0-9$_]*\\|\\(_ref\\)?_extra\\)\\s-*\\(=\\)?"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5269 string start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5270 (setq start (match-end 0))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5271 (if (match-beginning 3)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5272 (push (match-string 1 string) keywords)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5273 (push (match-string 1 string) args)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5274 ;; Normalize and sort.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5275 (setq args (nreverse args))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5276 (setq keywords (sort keywords (lambda (a b)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5277 (string< (downcase a) (downcase b)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5278 ;; Make and return the entry
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5279 ;; We don't know which argument are optional, so this information
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5280 ;; will not be contained in the calling sequence.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5281 (list name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5282 (if (equal type "pro") 'pro 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5283 class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5284 (cond ((not (boundp 'idlwave-scanning-lib))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5285 (list 'buffer (buffer-file-name)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5286 ; ((string= (downcase
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5287 ; (file-name-sans-extension
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5288 ; (file-name-nondirectory (buffer-file-name))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5289 ; (downcase name))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5290 ; (list 'lib))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5291 ; (t (cons 'lib (file-name-nondirectory (buffer-file-name))))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5292 (t (list 'user (file-name-nondirectory (buffer-file-name))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5293 idlwave-scanning-lib-dir "UserLib")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5294 (concat
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5295 (if (string= type "function") "Result = " "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5296 (if class "Obj ->[%s::]" "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5297 "%s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5298 (if args
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5299 (concat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5300 (if (string= type "function") "(" ", ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5301 (mapconcat 'identity args ", ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5302 (if (string= type "function") ")" ""))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5303 (if keywords
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5304 (cons nil (mapcar 'list keywords)) ;No help file
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5305 nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5306
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5307
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5308 ;;----- Scanning the user catalog -------------------
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5309
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5310 (defun idlwave-sys-dir ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5311 "Return the syslib directory, or a dummy that never matches."
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5312 (cond
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5313 ((and idlwave-system-directory
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5314 (not (string= idlwave-system-directory "")))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5315 idlwave-system-directory)
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5316 ((getenv "IDL_DIR"))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5317 (t "@@@@@@@@")))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5318
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5319
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5320 (defun idlwave-create-user-catalog-file (&optional arg)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5321 "Scan all files on selected dirs of IDL search path for routine information.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5322
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5323 A widget checklist will allow you to choose the directories. Write
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5324 the result as a file `idlwave-user-catalog-file'. When this file
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5325 exists, it will be automatically loaded to give routine information
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5326 about library routines. With ARG, just rescan the same directories
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5327 as last time - so no widget will pop up."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5328 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5329 ;; Make sure the file is loaded if it exists.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5330 (if (and (stringp idlwave-user-catalog-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5331 (file-regular-p idlwave-user-catalog-file))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5332 (condition-case nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5333 (load-file idlwave-user-catalog-file)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5334 (error nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5335 ;; Make sure the file name makes sense
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5336 (unless (and (stringp idlwave-user-catalog-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5337 (> (length idlwave-user-catalog-file) 0)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5338 (file-accessible-directory-p
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5339 (file-name-directory idlwave-user-catalog-file))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5340 (not (string= "" (file-name-nondirectory
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5341 idlwave-user-catalog-file))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5342 (error "`idlwave-user-catalog-file' does not point to a file in an accessible directory"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5343
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5344 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5345 ;; Rescan the known directories
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5346 ((and arg idlwave-path-alist
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5347 (consp (car idlwave-path-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5348 (idlwave-scan-user-lib-files idlwave-path-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5349
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5350 ;; Expand the directories from library-path and run the widget
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5351 (idlwave-library-path
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5352 (idlwave-display-user-catalog-widget
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5353 (if idlwave-true-path-alist
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5354 ;; Propagate any flags on the existing path-alist
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5355 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5356 (let ((path-entry (assoc (file-truename x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5357 idlwave-true-path-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5358 (if path-entry
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5359 (cons x (cdr path-entry))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5360 (list x))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5361 (idlwave-expand-path idlwave-library-path))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5362 (mapcar 'list (idlwave-expand-path idlwave-library-path)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5363
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5364 ;; Ask the shell for the path and then run the widget
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5365 (t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5366 (message "Asking the shell for IDL path...")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5367 (require 'idlw-shell)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5368 (idlwave-shell-send-command idlwave-shell-path-query
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5369 '(idlwave-user-catalog-command-hook nil)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5370 'hide))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5371
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5372
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5373 ;; Parse shell path information and select among it.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5374 (defun idlwave-user-catalog-command-hook (&optional arg)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5375 ;; Command hook used by `idlwave-create-user-catalog-file'.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5376 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5377 ;; Scan immediately
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5378 (idlwave-scan-user-lib-files idlwave-path-alist)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5379 ;; Set the path and display the widget
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5380 (idlwave-shell-get-path-info 'no-write) ; set to something path-alist
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5381 (idlwave-scan-library-catalogs "Locating library catalogs..." 'no-load)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5382 (idlwave-display-user-catalog-widget idlwave-path-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5383
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5384 (defconst idlwave-user-catalog-widget-help-string
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5385 "This is the front-end to the creation of the IDLWAVE user catalog.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5386 Please select the directories on IDL's search path from which you
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5387 would like to extract routine information, to be stored in the file:
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5388
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5389 %s
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5390
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5391 If this is not the correct file, first set variable
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5392 `idlwave-user-catalog-file', and call this command again.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5393
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5394 N.B. Many libraries include pre-scanned catalog files
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5395 \(\".idlwave_catalog\"). These are marked with \"[LIB]\", and need
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5396 not be scanned. You can scan your own libraries off-line using the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5397 perl script `idlwave_catalog'.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5398
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5399 After selecting the directories, choose [Scan & Save] to scan the library
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5400 directories and save the routine info.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5401 \n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5402
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5403 (defvar idlwave-widget)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5404 (defvar widget-keymap)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5405 (defun idlwave-display-user-catalog-widget (dirs-list)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5406 "Create the widget to select IDL search path directories for scanning."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5407 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5408 (require 'widget)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5409 (require 'wid-edit)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5410 (unless dirs-list
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5411 (error "Don't know IDL's search path"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5412
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5413 (kill-buffer (get-buffer-create "*IDLWAVE Widget*"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5414 (switch-to-buffer (get-buffer-create "*IDLWAVE Widget*"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5415 (kill-all-local-variables)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5416 (make-local-variable 'idlwave-widget)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5417 (widget-insert (format idlwave-user-catalog-widget-help-string
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5418 idlwave-user-catalog-file))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5419
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5420 (widget-create 'push-button
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5421 :notify 'idlwave-widget-scan-user-lib-files
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5422 "Scan & Save")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5423 (widget-insert " ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5424 (widget-create 'push-button
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5425 :notify 'idlwave-delete-user-catalog-file
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5426 "Delete File")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5427 (widget-insert " ")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5428 (widget-create 'push-button
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5429 :notify
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5430 (lambda (&rest ignore)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5431 (let ((path-list (widget-get idlwave-widget :path-dirs)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5432 (dolist (x path-list)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5433 (unless (memq 'lib (cdr x))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5434 (idlwave-path-alist-add-flag x 'user)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5435 (idlwave-display-user-catalog-widget path-list)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5436 "Select All Non-Lib")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5437 (widget-insert " ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5438 (widget-create 'push-button
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5439 :notify
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5440 (lambda (&rest ignore)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5441 (let ((path-list (widget-get idlwave-widget :path-dirs)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5442 (dolist (x path-list)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5443 (idlwave-path-alist-remove-flag x 'user))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5444 (idlwave-display-user-catalog-widget path-list)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5445 "Deselect All")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5446 (widget-insert " ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5447 (widget-create 'push-button
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5448 :notify (lambda (&rest ignore)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5449 (kill-buffer (current-buffer)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5450 "Quit")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5451 (widget-insert "\n\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5452
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5453 (widget-insert "Select Directories: \n")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5454
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5455 (setq idlwave-widget
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5456 (apply 'widget-create
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5457 'checklist
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5458 :value (delq nil (mapcar (lambda (x)
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5459 (if (memq 'user (cdr x))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5460 (car x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5461 dirs-list))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5462 :greedy t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5463 :tag "List of directories"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5464 (mapcar (lambda (x)
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5465 (list 'item
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5466 (if (memq 'lib (cdr x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5467 (concat "[LIB] " (car x) )
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5468 (car x)))) dirs-list)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5469 (widget-put idlwave-widget :path-dirs dirs-list)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5470 (widget-insert "\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5471 (use-local-map widget-keymap)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5472 (widget-setup)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5473 (goto-char (point-min))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5474 (delete-other-windows))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5475
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5476 (defun idlwave-delete-user-catalog-file (&rest ignore)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5477 (if (yes-or-no-p
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5478 (format "Delete file %s " idlwave-user-catalog-file))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5479 (progn
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5480 (delete-file idlwave-user-catalog-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5481 (message "%s has been deleted" idlwave-user-catalog-file))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5482
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5483 (defun idlwave-widget-scan-user-lib-files (&rest ignore)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5484 ;; Call `idlwave-scan-user-lib-files' with data taken from the widget.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5485 (let* ((widget idlwave-widget)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5486 (selected-dirs (widget-value widget))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5487 (path-alist (widget-get widget :path-dirs))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5488 (this-path-alist path-alist)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5489 dir-entry)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5490 (while (setq dir-entry (pop this-path-alist))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5491 (if (member
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5492 (if (memq 'lib (cdr dir-entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5493 (concat "[LIB] " (car dir-entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5494 (car dir-entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5495 selected-dirs)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5496 (idlwave-path-alist-add-flag dir-entry 'user)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5497 (idlwave-path-alist-remove-flag dir-entry 'user)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5498 (idlwave-scan-user-lib-files path-alist)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5499
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5500 (defvar font-lock-mode)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5501 (defun idlwave-scan-user-lib-files (path-alist)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5502 ;; Scan the PRO files in PATH-ALIST and store the info in the user catalog
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5503 (let* ((idlwave-scanning-lib t)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5504 (idlwave-scanning-lib-dir "")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5505 (idlwave-completion-case nil)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5506 dirs-alist dir files file)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5507 (setq idlwave-user-catalog-routines nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5508 idlwave-path-alist path-alist ; for library-path instead
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5509 idlwave-true-path-alist nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5510 (if idlwave-auto-write-paths (idlwave-write-paths))
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
5511 (with-current-buffer (get-buffer-create "*idlwave-scan.pro*")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5512 (idlwave-mode)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5513 (setq dirs-alist (reverse path-alist))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5514 (while (setq dir (pop dirs-alist))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5515 (when (memq 'user (cdr dir)) ; Has it marked for scan?
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5516 (setq dir (car dir))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5517 (setq idlwave-scanning-lib-dir dir)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5518 (when (file-directory-p dir)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5519 (setq files (directory-files dir 'full "\\.[pP][rR][oO]\\'"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5520 (while (setq file (pop files))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5521 (when (file-regular-p file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5522 (if (not (file-readable-p file))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5523 (message "Skipping %s (no read permission)" file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5524 (message "Scanning %s..." file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5525 (erase-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5526 (insert-file-contents file 'visit)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5527 (setq idlwave-user-catalog-routines
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5528 (append (idlwave-get-routine-info-from-buffers
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5529 (list (current-buffer)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5530 idlwave-user-catalog-routines)))))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5531 (message "Creating user catalog file...")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5532 (kill-buffer "*idlwave-scan.pro*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5533 (kill-buffer (get-buffer-create "*IDLWAVE Widget*"))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5534 (let ((font-lock-maximum-size 0)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5535 (auto-mode-alist nil))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5536 (find-file idlwave-user-catalog-file))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5537 (if (and (boundp 'font-lock-mode)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5538 font-lock-mode)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5539 (font-lock-mode 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5540 (erase-buffer)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5541 (insert ";; IDLWAVE user catalog file\n")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5542 (insert (format ";; Created %s\n\n" (current-time-string)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5543
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5544 ;; Define the routine info list
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5545 (insert "\n(setq idlwave-user-catalog-routines\n '(")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5546 (let ((standard-output (current-buffer)))
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5547 (mapc (lambda (x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5548 (insert "\n ")
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5549 (prin1 x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5550 (goto-char (point-max)))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5551 idlwave-user-catalog-routines))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5552 (insert (format "))\n\n;;; %s ends here\n"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5553 (file-name-nondirectory idlwave-user-catalog-file)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5554 (goto-char (point-min))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5555 ;; Save the buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5556 (save-buffer 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5557 (kill-buffer (current-buffer)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5558 (message "Creating user catalog file...done")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5559 (message "Info for %d routines saved in %s"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5560 (length idlwave-user-catalog-routines)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5561 idlwave-user-catalog-file)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5562 (sit-for 2)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5563 (idlwave-update-routine-info t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5564
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5565 (defun idlwave-read-paths ()
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5566 (if (and (stringp idlwave-path-file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5567 (file-regular-p idlwave-path-file))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5568 (condition-case nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5569 (load idlwave-path-file t t t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5570 (error nil))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5571
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5572 (defun idlwave-write-paths ()
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5573 (interactive)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5574 (when (and idlwave-path-alist idlwave-system-directory)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5575 (let ((font-lock-maximum-size 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5576 (auto-mode-alist nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5577 (find-file idlwave-path-file))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5578 (if (and (boundp 'font-lock-mode)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5579 font-lock-mode)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5580 (font-lock-mode 0))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5581 (erase-buffer)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5582 (insert ";; IDLWAVE paths\n")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5583 (insert (format ";; Created %s\n\n" (current-time-string)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5584 ;; Define the variable which knows the value of "!DIR"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5585 (insert (format "\n(setq idlwave-system-directory \"%s\")\n"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5586 idlwave-system-directory))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5587
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5588 ;; Define the variable which contains a list of all scanned directories
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5589 (insert "\n(setq idlwave-path-alist\n '(")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5590 (let ((standard-output (current-buffer)))
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5591 (mapc (lambda (x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5592 (insert "\n ")
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5593 (prin1 x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5594 (goto-char (point-max)))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
5595 idlwave-path-alist))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5596 (insert "))\n")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5597 (save-buffer 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5598 (kill-buffer (current-buffer))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5599
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5600
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5601 (defun idlwave-expand-path (path &optional default-dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5602 ;; Expand parts of path starting with '+' recursively into directory list.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5603 ;; Relative recursive path elements are expanded relative to DEFAULT-DIR.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5604 (message "Expanding path...")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5605 (let (path1 dir recursive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5606 (while (setq dir (pop path))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5607 (if (setq recursive (string= (substring dir 0 1) "+"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5608 (setq dir (substring dir 1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5609 (if (and recursive
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5610 (not (file-name-absolute-p dir)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5611 (setq dir (expand-file-name dir default-dir)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5612 (if recursive
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5613 ;; Expand recursively
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5614 (setq path1 (append (idlwave-recursive-directory-list dir) path1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5615 ;; Keep unchanged
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5616 (push dir path1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5617 (message "Expanding path...done")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5618 (nreverse path1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5619
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5620 (defun idlwave-recursive-directory-list (dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5621 ;; Return a list of all directories below DIR, including DIR itself
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5622 (let ((path (list dir)) path1 file files)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5623 (while (setq dir (pop path))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5624 (when (file-directory-p dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5625 (setq files (nreverse (directory-files dir t "[^.]")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5626 (while (setq file (pop files))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5627 (if (file-directory-p file)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5628 (push (file-name-as-directory file) path)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5629 (push dir path1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5630 path1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5631
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5632
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5633 ;;----- Scanning the library catalogs ------------------
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5634
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5635
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5636
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5637
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5638 (defun idlwave-scan-library-catalogs (&optional message-base no-load)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5639 "Scan for library catalog files (.idlwave_catalog) and ingest.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5640
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5641 All directories on `idlwave-path-alist' (or `idlwave-library-path'
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5642 instead, if present) are searched. Print MESSAGE-BASE along with the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5643 libraries being loaded, if passed, and skip loading/normalizing if
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5644 NO-LOAD is non-nil. The variable `idlwave-use-library-catalogs' can
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5645 be set to nil to disable library catalog scanning."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5646 (when idlwave-use-library-catalogs
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5647 (let ((dirs
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5648 (if idlwave-library-path
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5649 (idlwave-expand-path idlwave-library-path)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5650 (mapcar 'car idlwave-path-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5651 (old-libname "")
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5652 dir-entry dir catalog all-routines)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5653 (if message-base (message message-base))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5654 (while (setq dir (pop dirs))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5655 (catch 'continue
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5656 (when (file-readable-p
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5657 (setq catalog (expand-file-name ".idlwave_catalog" dir)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5658 (unless no-load
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5659 (setq idlwave-library-catalog-routines nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5660 ;; Load the catalog file
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5661 (condition-case nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5662 (load catalog t t t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5663 (error (throw 'continue t)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5664 (when (and
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5665 message-base
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5666 (not (string= idlwave-library-catalog-libname
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5667 old-libname)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5668 (message "%s" (concat message-base
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5669 idlwave-library-catalog-libname))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5670 (setq old-libname idlwave-library-catalog-libname))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5671 (when idlwave-library-catalog-routines
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5672 (setq all-routines
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5673 (append
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5674 (idlwave-sintern-rinfo-list
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5675 idlwave-library-catalog-routines 'sys dir)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5676 all-routines))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5677
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5678 ;; Add a 'lib flag if on path-alist
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5679 (when (and idlwave-path-alist
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5680 (setq dir-entry (assoc dir idlwave-path-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5681 (idlwave-path-alist-add-flag dir-entry 'lib)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5682 (unless no-load (setq idlwave-library-catalog-routines all-routines))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5683 (if message-base (message (concat message-base "done"))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5684
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5685 ;;----- Communicating with the Shell -------------------
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5686
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5687 ;; First, here is the idl program which can be used to query IDL for
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5688 ;; defined routines.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5689 (defconst idlwave-routine-info.pro
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5690 "
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5691 ;; START OF IDLWAVE SUPPORT ROUTINES
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5692 pro idlwave_print_safe,item,limit
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5693 catch,err
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5694 if err ne 0 then begin
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5695 print,'Could not print item.'
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5696 return
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5697 endif
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5698 if n_elements(item) gt limit then $
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5699 print,item[0:limit-1],'<... truncated at ',strtrim(limit,2),' elements>' $
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5700 else print,item
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5701 end
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5702
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5703 pro idlwave_print_info_entry,name,func=func,separator=sep
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5704 ;; See if it's an object method
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5705 if name eq '' then return
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5706 func = keyword_set(func)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5707 methsep = strpos(name,'::')
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5708 meth = methsep ne -1
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5709
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5710 ;; Get routine info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5711 pars = routine_info(name,/parameters,functions=func)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5712 source = routine_info(name,/source,functions=func)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5713 nargs = pars.num_args
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5714 nkw = pars.num_kw_args
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5715 if nargs gt 0 then args = pars.args
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5716 if nkw gt 0 then kwargs = pars.kw_args
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5717
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5718 ;; Trim the class, and make the name
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5719 if meth then begin
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5720 class = strmid(name,0,methsep)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5721 name = strmid(name,methsep+2,strlen(name)-1)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5722 if nargs gt 0 then begin
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5723 ;; remove the self argument
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5724 wh = where(args ne 'SELF',nargs)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5725 if nargs gt 0 then args = args[wh]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5726 endif
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5727 endif else begin
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5728 ;; No class, just a normal routine.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5729 class = \"\"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5730 endelse
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5731
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5732 ;; Calling sequence
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5733 cs = \"\"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5734 if func then cs = 'Result = '
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5735 if meth then cs = cs + 'Obj -> [' + '%s' + '::]'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5736 cs = cs + '%s'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5737 if func then cs = cs + '(' else if nargs gt 0 then cs = cs + ', '
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5738 if nargs gt 0 then begin
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5739 for j=0,nargs-1 do begin
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5740 cs = cs + args[j]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5741 if j lt nargs-1 then cs = cs + ', '
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5742 endfor
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5743 end
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5744 if func then cs = cs + ')'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5745 ;; Keyword arguments
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5746 kwstring = ''
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5747 if nkw gt 0 then begin
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5748 for j=0,nkw-1 do begin
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5749 kwstring = kwstring + ' ' + kwargs[j]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5750 endfor
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5751 endif
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5752
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5753 ret=(['IDLWAVE-PRO','IDLWAVE-FUN'])[func]
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5754
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5755 print,ret + ': ' + name + sep + class + sep + source[0].path $
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5756 + sep + cs + sep + kwstring
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5757 end
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5758
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5759 pro idlwave_routine_info,file
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5760 on_error,1
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5761 sep = '<@>'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5762 print,'>>>BEGIN OF IDLWAVE ROUTINE INFO (\"' + sep + '\" IS THE SEPARATOR)'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5763 all = routine_info()
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5764 fileQ=n_elements(file) ne 0
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5765 if fileQ then file=strtrim(file,2)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5766 for i=0L,n_elements(all)-1L do begin
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5767 if fileQ then begin
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5768 if (routine_info(all[i],/SOURCE)).path eq file then $
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5769 idlwave_print_info_entry,all[i],separator=sep
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5770 endif else idlwave_print_info_entry,all[i],separator=sep
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5771 endfor
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5772 all = routine_info(/functions)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5773 for i=0L,n_elements(all)-1L do begin
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5774 if fileQ then begin
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5775 if (routine_info(all[i],/FUNCTIONS,/SOURCE)).path eq file then $
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5776 idlwave_print_info_entry,all[i],separator=sep,/FUNC
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5777 endif else idlwave_print_info_entry,all[i],separator=sep,/FUNC
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5778 endfor
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5779 print,'>>>END OF IDLWAVE ROUTINE INFO'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5780 end
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5781
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5782 pro idlwave_get_sysvars
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5783 on_error,1
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5784 catch,error_status
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5785 if error_status ne 0 then begin
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5786 print, 'Cannot get info about system variables'
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5787 endif else begin
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5788 help,/brief,output=s,/system_variables ; ? unsafe use of OUTPUT=
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5789 s = strtrim(strjoin(s,' ',/single),2) ; make one line
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5790 v = strsplit(s,' +',/regex,/extract) ; get variables
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5791 for i=0L,n_elements(v)-1 do begin
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5792 t = [''] ; get tag list
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5793 a=execute('if n_tags('+v[i]+') gt 0 then t=tag_names('+v[i]+')')
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5794 print, 'IDLWAVE-SYSVAR: '+v[i]+' '+strjoin(t,' ',/single)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5795 endfor
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5796 endelse
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5797 end
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5798
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5799 pro idlwave_get_class_tags, class
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5800 res = execute('tags=tag_names({'+class+'})')
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5801 if res then print,'IDLWAVE-CLASS-TAGS: '+class+' '+strjoin(tags,' ',/single)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5802 end
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5803 ;; END OF IDLWAVE SUPPORT ROUTINES
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5804 "
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5805 "The IDL programs to get info from the shell.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5806
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5807 (defvar idlwave-idlwave_routine_info-compiled nil
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5808 "Remember if the routine info procedure is already compiled.")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5809
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5810 (defvar idlwave-shell-temp-pro-file)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5811 (defvar idlwave-shell-temp-rinfo-save-file)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5812
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5813 (defun idlwave-shell-compile-helper-routines (&optional wait)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5814 (unless (and idlwave-idlwave_routine_info-compiled
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5815 (file-readable-p (idlwave-shell-temp-file 'rinfo)))
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
5816 (with-current-buffer (idlwave-find-file-noselect
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
5817 (idlwave-shell-temp-file 'pro))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5818 (erase-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5819 (insert idlwave-routine-info.pro)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5820 (save-buffer 0))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5821 (idlwave-shell-send-command
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5822 (concat ".run \"" idlwave-shell-temp-pro-file "\"")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5823 nil 'hide wait)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5824 (idlwave-shell-send-command
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5825 (format "save,'idlwave_print_safe','idlwave_routine_info','idlwave_print_info_entry','idlwave_get_class_tags','idlwave_get_sysvars',FILE='%s',/ROUTINES"
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5826 (idlwave-shell-temp-file 'rinfo))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5827 nil 'hide)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5828 (setq idlwave-idlwave_routine_info-compiled t))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5829
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5830 ;; Restore if necessary. Must use execute to hide lame routine_info
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5831 ;; errors on undefinded routine
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5832 (idlwave-shell-send-command
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5833 (format "if execute(\"_v=routine_info('idlwave_routine_info',/SOURCE)\") eq 0 then restore,'%s' else if _v.path eq '' then restore,'%s'"
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5834 idlwave-shell-temp-rinfo-save-file
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5835 idlwave-shell-temp-rinfo-save-file)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5836 nil 'hide))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5837
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5838
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5839 (defun idlwave-shell-update-routine-info (&optional quiet run-hooks wait file)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5840 "Query the shell for routine_info of compiled modules and update the lists."
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5841 ;; Save and compile the procedure. The compiled procedure is then
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5842 ;; saved into an IDL SAVE file, to allow for fast RESTORE. We may
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5843 ;; need to test for and possibly RESTORE the procedure each time we
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5844 ;; use it, since the user may have killed or redefined it. In
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5845 ;; particular, .RESET_SESSION will kill all user procedures. If
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5846 ;; FILE is set, only update routine info for routines in that file.
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5847
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5848 (idlwave-shell-compile-helper-routines wait)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5849 ; execute the routine_info procedure, and analyze the output
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5850 (idlwave-shell-send-command
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
5851 (format "idlwave_routine_info%s" (if file (concat ",'" file "'") ""))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5852 `(progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5853 (idlwave-shell-routine-info-filter)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5854 (idlwave-concatenate-rinfo-lists ,quiet ,run-hooks))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5855 'hide wait))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5856
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5857 ;; ---------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5858 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5859 ;; Completion and displaying routine calling sequences
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5860
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5861 (defvar idlwave-completion-help-info nil)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5862 (defvar idlwave-completion-help-links nil)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5863 (defvar idlwave-current-obj_new-class nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5864 (defvar idlwave-complete-special nil)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5865 (defvar method-selector)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5866 (defvar class-selector)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5867 (defvar type-selector)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
5868 (defvar super-classes)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5869
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5870 (defun idlwave-complete (&optional arg module class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5871 "Complete a function, procedure or keyword name at point.
60925
a9c571ede913 * progmodes/cperl-mode.el, progmodes/idlw-shell.el,
Werner LEMBERG <wl@gnu.org>
parents: 60917
diff changeset
5872 This function is smart and figures out what can be completed
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5873 at this point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5874 - At the beginning of a statement it completes procedure names.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5875 - In the middle of a statement it completes function names.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5876 - After a `(' or `,' in the argument list of a function or procedure,
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5877 it completes a keyword of the relevant function or procedure.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5878 - In the first arg of `OBJ_NEW', it completes a class name.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5879
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5880 When several completions are possible, a list will be displayed in
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
5881 the *Completions* buffer. If this list is too long to fit into the
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5882 window, scrolling can be achieved by repeatedly pressing
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5883 \\[idlwave-complete].
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5884
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5885 The function also knows about object methods. When it needs a class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5886 name, the action depends upon `idlwave-query-class', which see. You
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5887 can force IDLWAVE to ask you for a class name with a
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5888 \\[universal-argument] prefix argument to this command.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5889
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5890 See also the variables `idlwave-keyword-completion-adds-equal' and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5891 `idlwave-function-completion-adds-paren'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5892
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5893 The optional ARG can be used to specify the completion type in order
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5894 to override IDLWAVE's idea of what should be completed at point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5895 Possible values are:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5896
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5897 0 <=> query for the completion type
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5898 1 <=> 'procedure
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5899 2 <=> 'procedure-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5900 3 <=> 'function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5901 4 <=> 'function-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5902 5 <=> 'procedure-method
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5903 6 <=> 'procedure-method-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5904 7 <=> 'function-method
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5905 8 <=> 'function-method-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5906 9 <=> 'class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5907
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5908 As a special case, the universal argument C-u forces completion of
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5909 function names in places where the default would be a keyword.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5910
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5911 Two prefix argument, C-u C-u, prompts for a regexp by which to limit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5912 completion.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5913
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5914 For Lisp programmers only:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5915 When we force a keyword, optional argument MODULE can contain the module name.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5916 When we force a method or a method keyword, CLASS can specify the class."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5917 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5918 (idlwave-routines)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5919 (let* ((where-list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5920 (if (and arg
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5921 (or (and (integerp arg) (not (equal arg '(16))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5922 (symbolp arg)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5923 (idlwave-make-force-complete-where-list arg module class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5924 (idlwave-where)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5925 (what (nth 2 where-list))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5926 (idlwave-force-class-query (equal arg '(4)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5927 (completion-regexp-list
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5928 (if (equal arg '(16))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5929 (list (read-string (concat "Completion Regexp: "))))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5930
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5931 (if (and module (string-match "::" module))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5932 (setq class (substring module 0 (match-beginning 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5933 module (substring module (match-end 0))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5934
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5935 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5936
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5937 ((and (null arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5938 (eq (car-safe last-command) 'idlwave-display-completion-list)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
5939 (get-buffer-window "*Completions*"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5940 (setq this-command last-command)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5941 (idlwave-scroll-completions))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5942
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5943 ;; Complete a filename in quotes
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5944 ((and (idlwave-in-quote)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5945 (not (eq what 'class)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5946 (idlwave-complete-filename))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5947
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5948 ;; Check for any special completion functions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5949 ((and idlwave-complete-special
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5950 (idlwave-call-special idlwave-complete-special)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5951
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5952 ((null what)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5953 (error "Nothing to complete here"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5954
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5955 ;; Complete a class
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5956 ((eq what 'class)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5957 (setq idlwave-completion-help-info '(class))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5958 (idlwave-complete-class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5959
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5960 ((eq what 'procedure)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5961 ;; Complete a procedure name
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5962 (let* ((cw-list (nth 3 where-list))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5963 (class-selector (idlwave-determine-class cw-list 'pro))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5964 (super-classes (unless (idlwave-explicit-class-listed cw-list)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5965 (idlwave-all-class-inherits class-selector)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5966 (isa (concat "procedure" (if class-selector "-method" "")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5967 (type-selector 'pro))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5968 (setq idlwave-completion-help-info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5969 (list 'routine nil type-selector class-selector nil super-classes))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5970 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5971 'procedure (if class-selector 'method 'routine)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5972 (idlwave-routines) 'idlwave-selector
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5973 (format "Select a %s name%s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5974 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5975 (if class-selector
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5976 (format " (class is %s)"
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5977 (if (eq class-selector t)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5978 "unknown" class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5979 ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5980 isa
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5981 'idlwave-attach-method-classes 'idlwave-add-file-link-selector)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5982
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5983 ((eq what 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5984 ;; Complete a function name
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5985 (let* ((cw-list (nth 3 where-list))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5986 (class-selector (idlwave-determine-class cw-list 'fun))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5987 (super-classes (unless (idlwave-explicit-class-listed cw-list)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5988 (idlwave-all-class-inherits class-selector)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5989 (isa (concat "function" (if class-selector "-method" "")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5990 (type-selector 'fun))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5991 (setq idlwave-completion-help-info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5992 (list 'routine nil type-selector class-selector nil super-classes))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5993 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5994 'function (if class-selector 'method 'routine)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5995 (idlwave-routines) 'idlwave-selector
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5996 (format "Select a %s name%s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5997 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5998 (if class-selector
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
5999 (format " (class is %s)"
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6000 (if (eq class-selector t)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6001 "unknown" class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6002 ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6003 isa
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6004 'idlwave-attach-method-classes 'idlwave-add-file-link-selector)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6005
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6006 ((and (memq what '(procedure-keyword function-keyword)) ; Special Case
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6007 (equal arg '(4)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6008 (idlwave-complete 3))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6009
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6010 ((eq what 'procedure-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6011 ;; Complete a procedure keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6012 (let* ((where (nth 3 where-list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6013 (name (car where))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6014 (method-selector name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6015 (type-selector 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6016 (class (idlwave-determine-class where 'pro))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6017 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6018 (super-classes (idlwave-all-class-inherits class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6019 (isa (format "procedure%s-keyword" (if class "-method" "")))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6020 (entry (idlwave-best-rinfo-assq
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6021 name 'pro class (idlwave-routines)))
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
6022 (system (if entry (eq (car (nth 3 entry)) 'system)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6023 (list (idlwave-entry-keywords entry 'do-link)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6024 (unless (or entry (eq class t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6025 (error "Nothing known about procedure %s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6026 (idlwave-make-full-name class name)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6027 (setq list (idlwave-fix-keywords name 'pro class list
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
6028 super-classes system))
63494
c6c9f46490d0 (idlwave-complete): Don't use `format' on `error' arguments.
Juanma Barranquero <lekktu@gmail.com>
parents: 63427
diff changeset
6029 (unless list (error "No keywords available for procedure %s"
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
6030 (idlwave-make-full-name class name)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6031 (setq idlwave-completion-help-info
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6032 (list 'keyword name type-selector class-selector entry super-classes))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6033 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6034 'keyword 'keyword list nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6035 (format "Select keyword for procedure %s%s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6036 (idlwave-make-full-name class name)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6037 (if (or (member '("_EXTRA") list)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6038 (member '("_REF_EXTRA") list))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6039 " (note _EXTRA)" ""))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6040 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6041 'idlwave-attach-keyword-classes)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6042
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6043 ((eq what 'function-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6044 ;; Complete a function keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6045 (let* ((where (nth 3 where-list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6046 (name (car where))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6047 (method-selector name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6048 (type-selector 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6049 (class (idlwave-determine-class where 'fun))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6050 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6051 (super-classes (idlwave-all-class-inherits class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6052 (isa (format "function%s-keyword" (if class "-method" "")))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6053 (entry (idlwave-best-rinfo-assq
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6054 name 'fun class (idlwave-routines)))
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
6055 (system (if entry (eq (car (nth 3 entry)) 'system)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6056 (list (idlwave-entry-keywords entry 'do-link))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6057 msg-name)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6058 (unless (or entry (eq class t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6059 (error "Nothing known about function %s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6060 (idlwave-make-full-name class name)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6061 (setq list (idlwave-fix-keywords name 'fun class list
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
6062 super-classes system))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6063 ;; OBJ_NEW: Messages mention the proper Init method
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6064 (setq msg-name (if (and (null class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6065 (string= (upcase name) "OBJ_NEW"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6066 (concat idlwave-current-obj_new-class
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6067 "::Init (via OBJ_NEW)")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6068 (idlwave-make-full-name class name)))
63494
c6c9f46490d0 (idlwave-complete): Don't use `format' on `error' arguments.
Juanma Barranquero <lekktu@gmail.com>
parents: 63427
diff changeset
6069 (unless list (error "No keywords available for function %s"
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
6070 msg-name))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6071 (setq idlwave-completion-help-info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6072 (list 'keyword name type-selector class-selector nil super-classes))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6073 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6074 'keyword 'keyword list nil
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6075 (format "Select keyword for function %s%s" msg-name
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6076 (if (or (member '("_EXTRA") list)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6077 (member '("_REF_EXTRA") list))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6078 " (note _EXTRA)" ""))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6079 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6080 'idlwave-attach-keyword-classes)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6081
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6082 (t (error "This should not happen (idlwave-complete)")))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6083
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6084 (defvar idlwave-complete-special nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6085 "List of special completion functions.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6086 These functions are called for each completion. Each function must
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6087 check if its own special completion context is present. If yes, it
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6088 should use `idlwave-complete-in-buffer' to do some completion and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6089 return t. If such a function returns t, *no further* attempts to
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6090 complete other contexts will be done. If the function returns nil,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6091 other completions will be tried.")
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6092
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6093 (defun idlwave-call-special (functions &rest args)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6094 (let ((funcs functions)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6095 fun ret)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6096 (catch 'exit
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6097 (while (setq fun (pop funcs))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6098 (if (setq ret (apply fun args))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6099 (throw 'exit ret)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6100 nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6101
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6102 (defun idlwave-make-force-complete-where-list (what &optional module class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6103 ;; Return an artificial WHERE specification to force the completion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6104 ;; routine to complete a specific item independent of context.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6105 ;; WHAT is the prefix arg of `idlwave-complete', see there for details.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6106 ;; MODULE and CLASS can be used to specify the routine name and class.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6107 ;; The class name will also be found in MODULE if that is like "class::mod".
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6108 (let* ((what-list '(("procedure") ("procedure-keyword")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6109 ("function") ("function-keyword")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6110 ("procedure-method") ("procedure-method-keyword")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6111 ("function-method") ("function-method-keyword")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6112 ("class")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6113 (module (idlwave-sintern-routine-or-method module class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6114 (class (idlwave-sintern-class class))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6115 (what (cond
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6116 ((equal what 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6117 (setq what
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6118 (intern (completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6119 "Complete what? " what-list nil t))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6120 ((integerp what)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6121 (setq what (intern (car (nth (1- what) what-list)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6122 ((and what
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6123 (symbolp what)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6124 (assoc (symbol-name what) what-list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6125 what)
60917
87f9bb9d3718 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el,
Werner LEMBERG <wl@gnu.org>
parents: 60766
diff changeset
6126 (t (error "Invalid WHAT"))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6127 (nil-list '(nil nil nil nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6128 (class-list (list nil nil (or class t) nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6129
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6130 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6131
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6132 ((eq what 'procedure)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6133 (list nil-list nil-list 'procedure nil-list nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6134
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6135 ((eq what 'procedure-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6136 (let* ((class-selector nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6137 (super-classes nil)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6138 (type-selector 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6139 (pro (or module
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6140 (idlwave-completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6141 "Procedure: " (idlwave-routines) 'idlwave-selector))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6142 (setq pro (idlwave-sintern-routine pro))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6143 (list nil-list nil-list 'procedure-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6144 (list pro nil nil nil) nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6145
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6146 ((eq what 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6147 (list nil-list nil-list 'function nil-list nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6148
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6149 ((eq what 'function-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6150 (let* ((class-selector nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6151 (super-classes nil)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6152 (type-selector 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6153 (func (or module
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6154 (idlwave-completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6155 "Function: " (idlwave-routines) 'idlwave-selector))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6156 (setq func (idlwave-sintern-routine func))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6157 (list nil-list nil-list 'function-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6158 (list func nil nil nil) nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6159
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6160 ((eq what 'procedure-method)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6161 (list nil-list nil-list 'procedure class-list nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6162
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6163 ((eq what 'procedure-method-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6164 (let* ((class (idlwave-determine-class class-list 'pro))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6165 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6166 (super-classes (idlwave-all-class-inherits class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6167 (type-selector 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6168 (pro (or module
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6169 (idlwave-completing-read
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6170 (format "Procedure in %s class: " class-selector)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6171 (idlwave-routines) 'idlwave-selector))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6172 (setq pro (idlwave-sintern-method pro))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6173 (list nil-list nil-list 'procedure-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6174 (list pro nil class nil) nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6175
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6176 ((eq what 'function-method)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6177 (list nil-list nil-list 'function class-list nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6178
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6179 ((eq what 'function-method-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6180 (let* ((class (idlwave-determine-class class-list 'fun))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6181 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6182 (super-classes (idlwave-all-class-inherits class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6183 (type-selector 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6184 (func (or module
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6185 (idlwave-completing-read
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6186 (format "Function in %s class: " class-selector)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6187 (idlwave-routines) 'idlwave-selector))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6188 (setq func (idlwave-sintern-method func))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6189 (list nil-list nil-list 'function-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6190 (list func nil class nil) nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6191
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6192 ((eq what 'class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6193 (list nil-list nil-list 'class nil-list nil))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6194
60917
87f9bb9d3718 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el,
Werner LEMBERG <wl@gnu.org>
parents: 60766
diff changeset
6195 (t (error "Invalid value for WHAT")))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6196
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6197 (defun idlwave-completing-read (&rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6198 ;; Completing read, case insensitive
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6199 (let ((old-value (default-value 'completion-ignore-case)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6200 (unwind-protect
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6201 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6202 (setq-default completion-ignore-case t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6203 (apply 'completing-read args))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6204 (setq-default completion-ignore-case old-value))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6205
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6206 (defvar idlwave-shell-default-directory)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6207 (defun idlwave-complete-filename ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6208 "Use the comint stuff to complete a file name."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6209 (require 'comint)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6210 (let* ((comint-file-name-chars "~/A-Za-z0-9+@:_.$#%={}\\-")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6211 (comint-completion-addsuffix nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6212 (default-directory
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6213 (if (and (boundp 'idlwave-shell-default-directory)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6214 (stringp idlwave-shell-default-directory)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6215 (file-directory-p idlwave-shell-default-directory))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6216 idlwave-shell-default-directory
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6217 default-directory)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6218 (comint-dynamic-complete-filename)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6219
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6220 (defun idlwave-make-full-name (class name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6221 ;; Make a fully qualified module name including the class name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6222 (concat (if class (format "%s::" class) "") name))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6223
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6224 (defun idlwave-rinfo-assoc (name type class list)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6225 "Like `idlwave-rinfo-assq', but sintern strings first."
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6226 (idlwave-rinfo-assq
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6227 (idlwave-sintern-routine-or-method name class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6228 type (idlwave-sintern-class class) list))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6229
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6230 (defun idlwave-rinfo-assq (name type class list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6231 ;; Works like assq, but also checks type and class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6232 (catch 'exit
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6233 (let (match)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6234 (while (setq match (assq name list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6235 (and (or (eq type t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6236 (eq (nth 1 match) type))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6237 (eq (nth 2 match) class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6238 (throw 'exit match))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6239 (setq list (cdr (memq match list)))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6240
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6241 (defun idlwave-rinfo-assq-any-class (name type class list)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6242 ;; Return the first matching method on the inheritance list
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6243 (let* ((classes (cons class (idlwave-all-class-inherits class)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6244 class rtn)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6245 (while classes
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6246 (if (setq rtn (idlwave-rinfo-assq name type (pop classes) list))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6247 (setq classes nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6248 rtn))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6249
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6250 (defun idlwave-best-rinfo-assq (name type class list &optional with-file
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6251 keep-system)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6252 "Like `idlwave-rinfo-assq', but get all twins and sort, then return first.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6253 If WITH-FILE is passed, find the best rinfo entry with a file
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6254 included. If KEEP-SYSTEM is set, don't prune system for compiled
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6255 syslib files."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6256 (let ((twins (idlwave-routine-twins
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6257 (idlwave-rinfo-assq-any-class name type class list)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6258 list))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6259 syslibp)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6260 (when (> (length twins) 1)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6261 (setq twins (sort twins 'idlwave-routine-entry-compare-twins))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6262 (if (and (null keep-system)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6263 (eq 'system (car (nth 3 (car twins))))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6264 (setq syslibp (idlwave-any-syslib (cdr twins)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6265 (not (equal 1 syslibp)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6266 ;; Its a compiled syslib, so we need to remove the system entry
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6267 (setq twins (cdr twins)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6268 (if with-file
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6269 (setq twins (delq nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6270 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6271 (if (nth 1 (nth 3 x)) x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6272 twins)))))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6273 (car twins)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6274
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6275 (defun idlwave-best-rinfo-assoc (name type class list &optional with-file
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6276 keep-system)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6277 "Like `idlwave-best-rinfo-assq', but sintern strings first."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6278 (idlwave-best-rinfo-assq
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6279 (idlwave-sintern-routine-or-method name class)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6280 type (idlwave-sintern-class class) list with-file keep-system))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6281
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6282 (defun idlwave-any-syslib (entries)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6283 "Does the entry list ENTRIES contain a syslib entry?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6284 If yes, return the index (>=1)."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6285 (let (file (cnt 0))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6286 (catch 'exit
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6287 (while entries
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6288 (incf cnt)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6289 (setq file (idlwave-routine-source-file (nth 3 (car entries))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6290 (if (and file (idlwave-syslib-p file))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6291 (throw 'exit cnt)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6292 (setq entries (cdr entries))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6293 nil)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6294
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6295 (defun idlwave-all-assq (key list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6296 "Return a list of all associations of Key in LIST."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6297 (let (rtn elt)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6298 (while (setq elt (assq key list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6299 (push elt rtn)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6300 (setq list (cdr (memq elt list))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6301 (nreverse rtn)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6302
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6303 (defun idlwave-all-method-classes (method &optional type)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
6304 "Return all classes which have a method METHOD.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
6305 TYPE is 'fun or 'pro.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6306 When TYPE is not specified, both procedures and functions will be considered."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6307 (if (null method)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6308 (mapcar 'car (idlwave-class-alist))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6309 (let (rtn)
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6310 (mapc (lambda (x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6311 (and (nth 2 x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6312 (or (not type)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6313 (eq type (nth 1 x)))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6314 (push (nth 2 x) rtn)))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6315 (idlwave-all-assq method (idlwave-routines)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6316 (idlwave-uniquify rtn))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6317
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6318 (defun idlwave-all-method-keyword-classes (method keyword &optional type)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6319 "Return all classes which have a method METHOD with keyword KEYWORD.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6320 TYPE is 'fun or 'pro.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6321 When TYPE is not specified, both procedures and functions will be considered."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6322 (if (or (null method)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6323 (null keyword))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6324 nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6325 (let (rtn)
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6326 (mapc (lambda (x)
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6327 (and (nth 2 x) ; non-nil class
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6328 (or (not type) ; correct or unspecified type
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6329 (eq type (nth 1 x)))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6330 (assoc keyword (idlwave-entry-keywords x))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6331 (push (nth 2 x) rtn)))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
6332 (idlwave-all-assq method (idlwave-routines)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6333 (idlwave-uniquify rtn))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6334
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6335 (defun idlwave-members-only (list club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6336 "Return list of all elements in LIST which are also in CLUB."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6337 (let (rtn)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6338 (while list
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6339 (if (member (car list) club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6340 (setq rtn (cons (car list) rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6341 (setq list (cdr list)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6342 (nreverse rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6343
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6344 (defun idlwave-nonmembers-only (list club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6345 "Return list of all elements in LIST which are not in CLUB."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6346 (let (rtn)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6347 (while list
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6348 (if (member (car list) club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6349 nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6350 (setq rtn (cons (car list) rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6351 (setq list (cdr list)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6352 (nreverse rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6353
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6354 (defun idlwave-explicit-class-listed (info)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6355 "Return whether or not the class is listed explicitly, ala a->b::c.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
6356 INFO is as returned by `idlwave-what-function' or `-procedure'."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6357 (let ((apos (nth 3 info)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6358 (if apos
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6359 (save-excursion (goto-char apos)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6360 (looking-at "->[a-zA-Z][a-zA-Z0-9$_]*::")))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6361
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6362 (defvar idlwave-determine-class-special nil
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6363 "List of special functions for determining class.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
6364 Must accept two arguments: `apos' and `info'.")
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6365
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6366 (defun idlwave-determine-class (info type)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6367 ;; Determine the class of a routine call.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6368 ;; INFO is the `cw-list' structure as returned by idlwave-where.
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6369 ;; The second element in this structure is the class. When nil, we
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6370 ;; return nil. When t, try to get the class from text properties at
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6371 ;; the arrow. When the object is "self", we use the class of the
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6372 ;; current routine. otherwise prompt the user for a class name.
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6373 ;; Also stores the selected class as a text property at the arrow.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6374 ;; TYPE is 'fun or 'pro.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6375 (let* ((class (nth 2 info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6376 (apos (nth 3 info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6377 (nassoc (assoc (if (stringp (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6378 (upcase (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6379 (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6380 idlwave-query-class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6381 (dassoc (assq (if (car info) 'keyword-default 'method-default)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6382 idlwave-query-class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6383 (query (cond (nassoc (cdr nassoc))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6384 (dassoc (cdr dassoc))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6385 (t t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6386 (arrow (and apos (string= (buffer-substring apos (+ 2 apos)) "->")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6387 (is-self
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6388 (and arrow
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6389 (save-excursion (goto-char apos)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6390 (forward-word -1)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6391 (let ((case-fold-search t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6392 (looking-at "self\\>")))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6393 (force-query idlwave-force-class-query)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6394 store special-class class-alist)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6395 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6396 ((null class) nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6397 ((eq t class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6398 ;; There is an object which would like to know its class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6399 (if (and arrow (get-text-property apos 'idlwave-class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6400 idlwave-store-inquired-class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6401 (not force-query))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6402 (setq class (get-text-property apos 'idlwave-class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6403 class (idlwave-sintern-class class)))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6404 (if (and (eq t class) is-self)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6405 (setq class (or (nth 2 (idlwave-current-routine)) class)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6406
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6407 ;; Before prompting, try any special class determination routines
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6408 (when (and (eq t class)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6409 idlwave-determine-class-special
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6410 (not force-query))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6411 (setq special-class
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6412 (idlwave-call-special idlwave-determine-class-special apos))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6413 (if special-class
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6414 (setq class (idlwave-sintern-class special-class)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6415 store idlwave-store-inquired-class)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6416
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6417 ;; Prompt for a class, if we need to
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6418 (when (and (eq class t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6419 (or force-query query))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6420 (setq class-alist
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6421 (mapcar 'list (idlwave-all-method-classes (car info) type)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6422 (setq class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6423 (idlwave-sintern-class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6424 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6425 ((and (= (length class-alist) 0) (not force-query))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6426 (error "No classes available with method %s" (car info)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6427 ((and (= (length class-alist) 1) (not force-query))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6428 (car (car class-alist)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6429 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6430 (setq store idlwave-store-inquired-class)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6431 (idlwave-completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6432 (format "Class%s: " (if (stringp (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6433 (format " for %s method %s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6434 type (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6435 ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6436 class-alist nil nil nil 'idlwave-class-history))))))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6437
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6438 ;; Store it, if requested
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6439 (when (and class (not (eq t class)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6440 ;; We have a real class here
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6441 (when (and store arrow)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6442 (condition-case ()
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6443 (add-text-properties
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6444 apos (+ apos 2)
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6445 `(idlwave-class ,class face ,idlwave-class-arrow-face
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6446 rear-nonsticky t))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6447 (error nil)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6448 (setf (nth 2 info) class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6449 ;; Return the class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6450 class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6451 ;; Default as fallback
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6452 (t class))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6453
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6454 (defun idlwave-selector (a)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6455 (and (eq (nth 1 a) type-selector)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6456 (or (and (nth 2 a) (eq class-selector t))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6457 (eq (nth 2 a) class-selector)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6458 (memq (nth 2 a) super-classes))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6459
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6460 (defun idlwave-add-file-link-selector (a)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6461 ;; Record a file link, if any, for the tested names during selection.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6462 (let ((sel (idlwave-selector a)) file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6463 (if (and sel (setq file (idlwave-entry-has-help a)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6464 (push (cons (car a) file) idlwave-completion-help-links))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6465 sel))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6466
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6467
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6468 (defun idlwave-where ()
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6469 "Find out where we are.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6470 The return value is a list with the following stuff:
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6471 \(PRO-LIST FUNC-LIST COMPLETE-WHAT CW-LIST LAST-CHAR)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6472
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6473 PRO-LIST (PRO POINT CLASS ARROW)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6474 FUNC-LIST (FUNC POINT CLASS ARROW)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6475 COMPLETE-WHAT a symbol indicating what kind of completion makes sense here
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6476 CW-LIST (PRO-OR-FUNC POINT CLASS ARROW) Like PRO-LIST, for what can
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6477 be completed here.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6478 LAST-CHAR last relevant character before point (non-white non-comment,
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6479 not part of current identifier or leading slash).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6480
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6481 In the lists, we have these meanings:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6482 PRO: Procedure name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6483 FUNC: Function name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6484 POINT: Where is this
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6485 CLASS: What class has the routine (nil=no, t=is method, but class unknown)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6486 ARROW: Location of the arrow"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6487 (idlwave-routines)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6488 (let* (;(bos (save-excursion (idlwave-beginning-of-statement) (point)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6489 (bos (save-excursion (idlwave-start-of-substatement 'pre) (point)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6490 (func-entry (idlwave-what-function bos))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6491 (func (car func-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6492 (func-class (nth 1 func-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6493 (func-arrow (nth 2 func-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6494 (func-point (or (nth 3 func-entry) 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6495 (func-level (or (nth 4 func-entry) 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6496 (pro-entry (idlwave-what-procedure bos))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6497 (pro (car pro-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6498 (pro-class (nth 1 pro-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6499 (pro-arrow (nth 2 pro-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6500 (pro-point (or (nth 3 pro-entry) 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6501 (last-char (idlwave-last-valid-char))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6502 (case-fold-search t)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6503 (match-string (buffer-substring bos (point)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6504 cw cw-mod cw-arrow cw-class cw-point)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6505 (if (< func-point pro-point) (setq func nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6506 (cond
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6507 ((string-match "\\`[ \t]*\\(pro\\|function\\)[ \t]+[a-zA-Z0-9_]*\\'"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6508 match-string)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6509 (setq cw 'class))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6510 ((string-match
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6511 "\\`[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)?\\'"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6512 (if (> pro-point 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6513 (buffer-substring pro-point (point))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6514 match-string))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6515 (setq cw 'procedure cw-class pro-class cw-point pro-point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6516 cw-arrow pro-arrow))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6517 ((string-match "\\`[ \t]*\\(pro\\|function\\)\\>"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6518 match-string)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6519 nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6520 ((string-match "OBJ_NEW([ \t]*['\"]\\([a-zA-Z0-9$_]*\\)?\\'"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6521 match-string)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6522 (setq cw 'class))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6523 ((string-match "\\<inherits\\s-+\\([a-zA-Z0-9$_]*\\)?\\'"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6524 match-string)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6525 (setq cw 'class))
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6526 ((and func
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6527 (> func-point pro-point)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6528 (= func-level 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6529 (memq last-char '(?\( ?,)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6530 (setq cw 'function-keyword cw-mod func cw-point func-point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6531 cw-class func-class cw-arrow func-arrow))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6532 ((and pro (eq last-char ?,))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6533 (setq cw 'procedure-keyword cw-mod pro cw-point pro-point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6534 cw-class pro-class cw-arrow pro-arrow))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6535 ; ((member last-char '(?\' ?\) ?\] ?!))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6536 ; ;; after these chars, a function makes no sense
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6537 ; ;; FIXME: I am sure there can be more in this list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6538 ; ;; FIXME: Do we want to do this at all?
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6539 ; nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6540 ;; Everywhere else we try a function.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6541 (t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6542 (setq cw 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6543 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6544 (if (re-search-backward "->[ \t]*\\(\\$[ \t]*\\(;.*\\)?\n\\s-*\\)?\\(\\([$a-zA-Z0-9_]+\\)::\\)?[$a-zA-Z0-9_]*\\=" bos t)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6545 (setq cw-arrow (copy-marker (match-beginning 0))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6546 cw-class (if (match-end 4)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6547 (idlwave-sintern-class (match-string 4))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6548 t))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6549 (list (list pro pro-point pro-class pro-arrow)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6550 (list func func-point func-class func-arrow)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6551 cw
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6552 (list cw-mod cw-point cw-class cw-arrow)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6553 last-char)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6554
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6555 (defun idlwave-this-word (&optional class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6556 ;; Grab the word around point. CLASS is for the `skip-chars=...' functions
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6557 (setq class (or class "a-zA-Z0-9$_."))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6558 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6559 (buffer-substring
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6560 (progn (skip-chars-backward class) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6561 (progn (skip-chars-forward class) (point)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6562
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6563 (defun idlwave-what-function (&optional bound)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6564 ;; Find out if point is within the argument list of a function.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6565 ;; The return value is ("function-name" class arrow-start (point) level).
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6566 ;; Level is 1 on the top level parentheses, higher further down.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6567
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6568 ;; If the optional BOUND is an integer, bound backwards directed
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6569 ;; searches to this point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6570
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6571 (catch 'exit
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6572 (let (pos
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6573 func-point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6574 (cnt 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6575 func arrow-start class)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6576 (idlwave-with-special-syntax
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6577 (save-restriction
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6578 (save-excursion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6579 (narrow-to-region (max 1 (or bound 0)) (point-max))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6580 ;; move back out of the current parenthesis
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6581 (while (condition-case nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6582 (progn (up-list -1) t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6583 (error nil))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6584 (setq pos (point))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6585 (incf cnt)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6586 (when (and (= (following-char) ?\()
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6587 (re-search-backward
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6588 "\\(::\\|\\<\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\="
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6589 bound t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6590 (setq func (match-string 2)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6591 func-point (goto-char (match-beginning 2))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6592 pos func-point)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6593 (if (re-search-backward
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6594 "->[ \t]*\\(\\([a-zA-Z][a-zA-Z0-9$_]*\\)::\\)?\\=" bound t)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6595 (setq arrow-start (copy-marker (match-beginning 0))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6596 class (or (match-string 2) t)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6597 (throw
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6598 'exit
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6599 (list
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6600 (idlwave-sintern-routine-or-method func class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6601 (idlwave-sintern-class class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6602 arrow-start func-point cnt)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6603 (goto-char pos))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6604 (throw 'exit nil)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6605
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6606 (defun idlwave-what-procedure (&optional bound)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6607 ;; Find out if point is within the argument list of a procedure.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6608 ;; The return value is ("procedure-name" class arrow-pos (point)).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6609
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6610 ;; If the optional BOUND is an integer, bound backwards directed
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6611 ;; searches to this point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6612 (let ((pos (point)) pro-point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6613 pro class arrow-start string)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6614 (save-excursion
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6615 ;;(idlwave-beginning-of-statement)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6616 (idlwave-start-of-substatement 'pre)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6617 (setq string (buffer-substring (point) pos))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6618 (if (string-match
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6619 "\\`[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\(,\\|\\'\\)" string)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6620 (setq pro (match-string 1 string)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6621 pro-point (+ (point) (match-beginning 1)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6622 (if (and (idlwave-skip-object)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6623 (setq string (buffer-substring (point) pos))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6624 (string-match
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6625 "\\`[ \t]*\\(->\\)[ \t]*\\(\\([a-zA-Z][a-zA-Z0-9$_]*\\)::\\)?\\([a-zA-Z][a-zA-Z0-9$_]*\\)?[ \t]*\\(,\\|\\(\\$\\s *\\(;.*\\)?\\)?$\\)"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6626 string))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6627 (setq pro (if (match-beginning 4)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6628 (match-string 4 string))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6629 pro-point (if (match-beginning 4)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6630 (+ (point) (match-beginning 4))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6631 pos)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6632 arrow-start (copy-marker (+ (point) (match-beginning 1)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6633 class (or (match-string 3 string) t)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6634 (list (idlwave-sintern-routine-or-method pro class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6635 (idlwave-sintern-class class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6636 arrow-start
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6637 pro-point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6638
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6639 (defun idlwave-skip-object ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6640 ;; If there is an object at point, move over it and return t.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6641 (let ((pos (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6642 (if (catch 'exit
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6643 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6644 (skip-chars-forward " ") ; white space
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6645 (skip-chars-forward "*") ; de-reference
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6646 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6647 ((looking-at idlwave-identifier)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6648 (goto-char (match-end 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6649 ((eq (following-char) ?\()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6650 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6651 (t (throw 'exit nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6652 (catch 'endwhile
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6653 (while t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6654 (cond ((eq (following-char) ?.)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6655 (forward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6656 (if (not (looking-at idlwave-identifier))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6657 (throw 'exit nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6658 (goto-char (match-end 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6659 ((memq (following-char) '(?\( ?\[))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6660 (condition-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6661 (forward-list 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6662 (error (throw 'exit nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6663 (t (throw 'endwhile t)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6664 (if (looking-at "[ \t]*->")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6665 (throw 'exit (setq pos (match-beginning 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6666 (throw 'exit nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6667 (goto-char pos)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6668 nil)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6669
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6670 (defun idlwave-last-valid-char ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6671 "Return the last character before point which is not white or a comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6672 and also not part of the current identifier. Since we do this in
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6673 order to identify places where keywords are, we consider the initial
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6674 `/' of a keyword as part of the identifier.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6675 This function is not general, can only be used for completion stuff."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6676 (catch 'exit
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6677 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6678 ;; skip the current identifier
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6679 (skip-chars-backward "a-zA-Z0-9_$")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6680 ;; also skip a leading slash which might be belong to the keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6681 (if (eq (preceding-char) ?/)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6682 (backward-char 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6683 ;; FIXME: does not check if this is a valid identifier
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6684 (while t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6685 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6686 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6687 ((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6688 ((eq (preceding-char) ?\n)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6689 (beginning-of-line 0)
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
6690 (if (looking-at "\\([^\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6691 ;; continuation line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6692 (goto-char (match-end 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6693 (throw 'exit nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6694 (t (throw 'exit (preceding-char))))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6695
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6696 (defvar idlwave-complete-after-success-form nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6697 "A form to evaluate after successful completion.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6698 (defvar idlwave-complete-after-success-form-force nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6699 "A form to evaluate after completion selection in *Completions* buffer.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6700 (defconst idlwave-completion-mark (make-marker)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6701 "A mark pointing to the beginning of the completion string.")
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6702 (defvar completion-highlight-first-word-only) ;XEmacs.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6703
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6704 (defun idlwave-complete-in-buffer (type stype list selector prompt isa
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6705 &optional prepare-display-function
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6706 special-selector)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6707 "Perform TYPE completion of word before point against LIST.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6708 SELECTOR is the PREDICATE argument for the completion function. Show
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6709 PROMPT in echo area. TYPE is one of the intern types, e.g. 'function,
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
6710 'procedure, 'class-tag, 'keyword, 'sysvar, etc. SPECIAL-SELECTOR is
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6711 used only once, for `all-completions', and can be used to, e.g.,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6712 accumulate information on matching completions."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6713 (let* ((completion-ignore-case t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6714 beg (end (point)) slash part spart completion all-completions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6715 dpart dcompletion)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6716
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6717 (unless list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6718 (error (concat prompt ": No completions available")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6719
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6720 ;; What is already in the buffer?
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6721 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6722 (skip-chars-backward "a-zA-Z0-9_$")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6723 (setq slash (eq (preceding-char) ?/)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6724 beg (point)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6725 idlwave-complete-after-success-form
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6726 (list 'idlwave-after-successful-completion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6727 (list 'quote type) slash beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6728 idlwave-complete-after-success-form-force
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6729 (list 'idlwave-after-successful-completion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6730 (list 'quote type) slash (list 'quote 'force))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6731
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6732 ;; Try a completion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6733 (setq part (buffer-substring beg end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6734 dpart (downcase part)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6735 spart (idlwave-sintern stype part)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6736 completion (try-completion part list selector)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6737 dcompletion (if (stringp completion) (downcase completion))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6738 idlwave-completion-help-links nil)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6739 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6740 ((null completion)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6741 ;; nothing available.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6742 (error (concat prompt ": no completion for \"%s\"") part))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6743 ((and (not (equal dpart dcompletion))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6744 (not (eq t completion)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6745 ;; We can add something
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6746 (delete-region beg end)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6747 (insert (if (and (string= part dpart)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6748 (or (not (string= part ""))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6749 idlwave-complete-empty-string-as-lower-case)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6750 (not idlwave-completion-force-default-case))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6751 dcompletion
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6752 completion))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6753 (if (eq t (try-completion completion list selector))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6754 ;; Now this is a unique match
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6755 (idlwave-after-successful-completion type slash beg))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6756 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6757 ((or (eq completion t)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6758 (and (= 1 (length (setq all-completions
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6759 (idlwave-uniquify
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6760 (all-completions part list
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6761 (or special-selector
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6762 selector))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6763 (equal dpart dcompletion)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6764 ;; This is already complete
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6765 (idlwave-after-successful-completion type slash beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6766 (message "%s is already the complete %s" part isa)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6767 nil)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6768 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6769 ;; We cannot add something - offer a list.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6770 (message "Making completion list...")
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6771
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6772 (unless idlwave-completion-help-links ; already set somewhere?
85282
f89fc9388782 (idlwave-complete-in-buffer): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents: 85218
diff changeset
6773 (mapc (lambda (x) ; Pass link prop through to highlight-linked
f89fc9388782 (idlwave-complete-in-buffer): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents: 85218
diff changeset
6774 (let ((link (get-text-property 0 'link (car x))))
f89fc9388782 (idlwave-complete-in-buffer): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents: 85218
diff changeset
6775 (if link
f89fc9388782 (idlwave-complete-in-buffer): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents: 85218
diff changeset
6776 (push (cons (car x) link)
f89fc9388782 (idlwave-complete-in-buffer): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents: 85218
diff changeset
6777 idlwave-completion-help-links))))
f89fc9388782 (idlwave-complete-in-buffer): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents: 85218
diff changeset
6778 list))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6779 (let* ((list all-completions)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6780 ;; "complete" means, this is already a valid completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6781 (complete (memq spart all-completions))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6782 (completion-highlight-first-word-only t)) ; XEmacs
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6783 ;; (completion-fixup-function ; Emacs
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6784 ;; (lambda () (and (eq (preceding-char) ?>)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6785 ;; (re-search-backward " <" beg t)))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6786
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6787 (setq list (sort list (lambda (a b)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6788 (string< (downcase a) (downcase b)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6789 (if prepare-display-function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6790 (setq list (funcall prepare-display-function list)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6791 (if (and (string= part dpart)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6792 (or (not (string= part ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6793 idlwave-complete-empty-string-as-lower-case)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6794 (not idlwave-completion-force-default-case))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6795 (setq list (mapcar (lambda (x)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6796 (if (listp x)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6797 (setcar x (downcase (car x)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6798 (setq x (downcase x)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6799 x)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6800 list)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6801 (idlwave-display-completion-list list prompt beg complete))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6802 t))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6803
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6804 (defun idlwave-complete-class ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6805 "Complete a class at point."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6806 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6807 ;; Call `idlwave-routines' to make sure the class list will be available
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6808 (idlwave-routines)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6809 ;; Check for the special case of completing empty string after pro/function
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6810 (if (let ((case-fold-search t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6811 (save-excursion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6812 (and
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6813 (re-search-backward "\\<\\(pro\\|function\\)[ \t]+\\="
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6814 (- (point) 15) t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6815 (goto-char (point-min))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6816 (re-search-forward
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6817 "^[ \t]*\\(pro\\|function\\)[ \t]+\\([a-zA-Z0-9_]+::\\)" nil t))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6818 ;; Yank the full class specification
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6819 (insert (match-string 2))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6820 ;; Do the completion, using list gathered from `idlwave-routines'
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6821 (idlwave-complete-in-buffer
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6822 'class 'class (idlwave-class-alist) nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6823 "Select a class" "class"
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6824 (lambda (list) ;; Push it to help-links if system help available
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6825 (mapcar (lambda (x)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6826 (let* ((entry (idlwave-class-info x))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6827 (link (nth 1 (assq 'link entry))))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6828 (if link (push (cons x link)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6829 idlwave-completion-help-links))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6830 x))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6831 list)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6832
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6833 (defun idlwave-attach-classes (list type show-classes)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6834 ;; Attach the proper class list to a LIST of completion items.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6835 ;; TYPE, when 'kwd, shows classes for method keywords, when
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6836 ;; 'class-tag, for class tags, and otherwise for methods.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6837 ;; SHOW-CLASSES is the value of `idlwave-completion-show-classes'.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6838 (if (or (null show-classes) ; don't want to see classes
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6839 (null class-selector) ; not a method call
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6840 (and
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6841 (stringp class-selector) ; the class is already known
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6842 (not super-classes))) ; no possibilities for inheritance
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6843 ;; In these cases, we do not have to do anything
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6844 list
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6845 (let* ((do-prop (and (>= show-classes 0)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6846 (>= emacs-major-version 21)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6847 (do-buf (not (= show-classes 0)))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6848 ;; (do-dots (featurep 'xemacs))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6849 (do-dots t)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6850 (inherit (if (and (not (eq type 'class-tag)) super-classes)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6851 (cons class-selector super-classes)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6852 (max (abs show-classes))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6853 (lmax (if do-dots (apply 'max (mapcar 'length list))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6854 classes nclasses class-info space)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6855 (mapcar
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6856 (lambda (x)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6857 ;; get the classes
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6858 (if (eq type 'class-tag)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6859 ;; Just one class for tags
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6860 (setq classes
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6861 (list
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6862 (idlwave-class-or-superclass-with-tag class-selector x)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6863 ;; Multiple classes for method or method-keyword
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6864 (setq classes
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6865 (if (eq type 'kwd)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6866 (idlwave-all-method-keyword-classes
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6867 method-selector x type-selector)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6868 (idlwave-all-method-classes x type-selector)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6869 (if inherit
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6870 (setq classes
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6871 (delq nil
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6872 (mapcar (lambda (x) (if (memq x inherit) x nil))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6873 classes)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6874 (setq nclasses (length classes))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6875 ;; Make the separator between item and class-info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6876 (if do-dots
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6877 (setq space (concat " " (make-string (- lmax (length x)) ?.)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6878 (setq space " "))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6879 (if do-buf
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6880 ;; We do want info in the buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6881 (if (<= nclasses max)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6882 (setq class-info (concat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6883 space
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6884 "<" (mapconcat 'identity classes ",") ">"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6885 (setq class-info (format "%s<%d classes>" space nclasses)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6886 (setq class-info nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6887 (when do-prop
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6888 ;; We do want properties
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6889 (setq x (copy-sequence x))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6890 (put-text-property 0 (length x)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6891 'help-echo (mapconcat 'identity classes " ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6892 x))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6893 (if class-info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6894 (list x class-info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6895 x))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6896 list))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6897
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6898 (defun idlwave-attach-method-classes (list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6899 ;; Call idlwave-attach-classes with method parameters
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6900 (idlwave-attach-classes list 'method idlwave-completion-show-classes))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6901 (defun idlwave-attach-keyword-classes (list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6902 ;; Call idlwave-attach-classes with keyword parameters
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6903 (idlwave-attach-classes list 'kwd idlwave-completion-show-classes))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6904 (defun idlwave-attach-class-tag-classes (list)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6905 ;; Call idlwave-attach-classes with class structure tags
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6906 (idlwave-attach-classes list 'class-tag idlwave-completion-show-classes))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6907
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6908
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6909 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6910 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6911 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6912 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6913 ;;----------------------------------------------------------------------
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6914 (defvar rtn)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6915 (defun idlwave-pset (item)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6916 (set 'rtn item))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6917
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6918 (defun idlwave-popup-select (ev list title &optional sort)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6919 "Select an item in LIST with a popup menu.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6920 TITLE is the title to put atop the popup. If SORT is non-nil,
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
6921 sort the list before displaying."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6922 (let ((maxpopup idlwave-max-popup-menu-items)
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6923 rtn menu)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6924 (cond ((null list))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6925 ((= 1 (length list))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6926 (setq rtn (car list)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6927 ((featurep 'xemacs)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6928 (if sort (setq list (sort list (lambda (a b)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6929 (string< (upcase a) (upcase b))))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6930 (setq menu
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6931 (append (list title)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6932 (mapcar (lambda (x) (vector x (list 'idlwave-pset
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6933 x)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6934 list)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6935 (setq menu (idlwave-split-menu-xemacs menu maxpopup))
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6936 (let ((resp (get-popup-menu-response menu)))
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
6937 (funcall (event-function resp) (event-object resp))))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6938 (t
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
6939 (if sort (setq list (sort list (lambda (a b)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6940 (string< (upcase a) (upcase b))))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6941 (setq menu (cons title
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6942 (list
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6943 (append (list "")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6944 (mapcar (lambda(x) (cons x x)) list)))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6945 (setq menu (idlwave-split-menu-emacs menu maxpopup))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6946 (setq rtn (x-popup-menu ev menu))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6947 rtn))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6948
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6949 (defun idlwave-split-menu-xemacs (menu N)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6950 "Split the MENU into submenus of maximum length N."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6951 (if (<= (length menu) (1+ N))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6952 ;; No splitting needed
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6953 menu
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6954 (let* ((title (car menu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6955 (entries (cdr menu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6956 (menu (list title))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6957 (cnt 0)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6958 (nextmenu nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6959 (while entries
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6960 (while (and entries (< cnt N))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6961 (setq cnt (1+ cnt)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6962 nextmenu (cons (car entries) nextmenu)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6963 entries (cdr entries)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6964 (setq nextmenu (nreverse nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6965 (setq nextmenu (cons (format "%s...%s"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6966 (aref (car nextmenu) 0)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6967 (aref (nth (1- cnt) nextmenu) 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6968 nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6969 (setq menu (cons nextmenu menu)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6970 nextmenu nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6971 cnt 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6972 (nreverse menu))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6973
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6974 (defun idlwave-split-menu-emacs (menu N)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6975 "Split the MENU into submenus of maximum length N."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6976 (if (<= (length (nth 1 menu)) (1+ N))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6977 ;; No splitting needed
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6978 menu
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6979 (let* ((title (car menu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6980 (entries (cdr (nth 1 menu)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6981 (menu nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6982 (cnt 0)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6983 (nextmenu nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6984 (while entries
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6985 (while (and entries (< cnt N))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6986 (setq cnt (1+ cnt)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6987 nextmenu (cons (car entries) nextmenu)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6988 entries (cdr entries)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6989 (setq nextmenu (nreverse nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6990 (prin1 nextmenu)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6991 (setq nextmenu (cons (format "%s...%s"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6992 (car (car nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6993 (car (nth (1- cnt) nextmenu)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6994 nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6995 (setq menu (cons nextmenu menu)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6996 nextmenu nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6997 cnt 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6998 (setq menu (nreverse menu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6999 (setq menu (cons title menu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7000 menu)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7001
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7002 (defvar idlwave-completion-setup-hook nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7003
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7004 (defun idlwave-scroll-completions (&optional message)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7005 "Scroll the completion window on this frame."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7006 (let ((cwin (get-buffer-window "*Completions*" 'visible))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7007 (win (selected-window)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7008 (unwind-protect
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7009 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7010 (select-window cwin)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7011 (condition-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7012 (scroll-up)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7013 (error (if (and (listp last-command)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7014 (nth 2 last-command))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7015 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7016 (select-window win)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7017 (eval idlwave-complete-after-success-form))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7018 (set-window-start cwin (point-min)))))
87170
e50a2e215441 * erc-stamp.el (erc-echo-timestamp):
David Kastrup <dak@gnu.org>
parents: 86871
diff changeset
7019 (and message (message "%s" message)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7020 (select-window win))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7021
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7022 (defun idlwave-display-completion-list (list &optional message beg complete)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7023 "Display the completions in LIST in the completions buffer and echo MESSAGE."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7024 (unless (and (get-buffer-window "*Completions*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7025 (idlwave-local-value 'idlwave-completion-p "*Completions*"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7026 (move-marker idlwave-completion-mark beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7027 (setq idlwave-before-completion-wconf (current-window-configuration)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7028
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7029 (if (featurep 'xemacs)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7030 (idlwave-display-completion-list-xemacs
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7031 list)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7032 (idlwave-display-completion-list-emacs list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7033
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7034 ;; Store a special value in `this-command'. When `idlwave-complete'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7035 ;; finds this in `last-command', it will scroll the *Completions* buffer.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7036 (setq this-command (list 'idlwave-display-completion-list message complete))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7037
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7038 ;; Mark the completions buffer as created by cib
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7039 (idlwave-set-local 'idlwave-completion-p t "*Completions*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7040
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7041 ;; Fontify the classes
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7042 (if (and idlwave-completion-fontify-classes
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7043 (consp (car list)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7044 (idlwave-completion-fontify-classes))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7045
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7046 ;; Run the hook
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7047 (run-hooks 'idlwave-completion-setup-hook)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7048
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7049 ;; Display the message
87170
e50a2e215441 * erc-stamp.el (erc-echo-timestamp):
David Kastrup <dak@gnu.org>
parents: 86871
diff changeset
7050 (message "%s" (or message "Making completion list...done")))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7051
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7052 (defun idlwave-choose (function &rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7053 "Call FUNCTION as a completion chooser and pass ARGS to it."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7054 (let ((completion-ignore-case t)) ; install correct value
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7055 (apply function args))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7056 (if (and (eq major-mode 'idlwave-shell-mode)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7057 (boundp 'font-lock-mode)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7058 (not font-lock-mode))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7059 ;; For the shell, remove the fontification of the word before point
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7060 (let ((beg (save-excursion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7061 (skip-chars-backward "a-zA-Z0-9_")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7062 (point))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7063 (remove-text-properties beg (point) '(face nil))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7064 (eval idlwave-complete-after-success-form-force))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7065
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7066 (defun idlwave-keyboard-quit ()
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7067 (interactive)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7068 (unwind-protect
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7069 (if (eq (car-safe last-command) 'idlwave-display-completion-list)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7070 (idlwave-restore-wconf-after-completion))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7071 (keyboard-quit)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7072
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7073 (defun idlwave-restore-wconf-after-completion ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7074 "Restore the old (before completion) window configuration."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7075 (and idlwave-completion-restore-window-configuration
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7076 idlwave-before-completion-wconf
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7077 (set-window-configuration idlwave-before-completion-wconf)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7078
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7079 (defun idlwave-one-key-select (sym prompt delay)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7080 "Make the user select an element from the alist in the variable SYM.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7081 The keys of the alist are expected to be strings. The function returns the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7082 car of the selected association.
77971
c7c8781ebed8 (idlwave-one-key-select): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 77887
diff changeset
7083 To do this, PROMPT is displayed and the user must hit a letter key to
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7084 select an entry. If the user does not reply within DELAY seconds, a help
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7085 window with the options is displayed automatically.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7086 The key which is associated with each option is generated automatically.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7087 First, the strings are checked for preselected keys, like in \"[P]rint\".
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7088 If these don't exist, a letter in the string is automatically selected."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7089 (let* ((alist (symbol-value sym))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7090 (temp-buffer-show-hook (if (fboundp 'fit-window-to-buffer)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7091 '(fit-window-to-buffer)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7092 keys-alist char)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7093 ;; First check the cache
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7094 (if (and (eq (symbol-value sym) (get sym :one-key-alist-last)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7095 (setq keys-alist (get sym :one-key-alist-cache))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7096 ;; Need to make new list
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7097 (setq keys-alist (idlwave-make-one-key-alist alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7098 (put sym :one-key-alist-cache keys-alist)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7099 (put sym :one-key-alist-last alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7100 ;; Display prompt and wait for quick reply
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7101 (message "%s[%s]" prompt
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7102 (mapconcat (lambda(x) (char-to-string (car x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7103 keys-alist ""))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7104 (if (sit-for delay)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7105 ;; No quick reply: Show help
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7106 (save-window-excursion
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7107 (with-output-to-temp-buffer "*Completions*"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7108 (mapcar (lambda(x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7109 (princ (nth 1 x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7110 (princ "\n"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7111 keys-alist))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7112 (setq char (read-char)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7113 (setq char (read-char)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7114 (message nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7115 ;; Return the selected result
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7116 (nth 2 (assoc char keys-alist))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7117
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7118 ;; Used for, e.g., electric debug super-examine.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7119 (defun idlwave-make-one-key-alist (alist)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7120 "Make an alist for single key selection."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7121 (let ((l alist) keys-alist name start char help
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7122 (cnt 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7123 (case-fold-search nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7124 (while l
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7125 (setq name (car (car l))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7126 l (cdr l))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7127 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7128 ;; First check if the configuration predetermined a key
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7129 (if (string-match "\\[\\(.\\)\\]" name)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7130 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7131 (setq char (string-to-char (downcase (match-string 1 name)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7132 help (format "%c: %s" char name)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7133 keys-alist (cons (list char help name) keys-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7134 (throw 'exit t)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7135 ;; Then check for capital letters
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7136 (setq start 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7137 (while (string-match "[A-Z]" name start)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7138 (setq start (match-end 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7139 char (string-to-char (downcase (match-string 0 name))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7140 (if (not (assoc char keys-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7141 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7142 (setq help (format "%c: %s" char
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7143 (replace-match
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7144 (concat "[" (match-string 0 name) "]")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7145 t t name))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7146 keys-alist (cons (list char help name) keys-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7147 (throw 'exit t))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7148 ;; Now check for lowercase letters
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7149 (setq start 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7150 (while (string-match "[a-z]" name start)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7151 (setq start (match-end 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7152 char (string-to-char (match-string 0 name)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7153 (if (not (assoc char keys-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7154 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7155 (setq help (format "%c: %s" char
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7156 (replace-match
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7157 (concat "[" (match-string 0 name) "]")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7158 t t name))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7159 keys-alist (cons (list char help name) keys-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7160 (throw 'exit t))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7161 ;; Bummer, nothing found! Use a stupid number
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7162 (setq char (string-to-char (int-to-string (setq cnt (1+ cnt))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7163 help (format "%c: %s" char name)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7164 keys-alist (cons (list char help name) keys-alist))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7165 (nreverse keys-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7166
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7167 (defun idlwave-set-local (var value &optional buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7168 "Set the buffer-local value of VAR in BUFFER to VALUE."
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
7169 (with-current-buffer (or buffer (current-buffer))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7170 (set (make-local-variable var) value)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7171
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7172 (defun idlwave-local-value (var &optional buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7173 "Return the value of VAR in BUFFER, but only if VAR is local to BUFFER."
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
7174 (with-current-buffer (or buffer (current-buffer))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7175 (and (local-variable-p var (current-buffer))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7176 (symbol-value var))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7177
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7178 ;; In XEmacs, we can use :activate-callback directly to advice the
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7179 ;; choose functions. We use the private keymap only for the online
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7180 ;; help feature.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7181
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7182 (defvar idlwave-completion-map nil
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7183 "Keymap for `completion-list-mode' with `idlwave-complete'.")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7184
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7185 (defun idlwave-display-completion-list-xemacs (list &rest cl-args)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7186 (with-output-to-temp-buffer "*Completions*"
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7187 (apply 'display-completion-list list
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7188 ':activate-callback 'idlwave-default-choose-completion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7189 cl-args))
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
7190 (with-current-buffer "*Completions*"
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7191 (use-local-map
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7192 (or idlwave-completion-map
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7193 (setq idlwave-completion-map
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7194 (idlwave-make-modified-completion-map-xemacs
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7195 (current-local-map)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7196
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7197 (defun idlwave-default-choose-completion (&rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7198 "Execute `default-choose-completion' and then restore the win-conf."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7199 (apply 'idlwave-choose 'default-choose-completion args))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7200
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7201 (defun idlwave-make-modified-completion-map-xemacs (old-map)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7202 "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7203 (let ((new-map (copy-keymap old-map)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7204 (define-key new-map [button3up] 'idlwave-mouse-completion-help)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7205 (define-key new-map [button3] (lambda ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7206 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7207 (setq this-command last-command)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7208 new-map))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7209
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7210 ;; In Emacs we also replace keybindings in the completion
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7211 ;; map in order to install our wrappers.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7212
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7213 (defun idlwave-display-completion-list-emacs (list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7214 "Display completion list and install the choose wrappers."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7215 (with-output-to-temp-buffer "*Completions*"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7216 (display-completion-list list))
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
7217 (with-current-buffer "*Completions*"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7218 (use-local-map
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7219 (or idlwave-completion-map
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7220 (setq idlwave-completion-map
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7221 (idlwave-make-modified-completion-map-emacs
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7222 (current-local-map)))))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7223
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7224 (defun idlwave-make-modified-completion-map-emacs (old-map)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7225 "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7226 (let ((new-map (copy-keymap old-map)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7227 (substitute-key-definition
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7228 'choose-completion 'idlwave-choose-completion new-map)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7229 (substitute-key-definition
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7230 'mouse-choose-completion 'idlwave-mouse-choose-completion new-map)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7231 (define-key new-map [mouse-3] 'idlwave-mouse-completion-help)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7232 new-map))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7233
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7234 (defun idlwave-choose-completion (&rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7235 "Choose the completion that point is in or next to."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7236 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7237 (apply 'idlwave-choose 'choose-completion args))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7238
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7239 (defun idlwave-mouse-choose-completion (&rest args)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7240 "Click on an alternative in the `*Completions*' buffer to choose it."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7241 (interactive "e")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7242 (apply 'idlwave-choose 'mouse-choose-completion args))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7243
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7244 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7245 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7246
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7247 ;;; ------------------------------------------------------------------------
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7248 ;;; Stucture parsing code, and code to manage class info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7249
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7250 ;;
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7251 ;; - Go again over the documentation how to write a completion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7252 ;; plugin. It is in self.el, but currently still very bad.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7253 ;; This could be in a separate file in the distribution, or
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7254 ;; in an appendix for the manual.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7255
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7256 (defvar idlwave-struct-skip
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7257 "[ \t]*\\(\\$.*\n\\(^[ \t]*\\(\\$[ \t]*\\)?\\(;.*\\)?\n\\)*\\)?[ \t]*"
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7258 "Regexp for skipping continued blank or comment-only lines in structures.")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7259
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7260 (defvar idlwave-struct-tag-regexp
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7261 (concat "[{,]" ;leading comma/brace
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7262 idlwave-struct-skip ; 4 groups
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7263 "\\([a-zA-Z][a-zA-Z0-9_]*\\)" ;the tag itself, group 5
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7264 "[ \t]*:") ; the final colon
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7265 "Regexp for structure tags.")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7266
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7267 (defun idlwave-struct-tags ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7268 "Return a list of all tags in the structure defined at point.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7269 Point is expected just before the opening `{' of the struct definition."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7270 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7271 (let* ((borders (idlwave-struct-borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7272 (beg (car borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7273 (end (cdr borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7274 tags)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7275 (goto-char beg)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7276 (save-restriction
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7277 (narrow-to-region beg end)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7278 (while (re-search-forward idlwave-struct-tag-regexp end t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7279 ;; Check if we are still on the top level of the structure.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7280 (if (and (condition-case nil (progn (up-list -1) t) (error nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7281 (= (point) beg))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7282 (push (match-string-no-properties 5) tags))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7283 (goto-char (match-end 0))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7284 (nreverse tags))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7285
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7286 (defun idlwave-find-struct-tag (tag)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7287 "Find a given TAG in the structure defined at point."
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7288 (let* ((borders (idlwave-struct-borders))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7289 (end (cdr borders))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7290 (case-fold-search t))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7291 (re-search-forward (concat "\\(^[ \t]*\\|[,{][ \t]*\\)" tag "[ \t]*:")
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7292 end t)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7293
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7294 (defun idlwave-struct-inherits ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7295 "Return a list of all `inherits' names in the struct at point.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7296 Point is expected just before the opening `{' of the struct definition."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7297 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7298 (let* ((borders (idlwave-struct-borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7299 (beg (car borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7300 (end (cdr borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7301 (case-fold-search t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7302 names)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7303 (goto-char beg)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7304 (save-restriction
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7305 (narrow-to-region beg end)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7306 (while (re-search-forward
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7307 (concat "[{,]" ;leading comma/brace
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7308 idlwave-struct-skip ; 4 groups
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7309 "inherits" ; The INHERITS tag
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7310 idlwave-struct-skip ; 4 more
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7311 "\\([a-zA-Z][a-zA-Z0-9_]*\\)") ; The super-group, #9
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7312 end t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7313 ;; Check if we are still on the top level of the structure.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7314 (if (and (condition-case nil (progn (up-list -1) t) (error nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7315 (= (point) beg))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7316 (push (match-string-no-properties 9) names))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7317 (goto-char (match-end 0))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7318 (nreverse names))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7319
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7320 (defun idlwave-in-structure ()
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7321 "Return t if point is inside an IDL structure definition."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7322 (let ((beg (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7323 (save-excursion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7324 (if (not (or (idlwave-in-comment) (idlwave-in-quote)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7325 (if (idlwave-find-structure-definition nil nil 'back)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7326 (let ((borders (idlwave-struct-borders)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7327 (or (= (car borders) (cdr borders)) ;; struct not yet closed...
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7328 (and (> beg (car borders)) (< beg (cdr borders))))))))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7329
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7330 (defun idlwave-struct-borders ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7331 "Return the borders of the {...} after point as a cons cell."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7332 (let (beg)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7333 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7334 (skip-chars-forward "^{")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7335 (setq beg (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7336 (condition-case nil (forward-list 1)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7337 (error (goto-char beg)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7338 (cons beg (point)))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7339
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7340 (defun idlwave-find-structure-definition (&optional var name bound)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7341 "Search forward for a structure definition.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7342 If VAR is non-nil, search for a structure assigned to variable VAR.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7343 If NAME is non-nil, search for a named structure NAME, if a string,
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7344 or a generic named structure otherwise. If BOUND is an integer, limit
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7345 the search. If BOUND is the symbol `all', we search first back and
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7346 then forward through the entire file. If BOUND is the symbol `back'
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7347 we search only backward."
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7348 (let* ((ws "[ \t]*\\(\\$.*\n[ \t]*\\)*")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7349 (case-fold-search t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7350 (lim (if (integerp bound) bound nil))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7351 (re (concat
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7352 (if var
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7353 (concat "\\<" (regexp-quote (downcase var)) "\\>" ws)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7354 "\\(\\)")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7355 "=" ws "\\({\\)"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7356 (if name
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7357 (if (stringp name)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7358 (concat ws "\\(\\<" (downcase name) "\\)[^a-zA-Z0-9_$]")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7359 ;; Just a generic name
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7360 (concat ws "\\<\\([a-zA-Z_0-9$]+\\)" ws ","))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7361 ""))))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7362 (if (or (and (or (eq bound 'all) (eq bound 'back))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7363 (re-search-backward re nil t))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7364 (and (not (eq bound 'back)) (re-search-forward re lim t)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7365 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7366 (goto-char (match-beginning 3))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7367 (match-string-no-properties 5)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7368
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7369 (defvar idlwave-class-info nil)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7370 (defvar idlwave-class-reset nil) ; to reset buffer-local classes
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7371
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7372 (add-hook 'idlwave-update-rinfo-hook
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7373 (lambda () (setq idlwave-class-reset t)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7374 (add-hook 'idlwave-after-load-rinfo-hook
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7375 (lambda () (setq idlwave-class-info nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7376
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7377 (defun idlwave-class-info (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7378 (let (list entry)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7379 (if idlwave-class-info
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7380 (if idlwave-class-reset
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7381 (setq
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7382 idlwave-class-reset nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7383 idlwave-class-info ; Remove any visited in a buffer
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7384 (delq nil (mapcar
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7385 (lambda (x)
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7386 (let ((filebuf
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7387 (idlwave-class-file-or-buffer
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7388 (or (cdr (assq 'found-in x)) (car x)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7389 (if (cdr filebuf)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7390 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7391 x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7392 idlwave-class-info))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7393 ;; Info is nil, put in the system stuff to start.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7394 (setq idlwave-class-info idlwave-system-class-info)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7395 (setq list idlwave-class-info)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7396 (while (setq entry (pop list))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7397 (idlwave-sintern-class-info entry)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7398 (setq class (idlwave-sintern-class class))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7399 (or (assq class idlwave-class-info)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7400 (progn (idlwave-scan-class-info class)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7401 (assq class idlwave-class-info)))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7402
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7403 (defun idlwave-sintern-class-info (entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7404 "Sintern the class names in a class-info entry."
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
7405 (let ((inherits (assq 'inherits entry)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7406 (setcar entry (idlwave-sintern-class (car entry) 'set))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7407 (if inherits
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7408 (setcdr inherits (mapcar (lambda (x) (idlwave-sintern-class x 'set))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7409 (cdr inherits))))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7410
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7411 (defun idlwave-find-class-definition (class &optional all-hook alt-class)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7412 "Find class structure definition(s).
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7413 If ALL-HOOK is set, find all named structure definitions in a given
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7414 class__define routine, on which ALL-HOOK will be run. If ALT-CLASS is
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7415 set, look for the name__define pro, and inside of it, for the ALT-CLASS
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7416 class/struct definition."
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
7417 (let ((case-fold-search t) end-lim name)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7418 (when (re-search-forward
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7419 (concat "^[ \t]*pro[ \t]+" (downcase class) "__define" "\\>") nil t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7420 (if all-hook
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7421 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7422 ;; For everything there
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7423 (setq end-lim (save-excursion (idlwave-end-of-subprogram) (point)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7424 (while (setq name
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7425 (idlwave-find-structure-definition nil t end-lim))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7426 (funcall all-hook name)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7427 (idlwave-find-structure-definition nil (or alt-class class))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7428
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7429
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7430 (defun idlwave-class-file-or-buffer (class)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7431 "Find buffer visiting CLASS definition."
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7432 (let* ((pro (concat (downcase class) "__define"))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7433 (file (idlwave-routine-source-file
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7434 (nth 3 (idlwave-rinfo-assoc pro 'pro nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7435 (idlwave-routines))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7436 (cons file (if file (idlwave-get-buffer-visiting file)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7437
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7438
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7439 (defun idlwave-scan-class-info (class)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7440 "Scan all class and named structure info in the class__define pro."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7441 (let* ((idlwave-auto-routine-info-updates nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7442 (filebuf (idlwave-class-file-or-buffer class))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7443 (file (car filebuf))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7444 (buf (cdr filebuf))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7445 (class (idlwave-sintern-class class)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7446 (if (or
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7447 (not file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7448 (and ;; neither a regular file nor a visited buffer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7449 (not buf)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7450 (not (file-regular-p file))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7451 nil ; Cannot find the file/buffer to get any info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7452 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7453 (if buf (set-buffer buf)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7454 ;; Read the file in temporarily
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7455 (set-buffer (get-buffer-create " *IDLWAVE-tmp*"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7456 (erase-buffer)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7457 (unless (eq major-mode 'idlwave-mode)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7458 (idlwave-mode))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7459 (insert-file-contents file))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7460 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7461 (goto-char 1)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7462 (idlwave-find-class-definition class
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7463 ;; Scan all of the structures found there
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7464 (lambda (name)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7465 (let* ((this-class (idlwave-sintern-class name))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7466 (entry
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7467 (list this-class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7468 (cons 'tags (idlwave-struct-tags))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7469 (cons 'inherits (idlwave-struct-inherits)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7470 (if (not (eq this-class class))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7471 (setq entry (nconc entry (list (cons 'found-in class)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7472 (idlwave-sintern-class-info entry)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7473 (push entry idlwave-class-info)))))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7474
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7475 (defun idlwave-class-found-in (class)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7476 "Return the FOUND-IN property of the CLASS."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7477 (cdr (assq 'found-in (idlwave-class-info class))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7478 (defun idlwave-class-tags (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7479 "Return the native tags in CLASS."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7480 (cdr (assq 'tags (idlwave-class-info class))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7481 (defun idlwave-class-inherits (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7482 "Return the direct superclasses of CLASS."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7483 (cdr (assq 'inherits (idlwave-class-info class))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7484
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7485
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7486 (defun idlwave-all-class-tags (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7487 "Return a list of native and inherited tags in CLASS."
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7488 (condition-case err
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7489 (apply 'append (mapcar 'idlwave-class-tags
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7490 (cons class (idlwave-all-class-inherits class))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7491 (error
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7492 (idlwave-class-tag-reset)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7493 (error "%s" (error-message-string err)))))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7494
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7495
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7496 (defun idlwave-all-class-inherits (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7497 "Return a list of all superclasses of CLASS (recursively expanded).
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7498 The list is cached in `idlwave-class-info' for faster access."
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7499 (cond
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7500 ((not idlwave-support-inheritance) nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7501 ((eq class nil) nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7502 ((eq class t) nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7503 (t
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7504 (let ((info (idlwave-class-info class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7505 entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7506 (if (setq entry (assq 'all-inherits info))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7507 (cdr entry)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7508 ;; Save the depth of inheritance scan to check for circular references
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7509 (let ((inherits (mapcar (lambda (x) (cons x 0))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7510 (idlwave-class-inherits class)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7511 rtn all-inherits cl)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7512 (while inherits
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7513 (setq cl (pop inherits)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7514 rtn (cons (car cl) rtn)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7515 inherits (append (mapcar (lambda (x)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7516 (cons x (1+ (cdr cl))))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7517 (idlwave-class-inherits (car cl)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7518 inherits))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7519 (if (> (cdr cl) 999)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7520 (error
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7521 "Class scan: inheritance depth exceeded. Circular inheritance?")
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7522 ))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7523 (setq all-inherits (nreverse rtn))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7524 (nconc info (list (cons 'all-inherits all-inherits)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7525 all-inherits))))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7526
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7527 (defun idlwave-entry-keywords (entry &optional record-link)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7528 "Return the flat entry keywords alist from routine-info entry.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7529 If RECORD-LINK is non-nil, the keyword text is copied and a text
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7530 property indicating the link is added."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7531 (let (kwds)
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
7532 (mapc
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7533 (lambda (key-list)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7534 (let ((file (car key-list)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7535 (mapcar (lambda (key-cons)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7536 (let ((key (car key-cons))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7537 (link (cdr key-cons)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7538 (when (and record-link file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7539 (setq key (copy-sequence key))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7540 (put-text-property
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7541 0 (length key)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7542 'link
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7543 (concat
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7544 file
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7545 (if link
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7546 (concat idlwave-html-link-sep
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7547 (number-to-string link))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7548 key))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7549 (push (list key) kwds)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7550 (cdr key-list))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7551 (nthcdr 5 entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7552 (nreverse kwds)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7553
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7554 (defun idlwave-entry-find-keyword (entry keyword)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7555 "Find keyword KEYWORD in entry ENTRY, and return (with link) if set."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7556 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7557 (mapc
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7558 (lambda (key-list)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7559 (let ((file (car key-list))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7560 (kwd (assoc keyword (cdr key-list))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7561 (when kwd
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7562 (setq kwd (cons (car kwd)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7563 (if (and file (cdr kwd))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7564 (concat file
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7565 idlwave-html-link-sep
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7566 (number-to-string (cdr kwd)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7567 (cdr kwd))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7568 (throw 'exit kwd))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7569 (nthcdr 5 entry))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7570
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7571 ;;==========================================================================
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7572 ;;
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7573 ;; Completing class structure tags. This is a completion plugin.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7574 ;; The necessary taglist is constructed dynamically
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7575
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7576 (defvar idlwave-current-tags-class nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7577 (defvar idlwave-current-class-tags nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7578 (defvar idlwave-current-native-class-tags nil)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7579 (defvar idlwave-sint-class-tags nil)
86871
7eb454a5ec06 (idlwave-sintern-class-tag)
Glenn Morris <rgm@gnu.org>
parents: 86503
diff changeset
7580 (declare-function idlwave-sintern-class-tag "idlwave" t t)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7581 (idlwave-new-sintern-type 'class-tag)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7582 (add-to-list 'idlwave-complete-special 'idlwave-complete-class-structure-tag)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7583 (add-hook 'idlwave-update-rinfo-hook 'idlwave-class-tag-reset)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7584
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7585 (defun idlwave-complete-class-structure-tag ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7586 "Complete a structure tag on a `self' argument in an object method."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7587 (interactive)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7588 (let ((pos (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7589 (case-fold-search t))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7590 (if (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7591 ;; Check if the context is right
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7592 (skip-chars-backward "a-zA-Z0-9._$")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7593 (and (< (point) (- pos 4))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7594 (looking-at "self\\.")))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7595 (let* ((class-selector (nth 2 (idlwave-current-routine)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7596 (super-classes (idlwave-all-class-inherits class-selector)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7597 ;; Check if we are in a class routine
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7598 (unless class-selector
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
7599 (error "Not in a method procedure or function"))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7600 ;; Check if we need to update the "current" class
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7601 (if (not (equal class-selector idlwave-current-tags-class))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7602 (idlwave-prepare-class-tag-completion class-selector))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7603 (setq idlwave-completion-help-info
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7604 (list 'idlwave-complete-class-structure-tag-help
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7605 (idlwave-sintern-routine
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7606 (concat class-selector "__define"))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7607 nil))
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
7608 ;; FIXME: idlwave-cpl-bold doesn't seem used anywhere.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7609 (let ((idlwave-cpl-bold idlwave-current-native-class-tags))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7610 (idlwave-complete-in-buffer
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7611 'class-tag 'class-tag
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7612 idlwave-current-class-tags nil
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7613 (format "Select a tag of class %s" class-selector)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7614 "class tag"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7615 'idlwave-attach-class-tag-classes))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7616 t) ; return t to skip other completions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7617 nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7618
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7619 (defun idlwave-class-tag-reset ()
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7620 (setq idlwave-current-tags-class nil))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7621
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7622 (defun idlwave-prepare-class-tag-completion (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7623 "Find and parse the necessary class definitions for class structure tags."
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7624 (setq idlwave-sint-class-tags nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7625 (setq idlwave-current-tags-class class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7626 (setq idlwave-current-class-tags
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7627 (mapcar (lambda (x)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7628 (list (idlwave-sintern-class-tag x 'set)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7629 (idlwave-all-class-tags class)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7630 (setq idlwave-current-native-class-tags
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7631 (mapcar 'downcase (idlwave-class-tags class))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7632
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7633 ;===========================================================================
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7634 ;;
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7635 ;; Completing system variables and their structure fields
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7636 ;; This is also a plugin.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7637
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7638 (defvar idlwave-sint-sysvars nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7639 (defvar idlwave-sint-sysvartags nil)
86871
7eb454a5ec06 (idlwave-sintern-class-tag)
Glenn Morris <rgm@gnu.org>
parents: 86503
diff changeset
7640 (declare-function idlwave-sintern-sysvar "idlwave" t t)
7eb454a5ec06 (idlwave-sintern-class-tag)
Glenn Morris <rgm@gnu.org>
parents: 86503
diff changeset
7641 (declare-function idlwave-sintern-sysvartag "idlwave" t t)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7642 (idlwave-new-sintern-type 'sysvar)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7643 (idlwave-new-sintern-type 'sysvartag)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7644 (add-to-list 'idlwave-complete-special 'idlwave-complete-sysvar-or-tag)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7645 (add-hook 'idlwave-update-rinfo-hook 'idlwave-sysvars-reset)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7646 (add-hook 'idlwave-after-load-rinfo-hook 'idlwave-sintern-sysvar-alist)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7647
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7648
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7649 (defun idlwave-complete-sysvar-or-tag ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7650 "Complete a system variable."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7651 (interactive)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7652 (let ((pos (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7653 (case-fold-search t))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7654 (cond ((save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7655 ;; Check if the context is right for system variable
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7656 (skip-chars-backward "[a-zA-Z0-9_$]")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7657 (equal (char-before) ?!))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7658 (setq idlwave-completion-help-info '(idlwave-complete-sysvar-help))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7659 (idlwave-complete-in-buffer 'sysvar 'sysvar
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7660 idlwave-system-variables-alist nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7661 "Select a system variable"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7662 "system variable")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7663 t) ; return t to skip other completions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7664 ((save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7665 ;; Check if the context is right for sysvar tag
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7666 (skip-chars-backward "a-zA-Z0-9_$.")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7667 (and (equal (char-before) ?!)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7668 (looking-at "\\([a-zA-Z][a-zA-Z0-9_$]*\\)\\.")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7669 (<= (match-end 0) pos)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7670 ;; Complete a system variable tag
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7671 (let* ((var (idlwave-sintern-sysvar (match-string 1)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7672 (entry (assq var idlwave-system-variables-alist))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7673 (tags (cdr (assq 'tags entry))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7674 (or entry (error "!%s is not a known system variable" var))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7675 (or tags (error "System variable !%s is not a structure" var))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7676 (setq idlwave-completion-help-info
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7677 (list 'idlwave-complete-sysvar-tag-help var))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7678 (idlwave-complete-in-buffer 'sysvartag 'sysvartag
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7679 tags nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7680 "Select a system variable tag"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7681 "system variable tag")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7682 t)) ; return t to skip other completions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7683 (t nil))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7684
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
7685 (defvar link) ;dynamic variables set by help callback
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
7686 (defvar props)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7687 (defun idlwave-complete-sysvar-help (mode word)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7688 (let ((word (or (nth 1 idlwave-completion-help-info) word))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7689 (entry (assoc word idlwave-system-variables-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7690 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7691 ((eq mode 'test)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7692 (and (stringp word) entry (nth 1 (assq 'link entry))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7693 ((eq mode 'set)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7694 (if entry (setq link (nth 1 (assq 'link entry))))) ;; setting dynamic!!!
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7695 (t (error "This should not happen")))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7696
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7697 (defun idlwave-complete-sysvar-tag-help (mode word)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7698 (let* ((var (nth 1 idlwave-completion-help-info))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7699 (entry (assoc var idlwave-system-variables-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7700 (tags (cdr (assq 'tags entry)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7701 (main (nth 1 (assq 'link entry)))
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
7702 target)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7703 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7704 ((eq mode 'test) ; we can at least link the main
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7705 (and (stringp word) entry main))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7706 ((eq mode 'set)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7707 (if entry
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7708 (setq link
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
7709 (if (setq target (cdr (assoc-string word tags t)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7710 (idlwave-substitute-link-target main target)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7711 main)))) ;; setting dynamic!!!
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7712 (t (error "This should not happen")))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7713
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
7714 (defun idlwave-split-link-target (link)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7715 "Split a given LINK into link file and anchor."
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
7716 (if (string-match idlwave-html-link-sep link)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
7717 (cons (substring link 0 (match-beginning 0))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
7718 (string-to-number (substring link (match-end 0))))))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
7719
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7720 (defun idlwave-substitute-link-target (link target)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7721 "Substitute the TARGET anchor for the given LINK."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7722 (let (main-base)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7723 (setq main-base (if (string-match "#" link)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7724 (substring link 0 (match-beginning 0))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7725 link))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7726 (if target
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7727 (concat main-base idlwave-html-link-sep (number-to-string target))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7728 link)))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7729
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7730 ;; Fake help in the source buffer for class structure tags.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7731 ;; KWD AND NAME ARE GLOBAL-VARIABLES HERE.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7732 (defvar name)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7733 (defvar kwd)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7734 (defvar idlwave-help-do-class-struct-tag nil)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7735 (defun idlwave-complete-class-structure-tag-help (mode word)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7736 (cond
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7737 ((eq mode 'test) ; nothing gets fontified for class tags
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7738 nil)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7739 ((eq mode 'set)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7740 (let (class-with found-in)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7741 (when (setq class-with
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7742 (idlwave-class-or-superclass-with-tag
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7743 idlwave-current-tags-class
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7744 word))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7745 (if (assq (idlwave-sintern-class class-with)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7746 idlwave-system-class-info)
63427
6cec4d429edd idlwave-complete-class-structure-tag-help): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 62772
diff changeset
7747 (error "No help available for system class tags"))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7748 (if (setq found-in (idlwave-class-found-in class-with))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7749 (setq name (cons (concat found-in "__define") class-with))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7750 (setq name (concat class-with "__define")))))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7751 (setq kwd word
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7752 idlwave-help-do-class-struct-tag t))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7753 (t (error "This should not happen"))))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7754
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7755 (defun idlwave-class-or-superclass-with-tag (class tag)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7756 "Find and return the CLASS or one of its superclass with the
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7757 associated TAG, if any."
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
7758 (let ((sclasses (cons class (idlwave-all-class-inherits class)))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7759 cl)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7760 (catch 'exit
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7761 (while sclasses
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7762 (setq cl (pop sclasses))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7763 (let ((tags (idlwave-class-tags cl)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7764 (while tags
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7765 (if (eq t (compare-strings tag 0 nil (car tags) 0 nil t))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7766 (throw 'exit cl))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7767 (setq tags (cdr tags))))))))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7768
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7769
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7770 (defun idlwave-sysvars-reset ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7771 (if (and (fboundp 'idlwave-shell-is-running)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7772 (idlwave-shell-is-running)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7773 idlwave-idlwave_routine_info-compiled)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7774 (idlwave-shell-send-command "idlwave_get_sysvars"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7775 'idlwave-process-sysvars 'hide)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7776
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7777 (defun idlwave-process-sysvars ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7778 (idlwave-shell-filter-sysvars)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7779 (setq idlwave-sint-sysvars nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7780 idlwave-sint-sysvartags nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7781 (idlwave-sintern-sysvar-alist))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7782
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7783 (defun idlwave-sintern-sysvar-alist ()
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7784 (let ((list idlwave-system-variables-alist) entry tags)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7785 (while (setq entry (pop list))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7786 (setcar entry (idlwave-sintern-sysvar (car entry) 'set))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7787 (setq tags (assq 'tags entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7788 (if tags
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7789 (setcdr tags
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7790 (mapcar (lambda (x)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7791 (cons (idlwave-sintern-sysvartag (car x) 'set)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7792 (cdr x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7793 (cdr tags)))))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7794
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7795 (defvar idlwave-shell-command-output)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7796 (defun idlwave-shell-filter-sysvars ()
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7797 "Get any new system variables and tags."
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7798 (let ((text idlwave-shell-command-output)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7799 (start 0)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7800 (old idlwave-system-variables-alist)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7801 var tags type name class link old-entry)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7802 (setq idlwave-system-variables-alist nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7803 (while (string-match "^IDLWAVE-SYSVAR: !\\([a-zA-Z0-9_$]+\\)\\( \\(.*\\)\\)?"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7804 text start)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7805 (setq start (match-end 0)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7806 var (match-string 1 text)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7807 tags (if (match-end 3)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7808 (idlwave-split-string (match-string 3 text))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7809 ;; Maintain old links, if present
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7810 (setq old-entry (assq (idlwave-sintern-sysvar var) old))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7811 (setq link (assq 'link old-entry))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7812 (setq idlwave-system-variables-alist
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7813 (cons (list var
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7814 (cons
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7815 'tags
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7816 (mapcar (lambda (x)
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7817 (cons x
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7818 (cdr (assq
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7819 (idlwave-sintern-sysvartag x)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7820 (cdr (assq 'tags old-entry))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7821 tags)) link)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7822 idlwave-system-variables-alist)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7823 ;; Keep the old value if query was not successful
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7824 (setq idlwave-system-variables-alist
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7825 (or idlwave-system-variables-alist old))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7826
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7827 (defun idlwave-completion-fontify-classes ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7828 "Goto the *Completions* buffer and fontify the class info."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7829 (when (featurep 'font-lock)
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
7830 (with-current-buffer "*Completions*"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7831 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7832 (goto-char (point-min))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7833 (let ((buffer-read-only nil))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7834 (while (re-search-forward "\\.*<[^>]+>" nil t)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7835 (put-text-property (match-beginning 0) (match-end 0)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7836 'face 'font-lock-string-face)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7837
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7838 (defun idlwave-uniquify (list)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7839 (let ((ht (make-hash-table :size (length list) :test 'equal)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7840 (delq nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7841 (mapcar (lambda (x)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7842 (unless (gethash x ht)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7843 (puthash x t ht)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7844 x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7845 list))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7846
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7847 (defun idlwave-after-successful-completion (type slash &optional verify)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7848 "Add `=' or `(' after successful completion of keyword and function.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7849 Restore the pre-completion window configuration if possible."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7850 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7851 ((eq type 'procedure)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7852 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7853 ((eq type 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7854 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7855 ((equal idlwave-function-completion-adds-paren nil) nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7856 ((or (equal idlwave-function-completion-adds-paren t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7857 (equal idlwave-function-completion-adds-paren 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7858 (insert "("))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7859 ((equal idlwave-function-completion-adds-paren 2)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7860 (insert "()")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7861 (backward-char 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7862 (t nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7863 ((eq type 'keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7864 (if (and idlwave-keyword-completion-adds-equal
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7865 (not slash))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7866 (progn (insert "=") t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7867 nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7868
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7869 ;; Restore the pre-completion window configuration if this is safe.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7870
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7871 (if (or (eq verify 'force) ; force
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7872 (and
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7873 (get-buffer-window "*Completions*") ; visible
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7874 (idlwave-local-value 'idlwave-completion-p
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7875 "*Completions*") ; cib-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7876 (eq (marker-buffer idlwave-completion-mark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7877 (current-buffer)) ; buffer OK
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7878 (equal (marker-position idlwave-completion-mark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7879 verify))) ; pos OK
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7880 (idlwave-restore-wconf-after-completion))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7881 (move-marker idlwave-completion-mark nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7882 (setq idlwave-before-completion-wconf nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7883
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7884 (defun idlwave-mouse-context-help (ev &optional arg)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7885 "Call `idlwave-context-help' on the clicked location."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7886 (interactive "eP")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7887 (mouse-set-point ev)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7888 (idlwave-context-help arg))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7889
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7890 (defvar idlwave-last-context-help-pos nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7891 (defun idlwave-context-help (&optional arg)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7892 "Display IDL Online Help on context.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7893 If point is on a keyword, help for that keyword will be shown. If
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7894 point is on a routine name or in the argument list of a routine, help
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7895 for that routine will be displayed. Works for system routines and
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7896 keywords, it pulls up text help. For other routies and keywords,
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7897 visits the source file, finding help in the header (if
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7898 `idlwave-help-source-try-header' is non-nil) or the routine definition
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7899 itself."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7900 (interactive "P")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7901 (idlwave-do-context-help arg))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7902
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7903 (defun idlwave-mouse-completion-help (ev)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7904 "Display online help about the completion at point."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7905 (interactive "eP")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7906 ;; Restore last-command for next command, to make
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7907 ;; scrolling/cancelling of completions work.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7908 (setq this-command last-command)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7909 (idlwave-do-mouse-completion-help ev))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7910
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7911 (defun idlwave-routine-info (&optional arg external)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7912 "Display a routines calling sequence and list of keywords.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7913 When point is on the name a function or procedure, or in the argument
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7914 list of a function or procedure, this command displays a help buffer with
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7915 the information. When called with prefix arg, enforce class query.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7916
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7917 When point is on an object operator `->', display the class stored in
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7918 this arrow, if any (see `idlwave-store-inquired-class'). With a prefix
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
7919 arg, the class property is cleared out."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7920
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7921 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7922 (idlwave-routines)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7923 (if (string-match "->" (buffer-substring
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7924 (max (point-min) (1- (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7925 (min (+ 2 (point)) (point-max))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7926 ;; Cursor is on an arrow
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7927 (if (get-text-property (point) 'idlwave-class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7928 ;; arrow has class property
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7929 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7930 ;; Remove property
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7931 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7932 (backward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7933 (when (looking-at ".?\\(->\\)")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7934 (remove-text-properties (match-beginning 1) (match-end 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7935 '(idlwave-class nil face nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7936 (message "Class property removed from arrow")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7937 ;; Echo class property
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7938 (message "Arrow has text property identifying object to be class %s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7939 (get-text-property (point) 'idlwave-class)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7940 ;; No property found
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7941 (message "Arrow has no class text property"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7942
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7943 ;; Not on an arrow...
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7944 (let* ((idlwave-query-class nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7945 (idlwave-force-class-query (equal arg '(4)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7946 (module (idlwave-what-module)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7947 (if (car module)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7948 (apply 'idlwave-display-calling-sequence
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7949 (idlwave-fix-module-if-obj_new module))
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
7950 (error "Don't know which calling sequence to show")))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7951
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7952 (defun idlwave-resolve (&optional arg)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7953 "Call RESOLVE_ROUTINE on the module name at point.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7954 Like `idlwave-routine-info', this looks for a routine call at point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7955 After confirmation in the minibuffer, it will use the shell to issue
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7956 a RESOLVE call for this routine, to attempt to make it defined and its
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7957 routine info available for IDLWAVE. If the routine is a method call,
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7958 both `class__method' and `class__define' will be tried.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7959 With ARG, enforce query for the class of object methods."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7960 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7961 (let* ((idlwave-query-class nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7962 (idlwave-force-class-query (equal arg '(4)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7963 (module (idlwave-what-module))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7964 (name (idlwave-make-full-name (nth 2 module) (car module)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7965 (type (if (eq (nth 1 module) 'pro) "pro" "function"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7966 (resolve (read-string "Resolve: " (format "%s %s" type name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7967 (kwd "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7968 class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7969 (if (string-match "\\(pro\\|function\\)[ \t]+\\(\\(.*\\)::\\)?\\(.*\\)"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7970 resolve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7971 (setq type (match-string 1 resolve)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7972 class (if (match-beginning 2)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7973 (match-string 3 resolve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7974 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7975 name (match-string 4 resolve)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7976 (if (string= (downcase type) "function")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7977 (setq kwd ",/is_function"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7978
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7979 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7980 ((null class)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7981 (idlwave-shell-send-command
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7982 (format "resolve_routine,'%s'%s" (downcase name) kwd)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7983 'idlwave-update-routine-info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7984 nil t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7985 (t
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7986 (idlwave-shell-send-command
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7987 (format "resolve_routine,'%s__define'%s" (downcase class) kwd)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7988 (list 'idlwave-shell-send-command
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
7989 (format "resolve_routine,'%s__%s'%s"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7990 (downcase class) (downcase name) kwd)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7991 '(idlwave-update-routine-info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7992 nil t))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7993
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7994 (defun idlwave-find-module-this-file ()
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7995 (interactive)
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7996 (idlwave-find-module '(4)))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7997
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7998 (defun idlwave-find-module (&optional arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7999 "Find the source code of an IDL module.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8000 Works for modules for which IDLWAVE has routine info available.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8001 The function offers as default the module name `idlwave-routine-info'
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8002 would use. With ARG limit to this buffer. With two prefix ARG's
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8003 force class query for object methods."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8004 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8005 (let* ((idlwave-query-class nil)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8006 (idlwave-force-class-query (equal arg '(16)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8007 (this-buffer (equal arg '(4)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8008 (module (idlwave-fix-module-if-obj_new (idlwave-what-module)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8009 (default (if module
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8010 (concat (idlwave-make-full-name
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8011 (nth 2 module) (car module))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8012 (if (eq (nth 1 module) 'pro) "<p>" "<f>"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8013 "none"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8014 (list
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8015 (idlwave-uniquify
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8016 (delq nil
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8017 (mapcar (lambda (x)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8018 (if (eq 'system (car-safe (nth 3 x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8019 ;; Take out system routines with no source.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8020 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8021 (list
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8022 (concat (idlwave-make-full-name
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8023 (nth 2 x) (car x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8024 (if (eq (nth 1 x) 'pro) "<p>" "<f>")))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8025 (if this-buffer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8026 (idlwave-save-buffer-update)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8027 (idlwave-routines))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8028 (name (idlwave-completing-read
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8029 (if (or (not this-buffer)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8030 (assoc default list))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8031 (format "Module (Default %s): " default)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8032 (format "Module in this file: "))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8033 list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8034 type class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8035 (if (string-match "\\`\\s-*\\'" name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8036 ;; Nothing, use the default.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8037 (setq name default))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8038 (if (string-match "<[fp]>" name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8039 (setq type (substring name -2 -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8040 name (substring name 0 -3)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8041 (if (string-match "\\(.*\\)::\\(.*\\)" name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8042 (setq class (match-string 1 name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8043 name (match-string 2 name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8044 (setq name (idlwave-sintern-routine-or-method name class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8045 class (idlwave-sintern-class class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8046 type (cond ((equal type "f") 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8047 ((equal type "p") 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8048 (t t)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8049 (idlwave-do-find-module name type class nil this-buffer)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8050
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8051 (defun idlwave-do-find-module (name type class
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8052 &optional force-source this-buffer)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8053 (let ((name1 (idlwave-make-full-name class name))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8054 source buf1 entry
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8055 (buf (current-buffer))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8056 (pos (point))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8057 file name2)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8058 (setq entry (idlwave-best-rinfo-assq name type class (idlwave-routines)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8059 'WITH-FILE)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8060 source (or force-source (nth 3 entry))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8061 name2 (if (nth 2 entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8062 (idlwave-make-full-name (nth 2 entry) name)
47930
43574ede3ab1 (idlwave-region-active-p): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47479
diff changeset
8063 name1))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8064 (if source
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8065 (setq file (idlwave-routine-source-file source)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8066 (unless file ; Try to find it on the path.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8067 (setq file
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8068 (idlwave-expand-lib-file-name
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8069 (if class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8070 (format "%s__define.pro" (downcase class))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8071 (format "%s.pro" (downcase name))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8072 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8073 ((or (null name) (equal name ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8074 (error "Abort"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8075 ((eq (car source) 'system)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8076 (error "Source code for system routine %s is not available"
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8077 name2))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8078 ((or (not file) (not (file-regular-p file)))
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
8079 (error "Source code for routine %s is not available"
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8080 name2))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8081 (t
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8082 (when (not this-buffer)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8083 (setq buf1
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8084 (idlwave-find-file-noselect file 'find))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8085 (pop-to-buffer buf1 t))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8086 (goto-char (point-max))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8087 (let ((case-fold-search t))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8088 (if (re-search-backward
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8089 (concat "^[ \t]*\\<"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8090 (cond ((eq type 'fun) "function")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8091 ((eq type 'pro) "pro")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8092 (t "\\(pro\\|function\\)"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8093 "\\>[ \t]+"
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8094 (regexp-quote (downcase name2))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8095 "[^a-zA-Z0-9_$]")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8096 nil t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8097 (goto-char (match-beginning 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8098 (pop-to-buffer buf)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8099 (goto-char pos)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8100 (error "Could not find routine %s" name2)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8101
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8102 (defun idlwave-what-module ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8103 "Return a default module for stuff near point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8104 Used by `idlwave-routine-info' and `idlwave-find-module'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8105 (idlwave-routines)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8106 (if (let ((case-fold-search t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8107 (save-excursion
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8108 (idlwave-beginning-of-statement)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8109 (looking-at "[ \t]*\\(pro\\|function\\)[ \t]+\\(\\([a-zA-Z0-9_$]+\\)::\\)?\\([a-zA-Z0-9$_]+\\)\\([, \t\n]\\|$\\)")))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8110 ;; This is a function or procedure definition statement
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8111 ;; We return the defined routine as module.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8112 (list
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8113 (idlwave-sintern-routine-or-method (match-string-no-properties 4)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8114 (match-string-no-properties 2))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8115 (if (equal (downcase (match-string 1)) "pro") 'pro 'fun)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8116 (idlwave-sintern-class (match-string 3)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8117
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8118 ;; Not a definition statement - analyze precise position.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8119 (let* ((where (idlwave-where))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8120 (cw (nth 2 where))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8121 (pro (car (nth 0 where)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8122 (func (car (nth 1 where)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8123 (this-word (idlwave-this-word "a-zA-Z0-9$_"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8124 (next-char (save-excursion (skip-chars-forward "a-zA-Z0-9$_")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8125 (following-char)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8126 )
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8127 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8128 ((and (eq cw 'procedure)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8129 (not (equal this-word "")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8130 (setq this-word (idlwave-sintern-routine-or-method
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8131 this-word (nth 2 (nth 3 where))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8132 (list this-word 'pro
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8133 (idlwave-determine-class
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8134 (cons this-word (cdr (nth 3 where)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8135 'pro)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8136 ((and (eq cw 'function)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8137 (not (equal this-word ""))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8138 (or (eq next-char ?\() ; exclude arrays, vars.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8139 (looking-at "[a-zA-Z0-9_]*[ \t]*(")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8140 (setq this-word (idlwave-sintern-routine-or-method
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8141 this-word (nth 2 (nth 3 where))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8142 (list this-word 'fun
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8143 (idlwave-determine-class
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8144 (cons this-word (cdr (nth 3 where)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8145 'fun)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8146 ((and (memq cw '(function-keyword procedure-keyword))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8147 (not (equal this-word ""))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8148 (eq next-char ?\()) ; A function!
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8149 (setq this-word (idlwave-sintern-routine this-word))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8150 (list this-word 'fun nil))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8151 (func
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8152 (list func 'fun (idlwave-determine-class (nth 1 where) 'fun)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8153 (pro
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8154 (list pro 'pro (idlwave-determine-class (nth 0 where) 'pro)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8155 (t nil)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8156
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8157 (defun idlwave-what-module-find-class ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8158 "Call `idlwave-what-module' and find the inherited class if necessary."
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8159 (let* ((module (idlwave-what-module))
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
8160 (class (nth 2 module)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8161 (if (and (= (length module) 3)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8162 (stringp class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8163 (list (car module)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8164 (nth 1 module)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8165 (apply 'idlwave-find-inherited-class module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8166 module)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8167
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8168 (defun idlwave-find-inherited-class (name type class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8169 "Find the class which defines TYPE NAME and is CLASS or inherited by CLASS."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8170 (let ((entry (idlwave-best-rinfo-assoc name type class (idlwave-routines))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8171 (if entry
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8172 (nth 2 entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8173 class)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8174
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8175 (defun idlwave-fix-module-if-obj_new (module)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8176 "Check if MODULE points to obj_new.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8177 If yes, and if the cursor is in the keyword region, change to the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8178 appropriate Init method."
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8179 (let* ((name (car module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8180 (pos (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8181 (case-fold-search t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8182 string)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8183 (if (and (stringp name)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8184 (equal (downcase name) "obj_new")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8185 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8186 (idlwave-beginning-of-statement)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8187 (setq string (buffer-substring (point) pos))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8188 (string-match "obj_new([^'\"]*['\"]\\([a-zA-Z0-9_]+\\)"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8189 string)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8190 (let ((name "Init")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8191 (class (match-string 1 string)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8192 (setq module (list (idlwave-sintern-method "Init")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8193 'fun
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8194 (idlwave-sintern-class class)))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8195 module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8196
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8197 (defun idlwave-fix-keywords (name type class keywords
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
8198 &optional super-classes system)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8199 "Update a list of keywords.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8200 Translate OBJ_NEW, adding all super-class keywords, or all keywords
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8201 from all classes if CLASS equals t. If SYSTEM is non-nil, don't
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
8202 demand _EXTRA in the keyword list."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8203 (let ((case-fold-search t))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8204
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8205 ;; If this is the OBJ_NEW function, try to figure out the class and use
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8206 ;; the keywords from the corresponding INIT method.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8207 (if (and (equal (upcase name) "OBJ_NEW")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8208 (or (eq major-mode 'idlwave-mode)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8209 (eq major-mode 'idlwave-shell-mode)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8210 (let* ((bos (save-excursion (idlwave-beginning-of-statement) (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8211 (string (buffer-substring bos (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8212 (case-fold-search t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8213 class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8214 (and (string-match "obj_new([^'\"]*['\"]\\([a-zA-Z0-9_]+\\)"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8215 string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8216 (setq class (idlwave-sintern-class (match-string 1 string)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8217 (setq idlwave-current-obj_new-class class)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8218 (setq keywords
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8219 (append keywords
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8220 (idlwave-entry-keywords
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8221 (idlwave-rinfo-assq
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8222 (idlwave-sintern-method "INIT")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8223 'fun
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8224 class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8225 (idlwave-routines)) 'do-link))))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8226
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8227 ;; If the class is `t', combine all keywords of all methods NAME
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8228 (when (eq class t)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8229 (mapc (lambda (entry)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8230 (and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8231 (nth 2 entry) ; non-nil class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8232 (eq (nth 1 entry) type) ; correct type
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8233 (setq keywords
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8234 (append keywords
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8235 (idlwave-entry-keywords entry 'do-link)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8236 (idlwave-all-assq name (idlwave-routines)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8237 (setq keywords (idlwave-uniquify keywords)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8238
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8239 ;; If we have inheritance, add all keywords from superclasses, if
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8240 ;; the user indicated that method in `idlwave-keyword-class-inheritance'
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8241 (when (and
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8242 super-classes
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8243 idlwave-keyword-class-inheritance
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8244 (stringp class)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8245 (or
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
8246 system
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
8247 (assq (idlwave-sintern-keyword "_extra") keywords)
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
8248 (assq (idlwave-sintern-keyword "_ref_extra") keywords))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8249 ;; Check if one of the keyword-class regexps matches the name
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8250 (let ((regexps idlwave-keyword-class-inheritance) re)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8251 (catch 'exit
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8252 (while (setq re (pop regexps))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8253 (if (string-match re name) (throw 'exit t))))))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8254
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8255 (loop for entry in (idlwave-routines) do
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8256 (and (nth 2 entry) ; non-nil class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8257 (memq (nth 2 entry) super-classes) ; an inherited class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8258 (eq (nth 1 entry) type) ; correct type
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8259 (eq (car entry) name) ; correct name
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
8260 (mapc (lambda (k) (add-to-list 'keywords k))
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
8261 (idlwave-entry-keywords entry 'do-link))))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8262 (setq keywords (idlwave-uniquify keywords)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8263
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8264 ;; Return the final list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8265 keywords))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8266
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8267 (defun idlwave-expand-keyword (keyword module)
60925
a9c571ede913 * progmodes/cperl-mode.el, progmodes/idlw-shell.el,
Werner LEMBERG <wl@gnu.org>
parents: 60917
diff changeset
8268 "Expand KEYWORD to one of the valid keyword parameters of MODULE.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8269 KEYWORD may be an exact match or an abbreviation of a keyword.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8270 If the match is exact, KEYWORD itself is returned, even if there may be other
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8271 keywords of which KEYWORD is an abbreviation. This is necessary because some
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8272 system routines have keywords which are prefixes of other keywords.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8273 If KEYWORD is an abbreviation of several keywords, a list of all possible
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8274 completions is returned.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8275 If the abbreviation was unique, the correct keyword is returned.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8276 If it cannot be a keyword, the function return nil.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8277 If we do not know about MODULE, just return KEYWORD literally."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8278 (let* ((name (car module))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8279 (type (nth 1 module))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8280 (class (nth 2 module))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8281 (kwd (idlwave-sintern-keyword keyword))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8282 (entry (idlwave-best-rinfo-assoc name type class (idlwave-routines)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8283 (kwd-alist (idlwave-entry-keywords entry))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8284 (extra (or (assq (idlwave-sintern-keyword "_EXTRA") kwd-alist)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8285 (assq (idlwave-sintern-keyword "_REF_EXTRA") kwd-alist)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8286 (completion-ignore-case t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8287 candidates)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8288 (cond ((assq kwd kwd-alist)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8289 kwd)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8290 ((setq candidates (all-completions kwd kwd-alist))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8291 (if (= (length candidates) 1)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8292 (car candidates)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8293 candidates))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8294 ((and entry extra)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8295 ;; Inheritance may cause this keyword to be correct
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8296 keyword)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8297 (entry
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8298 ;; We do know the function, which does not have the keyword.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8299 nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8300 (t
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8301 ;; We do not know the function, so this just might be a correct
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8302 ;; keyword - return it as it is.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8303 keyword))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8304
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8305 (defvar idlwave-rinfo-mouse-map (make-sparse-keymap))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8306 (defvar idlwave-rinfo-map (make-sparse-keymap))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8307 (define-key idlwave-rinfo-mouse-map
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8308 (if (featurep 'xemacs) [button2] [mouse-2])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8309 'idlwave-mouse-active-rinfo)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8310 (define-key idlwave-rinfo-mouse-map
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8311 (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)])
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8312 'idlwave-mouse-active-rinfo-shift)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8313 (define-key idlwave-rinfo-mouse-map
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8314 (if (featurep 'xemacs) [button3] [mouse-3])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8315 'idlwave-mouse-active-rinfo-right)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8316 (define-key idlwave-rinfo-mouse-map " " 'idlwave-active-rinfo-space)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8317 (define-key idlwave-rinfo-map "q" 'idlwave-quit-help)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8318 (define-key idlwave-rinfo-mouse-map "q" 'idlwave-quit-help)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8319 (defvar idlwave-popup-source nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8320 (defvar idlwave-rinfo-marker (make-marker))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8321
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8322 (defun idlwave-quit-help ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8323 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8324 (let ((ri-window (get-buffer-window "*Help*"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8325 (olh-window (get-buffer-window "*IDLWAVE Help*")))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8326 (when (and olh-window
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8327 (fboundp 'idlwave-help-quit))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8328 (select-window olh-window)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8329 (idlwave-help-quit))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8330 (when (window-live-p ri-window)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8331 (delete-window ri-window))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8332
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8333 (defun idlwave-display-calling-sequence (name type class
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8334 &optional initial-class)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8335 ;; Display the calling sequence of module NAME, type TYPE in class CLASS.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8336 (let* ((initial-class (or initial-class class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8337 (entry (or (idlwave-best-rinfo-assq name type class
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8338 (idlwave-routines))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8339 (idlwave-rinfo-assq name type class
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8340 idlwave-unresolved-routines)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8341 (name (or (car entry) name))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8342 (class (or (nth 2 entry) class))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8343 (superclasses (idlwave-all-class-inherits initial-class))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8344 (twins (idlwave-routine-twins entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8345 (dtwins (idlwave-study-twins twins))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8346 (all dtwins)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8347 (system (eq (car (nth 3 entry)) 'system))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8348 (calling-seq (nth 4 entry))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8349 (keywords (idlwave-entry-keywords entry 'do-link))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8350 (html-file (car (nth 5 entry)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8351 (help-echo-kwd
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8352 "Button2: Insert KEYWORD (SHIFT=`/KEYWORD') | Button3: Online Help ")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8353 (help-echo-use
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8354 "Button2/3: Online Help")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8355 (help-echo-src
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8356 "Button2: Jump to source and back | Button3: Source in Help window.")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8357 (help-echo-class
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8358 "Button2: Display info about same method in superclass")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8359 (col 0)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8360 (data (list name type class (current-buffer) nil initial-class))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8361 (km-prop (if (featurep 'xemacs) 'keymap 'local-map))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
8362 (face 'idlwave-help-link)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8363 beg props win cnt total)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8364 ;; Fix keywords, but don't add chained super-classes, since these
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8365 ;; are shown separately for that super-class
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8366 (setq keywords (idlwave-fix-keywords name type class keywords))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8367 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8368 ((null entry)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8369 (error "No %s %s known %s" type name
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8370 (if initial-class (concat "in class " initial-class) "")))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8371 ((or (null name) (equal name ""))
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
8372 (error "No function or procedure call at point"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8373 ((null calling-seq)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8374 (error "Calling sequence of %s %s not available" type name))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8375 (t
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
8376 (move-marker idlwave-rinfo-marker (point))
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
8377 (with-current-buffer (get-buffer-create "*Help*")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8378 (use-local-map idlwave-rinfo-map)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8379 (setq buffer-read-only nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8380 (erase-buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8381 (set (make-local-variable 'idlwave-popup-source) nil)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8382 (set (make-local-variable 'idlwave-current-obj_new-class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8383 idlwave-current-obj_new-class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8384 (when superclasses
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8385 (setq props (list 'mouse-face 'highlight
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8386 km-prop idlwave-rinfo-mouse-map
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8387 'help-echo help-echo-class
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8388 'data (cons 'class data)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8389 (let ((classes (cons initial-class superclasses)) c)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8390 (insert "Classes: ")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8391 (while (setq c (pop classes))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8392 (insert " ")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8393 (setq beg (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8394 (insert c)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8395 (if (equal (downcase c) (downcase class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8396 (add-text-properties beg (point) (list 'face 'bold))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8397 ;; If Method exists in a different class link it
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8398 (if (idlwave-rinfo-assq name type c (idlwave-routines))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8399 (add-text-properties beg (point) props))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8400 (insert "\n")))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8401 (setq props (list 'mouse-face 'highlight
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8402 km-prop idlwave-rinfo-mouse-map
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8403 'help-echo help-echo-use
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8404 'data (cons 'usage data)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8405 (if html-file (setq props (append (list 'face face 'link html-file)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8406 props)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8407 (insert "Usage: ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8408 (setq beg (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8409 (insert (if class
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8410 (format calling-seq class name class name class name)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8411 (format calling-seq name name name name))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8412 "\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8413 (add-text-properties beg (point) props)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8414
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8415 (insert "Keywords:")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8416 (if (null keywords)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8417 (insert " No keywords accepted.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8418 (setq col 9)
85218
1d4ea6f1cea5 (idlwave-indent-line)
Glenn Morris <rgm@gnu.org>
parents: 78234
diff changeset
8419 (mapc
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8420 (lambda (x)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8421 (if (>= (+ col 1 (length (car x)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8422 (window-width))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8423 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8424 (insert "\n ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8425 (setq col 9)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8426 (insert " ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8427 (setq beg (point)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8428 ;; Relevant keywords already have link property attached
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8429 props (list 'mouse-face 'highlight
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8430 km-prop idlwave-rinfo-mouse-map
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8431 'data (cons 'keyword data)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8432 'help-echo help-echo-kwd
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8433 'keyword (car x)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8434 (if system (setq props (append (list 'face face) props)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8435 (insert (car x))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8436 (add-text-properties beg (point) props)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8437 (setq col (+ col 1 (length (car x)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8438 keywords))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8439
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8440 (setq cnt 1 total (length all))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8441 ;; Here entry is (key file (list of type-conses))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8442 (while (setq entry (pop all))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8443 (setq props (list 'mouse-face 'highlight
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8444 km-prop idlwave-rinfo-mouse-map
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8445 'help-echo help-echo-src
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8446 'source (list (car (car (nth 2 entry))) ;type
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8447 (nth 1 entry)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8448 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8449 (cdr (car (nth 2 entry))))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8450 'data (cons 'source data)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8451 (idlwave-insert-source-location
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8452 (format "\n%-8s %s"
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8453 (if (equal cnt 1)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8454 (if (> total 1) "Sources:" "Source:")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8455 "")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8456 (if (> total 1) "- " ""))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8457 entry props)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8458 (incf cnt)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8459 (when (and all (> cnt idlwave-rinfo-max-source-lines))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8460 ;; No more source lines, please
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8461 (insert (format
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8462 "\n Source information truncated to %d entries."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8463 idlwave-rinfo-max-source-lines))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8464 (setq all nil)))
60766
a4cac40cf780 Remove unnecessary `beginning-of-buffer'.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 60690
diff changeset
8465 (goto-char (point-min))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8466 (setq buffer-read-only t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8467 (display-buffer "*Help*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8468 (if (and (setq win (get-buffer-window "*Help*"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8469 idlwave-resize-routine-help-window)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8470 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8471 (let ((ww (selected-window)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8472 (unwind-protect
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8473 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8474 (select-window win)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8475 (enlarge-window (- (/ (frame-height) 2)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8476 (window-height)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8477 (shrink-window-if-larger-than-buffer))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8478 (select-window ww)))))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8479
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8480 (defun idlwave-insert-source-location (prefix entry &optional file-props)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8481 "Insert a source location into the routine info buffer.
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8482 Start line with PREFIX. If a file name is inserted, add FILE-PROPS
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8483 to it."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8484 (let* ((key (car entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8485 (file (nth 1 entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8486 (types (nth 2 entry))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8487 (shell-flag (assq 'compiled types))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8488 (buffer-flag (assq 'buffer types))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8489 (user-flag (assq 'user types))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8490 (lib-flag (assq 'lib types))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8491 (ndupl (or (and buffer-flag (idlwave-count-memq 'buffer types))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8492 (and user-flag (idlwave-count-memq 'user types))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8493 (and lib-flag (idlwave-count-memq 'lib types))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8494 1))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8495 (doflags t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8496 beg special)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8497
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8498 (insert prefix)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8499
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8500 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8501 ((eq key 'system)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8502 (setq doflags nil)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8503 (insert "System "))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8504
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8505 ((eq key 'builtin)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8506 (setq doflags nil)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8507 (insert "Builtin "))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8508
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8509 ((and (not file) shell-flag)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8510 (insert "Unresolved"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8511
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8512 ((null file)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8513 (insert "ERROR"))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8514
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8515 ((idlwave-syslib-p file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8516 (if (string-match "obsolete" (file-name-directory file))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8517 (insert "Obsolete ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8518 (insert "SystemLib ")))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8519
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8520 ;; New special syntax: taken directly from routine-info for
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8521 ;; library catalog routines
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8522 ((setq special (or (cdr lib-flag) (cdr user-flag)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8523 (insert (format "%-10s" special)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8524
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8525 ;; Old special syntax: a matching regexp
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8526 ((setq special (idlwave-special-lib-test file))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8527 (insert (format "%-10s" special)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8528
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8529 ;; Catch-all with file
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8530 ((idlwave-lib-p file) (insert "Library "))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8531
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8532 ;; Sanity catch all
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8533 (t (insert "Other ")))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8534
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8535 (when doflags
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8536 (insert (concat
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8537 " ["
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8538 (if lib-flag "L" "-")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8539 (if user-flag "C" "-")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8540 (if shell-flag "S" "-")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8541 (if buffer-flag "B" "-")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8542 "] ")))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8543 (when (> ndupl 1)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8544 (setq beg (point))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8545 (insert (format "(%dx) " ndupl))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8546 (add-text-properties beg (point) (list 'face 'bold)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8547 (when (and file (not (equal file "")))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8548 (setq beg (point))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8549 (insert (apply 'abbreviate-file-name
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8550 (if (featurep 'xemacs) (list file t) (list file))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8551 (if file-props
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8552 (add-text-properties beg (point) file-props)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8553
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8554 (defun idlwave-special-lib-test (file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8555 "Check the path of FILE against the regexps which define special libs.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8556 Return the name of the special lib if there is a match."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8557 (let ((alist idlwave-special-lib-alist)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8558 entry rtn)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8559 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8560 ((stringp file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8561 (while (setq entry (pop alist))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8562 (if (string-match (car entry) file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8563 (setq rtn (cdr entry)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8564 alist nil)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8565 rtn)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8566 (t nil))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8567
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8568 (defun idlwave-mouse-active-rinfo-right (ev)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8569 (interactive "e")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8570 (idlwave-mouse-active-rinfo ev 'right))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8571
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8572 (defun idlwave-mouse-active-rinfo-shift (ev)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8573 (interactive "e")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8574 (idlwave-mouse-active-rinfo ev nil 'shift))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8575
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8576 (defun idlwave-active-rinfo-space ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8577 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8578 (idlwave-mouse-active-rinfo nil 'right))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8579
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8580 (defun idlwave-mouse-active-rinfo (ev &optional right shift)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8581 "Do the mouse actions in the routine info buffer.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8582 Optional args RIGHT and SHIFT indicate, if mouse-3 was used, and if SHIFT
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8583 was pressed."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8584 (interactive "e")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8585 (if ev (mouse-set-point ev))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8586 (let (data id name type class buf bufwin source link keyword
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
8587 word initial-class)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8588 (setq data (get-text-property (point) 'data)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8589 source (get-text-property (point) 'source)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8590 keyword (get-text-property (point) 'keyword)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8591 link (get-text-property (point) 'link)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8592 id (car data)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8593 name (nth 1 data) type (nth 2 data) class (nth 3 data)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8594 buf (nth 4 data)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8595 initial-class (nth 6 data)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8596 word (idlwave-this-word)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8597 bufwin (get-buffer-window buf t))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8598
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8599 (cond ((eq id 'class) ; Switch class being displayed
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8600 (if (window-live-p bufwin) (select-window bufwin))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8601 (idlwave-display-calling-sequence
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8602 (idlwave-sintern-method name)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8603 type (idlwave-sintern-class word)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8604 initial-class))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8605 ((eq id 'usage) ; Online help on this routine
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8606 (idlwave-online-help link name type class))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8607 ((eq id 'source) ; Source in help or buffer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8608 (if right ; In help
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8609 (let ((idlwave-extra-help-function 'idlwave-help-with-source)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8610 (idlwave-help-source-try-header nil)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8611 ;; Fake idlwave-routines so help will find the right entry
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8612 (idlwave-routines
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8613 (list (list name type class source ""))))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8614 (idlwave-help-get-special-help name type class nil))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8615 ;; Otherwise just pop to the source
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8616 (setq idlwave-popup-source (not idlwave-popup-source))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8617 (if idlwave-popup-source
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8618 (condition-case err
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8619 (idlwave-do-find-module name type class source)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8620 (error
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8621 (setq idlwave-popup-source nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8622 (if (window-live-p bufwin) (select-window bufwin))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8623 (error (nth 1 err))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8624 (if bufwin
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8625 (select-window bufwin)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8626 (pop-to-buffer buf))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8627 (goto-char (marker-position idlwave-rinfo-marker)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8628 ((eq id 'keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8629 (if right
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8630 (idlwave-online-help link name type class keyword)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8631 (idlwave-rinfo-insert-keyword keyword buf shift))))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8632
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8633 (defun idlwave-rinfo-insert-keyword (keyword buffer &optional shift)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8634 "Insert KEYWORD in BUFFER. Make sure buffer is displayed in a window."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8635 (let ((bwin (get-buffer-window buffer)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8636 (if idlwave-complete-empty-string-as-lower-case
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8637 (setq keyword (downcase keyword)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8638 (if bwin
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8639 (select-window bwin)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8640 (pop-to-buffer buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8641 (setq bwin (get-buffer-window buffer)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8642 (if (eq (preceding-char) ?/)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8643 (insert keyword)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8644 (unless (save-excursion
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8645 (re-search-backward
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8646 "[(,][ \t]*\\(\\$[ \t]*\\(;.*\\)?\n\\)?[ \t]*\\="
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8647 (min (- (point) 100) (point-min)) t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8648 (insert ", "))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8649 (if shift (insert "/"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8650 (insert keyword)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8651 (if (and (not shift)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8652 idlwave-keyword-completion-adds-equal)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8653 (insert "=")))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8654
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8655 (defun idlwave-list-buffer-load-path-shadows (&optional arg)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8656 "List the load path shadows of all routines defined in current buffer."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8657 (interactive "P")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8658 (idlwave-routines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8659 (if (eq major-mode 'idlwave-mode)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8660 (idlwave-list-load-path-shadows
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8661 nil (idlwave-update-current-buffer-info 'save-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8662 "in current buffer")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8663 (error "Current buffer is not in idlwave-mode")))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8664
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8665 (defun idlwave-list-shell-load-path-shadows (&optional arg)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8666 "List the load path shadows of all routines compiled under the shell.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8667 This is very useful for checking an IDL application. Just compile the
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8668 application, do RESOLVE_ALL, and `C-c C-i' to compile all referenced
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8669 routines and update IDLWAVE internal info. Then check for shadowing
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8670 with this command."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8671 (interactive "P")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8672 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8673 ((or (not (fboundp 'idlwave-shell-is-running))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8674 (not (idlwave-shell-is-running)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8675 (error "Shell is not running"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8676 ((null idlwave-compiled-routines)
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
8677 (error "No compiled routines. Maybe you need to update with `C-c C-i'"))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8678 (t
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8679 (idlwave-list-load-path-shadows nil idlwave-compiled-routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8680 "in the shell"))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8681
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8682 (defun idlwave-list-all-load-path-shadows (&optional arg)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8683 "List the load path shadows of all routines known to IDLWAVE."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8684 (interactive "P")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8685 (idlwave-list-load-path-shadows nil nil "globally"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8686
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
8687 (defvar idlwave-sort-prefer-buffer-info t
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
8688 "Internal variable used to influence `idlwave-routine-twin-compare'.")
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
8689
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8690 (defun idlwave-list-load-path-shadows (arg &optional special-routines loc)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8691 "List the routines which are defined multiple times.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8692 Search the information IDLWAVE has about IDL routines for multiple
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8693 definitions.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8694 When SPECIAL-ROUTINES in non-nil, only look for shadows of these routines.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8695
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8696 When IDL hits a routine call which is not defined, it will search on
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8697 the load path in order to find a definition. The output of this command
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8698 can be used to detect possible name clashes during this process."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8699 (idlwave-routines) ; Make sure everything is loaded.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8700 (unless (or idlwave-user-catalog-routines idlwave-library-catalog-routines)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8701 (or (y-or-n-p
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8702 "You don't have any user or library catalogs. Continue anyway? ")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8703 (error "Abort")))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8704 (let* ((routines (append idlwave-system-routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8705 idlwave-compiled-routines
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8706 idlwave-library-catalog-routines
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8707 idlwave-user-catalog-routines
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8708 idlwave-buffer-routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8709 nil))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8710 (km-prop (if (featurep 'xemacs) 'keymap 'local-map))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8711 (keymap (make-sparse-keymap))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8712 (props (list 'mouse-face 'highlight
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8713 km-prop keymap
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8714 'help-echo "Mouse2: Find source"))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8715 (nroutines (length (or special-routines routines)))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
8716 (step (/ nroutines 100))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8717 (n 0)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8718 (cnt 0)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8719 (idlwave-sort-prefer-buffer-info nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8720 routine twins dtwins twin done props1 lroutines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8721
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8722 (if special-routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8723 ;; Just looking for shadows of a few special routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8724 (setq lroutines routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8725 routines special-routines))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8726
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8727 (message "Sorting routines...")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8728 (setq routines (sort routines
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8729 (lambda (a b)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8730 (string< (downcase (idlwave-make-full-name
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8731 (nth 2 a) (car a)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8732 (downcase (idlwave-make-full-name
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8733 (nth 2 b) (car b)))))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8734 (message "Sorting routines...done")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8735
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8736 (define-key keymap (if (featurep 'xemacs) [(button2)] [(mouse-2)])
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8737 (lambda (ev)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8738 (interactive "e")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8739 (mouse-set-point ev)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8740 (apply 'idlwave-do-find-module
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8741 (get-text-property (point) 'find-args))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8742 (define-key keymap [(return)]
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8743 (lambda ()
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8744 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8745 (apply 'idlwave-do-find-module
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8746 (get-text-property (point) 'find-args))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8747 (message "Compiling list...( 0%%)")
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
8748 (with-current-buffer (get-buffer-create "*Shadows*")
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8749 (setq buffer-read-only nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8750 (erase-buffer)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8751 (while (setq routine (pop routines))
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
8752 (if (= (mod (setq n (1+ n)) step) 0)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
8753 (message "Compiling list...(%2d%%)" (/ (* n 100) nroutines)))
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
8754
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8755 ;; Get a list of all twins
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8756 (setq twins (idlwave-routine-twins routine (or lroutines routines)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8757 (if (memq routine done)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8758 (setq dtwins nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8759 (setq dtwins (idlwave-study-twins twins)))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8760 ;; Mark all twins as dealt with
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8761 (setq done (append twins done))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8762 (when (or (> (length dtwins) 1)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8763 (> (idlwave-count-memq 'lib (nth 2 (car dtwins))) 1)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8764 (> (idlwave-count-memq 'user (nth 2 (car dtwins))) 1)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8765 (> (idlwave-count-memq 'buffer (nth 2 (car dtwins))) 1))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8766 (incf cnt)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8767 (insert (format "\n%s%s"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8768 (idlwave-make-full-name (nth 2 routine)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8769 (car routine))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8770 (if (eq (nth 1 routine) 'fun) "()" "")))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8771 (while (setq twin (pop dtwins))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8772 (setq props1 (append (list 'find-args
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8773 (list (nth 0 routine)
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8774 (nth 1 routine)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8775 (nth 2 routine)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8776 props))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8777 (idlwave-insert-source-location "\n - " twin props1))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8778 (goto-char (point-min))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8779 (setq buffer-read-only t))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8780 (setq loc (or loc ""))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8781 (if (> cnt 0)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8782 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8783 (display-buffer (get-buffer "*Shadows*"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8784 (message "%d case%s of shadowing found %s"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8785 cnt (if (= cnt 1) "" "s") loc))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8786 (message "No shadowing conflicts found %s" loc))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8787
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8788 (defun idlwave-print-source (routine)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8789 (let* ((source (nth 3 routine))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8790 (stype (car source))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8791 (sfile (idlwave-routine-source-file source)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8792 (if (idlwave-syslib-p sfile) (setq stype 'syslib))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8793 (if (and (eq stype 'compiled)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8794 (or (not (stringp sfile))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8795 (not (string-match "\\S-" sfile))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8796 (setq stype 'unresolved))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8797 (princ (format " %-10s %s\n"
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8798 stype
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8799 (if sfile sfile "No source code available")))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8800
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8801 (defun idlwave-routine-twins (entry &optional list)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8802 "Return all twin entries of ENTRY in LIST.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8803 LIST defaults to `idlwave-routines'.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8804 Twin entries are those which have the same name, type, and class.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8805 ENTRY will also be returned, as the first item of this list."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8806 (let* ((name (car entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8807 (type (nth 1 entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8808 (class (nth 2 entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8809 (candidates (idlwave-all-assq name (or list (idlwave-routines))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8810 twins candidate)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8811 (while (setq candidate (pop candidates))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8812 (if (and (not (eq candidate entry))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8813 (eq type (nth 1 candidate))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8814 (eq class (nth 2 candidate)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8815 (push candidate twins)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8816 (if (setq candidate (idlwave-rinfo-assq name type class
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8817 idlwave-unresolved-routines))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8818 (push candidate twins))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8819 (cons entry (nreverse twins))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8820
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8821 (defun idlwave-study-twins (entries)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8822 "Return dangerous twins of first entry in ENTRIES.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8823 Dangerous twins are routines with same name, but in different files on
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8824 the load path. If a file is in the system library and has an entry in
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8825 the `idlwave-system-routines' list, we omit the latter as
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8826 non-dangerous because many IDL routines are implemented as library
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8827 routines, and may have been scanned."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8828 (let* ((entry (car entries))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8829 (name (car entry)) ;
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8830 (type (nth 1 entry)) ; Must be bound for
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8831 (class (nth 2 entry)) ; idlwave-routine-twin-compare
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8832 (cnt 0)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8833 source type type-cons file alist syslibp key)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8834 (while (setq entry (pop entries))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8835 (incf cnt)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8836 (setq source (nth 3 entry)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8837 type (car source)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8838 type-cons (cons type (nth 3 source))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8839 file (idlwave-routine-source-file source))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8840
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8841 ;; Make KEY to index entry properly
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8842 (setq key (cond ((eq type 'system) type)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8843 (file (file-truename file))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8844 (t 'unresolved)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8845
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8846 ;; Check for an entry in the system library
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8847 (if (and file
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8848 (not syslibp)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8849 (idlwave-syslib-p file))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8850 (setq syslibp t))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8851
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8852 ;; If there's more than one matching entry for the same file, just
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8853 ;; append the type-cons to the type list.
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8854 (if (setq entry (assoc key alist))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8855 (push type-cons (nth 2 entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8856 (push (list key file (list type-cons)) alist)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8857
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8858 (setq alist (nreverse alist))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8859
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8860 (when syslibp
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8861 ;; File is in system *library* - remove any 'system entry
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8862 (setq alist (delq (assq 'system alist) alist)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8863
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8864 ;; If 'system remains and we've scanned the syslib, it's a builtin
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8865 ;; (rather than a !DIR/lib/.pro file bundled as source).
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8866 (when (and (idlwave-syslib-scanned-p)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8867 (setq entry (assoc 'system alist)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8868 (setcar entry 'builtin))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8869 (sort alist 'idlwave-routine-twin-compare)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8870
106379
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
8871 ;; FIXME: Dynamically scoped vars need to use the `idlwave-' prefix.
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
8872 ;; (defvar type)
d1ddac1568a0 Misc cleanup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105813
diff changeset
8873 ;; (defvar class)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8874 (defmacro idlwave-xor (a b)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8875 `(and (or ,a ,b)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8876 (not (and ,a ,b))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8877
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8878 (defun idlwave-routine-entry-compare (a b)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8879 "Compare two routine info entries for sorting.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8880 This is the general case. It first compares class, names, and type.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8881 If it turns out that A and B are twins (same name, class, and type),
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8882 calls another routine which compares twins on the basis of their file
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8883 names and path locations."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8884 (let ((name (car a)) (type (nth 1 a)) (class (nth 2 a)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8885 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8886 ((not (equal (idlwave-downcase-safe class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8887 (idlwave-downcase-safe (nth 2 b))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8888 ;; Class decides
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8889 (cond ((null (nth 2 b)) nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8890 ((null class) t)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8891 (t (string< (downcase class) (downcase (nth 2 b))))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8892 ((not (equal (downcase name) (downcase (car b))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8893 ;; Name decides
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8894 (string< (downcase name) (downcase (car b))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8895 ((not (eq type (nth 1 b)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8896 ;; Type decides
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8897 (< (if (eq type 'fun) 1 0) (if (eq (nth 1 b) 'fun) 1 0)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8898 (t
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8899 ;; A and B are twins - so the decision is more complicated.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8900 ;; Call twin-compare with the proper arguments.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8901 (idlwave-routine-entry-compare-twins a b)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8902
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8903 (defun idlwave-routine-entry-compare-twins (a b)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8904 "Compare two routine entries, under the assumption that they are twins.
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
8905 This basically calls `idlwave-routine-twin-compare' with the correct args."
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8906 (let* ((name (car a)) (type (nth 1 a)) (class (nth 2 a)) ; needed outside
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8907 (asrc (nth 3 a))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8908 (atype (car asrc))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8909 (bsrc (nth 3 b))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8910 (btype (car bsrc))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8911 (afile (idlwave-routine-source-file asrc))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8912 (bfile (idlwave-routine-source-file bsrc)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8913 (idlwave-routine-twin-compare
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8914 (if (stringp afile)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8915 (list (file-truename afile) afile (list atype))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8916 (list atype afile (list atype)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8917 (if (stringp bfile)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8918 (list (file-truename bfile) bfile (list btype))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8919 (list btype bfile (list btype))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8920 ))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8921
106396
b99306fb62cc (class): Restore still useful declaration.
Glenn Morris <rgm@gnu.org>
parents: 106379
diff changeset
8922 ;; Bound in idlwave-study-twins,idlwave-routine-entry-compare-twins.
b99306fb62cc (class): Restore still useful declaration.
Glenn Morris <rgm@gnu.org>
parents: 106379
diff changeset
8923 ;; FIXME: Dynamically scoped vars need to use the `idlwave-' prefix.
b99306fb62cc (class): Restore still useful declaration.
Glenn Morris <rgm@gnu.org>
parents: 106379
diff changeset
8924 (defvar class)
b99306fb62cc (class): Restore still useful declaration.
Glenn Morris <rgm@gnu.org>
parents: 106379
diff changeset
8925
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8926 (defun idlwave-routine-twin-compare (a b)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8927 "Compare two routine twin entries for sorting.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8928 In here, A and B are not normal routine info entries, but special
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8929 lists (KEY FILENAME (TYPES...)).
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8930 This expects NAME TYPE CLASS to be bound to the right values."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8931 (let* (;; Dis-assemble entries
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8932 (akey (car a)) (bkey (car b))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8933 (afile (nth 1 a)) (bfile (nth 1 b))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8934 (atypes (nth 2 a)) (btypes (nth 2 b))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8935 ;; System routines?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8936 (asysp (memq akey '(builtin system)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8937 (bsysp (memq bkey '(builtin system)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8938 ;; Compiled routines?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8939 (acompp (memq 'compiled atypes))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8940 (bcompp (memq 'compiled btypes))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8941 ;; Unresolved?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8942 (aunresp (or (eq akey 'unresolved)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8943 (and acompp (not afile))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8944 (bunresp (or (eq bkey 'unresolved)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8945 (and bcompp (not bfile))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8946 ;; Buffer info available?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8947 (abufp (memq 'buffer atypes))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8948 (bbufp (memq 'buffer btypes))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8949 ;; On search path?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8950 (tpath-alist (idlwave-true-path-alist))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8951 (apathp (and (stringp akey)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8952 (assoc (file-name-directory akey) tpath-alist)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8953 (bpathp (and (stringp bkey)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8954 (assoc (file-name-directory bkey) tpath-alist)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8955 ;; How early on search path? High number means early since we
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8956 ;; measure the tail of the path list
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8957 (anpath (length (memq apathp tpath-alist)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8958 (bnpath (length (memq bpathp tpath-alist)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8959 ;; Look at file names
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8960 (aname (if (stringp afile) (downcase (file-name-nondirectory afile)) ""))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8961 (bname (if (stringp bfile) (downcase (file-name-nondirectory bfile)) ""))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8962 (fname-re (if class (format "\\`%s__\\(%s\\|define\\)\\.pro\\'"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8963 (regexp-quote (downcase class))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8964 (regexp-quote (downcase name)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8965 (format "\\`%s\\.pro" (regexp-quote (downcase name)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8966 ;; Is file name derived from the routine name?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8967 ;; Method file or class definition file?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8968 (anamep (string-match fname-re aname))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8969 (adefp (and class anamep (string= "define" (match-string 1 aname))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8970 (bnamep (string-match fname-re bname))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8971 (bdefp (and class bnamep (string= "define" (match-string 1 bname)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8972
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8973 ;; Now: follow JD's ideas about sorting. Looks really simple now,
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8974 ;; doesn't it? The difficult stuff is hidden above...
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8975 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8976 ((idlwave-xor asysp bsysp) asysp) ; System entries first
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8977 ((idlwave-xor aunresp bunresp) bunresp) ; Unresolved last
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8978 ((and idlwave-sort-prefer-buffer-info
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8979 (idlwave-xor abufp bbufp)) abufp) ; Buffers before non-buffers
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8980 ((idlwave-xor acompp bcompp) acompp) ; Compiled entries
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8981 ((idlwave-xor apathp bpathp) apathp) ; Library before non-library
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8982 ((idlwave-xor anamep bnamep) anamep) ; Correct file names first
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8983 ((and class anamep bnamep ; both file names match ->
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8984 (idlwave-xor adefp bdefp)) bdefp) ; __define after __method
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8985 ((> anpath bnpath) t) ; Who is first on path?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8986 (t nil)))) ; Default
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8987
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8988 (defun idlwave-routine-source-file (source)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
8989 (if (nth 2 source)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8990 (expand-file-name (nth 1 source) (nth 2 source))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8991 (nth 1 source)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8992
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8993 (defun idlwave-downcase-safe (string)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8994 "Donwcase if string, else return unchanged."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8995 (if (stringp string)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8996 (downcase string)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8997 string))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8998
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8999 (defun idlwave-count-eq (elt list)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9000 "How often is ELT in LIST?"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9001 (length (delq nil (mapcar (lambda (x) (eq x elt)) list))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9002
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9003 (defun idlwave-count-memq (elt alist)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9004 "How often is ELT a key in ALIST?"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9005 (length (delq nil (mapcar (lambda (x) (eq (car x) elt)) alist))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9006
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9007 (defun idlwave-syslib-p (file)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9008 "Non-nil if FILE is in the system library."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9009 (let* ((true-syslib (file-name-as-directory
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9010 (file-truename
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9011 (expand-file-name "lib" (idlwave-sys-dir)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9012 (true-file (file-truename file)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9013 (string-match (concat "^" (regexp-quote true-syslib)) true-file)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9014
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9015 (defun idlwave-lib-p (file)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
9016 "Non-nil if FILE is in the library."
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9017 (let ((true-dir (file-name-directory (file-truename file))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9018 (assoc true-dir (idlwave-true-path-alist))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9019
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9020 (defun idlwave-path-alist-add-flag (list-entry flag)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9021 "Add a flag to the path list entry, if not set."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9022 (let ((flags (cdr list-entry)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9023 (add-to-list 'flags flag)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9024 (setcdr list-entry flags)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9025
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9026 (defun idlwave-path-alist-remove-flag (list-entry flag)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9027 "Remove a flag to the path list entry, if set."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9028 (let ((flags (delq flag (cdr list-entry))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9029 (setcdr list-entry flags)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9030
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9031 (defun idlwave-true-path-alist ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9032 "Return `idlwave-path-alist' alist with true-names.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9033 Info is cached, but relies on the functions setting `idlwave-path-alist'
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9034 to reset the variable `idlwave-true-path-alist' to nil."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9035 (or idlwave-true-path-alist
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9036 (setq idlwave-true-path-alist
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9037 (mapcar (lambda(x) (cons
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9038 (file-name-as-directory
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9039 (file-truename
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9040 (directory-file-name
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9041 (car x))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9042 (cdr x)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9043 idlwave-path-alist))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9044
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9045 (defun idlwave-syslib-scanned-p ()
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9046 "Non-nil if the system lib file !DIR/lib has been scanned."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9047 (let* ((true-syslib (file-name-as-directory
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9048 (file-truename
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9049 (expand-file-name "lib" (idlwave-sys-dir))))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9050 (cdr (assoc true-syslib (idlwave-true-path-alist)))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9051
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9052 ;; ----------------------------------------------------------------------------
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9053 ;;
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9054 ;; Online Help display
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9055
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9056
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9057 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9058 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9059 ;; Additions for use with imenu.el and func-menu.el
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9060 ;; (pop-up a list of IDL units in the current file).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9061 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9062
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9063 (defun idlwave-prev-index-position ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9064 "Search for the previous procedure or function.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9065 Return nil if not found. For use with imenu.el."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9066 (save-match-data
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9067 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9068 ((idlwave-find-key "\\<\\(pro\\|function\\)\\>" -1 'nomark))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9069 ;; ((idlwave-find-key idlwave-begin-unit-reg 1 'nomark)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9070 (t nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9071
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9072 (defun idlwave-unit-name ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9073 "Return the unit name.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9074 Assumes that point is at the beginning of the unit as found by
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9075 `idlwave-prev-index-position'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9076 (forward-sexp 2)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9077 (forward-sexp -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9078 (let ((begin (point)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9079 (re-search-forward
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9080 "[a-zA-Z_][a-zA-Z0-9$_]+\\(::[a-zA-Z_][a-zA-Z0-9$_]+\\)?")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9081 (if (fboundp 'buffer-substring-no-properties)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9082 (buffer-substring-no-properties begin (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9083 (buffer-substring begin (point)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9084
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9085 (defalias 'idlwave-function-menu
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9086 (condition-case nil
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9087 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9088 (require 'func-menu)
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9089 'function-menu)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9090 (error (condition-case nil
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9091 (progn
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9092 (require 'imenu)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9093 'imenu)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
9094 (error nil)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9095
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9096 ;; Here we hack func-menu.el in order to support this new mode.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9097 ;; The latest versions of func-menu.el already have this stuff in, so
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9098 ;; we hack only if it is not already there.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9099 (when (fboundp 'eval-after-load)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9100 (eval-after-load "func-menu"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9101 '(progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9102 (or (assq 'idlwave-mode fume-function-name-regexp-alist)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9103 (not (boundp 'fume-function-name-regexp-idl)) ; avoid problems
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9104 (setq fume-function-name-regexp-alist
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9105 (cons '(idlwave-mode . fume-function-name-regexp-idl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9106 fume-function-name-regexp-alist)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9107 (or (assq 'idlwave-mode fume-find-function-name-method-alist)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9108 (not (fboundp 'fume-find-next-idl-function-name)) ; avoid problems
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9109 (setq fume-find-function-name-method-alist
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9110 (cons '(idlwave-mode . fume-find-next-idl-function-name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9111 fume-find-function-name-method-alist))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9112
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9113 (defun idlwave-edit-in-idlde ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9114 "Edit the current file in IDL Development environment."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9115 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9116 (start-process "idldeclient" nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9117 idlwave-shell-explicit-file-name "-c" "-e"
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9118 (buffer-file-name)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9119
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9120 (defvar idlwave-help-use-assistant)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9121 (defun idlwave-launch-idlhelp ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9122 "Start the IDLhelp application."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9123 (interactive)
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9124 (if idlwave-help-use-assistant
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9125 (idlwave-help-assistant-raise)
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9126 (start-process "idlhelp" nil idlwave-help-application)))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9127
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9128 ;; Menus - using easymenu.el
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9129 (defvar idlwave-mode-menu-def
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9130 `("IDLWAVE"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9131 ["PRO/FUNC menu" idlwave-function-menu t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9132 ("Motion"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9133 ["Subprogram Start" idlwave-beginning-of-subprogram t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9134 ["Subprogram End" idlwave-end-of-subprogram t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9135 ["Block Start" idlwave-beginning-of-block t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9136 ["Block End" idlwave-end-of-block t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9137 ["Up Block" idlwave-backward-up-block t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9138 ["Down Block" idlwave-down-block t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9139 ["Skip Block Backward" idlwave-backward-block t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9140 ["Skip Block Forward" idlwave-forward-block t])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9141 ("Mark"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9142 ["Subprogram" idlwave-mark-subprogram t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9143 ["Block" idlwave-mark-block t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9144 ["Header" idlwave-mark-doclib t])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9145 ("Format"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9146 ["Indent Entire Statement" idlwave-indent-statement
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9147 :active t :keys "C-u \\[indent-for-tab-command]" ]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9148 ["Indent Subprogram" idlwave-indent-subprogram t]
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9149 ["(Un)Comment Region" idlwave-toggle-comment-region t]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9150 ["Continue/Split line" idlwave-split-line t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9151 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9152 ["Toggle Auto Fill" idlwave-auto-fill-mode :style toggle
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9153 :selected (symbol-value idlwave-fill-function)])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9154 ("Templates"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9155 ["Procedure" idlwave-procedure t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9156 ["Function" idlwave-function t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9157 ["Doc Header" idlwave-doc-header t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9158 ["Log" idlwave-doc-modification t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9159 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9160 ["Case" idlwave-case t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9161 ["For" idlwave-for t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9162 ["Repeat" idlwave-repeat t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9163 ["While" idlwave-while t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9164 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9165 ["Close Block" idlwave-close-block t])
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9166 ("Completion"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9167 ["Complete" idlwave-complete t]
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9168 ("Complete Specific"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9169 ["1 Procedure Name" (idlwave-complete 'procedure) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9170 ["2 Procedure Keyword" (idlwave-complete 'procedure-keyword) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9171 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9172 ["3 Function Name" (idlwave-complete 'function) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9173 ["4 Function Keyword" (idlwave-complete 'function-keyword) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9174 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9175 ["5 Procedure Method Name" (idlwave-complete 'procedure-method) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9176 ["6 Procedure Method Keyword" (idlwave-complete 'procedure-method-keyword) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9177 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9178 ["7 Function Method Name" (idlwave-complete 'function-method) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9179 ["8 Function Method Keyword" (idlwave-complete 'function-method-keyword) t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9180 "--"
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9181 ["9 Class Name" idlwave-complete-class t]))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9182 ("Routine Info"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9183 ["Show Routine Info" idlwave-routine-info t]
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9184 ["Online Context Help" idlwave-context-help t]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9185 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9186 ["Find Routine Source" idlwave-find-module t]
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9187 ["Resolve Routine" idlwave-resolve (featurep 'idlw-shell)]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9188 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9189 ["Update Routine Info" idlwave-update-routine-info t]
69822
84de63539ab8 Update to IDLWAVE version 6.0; see idlwave.org. Includes code to
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68773
diff changeset
9190 ["Rescan XML Help Catalog" idlwave-convert-xml-system-routine-info t]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9191 "--"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9192 "IDL User Catalog"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
9193 ["Select Catalog Directories" (idlwave-create-user-catalog-file nil) t]
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9194 ["Scan Directories" (idlwave-update-routine-info '(16))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9195 (and idlwave-path-alist (not idlwave-catalog-process))]
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9196 ["Scan Directories &" (idlwave-update-routine-info '(64))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9197 (and idlwave-path-alist (not idlwave-catalog-process))]
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9198 "--"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9199 "Routine Shadows"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9200 ["Check Current Buffer" idlwave-list-buffer-load-path-shadows t]
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9201 ["Check Compiled Routines" idlwave-list-shell-load-path-shadows t]
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9202 ["Check Everything" idlwave-list-all-load-path-shadows t])
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9203 ("Misc"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9204 ["Kill auto-created buffers" idlwave-kill-autoloaded-buffers t]
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9205 "--"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9206 ["Insert TAB character" idlwave-hard-tab t])
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9207 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9208 ("External"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9209 ["Start IDL shell" idlwave-shell t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9210 ["Edit file in IDLDE" idlwave-edit-in-idlde t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9211 ["Launch IDL Help" idlwave-launch-idlhelp t])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9212 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9213 ("Customize"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9214 ["Browse IDLWAVE Group" idlwave-customize t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9215 "--"
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9216 ["Build Full Customize Menu" idlwave-create-customize-menu
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9217 (fboundp 'customize-menu-create)])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9218 ("Documentation"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9219 ["Describe Mode" describe-mode t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9220 ["Abbreviation List" idlwave-list-abbrevs t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9221 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9222 ["Commentary in idlwave.el" idlwave-show-commentary t]
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
9223 ["Commentary in idlw-shell.el" idlwave-shell-show-commentary t]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9224 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9225 ["Info" idlwave-info t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9226 "--"
74587
3d9741bb11f1 (idlwave-library-path): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 74456
diff changeset
9227 ["Help with Topic" idlwave-help-assistant-help-with-topic
74104
a15c9975c15b (idlwave-mode): Set add-log-current-defun-function.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 73733
diff changeset
9228 idlwave-help-use-assistant]
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9229 ["Launch IDL Help" idlwave-launch-idlhelp t])))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9230
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9231 (defvar idlwave-mode-debug-menu-def
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9232 '("Debug"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9233 ["Start IDL shell" idlwave-shell t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9234 ["Save and .RUN buffer" idlwave-shell-save-and-run
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9235 (and (boundp 'idlwave-shell-automatic-start)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9236 idlwave-shell-automatic-start)]))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9237
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9238 (if (or (featurep 'easymenu) (load "easymenu" t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9239 (progn
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9240 (easy-menu-define idlwave-mode-menu idlwave-mode-map
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9241 "IDL and WAVE CL editing menu"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9242 idlwave-mode-menu-def)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9243 (easy-menu-define idlwave-mode-debug-menu idlwave-mode-map
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9244 "IDL and WAVE CL editing menu"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9245 idlwave-mode-debug-menu-def)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9246
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9247 (defun idlwave-customize ()
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 104029
diff changeset
9248 "Call the customize function with `idlwave' as argument."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9249 (interactive)
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9250 ;; Try to load the code for the shell, so that we can customize it
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9251 ;; as well.
27185
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
9252 (or (featurep 'idlw-shell)
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
9253 (load "idlw-shell" t))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9254 (customize-browse 'idlwave))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9255
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9256 (defun idlwave-create-customize-menu ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9257 "Create a full customization menu for IDLWAVE, insert it into the menu."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9258 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9259 (if (fboundp 'customize-menu-create)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9260 (progn
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9261 ;; Try to load the code for the shell, so that we can customize it
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9262 ;; as well.
27185
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
9263 (or (featurep 'idlw-shell)
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
9264 (load "idlw-shell" t))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9265 (easy-menu-change
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9266 '("IDLWAVE") "Customize"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9267 `(["Browse IDLWAVE group" idlwave-customize t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9268 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9269 ,(customize-menu-create 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9270 ["Set" Custom-set t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9271 ["Save" Custom-save t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9272 ["Reset to Current" Custom-reset-current t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9273 ["Reset to Saved" Custom-reset-saved t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9274 ["Reset to Standard Settings" Custom-reset-standard t]))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9275 (message "\"IDLWAVE\"-menu now contains full customization menu"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9276 (error "Cannot expand menu (outdated version of cus-edit.el)")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9277
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9278 (defun idlwave-show-commentary ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9279 "Use the finder to view the file documentation from `idlwave.el'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9280 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9281 (finder-commentary "idlwave.el"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9282
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9283 (defun idlwave-shell-show-commentary ()
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
9284 "Use the finder to view the file documentation from `idlw-shell.el'."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9285 (interactive)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
9286 (finder-commentary "idlw-shell.el"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9287
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9288 (defun idlwave-info ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9289 "Read documentation for IDLWAVE in the info system."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9290 (interactive)
92294
ec8fb087e45e (Info-goto-node): Remove declaration.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
9291 (info "idlwave"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9292
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9293 (defun idlwave-list-abbrevs (arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9294 "Show the code abbreviations define in IDLWAVE mode.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9295 This lists all abbrevs where the replacement text differs from the input text.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9296 These are the ones the users want to learn to speed up their writing.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9297
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9298 The function does *not* list abbrevs which replace a word with itself
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9299 to call a hook. These hooks are used to change the case of words or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9300 to blink the matching `begin', and the user does not need to know them.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9301
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9302 With arg, list all abbrevs with the corresponding hook.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9303
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9304 This function was written since `list-abbrevs' looks terrible for IDLWAVE mode."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9305
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9306 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9307 (let ((table (symbol-value 'idlwave-mode-abbrev-table))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9308 abbrevs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9309 str rpl func fmt (len-str 0) (len-rpl 0))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9310 (mapatoms
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9311 (lambda (sym)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9312 (if (symbol-value sym)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9313 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9314 (setq str (symbol-name sym)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9315 rpl (symbol-value sym)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9316 func (symbol-function sym))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9317 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9318 (setq func (prin1-to-string func))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9319 (if (and (listp func) (stringp (nth 2 func)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9320 (setq rpl (concat "EVAL: " (nth 2 func))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9321 func "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9322 (setq func "")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9323 (if (or arg (not (string= rpl str)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9324 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9325 (setq len-str (max len-str (length str)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9326 (setq len-rpl (max len-rpl (length rpl)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9327 (setq abbrevs (cons (list str rpl func) abbrevs)))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9328 table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9329 ;; sort the list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9330 (setq abbrevs (sort abbrevs (lambda (a b) (string< (car a) (car b)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9331 ;; Make the format
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9332 (setq fmt (format "%%-%ds %%-%ds %%s\n" len-str len-rpl))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9333 (with-output-to-temp-buffer "*Help*"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9334 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9335 (progn
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 70572
diff changeset
9336 (princ "Abbreviations and Actions in IDLWAVE-Mode\n")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9337 (princ "=========================================\n\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9338 (princ (format fmt "KEY" "REPLACE" "HOOK"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9339 (princ (format fmt "---" "-------" "----")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9340 (princ "Code Abbreviations and Templates in IDLWAVE-Mode\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9341 (princ "================================================\n\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9342 (princ (format fmt "KEY" "ACTION" ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9343 (princ (format fmt "---" "------" "")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9344 (mapcar
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9345 (lambda (list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9346 (setq str (car list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9347 rpl (nth 1 list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9348 func (nth 2 list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9349 (princ (format fmt str rpl func)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9350 abbrevs)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9351 ;; Make sure each abbreviation uses only one display line
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105170
diff changeset
9352 (with-current-buffer "*Help*"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9353 (setq truncate-lines t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9354
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9355 ;; Add .pro files to speedbar for support, if it's loaded
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9356 (eval-after-load "speedbar" '(speedbar-add-supported-extension ".pro"))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9357
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9358 ;; Set an idle timer to load the routine info.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9359 ;; Will only work on systems which support this.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9360 (or idlwave-routines (idlwave-start-load-rinfo-timer))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
9361
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
9362 ;; Run the hook
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9363 (run-hooks 'idlwave-load-hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9364
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9365 (provide 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9366
58296
4773953f1a10 Restore arch taglines
Miles Bader <miles@gnu.org>
parents: 58293
diff changeset
9367 ;; arch-tag: f77f3b0c-c37c-424f-a328-0886fd42b6fb
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
9368 ;;; idlwave.el ends here