annotate lisp/progmodes/idlwave.el @ 67912:24b085b97616

(glasses-face): Add tag "None" to const nil.
author Juri Linkov <juri@jurta.org>
date Fri, 30 Dec 2005 05:56:39 +0000
parents a11fdee52c05
children dc49655f57ae 03335deca80b 7beb78bc1f8e
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
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2 ;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
3 ;; Free Software Foundation
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5 ;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
60690
d23604c1b411 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 59246
diff changeset
6 ;; 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
7 ;; 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
8 ;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
9 ;; Version: 5.7_22
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
10 ;; Keywords: languages
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
11
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
12 ;; 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
13
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
16 ;; the Free Software Foundation; either version 2, or (at your option)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
17 ;; any later version.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
18
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
19 ;; 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
20 ;; 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
21 ;; 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
22 ;; 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
23
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64046
diff changeset
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64046
diff changeset
27 ;; Boston, MA 02110-1301, USA.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
28
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
29 ;;; Commentary:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
30
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
31 ;; IDLWAVE enables feature-rich development and interaction with IDL.
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
32
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
33 ;; 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
34 ;; 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
35 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
36 ;; 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
37 ;; 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
38 ;; 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
39 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
40 ;; 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
41 ;; 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
42 ;; 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
43 ;;
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
44 ;; 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
45 ;; available from:
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
46 ;; http://idlwave.org
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
47 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
48 ;; INSTALLATION
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 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
51 ;; 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
52 ;; 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
53 ;; 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
54 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
55 ;; (autoload 'idlwave-mode "idlwave" "IDLWAVE Mode" t)
27107
7b2b73f13427 Renamed idlwave-*.el into idlw-*.el.
Eli Zaretskii <eliz@gnu.org>
parents: 26956
diff changeset
56 ;; (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
57 ;; (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
58 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
59 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
60 ;; SOURCE
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 ;;
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
63 ;; 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
64 ;; Webpage:
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
65 ;;
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
66 ;; http://idlwave.org
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
67 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
68 ;; DOCUMENTATION
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 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
71 ;; 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
72 ;; 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
73 ;; SOURCE).
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
74 ;;
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
75 ;;
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
76 ;; ACKNOWLEDGMENTS
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
77 ;; ===============
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
78 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
79 ;; 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
80 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
81 ;; 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
82 ;; 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
83 ;; 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
84 ;; 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
85 ;; 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
86 ;; 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
87 ;; 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
88 ;; 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
89 ;; 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
90 ;; 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
91 ;; 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
92 ;; 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
93 ;; 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
94 ;; 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
95 ;; 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
96 ;; 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
97 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
98 ;; CUSTOMIZATION:
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 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
101 ;; 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
102 ;; 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
103 ;; idlwave-customize'.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
104 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
105 ;; 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
106 ;; 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
107 ;; 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
108 ;; website.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
109 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
110 ;; KNOWN PROBLEMS:
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 ;;
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
113 ;; 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
114 ;; 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
115 ;; 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
116 ;; 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
117 ;; 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
118 ;;
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
119 ;; 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
120 ;; 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
121 ;; 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
122 ;; 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
123 ;; 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
124 ;; "LONG( )" with point before the close paren. This is solved by
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
125 ;; 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
126 ;; but it works.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
127 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
128 ;; 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
129 ;; 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
130 ;; 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
131 ;; 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
132 ;; 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
133 ;; 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
134 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
135 ;; 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
136 ;; 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
137 ;; 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
138 ;; should be okay.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
139 ;;
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
140 ;; 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
141 ;; 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
142 ;; 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
143 ;; 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
144 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
145 ;; 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
146 ;; 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
147 ;; 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
148 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
149
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
150 ;;; Code:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
151
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
152
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
153 (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
154 (require 'idlw-help)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
155
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
156 ;; For XEmacs
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
157 (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
158 (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
159 (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
160 (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
161 (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
162 (defalias 'char-valid-p 'characterp))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
163
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
164 (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
165 (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
166 (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
167 (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
168
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
169 (eval-and-compile
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
170 ;; Kludge to allow `defcustom' for Emacs 19.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
171 (condition-case () (require 'custom) (error nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
172 (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
173 nil ;; We've got what we needed
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
174 ;; We have the old or no custom-library, hack around it!
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
175 (defmacro defgroup (&rest args) nil)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
176 (defmacro defcustom (var value doc &rest args)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
177 `(defvar ,var ,value ,doc))))
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"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
198 (defcustom idlwave-main-block-indent 0
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
205 (defcustom idlwave-block-indent 4
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
211 (defcustom idlwave-end-offset -4
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
218 (defcustom idlwave-continuation-indent 2
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
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
225 (defcustom idlwave-max-extra-continuation-indent 20
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
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
240 "*Non-nil means, indent continuation lines to innermost open
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
241 parenthesis. This indentation occurs even if otherwise disallowed by
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
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
252 the value of `max-extra-continuation-indent', which, if zero, would
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
253 yield:
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 )))"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
260 :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
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
279 in the first line of a comment paragraph. The size of the indent
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.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
296 When the line end falls within a string, string concatenation with the
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
315 expression will not be changed. Note that the indentation of a comment
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
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
351 libraries come with catalog files by default, so leaving this on is a
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
352 usually a good idea.."
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
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
357 "*Seconds of idle time before routine info is automatically initialized.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
358 Initializing the routine info can take long, in particular if a large
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
359 library catalog is involved. When Emacs is idle for more than the number
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
360 of seconds specified by this variable, it starts the initialization.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
361 The process is split into five steps, in order to keep possible work
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
362 interruption as short as possible. If one of the steps finishes, and no
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
363 user input has arrived in the mean time, initialization proceeds immediately
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
364 to the next step.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
365 A good value for this variable is about 1/3 of the time initialization
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
366 take in you setup. So if you have a fast machine and no problems with a slow network connection, don't hesitate to set this to 2 seconds.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
367 A Value of 0 means, don't initialize automatically."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
368 :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
369 :type 'number)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
370
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
371 (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
372 "*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
373 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
374 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
375
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
376 nil 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
377 t Scan all idlwave-mode buffers in the current editing session.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
378 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
379 :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
380 :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
381 (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
382 (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
383 (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
384
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
385 (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
386 "*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
387 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
388 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
389 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
390 :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
391 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
392
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
393 (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
394 '(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
395 "*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
396 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
397 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
398 t All available
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
399 \(...) 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
400 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
401 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
402 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
403 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
404 :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
405 :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
406 (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
407 (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
408 (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
409 (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
410 (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
411 (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
412 (const :tag "After a buffer was compiled successfully, update shell info" compile-buffer))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
413
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
414 (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
415 "*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
416 When an integer, it is the maximum number of source files displayed.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
417 t means to show all source files."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
418 :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
419 :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
420
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
421 (defcustom idlwave-library-path nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
422 "Library path for Windows and MacOS. Not needed under Unix. When
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
423 selecting the directories to scan for IDL user catalog routine info,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
424 IDLWAVE can, under UNIX, query the shell for the exact search path
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
425 \(the value of !PATH). However, under Windows and MacOS (pre-OSX),
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
426 the IDLWAVE shell does not work. In this case, this variable can be
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
427 set to specify the paths where IDLWAVE can find PRO files. The shell
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
428 will only be asked for a list of paths when this variable is nil. The
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
429 value is a list of directories. A directory preceeded by a `+' will
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
430 be searched recursively. If you set this variable on a UNIX system,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
431 the shell will not be queried. See also `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
432 :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
433 :type '(repeat (directory)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
434
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 (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
436 "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
437 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
438 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
439 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
440 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
441 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
442 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
443 :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
444 :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
445
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
446 (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
447 (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
448 "*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
449 :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
450 :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
451
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
452 (defvar idlwave-user-catalog-file "idlusercat.el")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
453 (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
454
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
455 (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
456 "*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
457
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
458 (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
459 "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
460 When listing routine source locations, IDLWAVE gives a short hint where
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
461 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
462 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
463 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
464 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
465 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
466 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
467 :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
468 :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
469 (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
470
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
471 (defcustom idlwave-auto-write-paths t
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
472 "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
473 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
474 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
475 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
476 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
477 :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
478 :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
479
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
480 (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
481 "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
482 :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
483 :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
484
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
485 (eval-and-compile
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
486 (defconst idlwave-tmp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
487 '(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
488 (const upcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
489 (const downcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
490 (const capitalize)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
491 (const preserve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
492 (symbol :tag "Other"))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
493
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
494 (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
495 (keyword . upcase)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
496 (class . preserve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
497 (method . preserve))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
498 "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
499
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
500 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
501 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
502 be specified separately for routine names, keywords, classes and
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
503 methods.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
504 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
505 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
506 `method'. Plausible values are
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
507
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
508 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
509 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
510 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
511 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
512
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
513 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
514 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
515
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
516 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
517 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
518 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
519 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
520 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
521 `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
522 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
523 *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
524 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
525
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
526 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
527 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
528
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
529 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
530 `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
531 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
532 :type `(repeat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
533 (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
534 ,idlwave-tmp)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
535
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
536 (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
537 "*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
538 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
539 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
540 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
541 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
542 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
543 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
544
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
545 (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
546 "*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
547 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
548 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
549 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
550 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
551 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
552 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
553
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
554 (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
555 "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
556 `idlwave-completion-case'.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
557
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
558 (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
559 "*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
560 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
561 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
562 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
563 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
564 :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
565 :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
566
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
567 (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
568 "*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
569 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
570 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
571 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
572 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
573
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
574 (defcustom idlwave-support-inheritance t
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
575 "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
576 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
577 not about inherited ones."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
578 :group 'idlwave-routine-info
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
579 :type 'boolean)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
580
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
581 (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
582 "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
583 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
584 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
585 _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
586 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
587 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
588 :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
589 :type '(repeat (regexp :tag "Match method:")))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
590
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
591
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
592 (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
593 "*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
594 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
595 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
596 like this:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
597
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
598 MyMethod <Class1,Class2,Class3>
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
599
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
600 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
601 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
602
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
603 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
604 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
605 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
606 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
607 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
608 :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
609 (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
610
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
611 (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
612 "*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
613 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
614 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
615 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
616 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
617
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
618 (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
619 (keyword-default . nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
620 "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
621
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
622 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
623 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
624 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
625 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
626 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
627 `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
628
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
629 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
630 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
631 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
632 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
633 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
634 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
635 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
636 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
637 `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
638
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
639 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
640 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
641 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
642 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
643 - 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
644 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
645 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
646 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
647
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
648 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
649 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
650 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
651 \(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
652 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
653 completion, respectively.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
654
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
655 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
656 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
657 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
658 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
659 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
660 :type '(list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
661 (cons (const method-default)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
662 (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
663 (cons (const keyword-default)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
664 (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
665 (repeat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
666 :tag "Exceptions to defaults"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
667 :inline t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
668 (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
669 (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
670
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
671 (defcustom idlwave-store-inquired-class nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
672 "*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
673 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
674 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
675 `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
676 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
677
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
678 When you specify a class, this information can be stored as a text
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
679 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
680 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
681 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
682 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
683 on the arrow.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
684
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
685 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
686 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
687 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
688
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
689 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
690 `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
691 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
692 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
693 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
694 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
695
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
696 (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
697 "*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
698 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
699 \(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
700 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
701 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
702 :type 'symbol)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
703
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
704 (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
705 "*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
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 'boolean)
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-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
710 "*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
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-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
715 "*Non-nil means, completion automatically adds `(' after completed function.
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41739
diff changeset
716 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
717 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
718 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
719 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
720 :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
721 (const :tag "(" t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
722 (const :tag "()" 2)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
723
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
724 (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
725 "*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
726 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
727 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
728 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
729 :group 'idlwave-completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
730 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
731
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
732 ;;; 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
733
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
734 (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
735 "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
736 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
737 :group 'idlwave)
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 (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
740 "*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
741 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
742 :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
743 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
744
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
745 (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
746 "*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
747 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
748 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
749 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
750
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
751 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
752 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
753 is loaded."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
754 :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
755 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
756
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
757 (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
758 "*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
759 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
760 `idlwave-surround'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
761 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
762
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
763 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
764 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
765 `idlwave-action-and-binding'.
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-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
767
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
768 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
769 :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
770 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
771
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
772 (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
773 "*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
774 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
775 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
776 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
777 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
778 :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
779 :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
780 (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
781 (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
782 (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
783
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
784 (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
785 "*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
786 :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
787 :type 'boolean)
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-expand-generic-end nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
790 "*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
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
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
794 (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
795 "*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
796 :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
797 :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
798
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
799 (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
800 "*Non-nil means the abbrev hook can move point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
801 Set to nil by `idlwave-expand-region-abbrevs'. To see the abbrev
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
802 definitions, use the command `list-abbrevs', for abbrevs that move
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
803 point. Moving point is useful, for example, to place point between
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
804 parentheses of expanded functions.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
805
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
806 See `idlwave-check-abbrev'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
807 :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
808 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
809
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
810 (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
811 "*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
812 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
813 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
814 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
815 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
816 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
817 :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
818 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
819
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
820 (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
821 "*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
822 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
823 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
824 :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
825 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
826
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
827 ;;; Action/Expand Tables.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
828 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
829 ;; 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
830 ;; 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
831 ;; 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
832 ;; 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
833 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
834 ;; 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
835 ;; 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
836 ;; 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
837 ;; 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
838 ;; 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
839 ;; 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
840 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
841 ;; Example actions:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
842 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
843 ;; Capitalize system vars
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
844 ;; (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
845 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
846 ;; Capitalize procedure name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
847 ;; (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
848 ;; '(capitalize-word 1) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
849 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
850 ;; Capitalize common block name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
851 ;; (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
852 ;; '(capitalize-word 1) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
853 ;; Capitalize label
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
854 ;; (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
855 ;; '(capitalize-word -1) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
856
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
857 (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
858 "*Associated array containing action lists of search string (car),
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
859 and function as a cdr. This table is used by `idlwave-indent-line'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
860 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
861 the action lists.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
862
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
863 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
864 binding is not requested.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
865 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
866
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
867 (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
868 "*Associated array containing action lists of search string (car),
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
869 and function as a cdr. The table is used by the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
870 `idlwave-indent-and-action' function. See documentation for
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
871 `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
872
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
873 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
874 binding is requested.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
875 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
876
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
877 ;;; 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
878
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
879 (defgroup idlwave-documentation nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
880 "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
881 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
882
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
883 ;; FIXME: make defcustom?
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
884 (defvar idlwave-file-header
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
885 (list nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
886 ";+
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
887 ; NAME:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
888 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
889 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
890 ;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
891 ; PURPOSE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
892 ;
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 ; CATEGORY:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
896 ;
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 ; CALLING SEQUENCE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
900 ;
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 ; INPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
904 ;
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 ; OPTIONAL INPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
908 ;
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 ; KEYWORD PARAMETERS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
912 ;
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 ; OUTPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
916 ;
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 ; OPTIONAL OUTPUTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
920 ;
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 ; COMMON BLOCKS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
924 ;
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 ; SIDE EFFECTS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
928 ;
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 ; RESTRICTIONS:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
932 ;
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 ; PROCEDURE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
936 ;
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 ; EXAMPLE:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
940 ;
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 ; MODIFICATION HISTORY:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
944 ;
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 "*A list (PATHNAME STRING) specifying the doc-header template to use for
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
948 summarizing a file. If PATHNAME is non-nil then this file will be included.
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41739
diff changeset
949 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
950 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
951 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
952
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
953 (defcustom idlwave-header-to-beginning-of-file nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
954 "*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
955 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
956 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
957 a file."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
958 :group 'idlwave-documentation
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
959 :type 'boolean)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
960
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
961 (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
962 "*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
963 :group 'idlwave-documentation
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
964 :type 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
965
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
966 (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
967 "*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
968 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
969 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
970 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
971 :group 'idlwave-documentation
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
972 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
973
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
974 (defcustom idlwave-doclib-start "^;+\\+"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
975 "*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
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 'regexp)
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-end "^;+-"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
980 "*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
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 ;;; External Programs -------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
985
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
986 (defgroup idlwave-external-programs nil
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
987 "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
988 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
989
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
990 ;; WARNING: The following variable has recently been moved from
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
991 ;; idlw-shell.el to this file. I hope this does not break
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
992 ;; anything.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
993
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
994 (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
995 "*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
996 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
997 execution search path. If you want to specify command line switches
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
998 for the idl program, use `idlwave-shell-command-line-options'.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
999
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1000 I know the name of this variable is badly chosen, but I cannot change
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1001 it without compromizing backwards-compatibility."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1002 :group 'idlwave-external-programs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1003 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1004
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1005 (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
1006 "*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
1007 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
1008 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
1009 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
1010 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
1011 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
1012 :type '(choice
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1013 string
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1014 (repeat (string :value "")))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1015 :group 'idlwave-external-programs)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1016
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1017 (defcustom idlwave-help-application "idlhelp"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1018 "*The external application providing reference help for programming."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1019 :group 'idlwave-external-programs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1020 :type 'string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1021
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1022 ;;; 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
1023
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1024 (defcustom idlwave-shell-debug-modifiers '()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1025 "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
1026 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
1027 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
1028 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
1029 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
1030 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
1031 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
1032 :group 'idlwave-shell-general-setup
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1033 :type '(set :tag "Specify modifiers"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1034 (const control)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1035 (const meta)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1036 (const super)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1037 (const hyper)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1038 (const alt)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1039 (const shift)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1040
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1041 (defcustom idlwave-shell-automatic-start nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1042 "*If non-nil attempt invoke idlwave-shell if not already running.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1043 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
1044 IDL process is made."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1045 :group 'idlwave-shell-general-setup
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1046 :type 'boolean)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1047
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1048 ;;; Miscellaneous variables -------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1049
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1050 (defgroup idlwave-misc nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1051 "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
1052 :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
1053 :group 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1054
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1055 (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
1056 "*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
1057 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1058 :type 'boolean)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1059
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1060 (defcustom idlwave-default-font-lock-items
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1061 '(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
1062 common-blocks class-arrows)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1063 "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
1064 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
1065 is everything and level 2 is specified by this list.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1066 This variable must be set before IDLWAVE gets loaded. It is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1067 a list of symbols, the following symbols are allowed.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1068
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1069 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
1070 batch-files Batch Files
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1071 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
1072 label Statement Labels
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1073 goto Goto Statements
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1074 common-blocks Common Blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1075 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
1076 system-variables System Variables
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1077 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
1078 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
1079 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1080 :type '(set
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1081 :inline t :greedy t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1082 (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
1083 (const :tag "Batch Files" batch-files)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1084 (const :tag "IDL Keywords (reserved words)" idlwave-idl-keywords)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1085 (const :tag "Statement Labels" label)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1086 (const :tag "Goto Statements" goto)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1087 (const :tag "Tags in Structure Definition" structtag)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1088 (const :tag "Structure Name" structname)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1089 (const :tag "Common Blocks" common-blocks)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1090 (const :tag "Keyword Parameters" keyword-parameters)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1091 (const :tag "System Variables" system-variables)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1092 (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
1093 (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
1094
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1095 (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
1096 "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
1097 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1098 :type 'hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1099
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1100 (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
1101 "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
1102 :group 'idlwave-misc
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1103 :type 'hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1104
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1105 (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
1106 "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
1107 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
1108 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
1109 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
1110
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1111 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1112 ;;; End customization variables section
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1115 ;;; Non customization variables
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 ;;; 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
1118 ;;; 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
1119 ;;; and Carsten Dominik...
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1120
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1121 ;; The following are the reserved words in IDL. Maybe we should
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1122 ;; 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
1123 ;; 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
1124 (defvar idlwave-idl-keywords
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1125 ;; 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
1126 ;; evaluate the form.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1127 ;; (insert
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1128 ;; (prin1-to-string
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1129 ;; (concat
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1130 ;; "\\<\\("
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1131 ;; (regexp-opt
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1132 ;; '("||" "&&" "and" "or" "xor" "not"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1133 ;; "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
1134 ;; "for" "do" "endfor"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1135 ;; "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
1136 ;; "case" "of" "endcase"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1137 ;; "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
1138 ;; "begin" "end"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1139 ;; "repeat" "until" "endrep"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1140 ;; "while" "endwhile"
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1141 ;; "goto" "return"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1142 ;; "inherits" "mod"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1143 ;; "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
1144 ;; "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
1145 ;; "\\)\\>")))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1146 "\\<\\(&&\\|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
1147
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1148
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1149 (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
1150 ;; 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
1151 (pros-and-functions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1152 '("\\<\\(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
1153 (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
1154 (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
1155
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1156 ;; Common blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1157 (common-blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1158 '("\\<\\(common\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*,?"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1159 (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
1160 (2 font-lock-reference-face nil t) ; block name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1161 (font-lock-match-c++-style-declaration-item-and-skip-to-next
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1162 ;; Start with point after block name and comma
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1163 (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
1164 nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1165 (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
1166 )))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1167
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1168 ;; Batch files
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1169 (batch-files
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1170 '("^[ \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
1171
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1172 ;; FIXME warning.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1173 (fixme
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1174 '("\\<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
1175
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1176 ;; Labels
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1177 (label
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1178 '("^[ \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
1179
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1180 ;; 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
1181 (goto
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1182 '("\\(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
1183 (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
1184 (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
1185
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1186 ;; 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
1187 ;; 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
1188 ;; 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
1189 ;; 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
1190 (structtag
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1191 '("\\<\\([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
1192
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1193 ;; Structure names
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1194 (structname
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1195 '("\\({\\|\\<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
1196 (2 font-lock-function-name-face)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1197
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1198 ;; 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
1199 ;; 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
1200 ;; 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
1201 ;; 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
1202 (keyword-parameters
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1203 '("\\(,\\|[a-zA-Z0-9_](\\)[ \t]*\\(\\$[ \t]*\\(;.*\\)?\\(\n[ \t]*;.*\\)*\n[ \t]*\\)?\\(/[a-zA-Z_]\\sw*\\|[a-zA-Z_]\\sw*[ \t]*=\\)"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1204 (5 font-lock-reference-face)))
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1205
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1206 ;; 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
1207 (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
1208 '("\\(![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
1209 (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
1210
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1211 ;; Special and unusual operators (not used because too noisy)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1212 (special-operators
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1213 '("[<>#]" (0 font-lock-keyword-face)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1214
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1215 ;; All operators (not used because too noisy)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1216 (all-operators
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1217 '("[-*^#+<>/]" (0 font-lock-keyword-face)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1218
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1219 ;; 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
1220 (class-arrows
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1221 '(idlwave-match-class-arrows (0 idlwave-class-arrow-face))))
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1222
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1223 (defconst idlwave-font-lock-keywords-1
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1224 (list pros-and-functions batch-files)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1225 "Subdued level highlighting for IDLWAVE mode.")
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1226
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1227 (defconst idlwave-font-lock-keywords-2
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1228 (mapcar 'symbol-value idlwave-default-font-lock-items)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1229 "Medium level highlighting for IDLWAVE mode.")
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1230
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1231 (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
1232 (list pros-and-functions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1233 batch-files
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1234 idlwave-idl-keywords
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1235 label goto
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1236 structtag
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1237 structname
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1238 common-blocks
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1239 keyword-parameters
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1240 system-variables
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1241 class-arrows)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
1242 "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
1243
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1244 (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
1245 ;; 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
1246 (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
1247 (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
1248 (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
1249
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1250 (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
1251 "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
1252
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1253 (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
1254 '((idlwave-font-lock-keywords
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1255 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
1256 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
1257 idlwave-font-lock-keywords-3)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1258 nil t
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1259 ((?$ . "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
1260 beginning-of-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1261
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1262 (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
1263 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
1264
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1265 (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
1266 "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
1267 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
1268 only by whitespace.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1269
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1270 (defconst idlwave-begin-block-reg
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1271 "\\<\\(pro\\|function\\|begin\\|case\\|switch\\)\\>"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1272 "Regular expression to find the beginning of a block. The case does
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1273 not matter. The search skips matches in comments.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1274
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1275 (defconst idlwave-begin-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
1276 "Regular expression to find the beginning of a unit. The case does
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1277 not matter.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1278
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1279 (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
1280 "Regular expression to find the line that indicates the end of unit.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1281 This line is the end of buffer or the start of another unit. The case does
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1282 not matter. The search skips matches in comments.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1283
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1284 (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
1285 "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
1286
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1287 (defconst idlwave-end-block-reg
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1288 "\\<end\\(\\|case\\|switch\\|else\\|for\\|if\\|rep\\|while\\)\\>"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1289 "Regular expression to find the end of a block. The case does
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1290 not matter. The search skips matches found in comments.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1291
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1292 (defconst idlwave-block-matches
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1293 '(("pro" . "end")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1294 ("function" . "end")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1295 ("case" . "endcase")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1296 ("else" . "endelse")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1297 ("for" . "endfor")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1298 ("then" . "endif")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1299 ("repeat" . "endrep")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1300 ("switch" . "endswitch")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1301 ("while" . "endwhile"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1302 "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
1303 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
1304 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
1305 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
1306 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
1307 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
1308
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1309 (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
1310 "\\<\\(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
1311 "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
1312 blocks starting with a BEGIN statement. The matches must have associations
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1313 `idlwave-block-matches'")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1314
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1315 (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
1316 "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
1317
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1318 (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
1319 "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
1320
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1321 (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
1322 "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
1323
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1324 (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
1325 "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
1326
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1327 (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
1328 "\\(\\s *" idlwave-identifier "::\\)?"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1329 ))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1330
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1331 (defconst idlwave-statement-match
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1332 (list
45318
b80d723ad7cc Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 43351
diff changeset
1333 ;; "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
1334 ;; 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
1335 '(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
1336 ;; 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
1337 (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
1338 '(if . ("if\\>" "then"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1339 '(for . ("for\\>" "do"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1340 '(begin . ("begin\\>" nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1341 '(pdef . ("pro\\>\\|function\\>" nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1342 '(while . ("while\\>" "do"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1343 '(repeat . ("repeat\\>" "repeat"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1344 '(goto . ("goto\\>" nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1345 '(case . ("case\\>" nil))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1346 '(switch . ("switch\\>" nil))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1347 (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
1348 "\\(" 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
1349 idlwave-identifier
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1350 "\\s *(") nil))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1351 (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
1352 "\\(" idlwave-method-call "\\s *\\)?"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1353 idlwave-identifier
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1354 "\\( *\\($\\|\\$\\)\\|\\s *,\\)") nil))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1355 (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
1356 "\\(" idlwave-variable "\\) *=") nil)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1357
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1358 "Associated list of statement matching regular expressions.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1359 Each regular expression matches the start of an IDL statement. The
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1360 first element of each association is a symbol giving the statement
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1361 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
1362 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
1363 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
1364 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
1365 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
1366 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
1367 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
1368 not possible without parsing. Thus assignment statement become just
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1369 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
1370
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1371 (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
1372 "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
1373
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1374 (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
1375 "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
1376
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1377 ;; 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
1378 ;; 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
1379 ;; The code in this file accepts either format for compatibility.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1380 (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
1381 "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
1382 Normally a space.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1383
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1384 (defconst idlwave-continuation-char ?$
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1385 "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
1386 \\[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
1387
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1388 (defconst idlwave-mode-version "5.7_22")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1389
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1390 (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
1391 "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
1392 `(quote (lambda ()
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1393 ,(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
1394
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1395 ;; 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
1396 ;; 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
1397 ;; 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
1398 ;; (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
1399 ;; 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
1400
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1401 (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
1402 "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
1403 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
1404 Otherwise ARGS forms a list that is evaluated."
41608
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 38436
diff changeset
1405 `(quote (lambda ()
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1406 ,(prin1-to-string args) ;; Puts the code in the doc string
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1407 (if (idlwave-quoted)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1408 (progn (unexpand-abbrev) nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1409 ,(append args)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1410
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1411 (defvar idlwave-mode-map (make-sparse-keymap)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1412 "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
1413
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1414 (defvar idlwave-mode-syntax-table (make-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1415 "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
1416
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1417 (modify-syntax-entry ?+ "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1418 (modify-syntax-entry ?- "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1419 (modify-syntax-entry ?* "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1420 (modify-syntax-entry ?/ "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1421 (modify-syntax-entry ?^ "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1422 (modify-syntax-entry ?# "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1423 (modify-syntax-entry ?= "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1424 (modify-syntax-entry ?% "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1425 (modify-syntax-entry ?< "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1426 (modify-syntax-entry ?> "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1427 (modify-syntax-entry ?\' "\"" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1428 (modify-syntax-entry ?\" "\"" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1429 (modify-syntax-entry ?\\ "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1430 (modify-syntax-entry ?_ "_" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1431 (modify-syntax-entry ?{ "(}" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1432 (modify-syntax-entry ?} "){" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1433 (modify-syntax-entry ?$ "_" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1434 (modify-syntax-entry ?. "." idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1435 (modify-syntax-entry ?\; "<" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1436 (modify-syntax-entry ?\n ">" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1437 (modify-syntax-entry ?\f ">" idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1438
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1439 (defvar idlwave-find-symbol-syntax-table
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1440 (copy-syntax-table idlwave-mode-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1441 "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
1442
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1443 (modify-syntax-entry ?$ "w" idlwave-find-symbol-syntax-table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1444 (modify-syntax-entry ?_ "w" idlwave-find-symbol-syntax-table)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1445 (modify-syntax-entry ?! "w" 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
1446 (modify-syntax-entry ?. "w" idlwave-find-symbol-syntax-table)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1447
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1448 (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
1449 "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
1450 `(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
1451 (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
1452 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1453 (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
1454 ,@body)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1455 (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
1456
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1457 ;(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
1458 ; "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
1459 ; `(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
1460 ; (unwind-protect
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1461 ; (progn
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1462 ; (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
1463 ; ,@body)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1464 ; (set-syntax-table saved-syntax))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1465
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1466 (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
1467 "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
1468 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
1469 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
1470 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
1471 `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
1472 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
1473
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1474 \(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
1475 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
1476 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
1477
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1478 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
1479 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
1480 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
1481 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
1482 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
1483
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1484 Some examples:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1485 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
1486 (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
1487 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
1488 (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
1489 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
1490 (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
1491 (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
1492 ;; Add action
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1493 (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
1494 '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
1495 (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
1496 (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
1497 (if cell
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1498 ;; Replace action command
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1499 (setcdr cell cmd)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1500 ;; 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
1501 (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
1502 ;; 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
1503 (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
1504 (equal select 'noaction)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1505 (equal select 'both))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1506 (define-key idlwave-mode-map key
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1507 (append '(lambda ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1508 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1509 (self-insert-command 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1510 (list (if (listp cmd)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1511 cmd
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1512 (list cmd)))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1513
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1514 (fset 'idlwave-debug-map (make-sparse-keymap))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1515
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1516 (define-key idlwave-mode-map "\C-c " 'idlwave-hard-tab)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1517 (define-key idlwave-mode-map [(control tab)] 'idlwave-hard-tab)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
1518 ;(define-key idlwave-mode-map "\C-c\C- " 'idlwave-hard-tab)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1519 (define-key idlwave-mode-map "'" 'idlwave-show-matching-quote)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1520 (define-key idlwave-mode-map "\"" 'idlwave-show-matching-quote)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1521 (define-key idlwave-mode-map "\C-g" 'idlwave-keyboard-quit)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1522 (define-key idlwave-mode-map "\C-c;" 'idlwave-toggle-comment-region)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1523 (define-key idlwave-mode-map "\C-\M-a" 'idlwave-beginning-of-subprogram)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1524 (define-key idlwave-mode-map "\C-\M-e" 'idlwave-end-of-subprogram)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1525 (define-key idlwave-mode-map "\C-c{" 'idlwave-beginning-of-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1526 (define-key idlwave-mode-map "\C-c}" 'idlwave-end-of-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1527 (define-key idlwave-mode-map "\C-c]" 'idlwave-close-block)
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1528 (define-key idlwave-mode-map [(meta control h)] 'idlwave-mark-subprogram)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1529 (define-key idlwave-mode-map "\M-\C-n" 'idlwave-forward-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1530 (define-key idlwave-mode-map "\M-\C-p" 'idlwave-backward-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1531 (define-key idlwave-mode-map "\M-\C-d" 'idlwave-down-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1532 (define-key idlwave-mode-map "\M-\C-u" 'idlwave-backward-up-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1533 (define-key idlwave-mode-map "\M-\r" 'idlwave-split-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1534 (define-key idlwave-mode-map "\M-\C-q" 'idlwave-indent-subprogram)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1535 (define-key idlwave-mode-map "\C-c\C-p" 'idlwave-previous-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1536 (define-key idlwave-mode-map "\C-c\C-n" 'idlwave-next-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1537 ;; (define-key idlwave-mode-map "\r" 'idlwave-newline)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1538 ;; (define-key idlwave-mode-map "\t" 'idlwave-indent-line)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1539 (define-key idlwave-mode-map [(shift tab)] 'idlwave-indent-statement)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1540 (define-key idlwave-mode-map "\C-c\C-a" 'idlwave-auto-fill-mode)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1541 (define-key idlwave-mode-map "\M-q" 'idlwave-fill-paragraph)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1542 (define-key idlwave-mode-map "\M-s" 'idlwave-edit-in-idlde)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1543 (define-key idlwave-mode-map "\C-c\C-h" 'idlwave-doc-header)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1544 (define-key idlwave-mode-map "\C-c\C-m" 'idlwave-doc-modification)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1545 (define-key idlwave-mode-map "\C-c\C-c" 'idlwave-case)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1546 (define-key idlwave-mode-map "\C-c\C-d" 'idlwave-debug-map)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1547 (when (and (boundp 'idlwave-shell-debug-modifiers)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1548 (listp idlwave-shell-debug-modifiers)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1549 (not (equal idlwave-shell-debug-modifiers '())))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1550 ;; Bind the debug commands also with the special modifiers.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1551 (let ((shift (memq 'shift idlwave-shell-debug-modifiers))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1552 (mods-noshift (delq 'shift
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1553 (copy-sequence idlwave-shell-debug-modifiers))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1554 (define-key idlwave-mode-map
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1555 (vector (append mods-noshift (list (if shift ?C ?c))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1556 'idlwave-shell-save-and-run)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1557 (define-key idlwave-mode-map
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1558 (vector (append mods-noshift (list (if shift ?B ?b))))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1559 'idlwave-shell-break-here)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1560 (define-key idlwave-mode-map
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1561 (vector (append mods-noshift (list (if shift ?E ?e))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1562 'idlwave-shell-run-region)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1563 (define-key idlwave-mode-map "\C-c\C-d\C-c" 'idlwave-shell-save-and-run)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1564 (define-key idlwave-mode-map "\C-c\C-d\C-b" 'idlwave-shell-break-here)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1565 (define-key idlwave-mode-map "\C-c\C-d\C-e" 'idlwave-shell-run-region)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1566 (define-key idlwave-mode-map "\C-c\C-f" 'idlwave-for)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1567 ;; (define-key idlwave-mode-map "\C-c\C-f" 'idlwave-function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1568 ;; (define-key idlwave-mode-map "\C-c\C-p" 'idlwave-procedure)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1569 (define-key idlwave-mode-map "\C-c\C-r" 'idlwave-repeat)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1570 (define-key idlwave-mode-map "\C-c\C-w" 'idlwave-while)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1571 (define-key idlwave-mode-map "\C-c\C-k" 'idlwave-kill-autoloaded-buffers)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1572 (define-key idlwave-mode-map "\C-c\C-s" 'idlwave-shell)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1573 (define-key idlwave-mode-map "\C-c\C-l" 'idlwave-shell-recenter-shell-window)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1574 (define-key idlwave-mode-map "\C-c\C-b" 'idlwave-list-buffer-load-path-shadows)
27185
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
1575 (autoload 'idlwave-shell "idlw-shell"
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
1576 "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'." t)
27107
7b2b73f13427 Renamed idlwave-*.el into idlw-*.el.
Eli Zaretskii <eliz@gnu.org>
parents: 26956
diff changeset
1577 (autoload 'idlwave-shell-send-command "idlw-shell")
7b2b73f13427 Renamed idlwave-*.el into idlw-*.el.
Eli Zaretskii <eliz@gnu.org>
parents: 26956
diff changeset
1578 (autoload 'idlwave-shell-recenter-shell-window "idlw-shell"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1579 "Run `idlwave-shell' and switch back to current window" t)
27107
7b2b73f13427 Renamed idlwave-*.el into idlw-*.el.
Eli Zaretskii <eliz@gnu.org>
parents: 26956
diff changeset
1580 (autoload 'idlwave-shell-save-and-run "idlw-shell"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1581 "Save and run buffer under the shell." 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
1582 (autoload 'idlwave-shell-break-here "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
1583 "Set breakpoint in current line." t)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1584 (autoload 'idlwave-shell-run-region "idlw-shell"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1585 "Compile and run the region." t)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1586 (define-key idlwave-mode-map "\C-c\C-v" 'idlwave-find-module)
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1587 (define-key idlwave-mode-map "\C-c\C-t" 'idlwave-find-module-this-file)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1588 (define-key idlwave-mode-map "\C-c?" '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
1589 (define-key idlwave-mode-map "\M-?" 'idlwave-context-help)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
1590 (define-key idlwave-mode-map [(control meta ?\?)] 'idlwave-online-help)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1591 ;; Pickup both forms of Esc/Meta binding
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1592 (define-key idlwave-mode-map [(meta tab)] 'idlwave-complete)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1593 (define-key idlwave-mode-map [?\e?\t] 'idlwave-complete)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1594 (define-key idlwave-mode-map "\M-\C-i" 'idlwave-complete)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1595 (define-key idlwave-mode-map "\C-c\C-i" 'idlwave-update-routine-info)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1596 (define-key idlwave-mode-map "\C-c=" 'idlwave-resolve)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1597 (define-key idlwave-mode-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
1598 (if (featurep 'xemacs) [(shift button3)] [(shift 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
1599 'idlwave-mouse-context-help)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1600
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1601 ;; 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
1602 ;; 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
1603 ;; Automatically add spaces for the following characters
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1604 ;(idlwave-action-and-binding "&" '(idlwave-surround -1 -1 '(?&) 1
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1605 ; (lambda (char) 0)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1606 (idlwave-action-and-binding "<" '(idlwave-surround -1 -1))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1607 ;; Binding works for both > and ->, by changing the length of the token.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1608 (idlwave-action-and-binding ">" '(idlwave-surround -1 -1 '(?-) 1
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1609 'idlwave-gtr-pad-hook))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1610 (idlwave-action-and-binding "->" '(idlwave-surround -1 -1 nil 2) t)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1611 (idlwave-action-and-binding "," '(idlwave-surround 0 -1))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1612
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1613 ;; Automatically add spaces to equal sign if not keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1614 (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
1615
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1616 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1617 ;;; Abbrev Section
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1618 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1619 ;;; 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
1620 ;;; 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
1621 ;;; the abbrev).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1622 ;;;
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1623 (defvar idlwave-mode-abbrev-table nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1624 "Abbreviation table used for IDLWAVE mode")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1625 (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
1626
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1627 (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
1628 "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
1629
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1630 If NOPREFIX is non-nil, don't prepend prefix character. Installs into
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1631 idlwave-mode-abbrev-table unless TABLE is non-nil."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1632 (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
1633 (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
1634 (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
1635 expansion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1636 hook)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1637 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1638 (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
1639 (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
1640
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1641 (condition-case nil
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1642 (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
1643 "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
1644 (error nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1645
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1646 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1647 ;; Templates
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1648 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1649 (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
1650 (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
1651 (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
1652 (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
1653 (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
1654 (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
1655 (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
1656 (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
1657 (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
1658 ;;
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1659 ;; 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
1660 ;;
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 "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
1662 (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
1663 (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
1664 (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
1665 (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
1666 (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
1667 (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
1668 (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
1669 (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
1670 (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
1671 (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
1672 (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
1673 (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
1674 (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
1675 (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
1676 (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
1677 (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
1678 (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
1679 (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
1680 (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
1681 (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
1682 (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
1683 (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
1684 (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
1685 (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
1686 (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
1687 (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
1688 (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
1689 (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
1690 (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
1691 (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
1692 (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
1693 (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
1694 (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
1695 (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
1696 (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
1697 (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
1698 (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
1699 (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
1700 (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
1701 (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
1702 (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
1703 (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
1704 (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
1705 (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
1706 (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
1707 (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
1708 (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
1709 (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
1710 (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
1711 (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
1712 (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
1713 (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
1714 (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
1715 (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
1716 (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
1717
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1718 ;; 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
1719 ;;
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 "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
1721 (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
1722 (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
1723 (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
1724 (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
1725 (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
1726 (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
1727 (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
1728 (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
1729 (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
1730 (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
1731 (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
1732 (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
1733 (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
1734 (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
1735 (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
1736 (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
1737 (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
1738 (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
1739 (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
1740 (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
1741 (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
1742 (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
1743 (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
1744 (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
1745 (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
1746 (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
1747 (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
1748 (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
1749 (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
1750 (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
1751 (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
1752 (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
1753 (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
1754 (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
1755 (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
1756 (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
1757 (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
1758 (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
1759
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1760 (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
1761 (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
1762 (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
1763 (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
1764 (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
1765 ;; defined later - so just make the compiler hush
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1766 (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
1767 (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
1768
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1769 ;;;###autoload
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1770 (defun idlwave-mode ()
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
1771 "Major mode for editing IDL source files (version 5.7_22).
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1772
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1773 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
1774
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1775 1. Indentation and Formatting
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1776 --------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1777 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
1778 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
1779
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1780 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
1781 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
1782 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
1783 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
1784
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1785 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
1786
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1787 `;;;' Indentation remains unchanged.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1788 `;;' 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
1789 `;' 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
1790
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1791 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
1792
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1793 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
1794 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
1795 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
1796 \\[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
1797 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
1798 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
1799
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1800 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
1801 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
1802 \\[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
1803 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
1804
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1805 2. Routine Info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1806 ------------
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1807 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
1808 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
1809 \\[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
1810 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
1811 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
1812 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
1813 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
1814 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
1815 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
1816 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
1817
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1818 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
1819 ---------------
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1820 \\[idlwave-context-help] displays the IDL documentation relevant
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1821 for the system variable, keyword, or routine at point. A single
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1822 key stroke gets you directly to the right place in the docs. The
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1823 HTML help files package must be installed for this to work -- check
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1824 the IDLWAVE webpage for the correct package for your version. See
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1825 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
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 4. Completion
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1828 ----------
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1829 \\[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
1830 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
1831 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
1832 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
1833 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
1834 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
1835
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1836 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
1837 --------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1838 Many Abbreviations are predefined to expand to code fragments and templates.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1839 The abbreviations start generally with a `\\`. Some examples
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1840
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1841 \\pr PROCEDURE template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1842 \\fu FUNCTION template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1843 \\c CASE statement template
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
1844 \\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
1845 \\f FOR loop template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1846 \\r REPEAT Loop template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1847 \\w WHILE loop template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1848 \\i IF statement template
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1849 \\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
1850 \\b BEGIN
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1851
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1852 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
1853 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
1854
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1855 \\[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
1856 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
1857 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
1858 \\[idlwave-doc-modification].
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1859
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1860 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
1861 -------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1862 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
1863 `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
1864
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1865 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
1866 ------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1867 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
1868 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
1869
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1870 8. Hooks
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1871 -----
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1872 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
1873 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
1874
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1875 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
1876 -------------------------------
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1877 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
1878 \\[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
1879 not work). For Postscript, PDF, and HTML versions of the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
1880 documentation, check IDLWAVE's homepage at `http://idlwave.org'.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1881 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
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 10.Keybindings
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1884 -----------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1885 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
1886 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
1887 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
1888
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1889 \\{idlwave-mode-map}"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1890
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1891 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1892 (kill-all-local-variables)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1893
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1894 (if idlwave-startup-message
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1895 (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
1896 (setq idlwave-startup-message nil)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1897
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1898 (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
1899 (set-syntax-table idlwave-mode-syntax-table)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1900
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1901 (set (make-local-variable 'indent-line-function) 'idlwave-indent-and-action)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1902
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1903 (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
1904 (set idlwave-comment-indent-function 'idlwave-comment-hook)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
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 (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
1907 (set (make-local-variable 'comment-start) ";")
59246
3689cf45d8b0 (idlwave-mode): Use mode-require-final-newline.
Richard M. Stallman <rms@gnu.org>
parents: 58981
diff changeset
1908 (set (make-local-variable 'require-final-newline) mode-require-final-newline)
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 'abbrev-all-caps) t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1910 (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
1911 (set (make-local-variable 'completion-ignore-case) t)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1912
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1913 (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
1914
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1915 (when (featurep 'easymenu)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1916 (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
1917 (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
1918
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1919 (setq mode-name "IDLWAVE")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1920 (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
1921 (setq abbrev-mode t)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1922
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1923 (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
1924 (setq comment-end "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1925 (set (make-local-variable 'comment-multi-line) nil)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1926 (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
1927 "[ \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
1928 (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
1929 (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
1930 (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
1931
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1932 ;; 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
1933 (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
1934 (add-to-list 'tag-table-alist '("\\.pro$" . "IDLTAGS")))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1935
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1936 ;; Font-lock additions - originally Phil Williams, then Ulrik Dickow
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1937 ;; 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
1938 ;; 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
1939 (set (make-local-variable 'font-lock-defaults) idlwave-font-lock-defaults)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1940
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1941 ;; Imenu setup
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1942 (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
1943 '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
1944 (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
1945 'idlwave-unit-name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1946 (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
1947 'idlwave-prev-index-position)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1948
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1949 ;; Make a local post-command-hook and add our hook 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
1950 (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
1951
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1952 ;; Make local hooks for buffer updates
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1953 (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update 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
1954 (add-hook 'after-save-hook 'idlwave-save-buffer-update 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
1955 (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
1956
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1957 ;; 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
1958 (idlwave-setup)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1959
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
1960 ;; 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
1961 (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
1962
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1963 ;; Run the mode hook
62772
f2892faa87d4 * progmodes/ada-mode.el (ada-mode):
Lute Kamstra <lute@gnu.org>
parents: 62575
diff changeset
1964 (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
1965
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1966 (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
1967 (defun idlwave-setup ()
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1968 (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
1969 (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
1970 (make-directory idlwave-config-directory))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1971 (setq idlwave-user-catalog-file (expand-file-name
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1972 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
1973 idlwave-config-directory)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1974 idlwave-path-file (expand-file-name
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1975 idlwave-path-file
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1976 idlwave-config-directory))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1977 (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
1978 (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
1979
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1980 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
1981 ;; Code Formatting ----------------------------------------------------
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
1982 ;;
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1983
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1984 (defun idlwave-push-mark (&rest rest)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1985 "Push mark for compatibility with Emacs 18/19."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1986 (if (fboundp 'iconify-frame)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1987 (apply 'push-mark rest)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1988 (push-mark)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1989
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1990 (defun idlwave-hard-tab ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1991 "Inserts TAB in buffer in current position."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1992 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1993 (insert "\t"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1994
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1995 ;;; This stuff is experimental
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1996
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
1997 (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
1998 "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
1999 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
2000 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
2001
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2002 (defun idlwave-command-hook ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2003 "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
2004 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
2005 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
2006 (and idlwave-command-hook
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2007 (listp idlwave-command-hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2008 (condition-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2009 (eval idlwave-command-hook)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2010 (error nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2011 (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
2012
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2013 ;;; End experiment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2014
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2015 ;; 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
2016 ;; versatility.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2017
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2018 (defun idlwave-check-abbrev (arg &optional reserved)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2019 "Reverses abbrev expansion if in comment or string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2020 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
2021 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
2022 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
2023 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
2024 `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
2025 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
2026 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
2027 made into all lowercase.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2028 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
2029 (if (idlwave-quoted)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2030 (progn (unexpand-abbrev)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2031 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2032 (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
2033 (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
2034 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2035 ((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
2036 (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
2037 (idlwave-abbrev-change-case
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2038 (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
2039 (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
2040 (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
2041 (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
2042 (backward-char arg)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2043 t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2044
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2045 (defun idlwave-in-comment ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2046 "Returns t if point is inside a comment, nil otherwise."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2047 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2048 (let ((here (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2049 (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
2050
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2051 (defun idlwave-goto-comment ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2052 "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
2053 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
2054 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
2055 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
2056 (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
2057 (data (match-data))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2058 found)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2059 ;; 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
2060 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2061 (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
2062 (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
2063 (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
2064 (store-match-data data)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2065 (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
2066 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2067 (backward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2068 (point)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2069
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2070 (defvar transient-mark-mode)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2071 (defvar zmacs-regions)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2072 (defvar mark-active)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2073 (defun idlwave-region-active-p ()
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2074 "Is transient-mark-mode on and the region active?
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2075 Works on both Emacs and XEmacs."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2076 (if (featurep 'xemacs)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2077 (and zmacs-regions (region-active-p))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2078 (and transient-mark-mode mark-active)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2079
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2080 (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
2081 "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
2082 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2083 (let ((bq (idlwave-in-quote))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2084 (inq last-command-char))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2085 (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
2086 (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
2087 (insert inq)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2088 (if (eq inq delim)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2089 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2090 (goto-char bq)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2091 (sit-for 1))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2092 ;; 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
2093 (insert inq))))
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-show-begin-check ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2096 "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
2097 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
2098 (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
2099 (if
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2100 (save-excursion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2101 (backward-word 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2102 (backward-char 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2103 (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
2104 (idlwave-show-begin))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2105
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2106 (defun idlwave-show-begin ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2107 "Finds the start of current block and blinks to it for a second.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2108 Also checks if the correct end statement has been used."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2109 ;; 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
2110 ;; 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
2111 ;;(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
2112 ;;(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
2113 (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
2114 (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
2115 (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
2116 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
2117 (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
2118 (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
2119 (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
2120 idlwave-show-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2121 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2122 ;; 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
2123 (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
2124 (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
2125 (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
2126 (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
2127 (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
2128 (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
2129 (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
2130 (goto-char end-pos)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2131 (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
2132 (progn
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2133 (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
2134 (point))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2135 end-pos))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2136 (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
2137 (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
2138 (cond
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2139 ((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
2140 ((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
2141 (sit-for 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2142 ((string= (downcase end) "end")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2143 ;; A generic end
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2144 (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
2145 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2146 (goto-char pos)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2147 (backward-char 3)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2148 (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
2149 (delete-char 3)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2150 (sit-for 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2151 (t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2152 (beep)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2153 (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
2154 end1 end)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2155 (sit-for 1))))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2156 ;;(delete-char 1))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2157
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2158 (defun idlwave-block-master ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2159 (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
2160 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2161 (cond
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2162 ((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
2163 (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
2164 ((looking-at "begin\\>")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2165 (let ((limit (save-excursion
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2166 (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
2167 (point))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2168 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2169 ((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
2170 ;; 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
2171 '("begin" . "end"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2172 ((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
2173 (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
2174 idlwave-block-matches))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2175 (t
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2176 ;; 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
2177 '("begin" . "end")))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2178 (t nil)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2179
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2180 (defun idlwave-close-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2181 "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
2182 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2183
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2184 ;; 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
2185 (unless (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2186 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2187 (bolp))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2188 (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
2189 (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
2190 (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
2191 (insert "end")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2192 (idlwave-show-begin)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2193
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2194 (defun idlwave-gtr-pad-hook (char)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2195 "Let the > symbol expand around -> if present. The new token length
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2196 is returned."
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2197 2)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2198
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2199 (defun idlwave-surround (&optional before after escape-chars length ec-hook)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2200 "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
2201 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
2202 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
2203 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
2204
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2205 nil do nothing
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2206 0 force no spaces
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2207 integer > 0 force exactly n spaces
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2208 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
2209
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2210 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
2211 - `idlwave-surround-by-blank' is nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2212 - the character before point is inside a string or comment
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2213 - the char preceeding the string to be surrounded is a member of ESCAPE-CHARS.
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2214 This hack is used to avoid padding of `>' when it is part of
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2215 the '->' operator. In this case, ESCAPE-CHARS would be '(?-).
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2216
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2217 If a function is passed in EC-HOOK, and an ESCAPE-CHARS match occurs,
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2218 the named function will be called with a single argument of the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2219 preceeding character. Then idlwave-surround will run as usual if
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2220 EC-HOOK returns non-nil, and a new length will be taken from the
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2221 return value."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2222 (when (and idlwave-surround-by-blank (not (idlwave-quoted)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2223 (let* ((length (or length 1)) ; establish a default for LENGTH
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2224 (prev-char (char-after (- (point) (1+ length)))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2225 (when (or (not (memq prev-char escape-chars))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2226 (and (fboundp ec-hook)
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2227 (setq length
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2228 (save-excursion (funcall ec-hook prev-char)))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2229 (backward-char length)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2230 (save-restriction
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2231 (let ((here (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2232 (skip-chars-backward " \t")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2233 (if (bolp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2234 ;; avoid clobbering indent
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2235 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2236 (move-to-column (idlwave-calculate-indent))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2237 (if (<= (point) here)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2238 (narrow-to-region (point) here))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2239 (goto-char here)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2240 (idlwave-make-space before))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2241 (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
2242 (forward-char length)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2243 (idlwave-make-space after)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2244 ;; Check to see if the line should auto wrap
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2245 (if (and (equal (char-after (1- (point))) ?\ )
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2246 (> (current-column) fill-column))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2247 (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
2248
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2249 (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
2250 "Make space at point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2251 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
2252 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
2253 the contiguous space.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2254 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
2255 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
2256 nil - do nothing.
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2257 > 0 - exactly N spaces.
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2258 < 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
2259 already -N spaces.
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
2260 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
2261 (if (integerp n)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2262 (let
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2263 ((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
2264 (left (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2265 (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
2266 (delete-horizontal-space)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2267 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2268 ((> n 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2269 (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
2270 (goto-char (+ left n)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2271 ((< n 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2272 (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
2273 (goto-char (- left n)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2274 ;; n = 0, done
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2275 ))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2276
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2277 (defun idlwave-newline ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2278 "Inserts a newline and indents the current and previous line."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2279 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2280 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2281 ;; 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
2282 ;; 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
2283 ;; will mean unbalanced quotes.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2284 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2285 (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
2286 (progn (beep)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2287 (message "Warning: unbalanced quotes?")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2288 (newline)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2289 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2290 ;; 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
2291 ;; 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
2292 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2293 ;; 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
2294 ;; 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
2295 ;; 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
2296 ;; `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
2297 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2298 (beginning-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2299 (idlwave-indent-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2300 (forward-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2301 (idlwave-indent-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2302
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2303 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2304 ;; 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
2305 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2306 ;; Modeled on lisp.el
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2307 ;; 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
2308 (defun idlwave-comment-hook ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2309 "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
2310 (if (or (looking-at idlwave-no-change-comment)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2311 (if idlwave-begin-line-comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2312 (looking-at idlwave-begin-line-comment)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2313 (looking-at "^;")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2314 (current-column)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2315 (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
2316 (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
2317 ;; 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
2318 (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
2319 (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
2320 ;; 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
2321 (current-column))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2322 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2323 (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
2324 comment-column))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2325
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2326 (defun idlwave-split-line ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2327 "Continue line by breaking line at point and indent the lines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2328 For a code line insert continuation marker. If the line is a line comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2329 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
2330 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
2331 non-nil."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2332 (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
2333 ;; 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
2334 (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
2335 (let (beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2336 (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
2337 ;; 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
2338 ;; 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
2339 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2340 (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
2341 (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
2342 ;; Split the string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2343 (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
2344 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
2345 (backward-char 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2346 (newline-and-indent)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2347 (forward-char 1))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2348 ;; 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
2349 (beep)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2350 (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
2351 (insert " " idlwave-continuation-char))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2352 ;; 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
2353 (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
2354 (insert " "))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2355 (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
2356 (newline-and-indent)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2357 (indent-new-comment-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2358 ;; Indent previous line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2359 (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
2360 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2361 (idlwave-indent-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2362 (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
2363 ;; Reindent new line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2364 (idlwave-indent-line)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2365
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2366 (defun idlwave-beginning-of-subprogram ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2367 "Moves point to the beginning of the current program unit."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2368 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2369 (idlwave-find-key idlwave-begin-unit-reg -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2370
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2371 (defun idlwave-end-of-subprogram ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2372 "Moves point to the start of the next program unit."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2373 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2374 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2375 (idlwave-find-key idlwave-end-unit-reg 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2376
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2377 (defun idlwave-mark-statement ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2378 "Mark current IDL statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2379 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2380 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2381 (let ((end (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2382 (idlwave-beginning-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2383 (idlwave-push-mark end nil t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2384
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2385 (defun idlwave-mark-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2386 "Mark containing block."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2387 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2388 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2389 (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
2390 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2391 (let ((end (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2392 (idlwave-backward-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2393 (idlwave-beginning-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2394 (idlwave-push-mark end nil t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2395
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2396
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2397 (defun idlwave-mark-subprogram ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2398 "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
2399 The marks are pushed."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2400 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2401 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2402 (idlwave-beginning-of-subprogram)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2403 (let ((beg (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2404 (idlwave-forward-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2405 (idlwave-push-mark beg nil t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2406 (exchange-point-and-mark))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2407
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2408 (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
2409 "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
2410 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
2411 (interactive "p")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2412 (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
2413
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2414 (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
2415 "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
2416 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2417 (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
2418 (forward-word 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2419
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2420 (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
2421 "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
2422 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2423 (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
2424 (backward-word 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2425
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2426 (defun idlwave-forward-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2427 "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
2428 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2429 (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
2430 (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
2431
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2432 (defun idlwave-backward-block ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2433 "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
2434 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2435 (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
2436 (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
2437
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2438 (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
2439 "Go down a block.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2440 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
2441 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
2442 (interactive "p")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2443 (let (status)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2444 (if (< arg 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2445 ;; Backward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2446 (let ((eos (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2447 (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
2448 (point))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2449 (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
2450 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
2451 (idlwave-beginning-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2452 (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
2453 ;; Forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2454 (let ((eos (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2455 (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
2456 (point))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2457 (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
2458 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
2459 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2460 (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
2461 status))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2462
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2463 (defun idlwave-mark-doclib ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2464 "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
2465 The marks are pushed."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2466 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2467 (let (beg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2468 (here (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2469 (goto-char (point-max))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2470 (if (re-search-backward idlwave-doclib-start nil t)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2471 (progn
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2472 (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
2473 (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
2474 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2475 (forward-line 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2476 (idlwave-push-mark beg nil t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2477 (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
2478 (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
2479 (goto-char here)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2480
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2481
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2482 (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
2483 "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
2484 (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
2485 (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
2486 (idlwave-beginning-of-subprogram)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2487 (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
2488 (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
2489 '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
2490 (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
2491 (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
2492 (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
2493
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2494 (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
2495 (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
2496 "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
2497 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
2498 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
2499 actual statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2500 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2501 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2502 ((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
2503 (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
2504 (goto-char (match-end 0))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2505 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2506 (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
2507 (idlwave-previous-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2508 (beginning-of-line)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2509
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2510 (defun idlwave-previous-statement ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2511 "Moves point to beginning of the previous statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2512 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
2513 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
2514 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2515 (let (first-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2516 (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
2517 ;; first line in file
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2518 t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2519 ;; 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
2520 (while (and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2521 ;; 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
2522 ;; reach another statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2523 (setq first-statement
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2524 (or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2525 (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
2526 (looking-at "[ \t]*$")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2527 (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
2528 (looking-at "^@")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2529 (= (forward-line -1) 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2530 ;; skip continuation lines
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2531 (while (and
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2532 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2533 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2534 (idlwave-is-continuation-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2535 (= (forward-line -1) 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2536 first-statement)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2537
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2538 (defun idlwave-end-of-statement ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2539 "Moves 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
2540 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
2541 (interactive)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2542 (while (and (idlwave-is-continuation-line)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2543 (= (forward-line 1) 0))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2544 (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
2545 (= (forward-line 1) 0))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2546 (end-of-line)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2547 (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2548
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2549 (defun idlwave-end-of-statement0 ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2550 "Moves point to the end of the current IDL statement.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2551 If not in a statement just moves to end of line. Returns position."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2552 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2553 (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
2554 (= (forward-line 1) 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2555 (end-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2556 (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2557
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2558 (defun idlwave-next-statement ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2559 "Moves point to beginning of the next IDL statement.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2560 Returns t if that statement is the last
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2561 non-comment IDL 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
2562 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2563 (let (last-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2564 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2565 ;; 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
2566 (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
2567 ;; 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
2568 ;; 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
2569 (setq last-statement
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2570 (or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2571 (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
2572 (looking-at "[ \t]*$")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2573 (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
2574 (looking-at "^@")))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2575 last-statement))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2576
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2577 (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
2578 "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
2579 (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
2580 (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
2581 (goto-char (match-end 0))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2582 (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
2583 (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
2584 (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
2585 (point)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2586
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2587 (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
2588 "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
2589 Returns position after label.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2590 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
2591 ;; 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
2592 ;; 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
2593 ;; - 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
2594 ;; - 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
2595 ;; - 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
2596 ;; - 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
2597 ;; - 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
2598 ;; As many in this mode, this function is heuristic and not an exact
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2599 ;; parser.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2600 (let* ((start (point))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2601 (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
2602 (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
2603 (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
2604 (= (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
2605 (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
2606 (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
2607 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2608 (forward-char)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2609 (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2610 (goto-char start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2611 nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2612
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2613 (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
2614 "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
2615 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
2616 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
2617 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
2618 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
2619 substatement."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2620 (let ((orig (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2621 (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
2622 (ifnest 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2623 st nst last)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2624 (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
2625 (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
2626 (if (< (point) orig)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2627 (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
2628 (setq last (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2629 ;; 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
2630 (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
2631 (setq last (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2632 (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
2633 (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
2634 (cond ((and nst
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2635 (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
2636 (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
2637 ((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
2638 (setq ifnest (1- ifnest))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2639 (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
2640 (t (setq ifnest 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2641 (idlwave-next-statement))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2642 (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
2643 ;; 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
2644 (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
2645 (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
2646 (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2647
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2648 (defun idlwave-statement-type ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2649 "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
2650 Uses `idlwave-statement-match' to return a cons of (type . point) with
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2651 point the ending position where the type was determined. Type is the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2652 association from `idlwave-statement-match', i.e. the cons cell from the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2653 list not just the type symbol. Returns nil if not an identifiable
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2654 statement."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2655 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2656 ;; 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
2657 ;; and possibly comments
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2658 (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
2659 (forward-line 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2660 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2661 (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
2662 (case-fold-search t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2663 (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
2664 (setq st (cdr st))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2665 (if st
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2666 (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
2667
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2668 (defun idlwave-expand-equal (&optional before after)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2669 "Pad '=' with spaces. Two cases: Assignment statement, and keyword
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2670 assignment. Which case is determined using
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2671 `idlwave-start-of-substatement' and `idlwave-statement-type'. The
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2672 equal sign will be surrounded by BEFORE and AFTER blanks. If
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2673 `idlwave-pad-keyword' is t then keyword assignment is treated just
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2674 like assignment statements. When nil, spaces are removed for keyword
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
2675 assignment. Any other value keeps the current space around the `='.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2676 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
2677
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2678 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
2679 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
2680
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2681 r and= b
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2682 rand= b
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2683
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2684 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
2685 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
2686 \(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
2687 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
2688
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2689 See `idlwave-surround'."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2690 (if idlwave-surround-by-blank
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2691 (let
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2692 ((non-an-ops "\\(##\\|\\*\\|\\+\\|-\\|/\\|<\\|>\\|\\^\\)\\=")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2693 (an-ops
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2694 "\\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
2695 (len 1))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2696
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2697 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2698 (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
2699 (backward-char)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2700 (if (or
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2701 (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
2702 ;; Why doesn't ##? work for both?
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2703 (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
2704 (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
2705 (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
2706 ;(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
2707 (setq len (1+ (length (match-string 1))))))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2708
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2709 (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
2710 ;; Everything gets padded equally
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2711 (idlwave-surround before after nil len)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2712 ;; 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
2713 (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
2714 (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
2715 (idlwave-statement-type)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2716 (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
2717 (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
2718 (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
2719 (cond ((or (memq what '(function-keyword procedure-keyword))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2720 (memq (caar st) '(for pdef)))
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2721 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2722 ((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
2723 (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
2724 ) ; remove space
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2725 (t))) ; leave any spaces alone
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2726 (t (idlwave-surround before after nil len))))))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2727
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2728
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2729 (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
2730 "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
2731 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
2732 (interactive "p")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2733 (save-excursion
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2734 (if (and idlwave-expand-generic-end
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2735 (re-search-backward "\\<\\(end\\)\\s-*\\="
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2736 (max 0 (- (point) 10)) t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2737 (looking-at "\\(end\\)\\([ \n\t]\\|\\'\\)"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
2738 (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
2739 ;;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
2740 (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
2741 (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
2742 (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
2743 (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
2744 (setq current-prefix-arg nil))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2745 (if arg
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2746 (idlwave-indent-statement)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2747 (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
2748
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2749 (defun idlwave-indent-line (&optional expand)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2750 "Indents current IDL line as code or as a comment.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2751 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
2752 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
2753 `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
2754 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2755 ;; 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
2756 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2757 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2758 (bolp))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2759 (skip-chars-forward " \t"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2760 (let ((mloc (point-marker)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2761 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2762 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2763 (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
2764 ;; 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
2765 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2766 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2767 (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
2768 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2769 ;; Code Line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2770 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2771 ;; 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
2772 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2773 (if (and expand idlwave-do-actions)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2774 (mapcar 'idlwave-do-action idlwave-indent-expand-table))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2775 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2776 (if idlwave-do-actions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2777 (mapcar 'idlwave-do-action idlwave-indent-action-table))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2778 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2779 ;; 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
2780 ;; 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
2781 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2782 ;; Indent for code line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2783 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2784 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2785 (if (or
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2786 ;; a label line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2787 (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
2788 ;; a batch command
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2789 (looking-at "^[ \t]*@"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2790 ;; leave flush left
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2791 nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2792 ;; indent the line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2793 (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
2794 ;; 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
2795 (end-of-line)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2796 (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
2797 ;; 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
2798 (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
2799 (1- (frame-width))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2800 fill-column)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
2801 (indent-for-comment)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2802 (goto-char mloc)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2803 ;; 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
2804 (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
2805
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2806 (defun idlwave-do-action (action)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2807 "Perform an action repeatedly on a line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2808 ACTION is a list (REG . FUNC). REG is a regular expression. FUNC is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2809 either a function name to be called with `funcall' or a list to be
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2810 evaluated with `eval'. The action performed by FUNC should leave point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2811 after the match for REG - otherwise an infinite loop may be entered."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2812 (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
2813 (action-routine (cdr action)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2814 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2815 (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
2816 (if (listp action-routine)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2817 (eval action-routine)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2818 (funcall action-routine)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2819
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2820 (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
2821 "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
2822 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
2823 (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
2824 (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
2825 (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
2826
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2827 (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
2828 "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
2829 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
2830 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
2831 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2832 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2833 (delete-horizontal-space)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2834 (idlwave-indent-to col)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2835
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2836 (defun idlwave-indent-subprogram ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2837 "Indents program unit which contains point."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2838 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2839 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2840 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2841 (idlwave-beginning-of-subprogram)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2842 (let ((beg (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2843 (idlwave-forward-block)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2844 (message "Indenting subprogram...")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2845 (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
2846 (message "Indenting subprogram...done.")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2847
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2848 (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
2849 "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
2850 (interactive)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2851 (save-excursion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2852 (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
2853 (let ((beg (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2854 (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
2855 (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
2856
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2857 (defun idlwave-calculate-indent ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2858 "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
2859 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2860 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2861 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2862 ;; 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
2863 ;; function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2864 ((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
2865 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2866 ;; Check for continuation line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2867 ((save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2868 (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
2869 (idlwave-is-continuation-line)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2870 (idlwave-calculate-cont-indent))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2871 ;; 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
2872 (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
2873 (the-indent
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2874 ;; 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
2875 (save-excursion
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2876 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2877 ;; Beginning of file
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2878 ((prog1
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2879 (idlwave-previous-statement)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2880 (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
2881 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2882 ;; Main block
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2883 ((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
2884 (+ (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
2885 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
2886 ;; Begin block
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2887 ((idlwave-look-at idlwave-begin-block-reg t)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2888 (+ (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
2889 idlwave-block-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2890 ;; End Block
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2891 ((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
2892 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2893 ;; 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
2894 (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
2895 (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
2896 (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
2897 ;; idlwave-end-offset
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2898 ;; idlwave-block-indent))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2899
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2900 ;; 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
2901 ((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
2902 ;; 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
2903 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2904 ;; End block
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2905 ((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
2906 (+ 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
2907 (the-indent)))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2908
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2909 ;;
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2910 ;; Parentheses indent
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2911 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2912
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2913 (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
2914 "Calculate the continuation indent inside a paren group.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2915 Returns a cons-cell with (open . indent), where open is the
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2916 location of the open paren"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2917 (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
2918 ;; 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
2919 (when open
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2920 (goto-char open)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2921 ;; 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
2922 (cons open
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2923 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2924 ;; 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
2925 (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
2926 (+ 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
2927
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2928 ;; 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
2929 (close-exp
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2930 (current-column))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2931
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2932 ;; 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
2933 ((progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2934 ;; Skip paren
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2935 (forward-char 1)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2936 (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
2937 nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2938
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2939 ;; 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
2940 ((progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2941 (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
2942 (current-column))))))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
2943
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
2944 (defun idlwave-calculate-cont-indent ()
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2945 "Calculates the IDL continuation indent column from the previous
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2946 statement. Note that here previous statement usually means the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2947 beginning of the current statement if this statement is a continuation
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2948 of the previous line. Various special types of continuations,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2949 including assignments, routine definitions, and parenthetical
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2950 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
2951 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2952 (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
2953 (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
2954 (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
2955 (point)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2956 (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
2957 (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
2958 (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
2959 (point))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2960 (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
2961 idlwave-continuation-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2962 fancy-nonparen-indent fancy-paren-indent)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2963 (cond
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2964 ;; 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
2965 ((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
2966 ("\\<\\(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
2967 ("\\<\\(for\\|while\\)\\>" . "[ \t]*do")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2968 ("\\<\\(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
2969 "[ \t]*until")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2970 ("\\<case\\>" . "[ \t]*of")))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2971 match cont-re)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2972 (goto-char end-reg)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2973 (and
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2974 (setq cont-re
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2975 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2976 (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
2977 (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
2978 (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
2979 (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
2980 (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
2981 (if (looking-at "end") ;; that one's special
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
2982 (- (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
2983 (+ 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
2984 (idlwave-current-indent)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2985
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2986 ;; 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
2987 ((let ((matchers '("\\<then\\>"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2988 "\\<do\\>"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2989 "\\<repeat\\>"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2990 "\\<else\\>"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2991 match)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2992 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2993 (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
2994 (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
2995 (throw 'exit nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2996 (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
2997 (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
2998 "\\(;.*\\)?$"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
2999 (throw 'exit t))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3000 (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
3001 (+ 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
3002
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3003 ;; 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
3004 ((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
3005 (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
3006 (close-exp (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3007 (goto-char end-reg)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3008 (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
3009 (looking-at "\\s)")))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3010 indent-cons)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3011 (catch 'loop
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3012 (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
3013 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
3014 ;; 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
3015 (if (or
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3016 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
3017 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
3018 (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
3019 (< (- (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
3020 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
3021 (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
3022 (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
3023 fancy-paren-indent)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3024
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3025 ;; 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
3026 ((and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3027 (> 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
3028 (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
3029 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3030 (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
3031 (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
3032 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3033 ;; 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
3034 ((progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3035 (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
3036 (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
3037 (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
3038 ;; 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
3039 (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
3040 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3041 (current-column)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3042
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3043 ;; Continued assignment (with =):
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3044 ((catch 'assign ;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3045 (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
3046 (goto-char (match-end 0))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3047 (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
3048 (throw 'assign t))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3049 (unless (or
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3050 (idlwave-in-quote)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3051 (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
3052 (save-excursion
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3053 (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
3054 (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
3055 (current-column))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3056 (< (- 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
3057 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
3058 (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
3059 (+ 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
3060 fancy-nonparen-indent))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3061
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3062 ;; 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
3063 (t basic-indent)))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3064
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3065
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3066
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3067 (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
3068 "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
3069 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
3070 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
3071 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
3072 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
3073 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
3074 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
3075 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
3076 (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
3077 (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
3078 (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
3079 found)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3080 (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
3081 (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
3082 (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
3083 (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
3084 (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
3085 (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
3086 (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
3087 (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
3088 (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
3089 (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
3090 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3091 (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
3092 (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
3093 found)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3094 nil)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3095
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3096 (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
3097 "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
3098 current block using the `idlwave-begin-block-reg' and `idlwave-end-block-reg'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3099 regular expressions. When DIR is negative, move backwards to block beginning.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3100 Recursively calls itself to skip over nested blocks. DIR defaults to
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3101 forward. Calls `push-mark' unless the optional argument NOMARK is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3102 non-nil. Movement is limited by the start of program units because of
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3103 possibility of unbalanced blocks."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3104 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3105 (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
3106 (let* ((here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3107 (case-fold-search t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3108 (limit (if (>= dir 0) (point-max) (point-min)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3109 (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
3110 idlwave-begin-block-reg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3111 idlwave-end-block-reg))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3112 found
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3113 (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
3114 idlwave-end-block-reg))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3115 (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
3116 (if (< dir 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3117 (idlwave-find-key
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3118 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
3119 (end-of-line)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3120 (idlwave-find-key
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3121 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
3122 limit)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3123 (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
3124 (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
3125 (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
3126 (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
3127 (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
3128 (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
3129 (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
3130 (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
3131 (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
3132
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3133 (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
3134 "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
3135 (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
3136 (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
3137 (idlwave-current-indent)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3138 (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
3139 (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
3140 (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
3141 (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
3142 (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
3143 (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
3144 (if (or comm-or-empty (and end-reg (>= (point) end-reg)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3145 min
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3146 (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
3147
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3148 (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
3149 "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
3150 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
3151 (if last-line
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3152 (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
3153 (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
3154 (idlwave-current-indent))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3155
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3156 (defun idlwave-current-indent ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3157 "Return the column of the 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
3158 Skips any whitespace. Returns 0 if the end-of-line follows the whitespace."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3159 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3160 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3161 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3162 ;; 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
3163 (cond ((eolp) 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3164 ((current-column)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3165
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3166 (defun idlwave-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
3167 "Tests if current line is continuation line.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3168 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
3169 `$') count as continuations too."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3170 (save-excursion
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3171 (or
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3172 (idlwave-look-at "\\<\\$")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3173 (catch 'loop
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3174 (while (and (looking-at "^[ \t]*\\(;.*\\)?$")
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3175 (eq (forward-line -1) 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3176 (if (idlwave-look-at "\\<\\$") (throw 'loop t)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3177
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3178 (defun idlwave-is-comment-line ()
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3179 "Tests 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
3180 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3181 (beginning-of-line 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3182 (looking-at "[ \t]*;")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3183
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3184 (defun idlwave-is-comment-or-empty-line ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3185 "Tests if the current line is a comment line."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3186 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3187 (beginning-of-line 1)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3188 (looking-at "[ \t]*[;\n]")))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3189
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3190 (defun idlwave-look-at (regexp &optional cont beg)
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3191 "Searches current line from current point for REGEXP.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3192 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
3193 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
3194 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
3195 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
3196 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
3197 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
3198 This function produces unexpected results if REGEXP contains quotes or
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3199 a comment delimiter. The search is case insensitive.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3200 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
3201 (let ((here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3202 (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
3203 (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
3204 (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
3205 (point)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3206 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
3207 (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
3208 (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
3209 (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
3210 (idlwave-quoted))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3211 (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
3212 found))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3213
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3214 (defun idlwave-fill-paragraph (&optional nohang)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3215 "Fills paragraphs in comments.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3216 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
3217 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
3218 comment delimiter). In addition, paragraphs are separated by blank
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3219 line comments. The indentation is given by the hanging indent of the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3220 first line, otherwise by the minimum indentation of the lines after
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3221 the first line. The indentation of the first line does not change.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3222 Does not effect code lines. Does not fill comments on the same line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3223 with code. The hanging indent is given by the end of the first match
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3224 matching `idlwave-hang-indent-regexp' on the paragraph's first line . If the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3225 optional argument NOHANG is non-nil then the hanging indent is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3226 ignored."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3227 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3228 ;; 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
3229 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3230 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3231 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3232 (looking-at comment-start))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3233 (let
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3234 ((indent 999)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3235 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
3236 hang start end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3237 ;; 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
3238 ;; 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
3239 ;; 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
3240 ;; 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
3241 ;; 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
3242 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3243 ;; 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
3244 ;; 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
3245 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3246 (backward-paragraph)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3247 (setq start (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3248 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3249 (forward-paragraph)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3250 (setq end (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3251 (untabify start end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3252 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3253 (setq here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3254 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3255 (setq bcl (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3256 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3257 (concat "^[ \t]*" comment-start "+")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3258 (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
3259 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3260 ;; 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
3261 (setq pre (current-column))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3262 ;; 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
3263 ;; number of consecutive ";".
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3264 (setq fill-prefix-reg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3265 (concat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3266 (setq fill-prefix
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3267 (regexp-quote
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3268 (buffer-substring (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3269 (beginning-of-line) (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3270 (point))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3271 "[^;]"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3272
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3273 ;; 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
3274 (goto-char bcl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3275 (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
3276 (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
3277 (not (bobp)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3278 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3279 ;; 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
3280 (if (/= (point) bcl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3281 (forward-line 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3282 (setq start (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3283 (goto-char bcl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3284 (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
3285 (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
3286 (not (eobp)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3287 (forward-line 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3288 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3289 (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
3290 (looking-at paragraph-separate))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3291 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3292 (end-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3293 ;; 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
3294 ;; 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
3295 ;; 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
3296 (if (eobp)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3297 (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
3298 ;; 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
3299 ;; 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
3300 (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
3301 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3302 ;; 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
3303 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3304 ;; 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
3305 ;; 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
3306 ;; 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
3307 ;; 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
3308 ;; indentation.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3309 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3310 ;; 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
3311 (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
3312 (setq hang
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3313 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3314 (goto-char start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3315 (idlwave-calc-hanging-indent))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3316 ;; 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
3317 ;; 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
3318 ;; 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
3319 ;; a fill-prefix.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3320 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3321 (setq indent hang)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3322 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3323 (while (> (point) start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3324 (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
3325 (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
3326 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3327 (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
3328 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3329 (if (>= here (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3330 ;; 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
3331 ;; inserted text.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3332 (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
3333 (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
3334 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3335 )
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3336
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3337 ;; 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
3338 ;; after first line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3339 ;; For the following while statement, since START is at the
45318
b80d723ad7cc Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 43351
diff changeset
3340 ;; 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
3341 ;; 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
3342 ;; 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
3343 (while (> (point) start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3344 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3345 (setq indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3346 (min indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3347 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3348 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3349 comment-start-skip
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3350 (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
3351 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3352 (current-column))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3353 (forward-line -1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3354 )
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3355 (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
3356 (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
3357 ?\ )))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3358 ;; first-line indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3359 (setq first-indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3360 (max
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3361 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3362 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3363 comment-start-skip
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3364 (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
3365 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3366 (current-column))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3367 indent))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3368
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3369 ;; 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
3370 (goto-char here)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3371
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3372 ;; 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
3373 ;; 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
3374 ;; 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
3375 ;; (first indent).
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3376 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3377 (setq diff
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3378 (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
3379 (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
3380 (fill-region-as-paragraph
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3381 start
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3382 (- (point-max) end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3383 (current-justification)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3384 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3385 (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
3386 (goto-char start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3387 (insert diff))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3388 ;; 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
3389 ;; 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
3390 (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
3391 (setq fill-prefix nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3392
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3393 (defun idlwave-calc-hanging-indent ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3394 "Calculate the position of the hanging indent for the comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3395 paragraph. The hanging indent position is given by the first match
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3396 with the `idlwave-hang-indent-regexp'. If `idlwave-use-last-hang-indent' is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3397 non-nil then use last occurrence matching `idlwave-hang-indent-regexp' on
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3398 the line.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3399 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
3400 (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
3401 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3402 (end-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3403 (if (re-search-backward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3404 idlwave-hang-indent-regexp
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3405 (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
3406 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3407 (+ (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
3408 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3409 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3410 (if (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3411 idlwave-hang-indent-regexp
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
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3416 (defun idlwave-auto-fill ()
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3417 "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
3418 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
3419 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
3420 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
3421 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
3422 (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
3423 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
3424 (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
3425 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3426 ;; Check for comment line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3427 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3428 (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
3429 (let (beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3430 (idlwave-indent-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3431 ;; 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
3432 (let (idlwave-do-actions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3433 (paragraph-start ".")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3434 (paragraph-separate ".")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3435 (fill-nobreak-predicate
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3436 (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
3437 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
3438 (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
3439 (<= (- 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
3440 ))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3441 (do-auto-fill))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3442 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3443 (end-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3444 ;; Indent the split line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3445 (idlwave-indent-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3446 )
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3447 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3448 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3449 (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
3450 ;; A continued line comment
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3451 ;; 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
3452 ;; 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
3453 (if idlwave-hanging-indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3454 (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
3455 (indent
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 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3458 (idlwave-calc-hanging-indent))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3459 (if indent
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3460 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3461 ;; 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
3462 ;; 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
3463 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3464 (re-search-forward
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3465 comment-start-skip
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3466 (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
3467 (delete-horizontal-space)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3468 (idlwave-indent-to indent)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3469 (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
3470 )))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3471 ;; Split code or comment?
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3472 (if (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3473 (end-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3474 (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
3475 ;; 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
3476 ;; 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
3477 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3478 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3479 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3480 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3481 ;; 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
3482 (insert " "
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3483 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3484 (forward-line -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3485 (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
3486 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3487 (skip-chars-forward "; ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3488 (point))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3489 (idlwave-indent-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3490 ;; 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
3491 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3492 (end-of-line 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3493 ;; 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
3494 (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
3495 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
3496 ;; 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
3497 ;; 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
3498 ;; 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
3499 (insert " " (char-after beg) " +"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3500 (insert " $"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3501 (if beg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3502 (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
3503 ;; 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
3504 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3505 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3506 (skip-chars-forward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3507 (insert (char-after beg)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3508 ;; Warning
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3509 (beep)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3510 (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
3511 ;; 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
3512 ;; 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
3513 ;; 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
3514 (idlwave-indent-line))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3515 )))))
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 (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
3518 "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
3519 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
3520 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
3521 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
3522 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3523 (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
3524 (if (if (null arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3525 (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
3526 (> (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
3527 'idlwave-auto-fill
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3528 nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3529 ;; update mode-line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3530 (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
3531
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3532 ;(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
3533 ; "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
3534 ; (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
3535
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
3536
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3537 (defun idlwave-doc-header (&optional nomark )
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3538 "Insert a documentation header at the beginning of the unit.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3539 Inserts the value of the variable idlwave-file-header. Sets mark before
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3540 moving to do insertion unless the optional prefix argument NOMARK
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3541 is non-nil."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3542 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3543 (or nomark (push-mark))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3544 ;; 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
3545 (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
3546 (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
3547 (end-of-line)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3548 (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
3549 (beginning-of-line)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3550 ;; 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
3551 (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
3552 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3553 (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
3554 (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
3555 (let ((pos (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
3556 (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
3557 (cond ((car idlwave-file-header)
62575
7f40f404ef37 (idlwave-doc-header): Use insert-file-contents.
Richard M. Stallman <rms@gnu.org>
parents: 60925
diff changeset
3558 (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
3559 ((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
3560 (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
3561 (goto-char pos)))
26956
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-default-insert-timestamp ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3564 "Default timestamp insertion function"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3565 (insert (current-time-string))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3566 (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
3567 (if (boundp 'user-mail-address)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3568 (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
3569 (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
3570 ;; 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
3571 (idlwave-fill-paragraph)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3572 ;; 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
3573 ;; 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
3574 (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
3575
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3576 (defun idlwave-doc-modification ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3577 "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
3578 Looks for an occurrence of the value of user variable
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3579 `idlwave-doc-modifications-keyword' if non-nil. Inserts time and user name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3580 and places the point for the user to add a log. Before moving, saves
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3581 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
3582 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3583 (push-mark)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3584 (let* (beg end)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3585 (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
3586 (progn
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3587 (goto-char (point-min))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3588 (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
3589 (setq beg (match-beginning 0))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3590 (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
3591 (setq end (match-end 0)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3592 (progn
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3593 (goto-char beg)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3594 (if (re-search-forward
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3595 (concat idlwave-doc-modifications-keyword ":")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3596 end t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3597 (end-of-line)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3598 (goto-char end)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3599 (end-of-line -1)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3600 (insert "\n" comment-start "\n")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3601 (insert comment-start " " idlwave-doc-modifications-keyword ":"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3602 (insert "\n;\n;\t")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3603 (run-hooks 'idlwave-timestamp-hook))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3604 (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
3605
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3606 ;;; CJC 3/16/93
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3607 ;;; Interface to expand-region-abbrevs which did not work when the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3608 ;;; abbrev hook associated with an abbrev moves point backwards
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3609 ;;; after abbrev expansion, e.g., as with the abbrev '.n'.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3610 ;;; The original would enter an infinite loop in attempting to expand
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3611 ;;; .n (it would continually expand and unexpand the abbrev without expanding
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3612 ;;; because the point would keep going back to the beginning of the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3613 ;;; abbrev instead of to the end of the abbrev). We now keep the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3614 ;;; abbrev hook from moving backwards.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3615 ;;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3616 (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
3617 "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
3618 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
3619 (interactive "r")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3620 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3621 (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
3622 (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
3623 (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
3624 (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
3625
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3626 (defun idlwave-quoted ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3627 "Returns t if point is in a comment or quoted string.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3628 nil otherwise."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3629 (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
3630
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3631 (defun idlwave-in-quote ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3632 "Returns location of the opening quote
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3633 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
3634 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
3635 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
3636 constants - a double quote followed by an octal digit."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3637 ;;; Treat an octal inside an apostrophe to be a normal string. Treat a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3638 ;;; double quote followed by an octal digit to be an octal constant
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3639 ;;; rather than a string. Therefore, there is no terminating double
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3640 ;;; quote.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3641 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3642 ;; 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
3643 ;; 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
3644 (let* ((start (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3645 (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
3646 (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
3647 (endq (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3648 (data (match-data))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3649 delim
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3650 found)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3651 (while (< endq start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3652 ;; Find string start
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3653 ;; 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
3654 (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
3655 ;; Find the string end.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3656 ;; 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
3657 ;; string act as an
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3658 ;; 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
3659 ;; Two consecutive delimiters alone (i.e., not after the
45318
b80d723ad7cc Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 43351
diff changeset
3660 ;; 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
3661 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3662 ;; 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
3663 (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
3664 (setq bq (1- (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3665 ;; Get the string delimiter
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3666 (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
3667 ;; Check for null string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3668 (if (looking-at delim)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3669 (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
3670 ;; 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
3671 (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
3672 (while (looking-at delim)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3673 (forward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3674 (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
3675 (if found
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3676 (setq endq (- (point) 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3677 (setq endq (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3678 ))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3679 (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
3680 (store-match-data data)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3681 ;; 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
3682 (if (> start bq) bq))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3683
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3684 (defun idlwave-is-pointer-dereference (&optional limit)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3685 "Determines if the character after point is a pointer dereference *."
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3686 (let ((pos (point)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3687 (and
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3688 (eq (char-after) ?\*)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3689 (not (idlwave-in-quote))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3690 (save-excursion
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3691 (forward-char)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3692 (re-search-backward (concat "\\(" idlwave-idl-keywords
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3693 "\\|[[(*+-/=,^><]\\)\\s-*\\*") limit t)))))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3694
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
3695
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3696 ;; Statement templates
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3697
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3698 ;; 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
3699 ;; 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
3700 ;; dmacro.el)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3701
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3702 (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
3703 "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
3704
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3705 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
3706 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
3707 by S2. Point is inserted between S1 and S2. The case of S1 and S2 is
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3708 adjusted according to `idlwave-abbrev-change-case'. If optional argument
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3709 PROMPT is a string then it is displayed as a message in the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3710 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
3711 expression to enter.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3712
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3713 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
3714 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
3715 (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
3716 ;; 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
3717 ;; 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
3718 (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
3719 (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
3720 (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
3721 (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
3722 (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
3723 (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
3724 (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
3725 (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
3726 (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
3727 end)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3728 (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
3729 (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
3730 (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
3731 (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
3732 (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
3733 (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
3734 (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
3735 (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
3736 (if (stringp prompt)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3737 (message prompt)))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3738
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3739 (defun idlwave-rw-case (string)
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3740 "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
3741 (if idlwave-reserved-word-upcase
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3742 (upcase string)
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3743 string))
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3744
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3745 (defun idlwave-elif ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3746 "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
3747 (interactive)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3748 (idlwave-template
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3749 (idlwave-rw-case "if")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3750 (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
3751 "Condition expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3752
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3753 (defun idlwave-case ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3754 "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
3755 (interactive)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3756 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3757 (idlwave-rw-case "case")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3758 (idlwave-rw-case " of\n\nendcase")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3759 "Selector expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3760
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3761 (defun idlwave-switch ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3762 "Build skeleton IDL switch statement."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3763 (interactive)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3764 (idlwave-template
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3765 (idlwave-rw-case "switch")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3766 (idlwave-rw-case " of\n\nendswitch")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3767 "Selector expression"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
3768
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3769 (defun idlwave-for ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3770 "Build skeleton for loop statment."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3771 (interactive)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3772 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3773 (idlwave-rw-case "for")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3774 (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
3775 "Loop expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3776
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3777 (defun idlwave-if ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3778 "Build skeleton for loop statment."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3779 (interactive)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3780 (idlwave-template
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3781 (idlwave-rw-case "if")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3782 (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
3783 "Scalar logical expression"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3784
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3785 (defun idlwave-procedure ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3786 (interactive)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3787 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3788 (idlwave-rw-case "pro")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3789 (idlwave-rw-case "\n\nreturn\nend")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3790 "Procedure name"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3791
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3792 (defun idlwave-function ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3793 (interactive)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3794 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3795 (idlwave-rw-case "function")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3796 (idlwave-rw-case "\n\nreturn\nend")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3797 "Function name"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3798
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3799 (defun idlwave-repeat ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3800 (interactive)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3801 (idlwave-template
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3802 (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
3803 (idlwave-rw-case "")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3804 "Exit condition"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3805
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3806 (defun idlwave-while ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3807 (interactive)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3808 (idlwave-template
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3809 (idlwave-rw-case "while")
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
3810 (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
3811 "Entry condition"))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3812
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3813 (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
3814 "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
3815 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
3816 (or pattern
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3817 (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
3818 (let (parts (start 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3819 (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
3820 (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
3821 start (match-end 0)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3822 (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
3823
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3824 (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
3825 (let* ((start 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3826 (last (length string))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3827 (ret_string "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3828 end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3829 (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
3830 (setq ret_string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3831 (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
3832 (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
3833 (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
3834
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3835 (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
3836 ;; 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
3837 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3838 ((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
3839 (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
3840 (get-file-buffer file)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3841 ((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
3842 (find-buffer-visiting file))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3843 (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
3844
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3845 (defvar idlwave-outlawed-buffers nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3846 "List of buffer pulled up by idlwave for special reasons.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3847 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
3848
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3849 (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
3850 ;; 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
3851 (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
3852 (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
3853 (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
3854 buf)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3855
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3856 (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
3857 "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
3858 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
3859 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
3860
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3861 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
3862 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
3863 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
3864 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
3865 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
3866
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3867 Buffer containing unsaved changes require confirmation before they are killed."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3868 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3869 (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
3870 (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
3871 (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
3872 (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
3873 (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
3874 (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
3875 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3876 ((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
3877 (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
3878 ((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
3879 (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
3880 ((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
3881 (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
3882 (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
3883
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3884 (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
3885 "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
3886 (length (delq nil
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3887 (mapcar
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3888 (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
3889 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
3890
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3891 (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
3892 "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
3893 (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
3894 (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
3895 entry)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3896 (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
3897 (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
3898 (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
3899 (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
3900 (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
3901 (incf cnt)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3902 (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
3903 (delq entry idlwave-outlawed-buffers)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3904 (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
3905 (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
3906 (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
3907
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3908 (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
3909 "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
3910 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
3911 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
3912 (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
3913 (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
3914 ;; 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
3915 (if entry
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3916 (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
3917 (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
3918 ;; 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
3919 (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
3920
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3921 (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
3922 (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
3923 ;; 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
3924 (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
3925 dir efile)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3926 (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
3927 (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
3928 (if (file-regular-p
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3929 (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
3930 (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
3931
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
3932 (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
3933 ;; 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
3934 ;; This is for, e.g., finding source with no user catalog
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3935 (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
3936 ((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
3937 ((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
3938 (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
3939
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3940 (defun idlwave-make-tags ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3941 "Creates the IDL tags file IDLTAGS in the current directory from
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3942 the list of directories specified in the minibuffer. Directories may be
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3943 for example: . /usr/local/rsi/idl/lib. All the subdirectories of the
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3944 specified top directories are searched if the directory name is prefixed
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3945 by @. Specify @ directories with care, it may take a long, long time if
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3946 you specify /."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3947 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3948 (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
3949 buffer save_buffer files numfiles item errbuf)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
3950
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3951 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3952 ;; Read list of directories
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3953 (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
3954 (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
3955 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3956 ;; Set etags command, vars
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3957 (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
3958 \\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
3959 \\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
3960 (setq append " ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3961 (setq status 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3962 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3963 ;; For each directory
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3964 (setq numdirs 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3965 (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
3966 (while (and dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3967 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3968 ;; Find the subdirectories
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3969 (if (string-match "^[@]\\(.+\\)$" dir)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3970 (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
3971 (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
3972 (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
3973 (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
3974 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3975 (if (and getsubdirs)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3976 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3977 (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
3978 (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
3979 (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
3980 (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
3981 (set-buffer buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3982 (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
3983 (idlwave-replace-string
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3984 (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
3985 "\n" "/*.pro ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3986 "[ \t]+"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3987 (set-buffer save_buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3988 (kill-buffer buffer))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3989 (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
3990 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3991 ;; For each subdirectory
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3992 (setq numfiles 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3993 (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
3994 (while (and item)
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 ;; Call etags
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
3997 (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
3998 (progn
65584
6dbba0bd58df Message format fixes, commit no. 3
Deepak Goel <deego@gnufans.org>
parents: 64085
diff changeset
3999 (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
4000 (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
4001 (setq status (+ status
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4002 (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
4003 "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
4004 (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
4005 0
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4006 1)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4007 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4008 ;; Append additional tags
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4009 (setq append " --append ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4010 (setq numfiles (1+ numfiles))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4011 (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
4012 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4013 (setq numfiles (1+ numfiles))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4014 (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
4015 )))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4016
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4017 (setq numdirs (1+ numdirs))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4018 (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
4019 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4020 (setq numdirs (1+ numdirs))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4021 (setq dir (nth numdirs directories)))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4022
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4023 (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
4024 (if (= status 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4025 (kill-buffer errbuf))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4026 (message "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4027 ))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4028
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4029 (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
4030 "Comment the lines in the region if the first non-blank line is
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4031 commented, and conversely, uncomment region. If optional prefix arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4032 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
4033 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
4034 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
4035 blank lines."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4036 (interactive "r\nP")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4037 (if n
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4038 (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
4039 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4040 (goto-char beg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4041 (beginning-of-line)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4042 ;; skip blank lines
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4043 (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
4044 (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
4045 (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
4046 (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
4047 (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
4048 (- (length (buffer-substring
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4049 (match-beginning 1)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4050 (match-end 1))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4051 (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
4052
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4053
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4054 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4055 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4056 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4057 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4058 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4059 ;; Completion and Routine Info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4060 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4061
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4062 ;; String "intern" functions
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4063
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4064 ;; 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
4065 ;; 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
4066 ;; 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
4067 ;; 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
4068 ;; 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
4069 ;; 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
4070 ;; precedence.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4071 ;;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4072 ;; 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
4073 ;; 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
4074 ;; 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
4075 ;; 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
4076 ;; 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
4077 ;; 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
4078 ;; 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
4079 ;; 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
4080 ;; *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
4081 ;; 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
4082
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4083 ;; 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
4084
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4085 ;; 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
4086 (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
4087 (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
4088 (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
4089 (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
4090 (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
4091 (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
4092
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4093 (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
4094 "Reset all sintern hashes."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4095 ;; Make sure the hash functions are accessible.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4096 (if (or (not (fboundp 'gethash))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4097 (not (fboundp 'puthash)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4098 (progn
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4099 (require 'cl)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4100 (or (fboundp 'puthash)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4101 (defalias 'puthash 'cl-puthash))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4102 (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
4103 (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
4104 (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
4105 (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
4106
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4107 ;; 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
4108 (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
4109 for var = (car entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4110 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
4111
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4112 (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
4113 (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
4114 ;; Reset the system & library hash
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4115 (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
4116 for var = (car entry) for size = (nth 1 entry)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4117 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
4118 (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
4119 (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
4120 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
4121
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4122 (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
4123 (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
4124 ;; Reset the buffer & shell hash
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4125 (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
4126 for var = (car entry) for size = (nth 1 entry)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4127 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
4128 (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
4129
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4130 (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
4131 (if class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4132 (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
4133 (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
4134
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4135 (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
4136 (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
4137
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4138 ;;(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
4139 ;; `(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
4140 ;; ((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
4141 ;; ((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
4142 ;; (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
4143 ;; (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4144
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4145 (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
4146 (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
4147 ((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
4148 ((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
4149 (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
4150 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4151 (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
4152 (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
4153 ((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
4154 ((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
4155 (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
4156 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4157 (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
4158 (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
4159 ((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
4160 ((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
4161 (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
4162 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4163 (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
4164 (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
4165 ((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
4166 ((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
4167 (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
4168 (name)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4169
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4170 (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
4171 (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
4172 (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
4173 (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
4174 (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
4175 (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
4176
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4177 (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
4178 (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
4179 'identity))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4180 (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
4181 (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
4182 (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
4183 iname))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4184
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4185 (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
4186 "Sintern a set of keywords (file (key . link) (key2 . link2) ...)"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4187 (mapcar (lambda(x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4188 (setcar x (idlwave-sintern-keyword (car x) set)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4189 (cdr kwd-list))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4190 kwd-list)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4191
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4192 (defun idlwave-sintern-rinfo-list (list &optional set default-dir)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4193 "Sintern all strings in the rinfo LIST. With optional parameter
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4194 SET: also set new patterns. Probably this will always have to be t.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4195 If DEFAULT-DIR is passed, it is used as the base of the directory"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4196 (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
4197 (while list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4198 (setq entry (car list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4199 list (cdr list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4200 name (car entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4201 type (nth 1 entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4202 class (nth 2 entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4203 source (nth 3 entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4204 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
4205 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
4206
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4207 ;; 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
4208 (if class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4209 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4210 (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
4211 (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
4212 (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
4213 (setq name (idlwave-sintern-routine name set)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4214
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4215 ;; The source
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4216 (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
4217 (source-file (nth 1 source))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4218 (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
4219 (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
4220 (nth 2 source)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4221 (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
4222 (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
4223 (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
4224 (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
4225 (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
4226 (setq source (list source-type source-file source-dir source-lib)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
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 ;; The keywords
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4229 (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
4230 (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
4231 kwds))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4232
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4233 ;; 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
4234 (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
4235 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
4236 (nreverse res)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4237
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4238 ;; Creating new sintern tables
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4239
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4240 (defun idlwave-new-sintern-type (tag)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4241 "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
4242 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
4243 `idlwave-sint-TAGs'."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4244 (let* ((name (symbol-name tag))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4245 (names (concat name "s"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4246 (var (intern (concat "idlwave-sint-" names)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4247 (func (intern (concat "idlwave-sintern-" name))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4248 (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
4249 (fset func ; set the function
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4250 `(lambda (name &optional set)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4251 (cond ((not (stringp name)) name)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4252 ((cdr (assoc (downcase name) ,var)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4253 (set
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4254 (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
4255 name)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4256 (name))))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4257
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4258 (defun idlwave-reset-sintern-type (tag)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4259 "Reset the sintern variable associated with TAG."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4260 (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
4261
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4262 ;;---------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4263
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4264
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4265 ;; 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
4266 (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
4267 "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
4268 (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
4269 "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
4270 (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
4271 "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
4272 (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
4273 "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
4274 (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
4275 "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
4276 (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
4277 "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
4278 (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
4279 "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
4280 (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
4281 "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
4282 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
4283 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
4284 (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
4285 "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
4286 (defvar idlwave-routines nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4287 "Holds the combinded 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
4288 (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
4289 "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
4290 (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
4291 "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
4292 (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
4293 (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
4294 "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
4295 (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
4296 "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
4297
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4298 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4299 ;; 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
4300
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4301 (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
4302 (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
4303 "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
4304
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4305 (defun idlwave-routines ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4306 "Provide a list of IDL routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4307 This routine loads the builtin routines on the first call. Later it
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4308 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
4309 (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
4310 (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
4311 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4312 (cond
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4313 ((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
4314 (message "updating........")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4315 (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
4316 (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
4317 ((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
4318 ;; Keep it running...
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4319 )
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4320 (t
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4321 ;; 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
4322 (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
4323 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4324 (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
4325 (error nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4326 (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
4327 (or idlwave-routines
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4328 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4329 (idlwave-update-routine-info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4330 ;; return the current value
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4331 idlwave-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4332
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4333 (defvar idlwave-update-rinfo-hook nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4334 "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
4335 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
4336
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4337 (defun idlwave-rescan-catalog-directories ()
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4338 "Rescan the previously selected directories. For batch processing."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4339 (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
4340
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4341 (defun idlwave-rescan-asynchronously ()
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4342 "Dispatch another emacs instance to update the idlwave catalog.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4343 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
4344 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
4345 (interactive)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4346 (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
4347 (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
4348 (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
4349 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4350 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4351 (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
4352 (error nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4353 (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
4354 (error "Quit"))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4355 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4356 (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
4357 (error nil))))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4358 (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
4359 (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
4360 (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
4361 (error "No catalog has been produced yet"))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4362 (let* ((emacs (expand-file-name (invocation-name) (invocation-directory)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4363 (args (list "-batch"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4364 "-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
4365 "-l" "idlwave"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4366 "-f" "idlwave-rescan-catalog-directories"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4367 (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
4368 nil emacs args)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4369 (setq idlwave-catalog-process process)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4370 (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
4371 process
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4372 (lambda (pro why)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4373 (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
4374 (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
4375 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
4376 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
4377 (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
4378 (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
4379 (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
4380
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4381
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4382 ;; 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
4383 ;;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4384 ;; ("ROUTINE" type class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4385 ;; (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
4386 ;; (buffer pro_file dir) | (compiled pro_file dir)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4387 ;; "calling_string" ("HELPFILE" (("KWD1" . link1) ...)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4388 ;;
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4389 ;; 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
4390 ;; 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
4391 ;; 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
4392 ;; 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
4393
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4394
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4395 (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
4396 (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
4397
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4398 (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
4399 "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
4400 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
4401 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
4402 about individual routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4403
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4404 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
4405 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
4406 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
4407 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
4408 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
4409
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4410 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
4411 `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
4412 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
4413 for currently compiled routines.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4414
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4415 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
4416 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
4417 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
4418
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4419 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
4420 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
4421 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
4422 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
4423 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
4424 (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
4425 ;; 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
4426 (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
4427 (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
4428 (and (fboundp 'timerp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4429 (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
4430 (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
4431 (cond
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4432 ((equal arg '(64))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4433 ;; 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
4434 (idlwave-rescan-asynchronously))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4435 ((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
4436 ;; 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
4437 (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
4438 (t
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4439 (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
4440 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
4441 (null idlwave-routines)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4442 ;; 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
4443 ;; 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
4444 (override-idle (or arg idlwave-buffer-case-takes-precedence)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4445
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4446 (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
4447 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
4448 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
4449 ;; 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
4450 (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
4451 ;; 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
4452 (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
4453 (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
4454 ((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
4455 (t 'bufsh))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4456
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4457 (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
4458 ;; 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
4459 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4460 (idlwave-update-buffer-routine-info)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4461 (and load (idlwave-load-system-rinfo override-idle)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4462 ;; We first do the system info, and then the buffers
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4463 (and load (idlwave-load-system-rinfo override-idle))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4464 (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
4465
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4466 ;; 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
4467 (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
4468 (idlwave-shell-is-running)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4469 (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
4470 idlwave-query-shell-for-routine-info)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4471
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4472 ;; Load the library catalogs again, first re-scanning the path
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4473 (when arg
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4474 (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
4475 (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
4476 '(progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4477 (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
4478 (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
4479 'hide)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4480 (idlwave-scan-library-catalogs)))
47930
43574ede3ab1 (idlwave-region-active-p): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47479
diff changeset
4481
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4482 (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
4483 (not no-concatenate))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4484 ;; 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
4485 ;; concatenation now.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4486 ;; 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
4487 ;; 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
4488 ;; 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
4489 ;; *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
4490 ;; 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
4491 ;; 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
4492 (idlwave-concatenate-rinfo-lists nil 'run-hooks))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4493
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4494 (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
4495 ;; 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
4496 (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
4497 (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
4498
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4499
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4500 (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
4501 (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
4502 (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
4503 (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
4504 (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
4505 (and (fboundp 'timerp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4506 (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
4507 (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
4508 (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
4509 (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
4510 (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
4511 (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
4512 (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
4513 (not idlwave-routines))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4514 (condition-case nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4515 (progn
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4516 (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
4517 (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
4518 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
4519 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
4520 (error nil))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4521
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4522 (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
4523
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4524 (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
4525 (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
4526 (arr idlwave-load-rinfo-steps-done))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4527 (when (catch 'exit
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4528 (when (not (aref arr 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4529 (message "Loading idlw-rinfo.el in idle time...")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4530 (load "idlw-rinfo" 'noerror 'nomessage)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4531 (message "Loading idlw-rinfo.el 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
4532 (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
4533 (throw 'exit t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4534 (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
4535 (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
4536 (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
4537 (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
4538 (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
4539 (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
4540 (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
4541 (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
4542 (throw 'exit t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4543 (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
4544 (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
4545 (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
4546 (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
4547 (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
4548 (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
4549 (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
4550 ;; 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
4551 (if (and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4552 (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
4553 idlwave-library-routines)
47930
43574ede3ab1 (idlwave-region-active-p): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47479
diff changeset
4554 (progn
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4555 (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
4556 (ding)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4557 (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
4558 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
4559 (message "Loading user catalog in idle time...done"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4560 (aset arr 2 t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4561 (throw 'exit t)))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4562 (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
4563 (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
4564 (message "Normalizing user catalog routines in idle time...")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4565 (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
4566 (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
4567 idlwave-user-catalog-routines 'sys))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4568 (message
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4569 "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
4570 (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
4571 (throw 'exit t))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4572 (when (not (aref arr 4))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4573 (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
4574 "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
4575 (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
4576 (throw 'exit t))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4577 (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
4578 (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
4579 (idlwave-routines)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4580 (message "Finishing initialization 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
4581 (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
4582 ;; restart the timer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4583 (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
4584 (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
4585 (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
4586 (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
4587 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
4588 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
4589
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4590 (defun idlwave-load-system-rinfo (&optional force)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4591 ;; Load and case-treat the system and catalog files.
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4592 (when (or force (not (aref idlwave-load-rinfo-steps-done 0)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4593 (load "idlw-rinfo" 'noerror 'nomessage))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
4594 (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
4595 (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
4596 (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
4597 (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
4598 (message "Normalizing idlwave-system-routines...done"))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4599 (setq idlwave-routines (copy-sequence 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
4600 (setq 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
4601 (nthcdr (1- (length idlwave-routines)) idlwave-routines))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4602 (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
4603 (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
4604 (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
4605 (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
4606 (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
4607 (error nil))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4608 (when (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
4609 (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
4610 (error "Outdated user catalog: %s... recreate" 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
4611 (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
4612 (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
4613 (message "Normalizing user catalog routines...")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4614 (setq idlwave-user-catalog-routines
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4615 (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
4616 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
4617 (message "Normalizing user catalog routines...done")))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4618 (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
4619 (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
4620 "Loading and normalizing library catalogs..."))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4621 (run-hooks 'idlwave-after-load-rinfo-hook))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4622
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4623
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4624 (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
4625 (let (res)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4626 (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
4627 ((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
4628 ;; 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
4629 (message "Scanning all buffers...")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4630 (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
4631 (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
4632 ((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
4633 ;; 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
4634 (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
4635 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4636 ;; Just scan this buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4637 (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
4638 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4639 (message "Scanning current buffer...")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4640 (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
4641 (list (current-buffer))))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4642 ;; Put the result into the correct variable
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4643 (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
4644 (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
4645
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4646 (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
4647 "Put the different sources for routine information together."
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4648 ;; 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
4649 ;; 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
4650 ;; 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
4651 (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
4652 (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
4653 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
4654 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
4655 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
4656 (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
4657
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4658 ;; 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
4659 (unless quiet
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4660 (message
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4661 "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
4662 (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
4663 (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
4664 (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
4665 (length idlwave-user-catalog-routines)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4666 (length idlwave-system-routines)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4667 (if run-hook
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4668 (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
4669
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4670 (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
4671 "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
4672 (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
4673 (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
4674 (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
4675 (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
4676 (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
4677 (push (list class) idlwave-class-alist)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4678 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
4679
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4680 ;; 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
4681 (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
4682 (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
4683 (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
4684 (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
4685 (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
4686 (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
4687
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4688 (defun idlwave-update-current-buffer-info (why)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4689 "Update idlwave-routines for current buffer. 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
4690 (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
4691 (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
4692 (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
4693 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
4694 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
4695 (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
4696 (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
4697 (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
4698 (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
4699 (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
4700 nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4701 (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
4702 (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
4703 (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
4704 (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
4705 (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
4706 routines)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4707 (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
4708
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4709 (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
4710 "Cut the part from FILE out of `idlwave-buffer-routines' and add NEW."
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4711 (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
4712 found)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4713 (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
4714 ;; 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
4715 ;; 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
4716 ;; 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
4717 (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
4718 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4719 (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
4720 (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
4721 (if found
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4722 ;; 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
4723 (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
4724 (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
4725 (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
4726 (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
4727
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4728 ;;----- Scanning buffers -------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4729
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4730 (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
4731 "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
4732 (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
4733 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4734 (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
4735 (set-buffer buf)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4736 (if (and (eq major-mode 'idlwave-mode)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4737 buffer-file-name)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4738 ;; 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
4739 (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
4740 (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
4741 (error nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4742 (push res routine-lists)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4743 ;; 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
4744 (apply 'nconc routine-lists)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4745
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4746 (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
4747 "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
4748 (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
4749 routine-list string entry)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4750 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4751 (save-restriction
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4752 (widen)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4753 (goto-char (point-min))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4754 (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
4755 "^[ \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
4756 (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
4757 (match-beginning 0)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4758 (progn
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4759 (idlwave-end-of-statement)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4760 (point))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4761 (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
4762 (push entry routine-list))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4763 routine-list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4764
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4765 (defvar 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
4766 (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
4767 "Parse a module definition."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4768 (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
4769 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
4770 ;; Remove comments
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4771 (while (string-match ";.*" string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4772 (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
4773 ;; 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
4774 (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
4775 (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
4776 (while (string-match "\n" string)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
4777 (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
4778 ;; 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
4779 (when (string-match
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4780 "\\<\\(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
4781 (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
4782 (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
4783 (if (match-beginning 3)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4784 (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
4785 (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
4786 ;; 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
4787 (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
4788 ",\\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
4789 string start)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4790 (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
4791 (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
4792 (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
4793 (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
4794 ;; Normalize and sort.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4795 (setq args (nreverse args))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4796 (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
4797 (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
4798 ;; 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
4799 ;; 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
4800 ;; 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
4801 (list name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4802 (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
4803 class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4804 (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
4805 (list 'buffer (buffer-file-name)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4806 ; ((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
4807 ; (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
4808 ; (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
4809 ; (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
4810 ; (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
4811 ; (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
4812 (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
4813 idlwave-scanning-lib-dir "UserLib")))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4814 (concat
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4815 (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
4816 (if class "Obj ->[%s::]" "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4817 "%s"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4818 (if args
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4819 (concat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4820 (if (string= type "function") "(" ", ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4821 (mapconcat 'identity args ", ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4822 (if (string= type "function") ")" ""))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4823 (if keywords
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4824 (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
4825 nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4826
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4827
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4828 ;;----- 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
4829
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
4830 (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
4831 "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
4832 (cond
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4833 ((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
4834 (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
4835 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
4836 ((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
4837 (t "@@@@@@@@")))
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4838
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4839
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
4840
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4841 (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
4842 "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
4843
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4844 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
4845 the result as a file `idlwave-user-catalog-file'. When this file
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4846 exists, will be automatically loaded to give routine information about
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4847 library routines. With ARG, just rescan the same directories as last
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4848 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
4849 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4850 ;; 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
4851 (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
4852 (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
4853 (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
4854 (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
4855 (error nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4856 ;; 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
4857 (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
4858 (> (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
4859 (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
4860 (file-name-directory idlwave-user-catalog-file))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4861 (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
4862 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
4863 (error "`idlwave-user-catalog-file' does not point to a file in an accessible directory"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4864
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4865 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4866 ;; 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
4867 ((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
4868 (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
4869 (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
4870
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4871 ;; 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
4872 (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
4873 (idlwave-display-user-catalog-widget
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4874 (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
4875 ;; 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
4876 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4877 (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
4878 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
4879 (if path-entry
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4880 (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
4881 (list x))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4882 (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
4883 (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
4884
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4885 ;; 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
4886 (t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4887 (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
4888 (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
4889 (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
4890 '(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
4891 'hide))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4892
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4893
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4894 ;; 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
4895 (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
4896 ;; 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
4897 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4898 ;; Scan immediately
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4899 (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
4900 ;; 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
4901 (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
4902 (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
4903 (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
4904
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4905 (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
4906 "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
4907 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
4908 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
4909
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4910 %s
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4911
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4912 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
4913 `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
4914
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4915 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
4916 \(\".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
4917 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
4918 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
4919
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4920 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
4921 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
4922 \n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4923
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4924 (defvar idlwave-widget)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4925 (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
4926 (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
4927 "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
4928 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4929 (require 'widget)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4930 (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
4931 (unless dirs-list
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4932 (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
4933
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4934 (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
4935 (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
4936 (kill-all-local-variables)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4937 (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
4938 (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
4939 idlwave-user-catalog-file))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4940
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4941 (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
4942 :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
4943 "Scan & Save")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4944 (widget-insert " ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4945 (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
4946 :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
4947 "Delete File")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4948 (widget-insert " ")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4949 (widget-create 'push-button
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4950 :notify
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4951 '(lambda (&rest ignore)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4952 (let ((path-list (widget-get idlwave-widget :path-dirs)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4953 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4954 (unless (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
4955 (idlwave-path-alist-add-flag x 'user)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4956 path-list)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4957 (idlwave-display-user-catalog-widget path-list)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4958 "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
4959 (widget-insert " ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4960 (widget-create 'push-button
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4961 :notify
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4962 '(lambda (&rest ignore)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4963 (let ((path-list (widget-get idlwave-widget :path-dirs)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4964 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4965 (idlwave-path-alist-remove-flag x 'user))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4966 path-list)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4967 (idlwave-display-user-catalog-widget path-list)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4968 "Deselect All")
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4969 (widget-insert " ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4970 (widget-create 'push-button
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4971 :notify (lambda (&rest ignore)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4972 (kill-buffer (current-buffer)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4973 "Quit")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4974 (widget-insert "\n\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4975
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4976 (widget-insert "Select Directories: \n")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4977
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4978 (setq idlwave-widget
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4979 (apply 'widget-create
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4980 'checklist
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4981 :value (delq nil (mapcar (lambda (x)
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4982 (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
4983 (car x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4984 dirs-list))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4985 :greedy t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4986 :tag "List of directories"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4987 (mapcar (lambda (x)
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4988 (list 'item
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4989 (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
4990 (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
4991 (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
4992 (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
4993 (widget-insert "\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4994 (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
4995 (widget-setup)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4996 (goto-char (point-min))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
4997 (delete-other-windows))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
4998
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
4999 (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
5000 (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
5001 (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
5002 (progn
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5003 (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
5004 (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
5005
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5006 (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
5007 ;; 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
5008 (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
5009 (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
5010 (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
5011 (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
5012 dir-entry)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5013 (while (setq dir-entry (pop this-path-alist))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5014 (if (member
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5015 (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
5016 (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
5017 (car dir-entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5018 selected-dirs)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5019 (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
5020 (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
5021 (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
5022
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5023 (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
5024 (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
5025 ;; 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
5026 (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
5027 (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
5028 (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
5029 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
5030 (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
5031 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
5032 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
5033 (if idlwave-auto-write-paths (idlwave-write-paths))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5034 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5035 (set-buffer (get-buffer-create "*idlwave-scan.pro*"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5036 (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
5037 (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
5038 (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
5039 (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
5040 (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
5041 (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
5042 (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
5043 (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
5044 (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
5045 (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
5046 (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
5047 (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
5048 (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
5049 (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
5050 (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
5051 (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
5052 (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
5053 (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
5054 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
5055 (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
5056 (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
5057 (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
5058 (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
5059 (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
5060 (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
5061 (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
5062 font-lock-mode)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5063 (font-lock-mode 0))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5064 (erase-buffer)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5065 (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
5066 (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
5067
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5068 ;; 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
5069 (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
5070 (let ((standard-output (current-buffer)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5071 (mapcar (lambda (x)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5072 (insert "\n ")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5073 (prin1 x)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5074 (goto-char (point-max)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5075 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
5076 (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
5077 (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
5078 (goto-char (point-min))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5079 ;; Save the buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5080 (save-buffer 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5081 (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
5082 (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
5083 (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
5084 (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
5085 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
5086 (sit-for 2)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5087 (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
5088
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5089 (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
5090 (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
5091 (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
5092 (condition-case nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5093 (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
5094 (error nil))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5095
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5096 (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
5097 (interactive)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5098 (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
5099 (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
5100 (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
5101 (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
5102 (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
5103 font-lock-mode)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5104 (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
5105 (erase-buffer)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5106 (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
5107 (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
5108 ;; 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
5109 (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
5110 idlwave-system-directory))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5111
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5112 ;; 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
5113 (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
5114 (let ((standard-output (current-buffer)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5115 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5116 (insert "\n ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5117 (prin1 x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5118 (goto-char (point-max)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5119 idlwave-path-alist))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5120 (insert "))\n")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5121 (save-buffer 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5122 (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
5123
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5124
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5125 (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
5126 ;; 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
5127 ;; 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
5128 (message "Expanding path...")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5129 (let (path1 dir recursive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5130 (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
5131 (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
5132 (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
5133 (if (and recursive
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5134 (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
5135 (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
5136 (if recursive
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5137 ;; Expand recursively
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5138 (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
5139 ;; Keep unchanged
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5140 (push dir path1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5141 (message "Expanding path...done")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5142 (nreverse path1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5143
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5144 (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
5145 ;; 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
5146 (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
5147 (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
5148 (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
5149 (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
5150 (while (setq file (pop files))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5151 (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
5152 (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
5153 (push dir path1)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5154 path1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5155
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5156
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5157 ;;----- 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
5158
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5159
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5160
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
5161
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5162 (defun idlwave-scan-library-catalogs (&optional message-base no-load)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5163 "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
5164
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5165 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
5166 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
5167 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
5168 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
5169 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
5170 (when idlwave-use-library-catalogs
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5171 (let ((dirs
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5172 (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
5173 (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
5174 (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
5175 (old-libname "")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5176 dir-entry dir flags catalog all-routines)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5177 (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
5178 (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
5179 (catch 'continue
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5180 (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
5181 (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
5182 (unless no-load
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5183 (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
5184 ;; 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
5185 (condition-case nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5186 (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
5187 (error (throw 'continue t)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5188 (when (and
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5189 message-base
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5190 (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
5191 old-libname)))
65584
6dbba0bd58df Message format fixes, commit no. 3
Deepak Goel <deego@gnufans.org>
parents: 64085
diff changeset
5192 (message "%s" (concat message-base
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5193 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
5194 (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
5195 (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
5196 (setq all-routines
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5197 (append
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5198 (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
5199 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
5200 all-routines))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5201
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5202 ;; 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
5203 (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
5204 (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
5205 (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
5206 (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
5207 (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
5208
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5209 ;;----- 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
5210
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5211 ;; First, here is the idl program which can be used to query IDL for
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5212 ;; defined routines.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5213 (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
5214 "
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5215 ;; START OF IDLWAVE SUPPORT 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
5216 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
5217 ;; 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
5218 if name eq '' then return
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5219 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
5220 methsep = strpos(name,'::')
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5221 meth = methsep ne -1
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5222
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5223 ;; Get routine info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5224 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
5225 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
5226 nargs = pars.num_args
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5227 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
5228 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
5229 if nkw gt 0 then kwargs = pars.kw_args
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5230
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5231 ;; Trim the class, and make the name
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5232 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
5233 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
5234 name = strmid(name,methsep+2,strlen(name)-1)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5235 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
5236 ;; remove the self argument
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5237 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
5238 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
5239 endif
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5240 endif else begin
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5241 ;; 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
5242 class = \"\"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5243 endelse
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5244
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5245 ;; Calling sequence
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5246 cs = \"\"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5247 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
5248 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
5249 cs = cs + '%s'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5250 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
5251 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
5252 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
5253 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
5254 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
5255 endfor
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5256 end
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5257 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
5258 ;; Keyword arguments
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5259 kwstring = ''
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5260 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
5261 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
5262 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
5263 endfor
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5264 endif
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5265
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5266 ret=(['IDLWAVE-PRO','IDLWAVE-FUN'])[func]
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5267
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5268 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
5269 + sep + cs + sep + kwstring
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5270 end
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5271
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5272 pro 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
5273 on_error,1
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5274 sep = '<@>'
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5275 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
5276 all = routine_info()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5277 for i=0,n_elements(all)-1 do $
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5278 idlwave_print_info_entry,all[i],separator=sep
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5279 all = routine_info(/functions)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5280 for i=0,n_elements(all)-1 do $
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5281 idlwave_print_info_entry,all[i],/func,separator=sep
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5282 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
5283 end
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5284
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5285 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
5286 on_error,1
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5287 catch,error_status
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5288 if error_status ne 0 then begin
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5289 print, 'Cannot get info about system variables'
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5290 endif else begin
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5291 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
5292 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
5293 v = strsplit(s,' +',/regex,/extract) ; get variables
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5294 for i=0,n_elements(v)-1 do begin
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5295 t = [''] ; get tag list
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5296 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
5297 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
5298 endfor
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5299 endelse
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5300 end
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5301
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5302 pro idlwave_get_class_tags, class
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5303 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
5304 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
5305 end
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5306 ;; END OF IDLWAVE SUPPORT ROUTINES
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5307 "
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5308 "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
5309
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5310 (defvar idlwave-idlwave_routine_info-compiled nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5311 "Remembers 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
5312
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5313 (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
5314 (defvar idlwave-shell-temp-rinfo-save-file)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5315 (defun idlwave-shell-update-routine-info (&optional quiet run-hooks wait)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5316 "Query the shell for routine_info of compiled modules and update the 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
5317 ;; Save and compile the procedure. The compiled procedure is then
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5318 ;; saved into an IDL SAVE file, to allow for fast RESTORE.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5319 ;; We need to RESTORE the procedure each time we use it, since
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5320 ;; the user may have killed or redefined it. In particular,
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5321 ;; .RESET_SESSION will kill all user procedures.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5322 (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
5323 (file-readable-p (idlwave-shell-temp-file 'rinfo)))
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5324 (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
5325 (set-buffer (idlwave-find-file-noselect
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5326 (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
5327 (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
5328 (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
5329 (save-buffer 0))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5330 (idlwave-shell-send-command
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5331 (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
5332 nil 'hide wait)
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5333 ; (message "SENDING SAVE") ; ????????????????????????
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5334 (idlwave-shell-send-command
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5335 (format "save,'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
5336 (idlwave-shell-temp-file 'rinfo))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5337 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
5338
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5339 ;; Restore and execute the procedure, analyze the output
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5340 ; (message "SENDING RESTORE & EXECUTE") ; ????????????????????????
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5341 (idlwave-shell-send-command
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5342 (format "RESTORE, '%s' & 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
5343 idlwave-shell-temp-rinfo-save-file)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5344 `(progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5345 (idlwave-shell-routine-info-filter)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5346 (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
5347 'hide wait))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5348
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5349 ;; ---------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5350 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5351 ;; 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
5352
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5353 (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
5354 (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
5355 (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
5356 (defvar idlwave-complete-special 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
5357
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5358 (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
5359 "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
5360 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
5361 at this point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5362 - 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
5363 - In the middle of a statement it completes function names.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5364 - after a `(' or `,' in the argument list of a function or procedure,
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5365 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
5366 - 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
5367
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5368 When several completions are possible, a list will be displayed in the
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5369 *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
5370 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
5371 \\[idlwave-complete].
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5372
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5373 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
5374 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
5375 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
5376 \\[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
5377
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5378 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
5379 `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
5380
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5381 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
5382 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
5383 Possible values are:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5384
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5385 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
5386 1 <=> 'procedure
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5387 2 <=> 'procedure-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5388 3 <=> 'function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5389 4 <=> 'function-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5390 5 <=> 'procedure-method
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5391 6 <=> 'procedure-method-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5392 7 <=> 'function-method
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5393 8 <=> 'function-method-keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5394 9 <=> 'class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5395
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5396 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
5397 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
5398
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5399 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
5400 completion.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5401
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5402 For Lisp programmers only:
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5403 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
5404 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
5405 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5406 (idlwave-routines)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5407 (let* ((where-list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5408 (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
5409 (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
5410 (symbolp arg)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5411 (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
5412 (idlwave-where)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5413 (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
5414 (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
5415 (completion-regexp-list
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5416 (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
5417 (list (read-string (concat "Completion Regexp: "))))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5418
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5419 (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
5420 (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
5421 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
5422
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5423 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5424
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5425 ((and (null arg)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5426 (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
5427 (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
5428 (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
5429 (idlwave-scroll-completions))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5430
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5431 ;; 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
5432 ((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
5433 (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
5434 (idlwave-complete-filename))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5435
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5436 ;; Check for any special completion functions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5437 ((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
5438 (idlwave-call-special idlwave-complete-special)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5439
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5440 ((null what)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5441 (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
5442
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5443 ;; Complete a class
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5444 ((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
5445 (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
5446 (idlwave-complete-class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5447
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5448 ((eq what 'procedure)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5449 ;; 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
5450 (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
5451 (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
5452 (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
5453 (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
5454 (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
5455 (type-selector 'pro))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5456 (setq idlwave-completion-help-info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5457 (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
5458 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5459 '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
5460 (idlwave-routines) 'idlwave-selector
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5461 (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
5462 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5463 (if class-selector
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5464 (format " (class is %s)"
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5465 (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
5466 "unknown" class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5467 ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5468 isa
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5469 '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
5470
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5471 ((eq what 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5472 ;; 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
5473 (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
5474 (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
5475 (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
5476 (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
5477 (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
5478 (type-selector 'fun))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5479 (setq idlwave-completion-help-info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5480 (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
5481 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5482 '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
5483 (idlwave-routines) 'idlwave-selector
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5484 (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
5485 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5486 (if class-selector
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5487 (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
5488 (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
5489 "unknown" class-selector))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5490 ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5491 isa
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5492 '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
5493
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5494 ((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
5495 (equal arg '(4)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5496 (idlwave-complete 3))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5497
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5498 ((eq what 'procedure-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5499 ;; Complete a procedure keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5500 (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
5501 (name (car where))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5502 (method-selector name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5503 (type-selector 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5504 (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
5505 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5506 (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
5507 (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
5508 (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
5509 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
5510 (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
5511 (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
5512 (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
5513 (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
5514 (idlwave-make-full-name class name)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5515 (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
5516 super-classes system))
63494
c6c9f46490d0 (idlwave-complete): Don't use `format' on `error' arguments.
Juanma Barranquero <lekktu@gmail.com>
parents: 63427
diff changeset
5517 (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
5518 (idlwave-make-full-name class name)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5519 (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
5520 (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
5521 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5522 'keyword 'keyword list nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5523 (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
5524 (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
5525 (if (or (member '("_EXTRA") list)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5526 (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
5527 " (note _EXTRA)" ""))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5528 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5529 'idlwave-attach-keyword-classes)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5530
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5531 ((eq what 'function-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5532 ;; Complete a function keyword
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5533 (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
5534 (name (car where))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5535 (method-selector name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5536 (type-selector 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5537 (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
5538 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5539 (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
5540 (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
5541 (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
5542 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
5543 (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
5544 (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
5545 msg-name)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5546 (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
5547 (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
5548 (idlwave-make-full-name class name)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5549 (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
5550 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
5551 ;; 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
5552 (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
5553 (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
5554 (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
5555 "::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
5556 (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
5557 (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
5558 msg-name))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5559 (setq idlwave-completion-help-info
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5560 (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
5561 (idlwave-complete-in-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5562 '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
5563 (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
5564 (if (or (member '("_EXTRA") list)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5565 (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
5566 " (note _EXTRA)" ""))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5567 isa
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5568 '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
5569
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5570 (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
5571
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5572 (defvar idlwave-complete-special nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5573 "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
5574 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
5575 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
5576 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
5577 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
5578 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
5579 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
5580
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5581 (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
5582 (let ((funcs functions)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5583 fun ret)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5584 (catch 'exit
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5585 (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
5586 (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
5587 (throw 'exit ret)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5588 nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5589
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5590 (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
5591 ;; 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
5592 ;; 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
5593 ;; 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
5594 ;; 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
5595 ;; 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
5596 (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
5597 ("function") ("function-keyword")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5598 ("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
5599 ("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
5600 ("class")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5601 (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
5602 (class (idlwave-sintern-class class))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5603 (what (cond
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5604 ((equal what 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5605 (setq what
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5606 (intern (completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5607 "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
5608 ((integerp what)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5609 (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
5610 ((and what
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5611 (symbolp what)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5612 (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
5613 what)
60917
87f9bb9d3718 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el,
Werner LEMBERG <wl@gnu.org>
parents: 60766
diff changeset
5614 (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
5615 (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
5616 (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
5617
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5618 (cond
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 ((eq what 'procedure)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5621 (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
5622
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5623 ((eq what 'procedure-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5624 (let* ((class-selector nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5625 (super-classes nil)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5626 (type-selector 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5627 (pro (or module
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5628 (idlwave-completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5629 "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
5630 (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
5631 (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
5632 (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
5633
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5634 ((eq what 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5635 (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
5636
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5637 ((eq what 'function-keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5638 (let* ((class-selector nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5639 (super-classes nil)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5640 (type-selector 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5641 (func (or module
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5642 (idlwave-completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5643 "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
5644 (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
5645 (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
5646 (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
5647
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5648 ((eq what 'procedure-method)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5649 (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
5650
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5651 ((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
5652 (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
5653 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5654 (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
5655 (type-selector 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5656 (pro (or module
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5657 (idlwave-completing-read
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5658 (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
5659 (idlwave-routines) 'idlwave-selector))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5660 (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
5661 (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
5662 (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
5663
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5664 ((eq what 'function-method)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5665 (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
5666
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5667 ((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
5668 (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
5669 (class-selector class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5670 (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
5671 (type-selector 'fun)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5672 (func (or module
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5673 (idlwave-completing-read
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5674 (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
5675 (idlwave-routines) 'idlwave-selector))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5676 (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
5677 (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
5678 (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
5679
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5680 ((eq what 'class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5681 (list nil-list nil-list 'class nil-list nil))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5682
60917
87f9bb9d3718 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el,
Werner LEMBERG <wl@gnu.org>
parents: 60766
diff changeset
5683 (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
5684
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5685 (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
5686 ;; Completing read, case insensitive
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5687 (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
5688 (unwind-protect
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5689 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5690 (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
5691 (apply 'completing-read args))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5692 (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
5693
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5694 (defvar idlwave-shell-default-directory)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5695 (defun idlwave-complete-filename ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5696 "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
5697 (require 'comint)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5698 (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
5699 (comint-completion-addsuffix nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5700 (default-directory
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5701 (if (and (boundp 'idlwave-shell-default-directory)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5702 (stringp idlwave-shell-default-directory)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5703 (file-directory-p idlwave-shell-default-directory))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5704 idlwave-shell-default-directory
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5705 default-directory)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5706 (comint-dynamic-complete-filename)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5707
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5708 (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
5709 ;; 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
5710 (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
5711
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5712 (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
5713 "Like `idlwave-rinfo-assq', but sintern strings first."
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5714 (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
5715 (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
5716 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
5717
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5718 (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
5719 ;; 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
5720 (catch 'exit
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5721 (let (match)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5722 (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
5723 (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
5724 (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
5725 (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
5726 (throw 'exit match))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5727 (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
5728
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5729 (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
5730 ;; 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
5731 (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
5732 class rtn)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5733 (while classes
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5734 (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
5735 (setq classes nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5736 rtn))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5737
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5738 (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
5739 keep-system)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5740 "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
5741 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
5742 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
5743 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
5744 (let ((twins (idlwave-routine-twins
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5745 (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
5746 list))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5747 syslibp)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5748 (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
5749 (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
5750 (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
5751 (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
5752 (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
5753 (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
5754 ;; 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
5755 (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
5756 (if with-file
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5757 (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
5758 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5759 (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
5760 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
5761 (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
5762
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5763 (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
5764 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
5765 "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
5766 (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
5767 (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
5768 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
5769
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5770 (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
5771 "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
5772 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
5773 (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
5774 (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
5775 (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
5776 (incf cnt)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5777 (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
5778 (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
5779 (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
5780 (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
5781 nil)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
5782
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5783 (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
5784 "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
5785 (let (rtn elt)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5786 (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
5787 (push elt rtn)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5788 (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
5789 (nreverse rtn)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5790
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5791 (defun idlwave-all-method-classes (method &optional type)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5792 "Return all classes which have a method METHOD. 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
5793 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
5794 (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
5795 (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
5796 (let (rtn)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5797 (mapcar (lambda (x)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5798 (and (nth 2 x)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5799 (or (not type)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5800 (eq type (nth 1 x)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5801 (push (nth 2 x) rtn)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5802 (idlwave-all-assq method (idlwave-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5803 (idlwave-uniquify rtn))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5804
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5805 (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
5806 "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
5807 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
5808 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
5809 (if (or (null method)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5810 (null keyword))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5811 nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5812 (let (rtn)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5813 (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
5814 (and (nth 2 x) ; non-nil class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5815 (or (not type) ; correct or unspecified type
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5816 (eq type (nth 1 x)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5817 (assoc keyword (idlwave-entry-keywords x))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5818 (push (nth 2 x) rtn)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5819 (idlwave-all-assq method (idlwave-routines)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5820 (idlwave-uniquify rtn))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5821
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5822 (defun idlwave-members-only (list club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5823 "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
5824 (let (rtn)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5825 (while list
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5826 (if (member (car list) club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5827 (setq rtn (cons (car list) rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5828 (setq list (cdr list)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5829 (nreverse rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5830
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5831 (defun idlwave-nonmembers-only (list club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5832 "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
5833 (let (rtn)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5834 (while list
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5835 (if (member (car list) club)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5836 nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5837 (setq rtn (cons (car list) rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5838 (setq list (cdr list)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5839 (nreverse rtn)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5840
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5841 (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
5842 "Return whether or not the class is listed explicitly, ala a->b::c.
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5843 INFO is as returned by idlwave-what-function or -procedure."
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5844 (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
5845 (if apos
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
5846 (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
5847 (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
5848
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5849 (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
5850 "List of special functions for determining class.
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5851 Must accept two arguments: `apos' and `info'")
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5852
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5853 (defun idlwave-determine-class (info type)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5854 ;; 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
5855 ;; 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
5856 ;; 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
5857 ;; 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
5858 ;; 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
5859 ;; 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
5860 ;; 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
5861 ;; 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
5862 (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
5863 (apos (nth 3 info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5864 (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
5865 (upcase (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5866 (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5867 idlwave-query-class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5868 (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
5869 idlwave-query-class))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5870 (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
5871 (dassoc (cdr dassoc))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5872 (t t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5873 (arrow (and apos (string= (buffer-substring apos (+ 2 apos)) "->")))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5874 (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
5875 (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
5876 (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
5877 (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
5878 (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
5879 (looking-at "self\\>")))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5880 (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
5881 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
5882 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5883 ((null class) nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5884 ((eq t class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5885 ;; 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
5886 (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
5887 idlwave-store-inquired-class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5888 (not force-query))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5889 (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
5890 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
5891 (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
5892 (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
5893
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5894 ;; Before prompting, try any special class determination routines
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5895 (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
5896 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
5897 (not force-query))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5898 (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
5899 (idlwave-call-special idlwave-determine-class-special apos))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5900 (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
5901 (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
5902 store idlwave-store-inquired-class)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5903
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5904 ;; 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
5905 (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
5906 (or force-query query))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5907 (setq class-alist
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5908 (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
5909 (setq class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5910 (idlwave-sintern-class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5911 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5912 ((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
5913 (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
5914 ((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
5915 (car (car class-alist)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5916 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5917 (setq store idlwave-store-inquired-class)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5918 (idlwave-completing-read
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5919 (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
5920 (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
5921 type (car info))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5922 ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5923 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
5924
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5925 ;; 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
5926 (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
5927 ;; 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
5928 (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
5929 (condition-case ()
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5930 (add-text-properties
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5931 apos (+ apos 2)
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5932 `(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
5933 rear-nonsticky t))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
5934 (error nil)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5935 (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
5936 ;; Return the class
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5937 class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5938 ;; Default as fallback
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5939 (t class))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5940
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5941 (defvar type-selector)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5942 (defvar class-selector)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5943 (defvar method-selector)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
5944 (defvar super-classes)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5945 (defun idlwave-selector (a)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5946 (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
5947 (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
5948 (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
5949 (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
5950
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5951 (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
5952 ;; 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
5953 (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
5954 (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
5955 (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
5956 sel))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
5957
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5958
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5959 (defun idlwave-where ()
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5960 "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
5961 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
5962 \(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
5963
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5964 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
5965 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
5966 COMPLETE-WHAT a symbol indicating what kind of completion makes sense here
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5967 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
5968 be completed here.
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5969 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
5970 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
5971
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5972 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
5973 PRO: Procedure name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5974 FUNC: Function name
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5975 POINT: Where is this
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5976 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
5977 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
5978 (idlwave-routines)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
5979 (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
5980 (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
5981 (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
5982 (func (car func-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5983 (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
5984 (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
5985 (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
5986 (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
5987 (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
5988 (pro (car pro-entry))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5989 (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
5990 (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
5991 (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
5992 (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
5993 (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
5994 (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
5995 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
5996 (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
5997 (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
5998 ((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
5999 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
6000 (setq cw 'class))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6001 ((string-match
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6002 "\\`[ \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
6003 (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
6004 (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
6005 match-string))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6006 (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
6007 cw-arrow pro-arrow))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6008 ((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
6009 match-string)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6010 nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6011 ((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
6012 match-string)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6013 (setq cw 'class))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6014 ((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
6015 match-string)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6016 (setq cw 'class))
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6017 ((and func
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6018 (> func-point pro-point)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6019 (= func-level 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6020 (memq last-char '(?\( ?,)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6021 (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
6022 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
6023 ((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
6024 (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
6025 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
6026 ; ((member last-char '(?\' ?\) ?\] ?!))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6027 ; ;; 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
6028 ; ;; 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
6029 ; ;; 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
6030 ; nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6031 ;; 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
6032 (t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6033 (setq cw 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6034 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6035 (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
6036 (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
6037 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
6038 (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
6039 t))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6040 (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
6041 (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
6042 cw
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6043 (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
6044 last-char)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6045
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6046 (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
6047 ;; 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
6048 (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
6049 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6050 (buffer-substring
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6051 (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
6052 (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
6053
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6054 (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
6055 ;; 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
6056 ;; 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
6057 ;; 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
6058
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6059 ;; 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
6060 ;; searches to this point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6061
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6062 (catch 'exit
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6063 (let (pos
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6064 func-point
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6065 (cnt 0)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6066 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
6067 (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
6068 (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
6069 (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
6070 (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
6071 ;; 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
6072 (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
6073 (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
6074 (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
6075 (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
6076 (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
6077 (when (and (= (following-char) ?\()
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6078 (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
6079 "\\(::\\|\\<\\)\\([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
6080 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
6081 (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
6082 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
6083 pos func-point)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6084 (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
6085 "->[ \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
6086 (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
6087 class (or (match-string 2) t)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6088 (throw
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6089 '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
6090 (list
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6091 (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
6092 (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
6093 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
6094 (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
6095 (throw 'exit nil)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6096
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6097 (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
6098 ;; 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
6099 ;; 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
6100
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6101 ;; 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
6102 ;; searches to this point.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6103 (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
6104 pro class arrow-start string)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6105 (save-excursion
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6106 ;;(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
6107 (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
6108 (setq string (buffer-substring (point) pos))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6109 (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
6110 "\\`[ \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
6111 (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
6112 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
6113 (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
6114 (setq string (buffer-substring (point) pos))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6115 (string-match
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6116 "\\`[ \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
6117 string))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6118 (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
6119 (match-string 4 string))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6120 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
6121 (+ (point) (match-beginning 4))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6122 pos)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6123 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
6124 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
6125 (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
6126 (idlwave-sintern-class class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6127 arrow-start
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6128 pro-point)))
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 (defun idlwave-skip-object ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6131 ;; 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
6132 (let ((pos (point)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6133 (if (catch 'exit
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6134 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6135 (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
6136 (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
6137 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6138 ((looking-at idlwave-identifier)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6139 (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
6140 ((eq (following-char) ?\()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6141 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6142 (t (throw 'exit nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6143 (catch 'endwhile
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6144 (while t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6145 (cond ((eq (following-char) ?.)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6146 (forward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6147 (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
6148 (throw 'exit nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6149 (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
6150 ((memq (following-char) '(?\( ?\[))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6151 (condition-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6152 (forward-list 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6153 (error (throw 'exit nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6154 (t (throw 'endwhile t)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6155 (if (looking-at "[ \t]*->")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6156 (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
6157 (throw 'exit nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6158 (goto-char pos)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6159 nil)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6160
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6161 (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
6162 "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
6163 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
6164 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
6165 `/' 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
6166 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
6167 (catch 'exit
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6168 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6169 ;; skip the current identifier
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6170 (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
6171 ;; 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
6172 (if (eq (preceding-char) ?/)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6173 (backward-char 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6174 ;; 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
6175 (while t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6176 (skip-chars-backward " \t")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6177 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6178 ((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
6179 ((eq (preceding-char) ?\n)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6180 (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
6181 (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
6182 ;; continuation line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6183 (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
6184 (throw 'exit nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6185 (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
6186
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6187 (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
6188 "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
6189 (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
6190 "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
6191 (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
6192 "A mark pointing to the beginning of the completion string.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6193
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6194 (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
6195 &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
6196 special-selector)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6197 "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
6198 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
6199 PROMPT in echo area. TYPE is one of the intern types, e.g. 'function,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6200 'procedure, 'class-tag, 'keyword, 'sysvar, etc.. SPECIAL-SELECTOR is
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6201 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
6202 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
6203 (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
6204 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
6205 dpart dcompletion)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6206
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6207 (unless list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6208 (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
6209
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6210 ;; 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
6211 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6212 (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
6213 (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
6214 beg (point)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6215 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
6216 (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
6217 (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
6218 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
6219 (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
6220 (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
6221
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6222 ;; Try a completion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6223 (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
6224 dpart (downcase part)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6225 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
6226 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
6227 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
6228 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
6229 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6230 ((null completion)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6231 ;; nothing available.
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6232 (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
6233 ((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
6234 (not (eq t completion)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6235 ;; We can add something
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6236 (delete-region beg end)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6237 (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
6238 (or (not (string= part ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6239 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
6240 (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
6241 (insert dcompletion)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6242 (insert completion))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6243 (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
6244 ;; 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
6245 (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
6246 t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6247 ((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
6248 (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
6249 (idlwave-uniquify
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6250 (all-completions part list
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6251 (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
6252 selector))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6253 (equal dpart dcompletion)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6254 ;; This is already complete
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6255 (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
6256 (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
6257 nil)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6258 (t
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6259 ;; 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
6260 (message "Making completion list...")
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6261
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6262 (unless idlwave-completion-help-links ; already set somewhere?
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6263 (mapcar (lambda (x) ; Pass link prop through to highlight-linked
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6264 (let ((link (get-text-property 0 'link (car x))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6265 (if link
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6266 (push (cons (car x) link)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6267 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
6268 list))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6269 (let* ((list all-completions)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6270 ;; "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
6271 (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
6272 (completion-highlight-first-word-only t)) ; XEmacs
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6273 ; (completion-fixup-function ; Emacs
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6274 ; (lambda () (and (eq (preceding-char) ?>)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6275 ; (re-search-backward " <" beg t)))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6276
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6277 (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
6278 (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
6279 (if prepare-display-function
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6280 (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
6281 (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
6282 (or (not (string= part ""))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6283 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
6284 (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
6285 (setq list (mapcar (lambda (x)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6286 (if (listp x)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6287 (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
6288 (setq x (downcase x)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6289 x)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6290 list)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6291 (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
6292 t))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6293
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6294 (defun idlwave-complete-class ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6295 "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
6296 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6297 ;; 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
6298 (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
6299 ;; 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
6300 (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
6301 (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
6302 (and
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6303 (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
6304 (- (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
6305 (goto-char (point-min))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6306 (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
6307 "^[ \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
6308 ;; 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
6309 (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
6310 ;; Do the completion, using list gathered from `idlwave-routines'
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6311 (idlwave-complete-in-buffer
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6312 '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
6313 "Select a class" "class"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6314 '(lambda (list) ;; Push it to help-links if system help available
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6315 (mapcar (lambda (x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6316 (let* ((entry (idlwave-class-info x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6317 (link (nth 1 (assq 'link entry))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6318 (if link (push (cons x link)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6319 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
6320 x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6321 list)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6322
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6323 (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
6324 ;; 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
6325 ;; 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
6326 ;; '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
6327 ;; 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
6328 (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
6329 (null class-selector) ; not a method call
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6330 (and
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6331 (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
6332 (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
6333 ;; 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
6334 list
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6335 (let* ((do-prop (and (>= show-classes 0)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6336 (>= 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
6337 (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
6338 ;; (do-dots (featurep 'xemacs))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6339 (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
6340 (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
6341 (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
6342 (max (abs show-classes))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6343 (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
6344 classes nclasses class-info space)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6345 (mapcar
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6346 (lambda (x)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6347 ;; 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
6348 (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
6349 ;; 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
6350 (setq classes
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6351 (list
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6352 (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
6353 ;; 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
6354 (setq classes
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6355 (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
6356 (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
6357 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
6358 (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
6359 (if inherit
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6360 (setq classes
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6361 (delq nil
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6362 (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
6363 classes)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6364 (setq nclasses (length classes))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6365 ;; 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
6366 (if do-dots
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6367 (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
6368 (setq space " "))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6369 (if do-buf
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6370 ;; 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
6371 (if (<= nclasses max)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6372 (setq class-info (concat
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6373 space
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6374 "<" (mapconcat 'identity classes ",") ">"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6375 (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
6376 (setq class-info nil))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6377 (when do-prop
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6378 ;; We do want properties
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6379 (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
6380 (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
6381 '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
6382 x))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6383 (if class-info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6384 (list x class-info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6385 x))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6386 list))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6387
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6388 (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
6389 ;; 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
6390 (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
6391 (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
6392 ;; 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
6393 (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
6394 (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
6395 ;; 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
6396 (idlwave-attach-classes list 'class-tag idlwave-completion-show-classes))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6397
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6398
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6399 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6400 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6401 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6402 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6403 ;;----------------------------------------------------------------------
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6404 (defvar rtn)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6405 (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
6406 (set 'rtn item))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6407
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6408 (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
6409 "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
6410 TITLE is the title to put atop the popup. If SORT is non-nil,
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6411 sort the list before displaying"
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6412 (let ((maxpopup idlwave-max-popup-menu-items)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6413 rtn menu resp)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6414 (cond ((null list))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6415 ((= 1 (length list))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6416 (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
6417 ((featurep 'xemacs)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6418 (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
6419 (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
6420 (setq menu
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6421 (append (list title)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6422 (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
6423 x)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6424 list)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6425 (setq menu (idlwave-split-menu-xemacs menu maxpopup))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6426 (setq resp (get-popup-menu-response menu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6427 (funcall (event-function resp) (event-object resp)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6428 (t
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6429 (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
6430 (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
6431 (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
6432 (list
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6433 (append (list "")
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6434 (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
6435 (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
6436 (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
6437 rtn))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6438
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6439 (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
6440 "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
6441 (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
6442 ;; No splitting needed
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6443 menu
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6444 (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
6445 (entries (cdr menu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6446 (menu (list title))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6447 (cnt 0)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6448 (nextmenu nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6449 (while entries
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6450 (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
6451 (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
6452 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
6453 entries (cdr entries)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6454 (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
6455 (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
6456 (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
6457 (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
6458 nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6459 (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
6460 nextmenu nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6461 cnt 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6462 (nreverse menu))))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6463
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6464 (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
6465 "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
6466 (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
6467 ;; No splitting needed
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6468 menu
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6469 (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
6470 (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
6471 (menu nil)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6472 (cnt 0)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6473 (nextmenu nil))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6474 (while entries
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6475 (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
6476 (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
6477 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
6478 entries (cdr entries)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6479 (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
6480 (prin1 nextmenu)
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6481 (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
6482 (car (car nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6483 (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
6484 nextmenu))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6485 (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
6486 nextmenu nil
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6487 cnt 0))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6488 (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
6489 (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
6490 menu)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6491
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6492 (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
6493
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6494 (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
6495 "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
6496 (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
6497 (win (selected-window)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6498 (unwind-protect
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6499 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6500 (select-window cwin)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6501 (condition-case nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6502 (scroll-up)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6503 (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
6504 (nth 2 last-command))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6505 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6506 (select-window win)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6507 (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
6508 (set-window-start cwin (point-min)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6509 (and message (message message)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6510 (select-window win))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6511
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6512 (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
6513 "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
6514 (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
6515 (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
6516 (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
6517 (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
6518
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6519 (if (featurep 'xemacs)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6520 (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
6521 list)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6522 (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
6523
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6524 ;; 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
6525 ;; 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
6526 (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
6527
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6528 ;; 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
6529 (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
6530
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6531 ;; Fontify the classes
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6532 (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
6533 (consp (car list)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6534 (idlwave-completion-fontify-classes))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6535
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6536 ;; 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
6537 (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
6538
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6539 ;; Display the message
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6540 (message (or message "Making completion list...done")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6541
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6542 (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
6543 "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
6544 (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
6545 (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
6546 (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
6547 (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
6548 (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
6549 ;; 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
6550 (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
6551 (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
6552 (point))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6553 (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
6554 (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
6555
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6556 (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
6557 (interactive)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6558 (unwind-protect
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6559 (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
6560 (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
6561 (keyboard-quit)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6562
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6563 (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
6564 "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
6565 (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
6566 idlwave-before-completion-wconf
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6567 (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
6568
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6569 (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
6570 "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
6571 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
6572 car of the selected association.
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6573 To do this, PROMPT is displayed and and the user must hit a letter key to
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6574 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
6575 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
6576 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
6577 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
6578 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
6579 (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
6580 (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
6581 '(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
6582 keys-alist char)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6583 ;; 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
6584 (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
6585 (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
6586 ;; 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
6587 (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
6588 (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
6589 (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
6590 ;; 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
6591 (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
6592 (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
6593 keys-alist ""))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6594 (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
6595 ;; 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
6596 (save-window-excursion
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6597 (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
6598 (mapcar (lambda(x)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6599 (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
6600 (princ "\n"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6601 keys-alist))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6602 (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
6603 (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
6604 (message nil)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6605 ;; 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
6606 (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
6607
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6608 ;; 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
6609 (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
6610 "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
6611 (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
6612 (cnt 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6613 (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
6614 (while l
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6615 (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
6616 l (cdr l))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6617 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6618 ;; 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
6619 (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
6620 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6621 (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
6622 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
6623 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
6624 (throw 'exit t)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6625 ;; 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
6626 (setq start 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6627 (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
6628 (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
6629 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
6630 (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
6631 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6632 (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
6633 (replace-match
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6634 (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
6635 t t name))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6636 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
6637 (throw 'exit t))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6638 ;; 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
6639 (setq start 0)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6640 (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
6641 (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
6642 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
6643 (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
6644 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6645 (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
6646 (replace-match
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6647 (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
6648 t t name))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6649 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
6650 (throw 'exit t))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6651 ;; 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
6652 (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
6653 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
6654 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
6655 (nreverse keys-alist)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6656
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6657 (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
6658 "Set the buffer-local value of VAR in BUFFER to VALUE."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6659 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6660 (set-buffer (or buffer (current-buffer)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6661 (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
6662
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6663 (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
6664 "Return the value of VAR in BUFFER, but only if VAR is local to BUFFER."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6665 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6666 (set-buffer (or buffer (current-buffer)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6667 (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
6668 (symbol-value var))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6669
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6670 ;; 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
6671 ;; 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
6672 ;; 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
6673
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6674 (defvar idlwave-completion-map nil
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6675 "Keymap for completion-list-mode with idlwave-complete.")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6676
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6677 (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
6678 (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
6679 (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
6680 ':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
6681 cl-args))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6682 (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
6683 (set-buffer "*Completions*")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6684 (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
6685 (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
6686 (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
6687 (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
6688 (current-local-map)))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6689
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6690 (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
6691 "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
6692 (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
6693
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6694 (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
6695 "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
6696 (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
6697 (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
6698 (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
6699 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6700 (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
6701 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
6702
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6703 ;; 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
6704 ;; 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
6705
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6706 (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
6707 "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
6708 (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
6709 (display-completion-list list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6710 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6711 (set-buffer "*Completions*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6712 (use-local-map
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6713 (or idlwave-completion-map
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6714 (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
6715 (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
6716 (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
6717
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
6718 (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
6719 "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
6720 (let ((new-map (copy-keymap old-map)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6721 (substitute-key-definition
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6722 '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
6723 (substitute-key-definition
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6724 '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
6725 (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
6726 new-map))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6727
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6728 (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
6729 "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
6730 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6731 (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
6732
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6733 (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
6734 "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
6735 (interactive "e")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6736 (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
6737
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6738 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6739 ;;----------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
6740
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6741 ;;; ------------------------------------------------------------------------
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6742 ;;; 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
6743
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6744 ;;
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6745 ;; - 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
6746 ;; plugin. It is in self.el, but currently still very bad.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6747 ;; This could be in a separate file in the distribution, or
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6748 ;; 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
6749
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6750 (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
6751 "[ \t]*\\(\\$.*\n\\(^[ \t]*\\(\\$[ \t]*\\)?\\(;.*\\)?\n\\)*\\)?[ \t]*"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6752 "Regexp for skipping continued blank or comment-only lines in
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6753 structures")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6754
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6755 (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
6756 (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
6757 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
6758 "\\([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
6759 "[ \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
6760 "Regexp for structure tags.")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6761
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6762 (defun idlwave-struct-tags ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6763 "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
6764 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
6765 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6766 (let* ((borders (idlwave-struct-borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6767 (beg (car borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6768 (end (cdr borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6769 tags)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6770 (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
6771 (save-restriction
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6772 (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
6773 (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
6774 ;; 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
6775 (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
6776 (= (point) beg))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6777 (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
6778 (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
6779 (nreverse tags))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6780
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6781 (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
6782 "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
6783 (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
6784 (beg (car borders))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6785 (end (cdr borders))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6786 (case-fold-search t))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6787 (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
6788 end t)))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6789
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6790 (defun idlwave-struct-inherits ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6791 "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
6792 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
6793 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6794 (let* ((borders (idlwave-struct-borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6795 (beg (car borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6796 (end (cdr borders))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6797 (case-fold-search t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6798 names)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6799 (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
6800 (save-restriction
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6801 (narrow-to-region beg end)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6802 (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
6803 (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
6804 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
6805 "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
6806 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
6807 "\\([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
6808 end t)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6809 ;; 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
6810 (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
6811 (= (point) beg))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6812 (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
6813 (goto-char (match-end 0))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6814 (nreverse names))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6815
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6816 (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
6817 "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
6818 (let ((beg (point)))
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6819 (save-excursion
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6820 (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
6821 (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
6822 (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
6823 (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
6824 (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
6825
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6826 (defun idlwave-struct-borders ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6827 "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
6828 (let (beg)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6829 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6830 (skip-chars-forward "^{")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6831 (setq beg (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6832 (condition-case nil (forward-list 1)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6833 (error (goto-char beg)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6834 (cons beg (point)))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6835
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6836 (defun idlwave-find-structure-definition (&optional var name bound)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6837 "Search forward for a structure definition. If VAR is non-nil,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6838 search for a structure assigned to variable VAR. If NAME is non-nil,
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6839 search for a named structure NAME, if a string, or a generic named
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6840 structure otherwise. If BOUND is an integer, limit the search. If
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6841 BOUND is the symbol `all', we search first back and then forward
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6842 through the entire file. If BOUND is the symbol `back' we search only
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6843 backward."
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6844 (let* ((ws "[ \t]*\\(\\$.*\n[ \t]*\\)*")
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6845 (case-fold-search t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6846 (lim (if (integerp bound) bound nil))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6847 (re (concat
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6848 (if var
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6849 (concat "\\<" (regexp-quote (downcase var)) "\\>" ws)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6850 "\\(\\)")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6851 "=" ws "\\({\\)"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6852 (if name
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6853 (if (stringp name)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6854 (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
6855 ;; 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
6856 (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
6857 ""))))
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
6858 (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
6859 (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
6860 (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
6861 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6862 (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
6863 (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
6864
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6865 (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
6866 (defvar idlwave-system-class-info nil) ; Gathered from idlw-rinfo
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6867 (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
6868
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6869 (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
6870 (lambda () (setq idlwave-class-reset t)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6871 (add-hook 'idlwave-after-load-rinfo-hook
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6872 (lambda () (setq idlwave-class-info nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6873
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6874 (defun idlwave-class-info (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6875 (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
6876 (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
6877 (if idlwave-class-reset
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6878 (setq
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6879 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
6880 idlwave-class-info ; Remove any visited in a buffer
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6881 (delq nil (mapcar
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6882 (lambda (x)
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6883 (let ((filebuf
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6884 (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
6885 (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
6886 (if (cdr filebuf)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6887 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6888 x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6889 idlwave-class-info))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6890 ;; 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
6891 (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
6892 (setq list idlwave-class-info)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6893 (while (setq entry (pop list))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6894 (idlwave-sintern-class-info entry)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6895 (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
6896 (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
6897 (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
6898 (assq class idlwave-class-info)))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6899
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6900 (defun idlwave-sintern-class-info (entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6901 "Sintern the class names in a class-info entry."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6902 (let ((taglist (assq 'tags entry))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6903 (inherits (assq 'inherits entry)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6904 (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
6905 (if inherits
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6906 (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
6907 (cdr inherits))))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6908
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6909 (defun idlwave-find-class-definition (class &optional all-hook alt-class)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6910 "Find class structure definition(s)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6911 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
6912 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
6913 set, look for the name__define pro, and inside of it, for the ALT-CLASS
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6914 class/struct definition"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6915 (let ((case-fold-search t) end-lim list name)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6916 (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
6917 (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
6918 (if all-hook
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6919 (progn
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6920 ;; For everything there
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6921 (setq end-lim (save-excursion (idlwave-end-of-subprogram) (point)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6922 (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
6923 (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
6924 (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
6925 (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
6926
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6927
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6928 (defun 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
6929 "Find buffer visiting CLASS definition"
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6930 (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
6931 (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
6932 (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
6933 (idlwave-routines))))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6934 (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
6935
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6936
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6937 (defun 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
6938 "Scan all class and named structure info in the class__define pro"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6939 (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
6940 (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
6941 (file (car filebuf))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6942 (buf (cdr filebuf))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6943 (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
6944 (if (or
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6945 (not file)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6946 (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
6947 (not buf)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6948 (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
6949 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
6950 (save-excursion
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6951 (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
6952 ;; Read the file in temporarily
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6953 (set-buffer (get-buffer-create " *IDLWAVE-tmp*"))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6954 (erase-buffer)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6955 (unless (eq major-mode 'idlwave-mode)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6956 (idlwave-mode))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6957 (insert-file-contents file))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6958 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6959 (goto-char 1)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6960 (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
6961 ;; 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
6962 (lambda (name)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6963 (let* ((this-class (idlwave-sintern-class name))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6964 (entry
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6965 (list this-class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6966 (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
6967 (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
6968 (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
6969 (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
6970 (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
6971 (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
6972
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6973 (defun idlwave-class-found-in (class)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6974 "Return the FOUND-IN property of the class."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6975 (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
6976 (defun idlwave-class-tags (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6977 "Return the native tags in CLASS."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6978 (cdr (assq 'tags (idlwave-class-info class))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6979 (defun idlwave-class-inherits (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6980 "Return the direct superclasses of CLASS."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6981 (cdr (assq 'inherits (idlwave-class-info class))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6982
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
6983
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6984 (defun idlwave-all-class-tags (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6985 "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
6986 (condition-case err
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6987 (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
6988 (cons class (idlwave-all-class-inherits class))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
6989 (error
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
6990 (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
6991 (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
6992
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6993
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6994 (defun idlwave-all-class-inherits (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6995 "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
6996 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
6997 (cond
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6998 ((not idlwave-support-inheritance) nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
6999 ((eq class nil) nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7000 ((eq class t) nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7001 (t
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7002 (let ((info (idlwave-class-info class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7003 entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7004 (if (setq entry (assq 'all-inherits info))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7005 (cdr entry)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7006 ;; 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
7007 (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
7008 (idlwave-class-inherits class)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7009 rtn all-inherits cl)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7010 (while inherits
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7011 (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
7012 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
7013 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
7014 (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
7015 (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
7016 inherits))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7017 (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
7018 (error
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7019 "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
7020 ))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7021 (setq all-inherits (nreverse rtn))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7022 (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
7023 all-inherits))))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7024
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7025 (defun idlwave-entry-keywords (entry &optional record-link)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7026 "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
7027 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
7028 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
7029 (let (kwds)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7030 (mapcar
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7031 (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
7032 (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
7033 (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
7034 (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
7035 (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
7036 (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
7037 (setq key (copy-sequence key))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7038 (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
7039 0 (length key)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7040 'link
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7041 (concat
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7042 file
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7043 (if link
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7044 (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
7045 (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
7046 key))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7047 (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
7048 (cdr key-list))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7049 (nthcdr 5 entry))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7050 (nreverse kwds)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7051
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7052 (defun idlwave-entry-find-keyword (entry keyword)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7053 "Find keyword KEYWORD in entry ENTRY, and return (with link) if set"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7054 (catch 'exit
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7055 (mapc
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7056 (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
7057 (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
7058 (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
7059 (when kwd
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7060 (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
7061 (if (and file (cdr kwd))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7062 (concat file
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7063 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
7064 (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
7065 (cdr kwd))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7066 (throw 'exit kwd))))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7067 (nthcdr 5 entry))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7068
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7069 ;;==========================================================================
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7070 ;;
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7071 ;; 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
7072 ;; The necessary taglist is constructed dynamically
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7073
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7074 (defvar idlwave-current-tags-class nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7075 (defvar idlwave-current-class-tags nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7076 (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
7077 (defvar idlwave-sint-class-tags nil)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7078 (idlwave-new-sintern-type 'class-tag)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7079 (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
7080 (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
7081
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7082 (defun idlwave-complete-class-structure-tag ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7083 "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
7084 (interactive)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7085 (let ((pos (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7086 (case-fold-search t))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7087 (if (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7088 ;; 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
7089 (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
7090 (and (< (point) (- pos 4))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7091 (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
7092 (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
7093 (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
7094 ;; 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
7095 (unless class-selector
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
7096 (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
7097 ;; 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
7098 (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
7099 (idlwave-prepare-class-tag-completion class-selector))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7100 (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
7101 (list 'idlwave-complete-class-structure-tag-help
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7102 (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
7103 (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
7104 nil))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7105 (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
7106 (idlwave-complete-in-buffer
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7107 'class-tag 'class-tag
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7108 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
7109 (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
7110 "class tag"
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7111 'idlwave-attach-class-tag-classes))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7112 t) ; return t to skip other completions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7113 nil)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7114
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7115 (defun idlwave-class-tag-reset ()
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7116 (setq idlwave-current-tags-class nil))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7117
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7118 (defun idlwave-prepare-class-tag-completion (class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7119 "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
7120 (setq idlwave-sint-class-tags nil)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7121 (setq idlwave-current-tags-class class)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7122 (setq idlwave-current-class-tags
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7123 (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
7124 (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
7125 (idlwave-all-class-tags class)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7126 (setq idlwave-current-native-class-tags
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7127 (mapcar 'downcase (idlwave-class-tags class))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7128
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7129 ;===========================================================================
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7130 ;;
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7131 ;; 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
7132 ;; This is also a plugin.
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7133
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7134 (defvar idlwave-sint-sysvars nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7135 (defvar idlwave-sint-sysvartags nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7136 (idlwave-new-sintern-type 'sysvar)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7137 (idlwave-new-sintern-type 'sysvartag)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7138 (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
7139 (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
7140 (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
7141
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7142 (defvar idlwave-executive-commands-alist nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7143 "Alist of system variables and their help files.")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7144
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7145 (defvar idlwave-system-variables-alist nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7146 "Alist of system variables and the associated structure tags.
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7147 Gets set in `idlw-rinfo.el'.")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7148
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7149 (defun idlwave-complete-sysvar-or-tag ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7150 "Complete a system variable."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7151 (interactive)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7152 (let ((pos (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7153 (case-fold-search t))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7154 (cond ((save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7155 ;; 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
7156 (skip-chars-backward "[a-zA-Z0-9_$]")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7157 (equal (char-before) ?!))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7158 (setq idlwave-completion-help-info '(idlwave-complete-sysvar-help))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7159 (idlwave-complete-in-buffer 'sysvar 'sysvar
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7160 idlwave-system-variables-alist nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7161 "Select a system variable"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7162 "system variable")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7163 t) ; return t to skip other completions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7164 ((save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7165 ;; 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
7166 (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
7167 (and (equal (char-before) ?!)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7168 (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
7169 (<= (match-end 0) pos)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7170 ;; Complete a system variable tag
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7171 (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
7172 (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
7173 (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
7174 (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
7175 (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
7176 (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
7177 (list 'idlwave-complete-sysvar-tag-help var))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7178 (idlwave-complete-in-buffer 'sysvartag 'sysvartag
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7179 tags nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7180 "Select a system variable tag"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7181 "system variable tag")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7182 t)) ; return t to skip other completions
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7183 (t nil))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7184
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7185 (defvar link) ;dynamic
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7186 (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
7187 (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
7188 (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
7189 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7190 ((eq mode 'test)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7191 (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
7192 ((eq mode 'set)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7193 (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
7194 (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
7195
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7196 (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
7197 (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
7198 (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
7199 (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
7200 (main (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
7201 target main-base)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7202 (cond
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7203 ((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
7204 (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
7205 ((eq mode 'set)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7206 (if entry
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7207 (setq link
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7208 (if (setq target (cdr (assoc word tags)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7209 (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
7210 main)))) ;; setting dynamic!!!
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7211 (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
7212
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7213 (defun idlwave-substitute-link-target (link target)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7214 "Substitute the target anchor for the given link."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7215 (let (main-base)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7216 (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
7217 (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
7218 link))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7219 (if target
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7220 (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
7221 link)))
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7222
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7223 ;; 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
7224 ;; KWD AND NAME ARE GLOBAL-VARIABLES HERE.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7225 (defvar name)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7226 (defvar kwd)
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7227 (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
7228 (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
7229 (cond
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7230 ((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
7231 nil)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7232 ((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
7233 (let (class-with found-in)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7234 (when (setq class-with
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7235 (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
7236 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
7237 word))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7238 (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
7239 idlwave-system-class-info)
63427
6cec4d429edd idlwave-complete-class-structure-tag-help): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 62772
diff changeset
7240 (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
7241 (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
7242 (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
7243 (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
7244 (setq kwd word
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7245 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
7246 (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
7247
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7248 (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
7249 "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
7250 associated TAG, if any."
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7251 (let ((sclasses (cons class (cdr (assq 'all-inherits
47440
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7252 (idlwave-class-info class)))))
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7253 cl)
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7254 (catch 'exit
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7255 (while sclasses
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7256 (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
7257 (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
7258 (while tags
0e5a022947e9 Updated to IDLWAVE version 4.15. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47261
diff changeset
7259 (if (eq t (compare-strings tag 0 nil (car tags) 0 nil t))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7260 (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
7261 (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
7262
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7263
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7264 (defun idlwave-sysvars-reset ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7265 (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
7266 (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
7267 idlwave-idlwave_routine_info-compiled)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7268 (idlwave-shell-send-command "idlwave_get_sysvars"
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7269 'idlwave-process-sysvars 'hide)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7270
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7271 (defun idlwave-process-sysvars ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7272 (idlwave-shell-filter-sysvars)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7273 (setq idlwave-sint-sysvars nil
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7274 idlwave-sint-sysvartags nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7275 (idlwave-sintern-sysvar-alist))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7276
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7277 (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
7278 (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
7279 (while (setq entry (pop list))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7280 (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
7281 (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
7282 (if tags
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7283 (setcdr tags
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7284 (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
7285 (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
7286 (cdr x)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7287 (cdr tags)))))))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7288
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7289 (defvar idlwave-shell-command-output)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7290 (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
7291 "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
7292 (let ((text idlwave-shell-command-output)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7293 (start 0)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7294 (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
7295 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
7296 (setq idlwave-system-variables-alist nil)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7297 (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
7298 text start)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7299 (setq start (match-end 0)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7300 var (match-string 1 text)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7301 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
7302 (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
7303 ;; 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
7304 (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
7305 (setq link (assq 'link old-entry))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7306 (setq idlwave-system-variables-alist
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7307 (cons (list var
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7308 (cons
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7309 'tags
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7310 (mapcar (lambda (x)
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7311 (cons x
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7312 (cdr (assq
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7313 (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
7314 (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
7315 tags)) link)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7316 idlwave-system-variables-alist)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7317 ;; 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
7318 (setq idlwave-system-variables-alist
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7319 (or idlwave-system-variables-alist old))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7320
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7321 (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
7322 "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
7323 (when (featurep 'font-lock)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7324 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7325 (set-buffer "*Completions*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7326 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7327 (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
7328 (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
7329 (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
7330 (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
7331 '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
7332
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7333 (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
7334 (let ((ht (make-hash-table :size (length list) :test 'equal)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7335 (delq nil
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7336 (mapcar (lambda (x)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7337 (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
7338 (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
7339 x))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7340 list))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7341
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7342 (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
7343 "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
7344 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
7345 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7346 ((eq type 'procedure)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7347 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7348 ((eq type 'function)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7349 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7350 ((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
7351 ((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
7352 (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
7353 (insert "("))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7354 ((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
7355 (insert "()")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7356 (backward-char 1))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7357 (t nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7358 ((eq type 'keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7359 (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
7360 (not slash))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7361 (progn (insert "=") t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7362 nil)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7363
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7364 ;; Restore the pre-completion window configuration if this is safe.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7365
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7366 (if (or (eq verify 'force) ; force
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7367 (and
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7368 (get-buffer-window "*Completions*") ; visible
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7369 (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
7370 "*Completions*") ; cib-buffer
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7371 (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
7372 (current-buffer)) ; buffer OK
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7373 (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
7374 verify))) ; pos OK
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7375 (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
7376 (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
7377 (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
7378
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7379 (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
7380 "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
7381 (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
7382 (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
7383 (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
7384
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7385 (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
7386 (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
7387 "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
7388 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
7389 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
7390 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
7391 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
7392 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
7393 `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
7394 itself."
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7395 (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
7396 (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
7397
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7398 (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
7399 "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
7400 (interactive "eP")
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7401 ;; 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
7402 ;; 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
7403 (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
7404 (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
7405
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7406 (defun idlwave-routine-info (&optional arg external)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7407 "Display a routines calling sequence and list of keywords. When
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7408 point is on the name a function or procedure, or in the argument list
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7409 of a function or procedure, this command displays a help buffer with
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7410 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
7411
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7412 When point is on an object operator `->', display the class stored in
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7413 this arrow, if any (see `idlwave-store-inquired-class'). With a
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7414 prefix arg, the class property is cleared out."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7415
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7416 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7417 (idlwave-routines)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7418 (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
7419 (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
7420 (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
7421 ;; 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
7422 (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
7423 ;; arrow has class property
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7424 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7425 ;; Remove property
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7426 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7427 (backward-char 1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7428 (when (looking-at ".?\\(->\\)")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7429 (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
7430 '(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
7431 (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
7432 ;; Echo class property
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7433 (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
7434 (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
7435 ;; No property found
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7436 (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
7437
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7438 ;; Not on an arrow...
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7439 (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
7440 (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
7441 (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
7442 (if (car module)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7443 (apply 'idlwave-display-calling-sequence
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7444 (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
7445 (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
7446
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7447 (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
7448 "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
7449 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
7450 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
7451 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
7452 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
7453 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
7454 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
7455 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7456 (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
7457 (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
7458 (module (idlwave-what-module))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7459 (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
7460 (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
7461 (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
7462 (kwd "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7463 class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7464 (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
7465 resolve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7466 (setq type (match-string 1 resolve)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7467 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
7468 (match-string 3 resolve)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7469 nil)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7470 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
7471 (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
7472 (setq kwd ",/is_function"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7473
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7474 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7475 ((null class)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7476 (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
7477 (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
7478 'idlwave-update-routine-info
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7479 nil t))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7480 (t
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7481 (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
7482 (format "resolve_routine,'%s__define'%s" (downcase class) kwd)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7483 (list 'idlwave-shell-send-command
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7484 (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
7485 (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
7486 '(idlwave-update-routine-info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7487 nil t))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7488
64001
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7489 (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
7490 (interactive)
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7491 (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
7492
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7493 (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
7494 "Find the source code of an IDL module.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7495 Works for modules for which IDLWAVE has routine info available. The
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7496 function offers as default the module name `idlwave-routine-info'
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7497 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
7498 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
7499 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7500 (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
7501 (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
7502 (this-buffer (equal arg '(4)))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7503 (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
7504 (default (if module
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7505 (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
7506 (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
7507 (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
7508 "none"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7509 (list
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7510 (idlwave-uniquify
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7511 (delq nil
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7512 (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
7513 (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
7514 ;; 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
7515 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7516 (list
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7517 (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
7518 (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
7519 (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
7520 (if this-buffer
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7521 (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
7522 (idlwave-routines))))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7523 (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
7524 (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
7525 (assoc default list))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7526 (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
7527 (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
7528 list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7529 type class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7530 (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
7531 ;; Nothing, use the default.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7532 (setq name default))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7533 (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
7534 (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
7535 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
7536 (if (string-match "\\(.*\\)::\\(.*\\)" name)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7537 (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
7538 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
7539 (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
7540 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
7541 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
7542 ((equal type "p") 'pro)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7543 (t t)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7544 (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
7545
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7546 (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
7547 &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
7548 (let ((name1 (idlwave-make-full-name class name))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7549 source buf1 entry
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7550 (buf (current-buffer))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7551 (pos (point))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7552 file name2)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7553 (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
7554 'WITH-FILE)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7555 source (or force-source (nth 3 entry))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7556 name2 (if (nth 2 entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7557 (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
7558 name1))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7559 (if source
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7560 (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
7561 (unless file ; Try to find it on the path.
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7562 (setq file
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7563 (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
7564 (if class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7565 (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
7566 (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
7567 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7568 ((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
7569 (error "Abort"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7570 ((eq (car source) 'system)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7571 (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
7572 name2))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7573 ((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
7574 (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
7575 name2))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7576 (t
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7577 (when (not this-buffer)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7578 (setq buf1
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7579 (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
7580 (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
7581 (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
7582 (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
7583 (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
7584 (concat "^[ \t]*\\<"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7585 (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
7586 ((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
7587 (t "\\(pro\\|function\\)"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7588 "\\>[ \t]+"
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7589 (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
7590 "[^a-zA-Z0-9_$]")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7591 nil t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7592 (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
7593 (pop-to-buffer buf)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7594 (goto-char pos)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7595 (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
7596
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7597 (defun idlwave-what-module ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7598 "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
7599 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
7600 (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
7601 (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
7602 (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
7603 (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
7604 (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
7605 ;; 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
7606 ;; 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
7607 (list
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7608 (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
7609 (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
7610 (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
7611 (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
7612
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7613 ;; 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
7614 (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
7615 (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
7616 (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
7617 (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
7618 (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
7619 (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
7620 (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
7621 )
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7622 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7623 ((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
7624 (not (equal this-word "")))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7625 (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
7626 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
7627 (list this-word 'pro
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7628 (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
7629 (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
7630 'pro)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7631 ((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
7632 (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
7633 (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
7634 (looking-at "[a-zA-Z0-9_]*[ \t]*(")))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7635 (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
7636 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
7637 (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
7638 (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
7639 (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
7640 'fun)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7641 ((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
7642 (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
7643 (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
7644 (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
7645 (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
7646 (func
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7647 (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
7648 (pro
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7649 (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
7650 (t nil)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7651
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7652 (defun idlwave-what-module-find-class ()
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7653 "Call idlwave-what-module and find the inherited class if necessary."
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7654 (let* ((module (idlwave-what-module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7655 (class (nth 2 module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7656 classes)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7657 (if (and (= (length module) 3)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7658 (stringp class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7659 (list (car module)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7660 (nth 1 module)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7661 (apply 'idlwave-find-inherited-class module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7662 module)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7663
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7664 (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
7665 "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
7666 (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
7667 (if entry
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7668 (nth 2 entry)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7669 class)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7670
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7671 (defun idlwave-fix-module-if-obj_new (module)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7672 "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
7673 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
7674 appropriate Init method."
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7675 (let* ((name (car module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7676 (pos (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7677 (case-fold-search t)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7678 string)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7679 (if (and (stringp name)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7680 (equal (downcase name) "obj_new")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7681 (save-excursion
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7682 (idlwave-beginning-of-statement)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7683 (setq string (buffer-substring (point) pos))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7684 (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
7685 string)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7686 (let ((name "Init")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7687 (class (match-string 1 string)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7688 (setq module (list (idlwave-sintern-method "Init")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7689 'fun
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7690 (idlwave-sintern-class class)))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7691 module))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7692
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7693 (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
7694 &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
7695 "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
7696 Translate OBJ_NEW, adding all super-class keywords, or all 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
7697 from all classes if class equals t. If SYSTEM is non-nil, don't
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7698 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
7699 (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
7700
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7701 ;; 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
7702 ;; 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
7703 (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
7704 (or (eq major-mode 'idlwave-mode)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7705 (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
7706 (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
7707 (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
7708 (case-fold-search t)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7709 class)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7710 (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
7711 string)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7712 (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
7713 (setq idlwave-current-obj_new-class class)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7714 (setq keywords
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7715 (append keywords
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7716 (idlwave-entry-keywords
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7717 (idlwave-rinfo-assq
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7718 (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
7719 'fun
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7720 class
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7721 (idlwave-routines)) 'do-link))))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7722
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7723 ;; 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
7724 (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
7725 (mapc (lambda (entry)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7726 (and
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7727 (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
7728 (eq (nth 1 entry) type) ; correct type
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7729 (setq keywords
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7730 (append keywords
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7731 (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
7732 (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
7733 (setq keywords (idlwave-uniquify keywords)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7734
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7735 ;; 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
7736 ;; the user indicated that method in `idlwave-keyword-class-inheritance'
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7737 (when (and
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7738 super-classes
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7739 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
7740 (stringp class)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7741 (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
7742 system
82d080bf4f42 Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
J.D. Smith <jdsmith@as.arizona.edu>
parents: 63494
diff changeset
7743 (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
7744 (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
7745 ;; 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
7746 (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
7747 (catch 'exit
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7748 (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
7749 (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
7750
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7751 (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
7752 (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
7753 (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
7754 (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
7755 (eq (car entry) name) ; correct name
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
7756 (mapcar (lambda (k) (add-to-list 'keywords k))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7757 (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
7758 (setq keywords (idlwave-uniquify keywords)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7759
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7760 ;; Return the final list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7761 keywords))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7762
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7763 (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
7764 "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
7765 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
7766 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
7767 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
7768 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
7769 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
7770 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
7771 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
7772 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
7773 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
7774 (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
7775 (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
7776 (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
7777 (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
7778 (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
7779 (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
7780 (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
7781 (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
7782 (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
7783 candidates)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7784 (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
7785 kwd)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7786 ((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
7787 (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
7788 (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
7789 candidates))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7790 ((and entry extra)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7791 ;; 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
7792 keyword)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7793 (entry
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7794 ;; 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
7795 nil)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7796 (t
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7797 ;; 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
7798 ;; 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
7799 keyword))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7800
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7801 (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
7802 (defvar idlwave-rinfo-map (make-sparse-keymap))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7803 (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
7804 (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
7805 'idlwave-mouse-active-rinfo)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7806 (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
7807 (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
7808 'idlwave-mouse-active-rinfo-shift)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7809 (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
7810 (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
7811 '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
7812 (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
7813 (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
7814 (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
7815 (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
7816 (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
7817
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7818 (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
7819 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7820 (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
7821 (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
7822 (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
7823 (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
7824 (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
7825 (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
7826 (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
7827 (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
7828
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7829 (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
7830 &optional initial-class)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7831 ;; 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
7832 (let* ((initial-class (or initial-class class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7833 (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
7834 (idlwave-routines))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7835 (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
7836 idlwave-unresolved-routines)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7837 (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
7838 (class (or (nth 2 entry) class))
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7839 (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
7840 (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
7841 (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
7842 (all dtwins)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7843 (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
7844 (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
7845 (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
7846 (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
7847 (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
7848 "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
7849 (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
7850 "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
7851 (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
7852 "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
7853 (help-echo-class
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7854 "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
7855 (col 0)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7856 (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
7857 (km-prop (if (featurep 'xemacs) 'keymap 'local-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
7858 (face 'idlwave-help-link-face)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7859 beg props win cnt total)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7860 ;; 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
7861 ;; 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
7862 (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
7863 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7864 ((null entry)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7865 (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
7866 (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
7867 ((or (null name) (equal name ""))
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
7868 (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
7869 ((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
7870 (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
7871 (t
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7872 (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
7873 (move-marker idlwave-rinfo-marker (point))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7874 (set-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
7875 (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
7876 (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
7877 (erase-buffer)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7878 (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
7879 (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
7880 idlwave-current-obj_new-class)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7881 (when superclasses
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7882 (setq props (list 'mouse-face 'highlight
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7883 km-prop idlwave-rinfo-mouse-map
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7884 'help-echo help-echo-class
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7885 'data (cons 'class data)))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7886 (let ((classes (cons initial-class superclasses)) c)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7887 (insert "Classes: ")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7888 (while (setq c (pop classes))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7889 (insert " ")
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7890 (setq beg (point))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7891 (insert c)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7892 (if (equal (downcase c) (downcase class))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7893 (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
7894 ;; 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
7895 (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
7896 (add-text-properties beg (point) props))))
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
7897 (insert "\n")))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7898 (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
7899 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
7900 '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
7901 'data (cons 'usage data)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7902 (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
7903 props)))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7904 (insert "Usage: ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7905 (setq beg (point))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7906 (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
7907 (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
7908 (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
7909 "\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7910 (add-text-properties beg (point) props)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7911
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7912 (insert "Keywords:")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7913 (if (null keywords)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7914 (insert " No keywords accepted.")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7915 (setq col 9)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7916 (mapcar
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7917 (lambda (x)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7918 (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
7919 (window-width))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7920 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7921 (insert "\n ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7922 (setq col 9)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7923 (insert " ")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7924 (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
7925 ;; 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
7926 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
7927 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
7928 '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
7929 '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
7930 '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
7931 (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
7932 (insert (car x))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7933 (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
7934 (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
7935 keywords))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7936
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7937 (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
7938 ;; 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
7939 (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
7940 (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
7941 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
7942 '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
7943 '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
7944 (nth 1 entry)
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7945 nil
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7946 (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
7947 '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
7948 (idlwave-insert-source-location
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7949 (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
7950 (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
7951 (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
7952 "")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7953 (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
7954 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
7955 (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
7956 (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
7957 ;; No more source lines, please
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7958 (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
7959 "\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
7960 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
7961 (setq all nil)))
60766
a4cac40cf780 Remove unnecessary `beginning-of-buffer'.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 60690
diff changeset
7962 (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
7963 (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
7964 (display-buffer "*Help*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7965 (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
7966 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
7967 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7968 (let ((ww (selected-window)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7969 (unwind-protect
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7970 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7971 (select-window win)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
7972 (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
7973 (window-height)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7974 (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
7975 (select-window ww)))))))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
7976
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7977 (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
7978 "Insert a source location into the routine info buffer.
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7979 Start line with PREFIX. If a file name is inserted, add FILE-PROPS to
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
7980 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
7981 (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
7982 (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
7983 (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
7984 (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
7985 (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
7986 (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
7987 (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
7988 (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
7989 (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
7990 (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
7991 1))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7992 (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
7993 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
7994
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7995 (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
7996
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7997 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
7998 ((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
7999 (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
8000 (insert "System "))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8001
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8002 ((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
8003 (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
8004 (insert "Builtin "))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8005
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8006 ((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
8007 (insert "Unresolved"))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8008
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8009 ((null file)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8010 (insert "ERROR"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8011
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8012 ((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
8013 (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
8014 (insert "Obsolete ")
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8015 (insert "SystemLib ")))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8016
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8017 ;; 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
8018 ;; library catalog routines
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8019 ((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
8020 (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
8021
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8022 ;; 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
8023 ((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
8024 (insert (format "%-10s" special)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8025
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8026 ;; 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
8027 ((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
8028
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8029 ;; 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
8030 (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
8031
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8032 (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
8033 (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
8034 " ["
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8035 (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
8036 (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
8037 (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
8038 (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
8039 "] ")))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8040 (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
8041 (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
8042 (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
8043 (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
8044 (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
8045 (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
8046 (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
8047 (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
8048 (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
8049 (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
8050
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8051 (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
8052 "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
8053 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
8054 (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
8055 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
8056 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8057 ((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
8058 (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
8059 (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
8060 (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
8061 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
8062 rtn)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8063 (t nil))))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8064
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8065 (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
8066 (interactive "e")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8067 (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
8068
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8069 (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
8070 (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
8071 (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
8072
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8073 (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
8074 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8075 (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
8076
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8077 (defun idlwave-mouse-active-rinfo (ev &optional right shift)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8078 "Does the mouse actions in the routine info buffer.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8079 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
8080 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
8081 (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
8082 (if ev (mouse-set-point ev))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8083 (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
8084 word initial-class)
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8085 (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
8086 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
8087 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
8088 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
8089 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
8090 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
8091 buf (nth 4 data)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8092 initial-class (nth 6 data)
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8093 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
8094 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
8095
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8096 (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
8097 (if (window-live-p bufwin) (select-window bufwin))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8098 (idlwave-display-calling-sequence
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8099 (idlwave-sintern-method name)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8100 type (idlwave-sintern-class word)
34433
31e98a1ac98f Updated IDLWAVE to version 4.7
Carsten Dominik <dominik@science.uva.nl>
parents: 34342
diff changeset
8101 initial-class))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8102 ((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
8103 (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
8104 ((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
8105 (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
8106 (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
8107 (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
8108 ;; 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
8109 (idlwave-routines
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8110 (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
8111 (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
8112 ;; 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
8113 (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
8114 (if idlwave-popup-source
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8115 (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
8116 (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
8117 (error
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8118 (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
8119 (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
8120 (error (nth 1 err))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8121 (if bufwin
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8122 (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
8123 (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
8124 (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
8125 ((eq id 'keyword)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8126 (if right
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8127 (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
8128 (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
8129
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8130 (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
8131 "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
8132 (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
8133 (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
8134 (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
8135 (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
8136 (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
8137 (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
8138 (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
8139 (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
8140 (insert keyword)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8141 (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
8142 (re-search-backward
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8143 "[(,][ \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
8144 (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
8145 (insert ", "))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8146 (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
8147 (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
8148 (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
8149 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
8150 (insert "=")))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8151
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8152 (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
8153 "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
8154 (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
8155 (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
8156 (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
8157 (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
8158 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
8159 "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
8160 (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
8161
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8162 (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
8163 "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
8164 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
8165 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
8166 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
8167 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
8168 (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
8169 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8170 ((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
8171 (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
8172 (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
8173 ((null idlwave-compiled-routines)
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34708
diff changeset
8174 (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
8175 (t
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8176 (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
8177 "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
8178
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8179 (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
8180 "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
8181 (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
8182 (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
8183
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8184 (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
8185 "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
8186 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
8187 definitions.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8188 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
8189
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8190 When IDL hits a routine call which is not defined, it will search on
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8191 the load path in order to find a definition. The output of this
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8192 command can be used to detect possible name clashes during this process."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8193 (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
8194 (unless (or idlwave-user-catalog-routines idlwave-library-catalog-routines)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8195 (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
8196 "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
8197 (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
8198 (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
8199 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
8200 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
8201 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
8202 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
8203 nil))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8204 (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
8205 (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
8206 (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
8207 km-prop keymap
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8208 '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
8209 (nroutines (length (or special-routines routines)))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8210 (step (/ nroutines 99))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8211 (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
8212 (next-perc 1)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8213 (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
8214 (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
8215 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
8216
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8217 (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
8218 ;; 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
8219 (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
8220 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
8221
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8222 (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
8223 (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
8224 (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
8225 (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
8226 (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
8227 (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
8228 (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
8229 (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
8230
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8231 (define-key keymap (if (featurep 'xemacs) [(button2)] [(mouse-2)])
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8232 (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
8233 (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
8234 (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
8235 (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
8236 (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
8237 (define-key keymap [(return)]
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8238 (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
8239 (interactive)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8240 (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
8241 (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
8242 (message "Compiling list...( 0%%)")
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8243 (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
8244 (set-buffer (get-buffer-create "*Shadows*"))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8245 (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
8246 (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
8247 (while (setq routine (pop routines))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8248 (setq n (1+ n))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8249 (if (= (* next-perc step) n)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8250 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8251 (message "Compiling list...(%2d%%)" next-perc)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8252 (setq next-perc (1+ next-perc))))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8253 ;; 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
8254 (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
8255 (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
8256 (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
8257 (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
8258 ;; 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
8259 (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
8260 (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
8261 (> (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
8262 (> (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
8263 (> (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
8264 (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
8265 (insert (format "\n%s%s"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8266 (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
8267 (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
8268 (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
8269 (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
8270 (setq props1 (append (list 'find-args
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8271 (list (nth 0 routine)
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8272 (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
8273 (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
8274 props))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8275 (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
8276 (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
8277 (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
8278 (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
8279 (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
8280 (progn
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8281 (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
8282 (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
8283 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
8284 (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
8285
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8286 (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
8287 (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
8288 (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
8289 (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
8290 (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
8291 (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
8292 (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
8293 (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
8294 (setq stype 'unresolved))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8295 (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
8296 stype
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8297 (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
8298
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8299 (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
8300 "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
8301 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
8302 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
8303 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
8304 (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
8305 (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
8306 (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
8307 (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
8308 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
8309 (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
8310 (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
8311 (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
8312 (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
8313 (push candidate twins)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8314 (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
8315 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
8316 (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
8317 (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
8318
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8319 (defun idlwave-study-twins (entries)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8320 "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
8321 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
8322 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
8323 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
8324 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
8325 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
8326 (let* ((entry (car entries))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8327 (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
8328 (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
8329 (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
8330 (cnt 0)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8331 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
8332 (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
8333 (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
8334 (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
8335 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
8336 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
8337 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
8338
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8339 ;; 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
8340 (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
8341 (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
8342 (t 'unresolved)))
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8343
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8344 ;; Check for an entry in the system library
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8345 (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
8346 (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
8347 (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
8348 (setq syslibp t))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8349
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8350 ;; 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
8351 ;; 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
8352 (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
8353 (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
8354 (push (list key file (list type-cons)) alist)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8355
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8356 (setq alist (nreverse alist))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8357
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8358 (when syslibp
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8359 ;; 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
8360 (setq alist (delq (assq 'system alist) alist)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8361
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8362 ;; 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
8363 ;; (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
8364 (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
8365 (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
8366 (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
8367 (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
8368
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8369 (defvar type)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8370 (defvar class)
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8371 (defvar idlwave-sort-prefer-buffer-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
8372 "Internal variable used to influence `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
8373
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8374 (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
8375 `(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
8376 (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
8377
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8378 (defun idlwave-routine-entry-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
8379 "Compare two routine info entries for sortiung. This is the general case.
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8380 It first compates class, names, and type. If it turns out that A and B
47261
863b1f0c98f8 (idlwave-support-inheritance, idlwave-routine-entry-compare): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents: 47125
diff changeset
8381 are twins (same name, class, and type), calls another routine which
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 compares twins on the basis of their file names and path locations."
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8383 (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
8384 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8385 ((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
8386 (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
8387 ;; 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
8388 (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
8389 ((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
8390 (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
8391 ((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
8392 ;; 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
8393 (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
8394 ((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
8395 ;; 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
8396 (< (if (eq type 'fun) 1 0) (if (eq (nth 1 b) 'fun) 1 0)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8397 (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
8398 ;; 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
8399 ;; 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
8400 (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
8401
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8402 (defun idlwave-routine-entry-compare-twins (a b)
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8403 "Compare two routine entries, under the assumption that they are
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8404 twins. This basically calls `idlwave-routine-twin-compare' with the
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8405 correct args."
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8406 (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
8407 (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
8408 (atype (car asrc))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8409 (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
8410 (btype (car bsrc))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8411 (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
8412 (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
8413 (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
8414 (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
8415 (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
8416 (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
8417 (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
8418 (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
8419 (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
8420 ))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8421
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8422 (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
8423 "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
8424 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
8425 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
8426 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
8427 (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
8428 (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
8429 (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
8430 (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
8431 ;; 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
8432 (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
8433 (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
8434 ;; 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
8435 (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
8436 (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
8437 ;; Unresolved?
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8438 (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
8439 (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
8440 (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
8441 (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
8442 ;; 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
8443 (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
8444 (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
8445 ;; 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
8446 (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
8447 (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
8448 (assoc (file-name-directory akey) tpath-alist)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8449 (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
8450 (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
8451 ;; 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
8452 ;; 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
8453 (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
8454 (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
8455 ;; 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
8456 (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
8457 (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
8458 (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
8459 (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
8460 (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
8461 (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
8462 ;; 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
8463 ;; 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
8464 (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
8465 (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
8466 (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
8467 (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
8468
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8469 ;; 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
8470 ;; 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
8471 (cond
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8472 ((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
8473 ((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
8474 ((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
8475 (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
8476 ((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
8477 ((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
8478 ((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
8479 ((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
8480 (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
8481 ((> 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
8482 (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
8483
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8484 (defun idlwave-routine-source-file (source)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8485 (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
8486 (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
8487 (nth 1 source)))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8488
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8489 (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
8490 "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
8491 (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
8492 (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
8493 string))
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8494
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8495 (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
8496 "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
8497 (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
8498
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8499 (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
8500 "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
8501 (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
8502
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8503 (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
8504 "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
8505 (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
8506 (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
8507 (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
8508 (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
8509 (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
8510
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8511 (defun idlwave-lib-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
8512 "Non-nil if file is in the library"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8513 (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
8514 (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
8515
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8516 (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
8517 "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
8518 (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
8519 (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
8520 (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
8521
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8522 (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
8523 "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
8524 (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
8525 (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
8526
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8527 (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
8528 "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
8529 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
8530 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
8531 (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
8532 (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
8533 (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
8534 (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
8535 (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
8536 (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
8537 (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
8538 (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
8539 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
8540
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8541 (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
8542 "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
8543 (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
8544 (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
8545 (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
8546 (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
8547
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8548 ;; ----------------------------------------------------------------------------
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8549 ;;
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8550 ;; 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
8551
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8552
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8553 ;; ----------------------------------------------------------------------------
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8554 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8555 ;; 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
8556 ;; (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
8557 ;;
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8558
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8559 (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
8560 "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
8561 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
8562 (save-match-data
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8563 (cond
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8564 ((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
8565 ;; ((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
8566 (t nil))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8567
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8568 (defun idlwave-unit-name ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8569 "Return the unit name.
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8570 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
8571 `idlwave-prev-index-position'."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8572 (forward-sexp 2)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8573 (forward-sexp -1)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8574 (let ((begin (point)))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8575 (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
8576 "[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
8577 (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
8578 (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
8579 (buffer-substring begin (point)))))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8580
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8581 (defalias 'idlwave-function-menu
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8582 (condition-case nil
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8583 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8584 (require 'func-menu)
47479
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8585 'function-menu)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8586 (error (condition-case nil
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8587 (progn
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8588 (require 'imenu)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8589 'imenu)
c25e0ce03c50 From Stefan Monnier
J.D. Smith <jdsmith@as.arizona.edu>
parents: 47440
diff changeset
8590 (error nil)))))
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8591
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8592 ;; 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
8593 ;; 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
8594 ;; 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
8595 (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
8596 (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
8597 '(progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8598 (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
8599 (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
8600 (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
8601 (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
8602 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
8603 (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
8604 (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
8605 (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
8606 (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
8607 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
8608
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8609 (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
8610 "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
8611 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8612 (start-process "idldeclient" nil
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8613 idlwave-shell-explicit-file-name "-c" "-e"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8614 (buffer-file-name) "&"))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8615
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8616 (defun idlwave-launch-idlhelp ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8617 "Start the IDLhelp application."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8618 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8619 (start-process "idlhelp" nil idlwave-help-application))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8620
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8621 ;; Menus - using easymenu.el
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8622 (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
8623 `("IDLWAVE"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8624 ["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
8625 ("Motion"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8626 ["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
8627 ["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
8628 ["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
8629 ["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
8630 ["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
8631 ["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
8632 ["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
8633 ["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
8634 ("Mark"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8635 ["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
8636 ["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
8637 ["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
8638 ("Format"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8639 ["Indent Subprogram" idlwave-indent-subprogram t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8640 ["(Un)Comment Region" idlwave-toggle-comment-region "C-c ;"]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8641 ["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
8642 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8643 ["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
8644 :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
8645 ("Templates"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8646 ["Procedure" idlwave-procedure t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8647 ["Function" idlwave-function t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8648 ["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
8649 ["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
8650 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8651 ["Case" idlwave-case t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8652 ["For" idlwave-for t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8653 ["Repeat" idlwave-repeat t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8654 ["While" idlwave-while t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8655 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8656 ["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
8657 ("Completion"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8658 ["Complete" idlwave-complete t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8659 ("Complete Special"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8660 ["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
8661 ["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
8662 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8663 ["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
8664 ["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
8665 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8666 ["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
8667 ["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
8668 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8669 ["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
8670 ["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
8671 "--"
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8672 ["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
8673 ("Routine Info"
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8674 ["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
8675 ["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
8676 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8677 ["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
8678 ["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
8679 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8680 ["Update Routine Info" 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
8681 "--"
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8682 "IDL User Catalog"
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8683 ["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
8684 ["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
8685 (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
8686 ["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
8687 (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
8688 "--"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8689 "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
8690 ["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
8691 ["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
8692 ["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
8693 ("Misc"
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8694 ["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
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 ["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
8697 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8698 ("External"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8699 ["Generate IDL tags" idlwave-make-tags t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8700 ["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
8701 ["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
8702 ["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
8703 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8704 ("Customize"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8705 ["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
8706 "--"
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8707 ["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
8708 (fboundp 'customize-menu-create)])
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8709 ("Documentation"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8710 ["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
8711 ["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
8712 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8713 ["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
8714 ["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
8715 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8716 ["Info" idlwave-info t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8717 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8718 ["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
8719
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8720 (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
8721 '("Debug"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8722 ["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
8723 ["Save and .RUN buffer" idlwave-shell-save-and-run
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8724 (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
8725 idlwave-shell-automatic-start)]))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8726
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8727 (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
8728 (progn
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8729 (easy-menu-define idlwave-mode-menu idlwave-mode-map
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8730 "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
8731 idlwave-mode-menu-def)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8732 (easy-menu-define idlwave-mode-debug-menu idlwave-mode-map
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8733 "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
8734 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
8735
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8736 (defun idlwave-customize ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8737 "Call the customize function with idlwave as argument."
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8738 (interactive)
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8739 ;; 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
8740 ;; as well.
27185
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
8741 (or (featurep 'idlw-shell)
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
8742 (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
8743 (customize-browse 'idlwave))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8744
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8745 (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
8746 "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
8747 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8748 (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
8749 (progn
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8750 ;; 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
8751 ;; as well.
27185
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
8752 (or (featurep 'idlw-shell)
ae5b17b9c403 fixed some bugs associated with the new file names
Carsten Dominik <dominik@science.uva.nl>
parents: 27107
diff changeset
8753 (load "idlw-shell" t))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8754 (easy-menu-change
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8755 '("IDLWAVE") "Customize"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8756 `(["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
8757 "--"
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8758 ,(customize-menu-create 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8759 ["Set" Custom-set t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8760 ["Save" Custom-save t]
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8761 ["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
8762 ["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
8763 ["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
8764 (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
8765 (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
8766
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8767 (defun idlwave-show-commentary ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8768 "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
8769 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8770 (require 'finder)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8771 (finder-commentary "idlwave.el"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8772
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8773 (defun idlwave-shell-show-commentary ()
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
8774 "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
8775 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8776 (require 'finder)
27606
0396e9e8d57b (idlwave-template): Respect `idlwave-abbrev-change-case'.
Carsten Dominik <dominik@science.uva.nl>
parents: 27185
diff changeset
8777 (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
8778
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8779 (defun idlwave-info ()
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8780 "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
8781 (interactive)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8782 (require 'info)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8783 (Info-goto-node "(idlwave)"))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8784
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8785 (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
8786 "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
8787 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
8788 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
8789
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8790 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
8791 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
8792 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
8793
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8794 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
8795
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8796 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
8797
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8798 (interactive "P")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8799 (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
8800 abbrevs
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8801 str rpl func fmt (len-str 0) (len-rpl 0))
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8802 (mapatoms
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8803 (lambda (sym)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8804 (if (symbol-value sym)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8805 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8806 (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
8807 rpl (symbol-value sym)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8808 func (symbol-function sym))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8809 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8810 (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
8811 (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
8812 (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
8813 func "")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8814 (setq func "")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8815 (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
8816 (progn
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8817 (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
8818 (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
8819 (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
8820 table)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8821 ;; sort the list
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8822 (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
8823 ;; Make the format
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8824 (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
8825 (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
8826 (if arg
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8827 (progn
64046
d7d0b751409c (idlwave): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 64001
diff changeset
8828 (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
8829 (princ "=========================================\n\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8830 (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
8831 (princ (format fmt "---" "-------" "----")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8832 (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
8833 (princ "================================================\n\n")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8834 (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
8835 (princ (format fmt "---" "------" "")))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8836 (mapcar
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8837 (lambda (list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8838 (setq str (car list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8839 rpl (nth 1 list)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8840 func (nth 2 list))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8841 (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
8842 abbrevs)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8843 ;; Make sure each abbreviation uses only one display line
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8844 (save-excursion
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8845 (set-buffer "*Help*")
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8846 (setq truncate-lines t)))
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8847
46529
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8848 ;; 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
8849 (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
8850
148f4d9a8905 Updated to IDLWAVE version 4.14. See idlwave.org.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 45318
diff changeset
8851 ;; 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
8852 ;; 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
8853 (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
8854
58293
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8855 ;;;###autoload(add-to-list 'auto-mode-alist '("\\.[Pp][Rr][Oo]\\'" . idlwave-mode))
5b2b2365e698 Updated to IDLWAVE version 5.5. See idlwave.org
J.D. Smith <jdsmith@as.arizona.edu>
parents: 57821
diff changeset
8856
29774
8eff9cc9cbae Files re-installed, because changes are too massive to document them here.
Carsten Dominik <dominik@science.uva.nl>
parents: 27606
diff changeset
8857 ;; Run the hook
26956
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8858 (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
8859
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8860 (provide 'idlwave)
67b3331ff24c Major mode for editing files of the Interactive Data Language
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
8861
58296
4773953f1a10 Restore arch taglines
Miles Bader <miles@gnu.org>
parents: 58293
diff changeset
8862 ;; 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
8863 ;;; idlwave.el ends here