annotate lisp/ielm.el @ 51010:f79532778159

Rewrote the local minor mode so that it can be sticky as well and made sticky the default. Reimplemented the global minor mode. Updated the commentary section to document these changes. (hl-line-sticky-flag): New user option. (hl-line-overlay): Made it buffer-local and gave it a docstring. (global-hl-line-overlay): New variable. (hl-line-mode): Rewritten to use `hl-line-sticky-flag'. (hl-line-highlight): Rewritten to use `hl-line-sticky-flag'. (hl-line-unhighlight): Updated docstring. (global-hl-line-mode): Implemented directly so that is does not depend on `hl-line-mode' any more. (global-hl-line-highlight, global-hl-line-unhighlight): New functions.
author Lute Kamstra <lute@gnu.org>
date Thu, 15 May 2003 13:21:23 +0000
parents 37645a051842
children 695cf19ef79e d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; ielm.el --- interaction mode for Emacs Lisp
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
2
49161
7d0428387d83 (inferior-emacs-lisp-mode): Bind comint-dynamic-complete-functions locally.
Andreas Schwab <schwab@suse.de>
parents: 47969
diff changeset
3 ;; Copyright (C) 1994, 2002, 2003 Free Software Foundation, Inc.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: David Smith <maa036@lancaster.ac.uk>
17976
852464ce5d6a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17649
diff changeset
6 ;; Maintainer: FSF
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Created: 25 Feb 1994
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; Keywords: lisp
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
25 ;; Boston, MA 02111-1307, USA.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
29 ;; Provides a nice interface to evaluating Emacs Lisp expressions.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; Input is handled by the comint package, and output is passed
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; through the pretty-printer.
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; To install: copy this file to a directory in your load-path, and
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
34 ;; add the following line to your .emacs file:
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;;
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
36 ;; (autoload 'ielm "ielm" "Start an inferior Emacs Lisp session" t)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;;
18387
c9700d281f81 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 18383
diff changeset
38 ;; For completion to work, the comint.el from Emacs 19.23 is
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; required. If you do not have it, or if you are running Lemacs,
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; also add the following code to your .emacs:
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;;
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;; (setq ielm-mode-hook
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; '(lambda nil
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;; (define-key ielm-map "\t"
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
45 ;; '(lambda nil (interactive) (or (ielm-tab)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; (lisp-complete-symbol))))))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; To start: M-x ielm. Type C-h m in the *ielm* buffer for more info.
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
50 ;; The latest version is available by WWW from
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; http://mathssun5.lancs.ac.uk:2080/~maa036/elisp/dir.html
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;; or by anonymous FTP from
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;; /anonymous@wingra.stat.wisc.edu:pub/src/emacs-lisp/ielm.el.gz
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 ;; or from the author: David M. Smith <maa036@lancaster.ac.uk>
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;;; Code:
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 (require 'comint)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 (require 'pp)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;;; User variables
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62
17634
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
63 (defgroup ielm nil
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
64 "Interaction mode for Emacs Lisp."
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
65 :group 'lisp)
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
66
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
67
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
68 (defcustom ielm-noisy t
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
69 "*If non-nil, IELM will beep on error."
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
70 :type 'boolean
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
71 :group 'ielm)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72
43524
ca53e91e0186 (ielm-prompt): Allow customization; make it read-only.
Juanma Barranquero <lekktu@gmail.com>
parents: 43519
diff changeset
73 (defcustom ielm-prompt "ELISP> "
ca53e91e0186 (ielm-prompt): Allow customization; make it read-only.
Juanma Barranquero <lekktu@gmail.com>
parents: 43519
diff changeset
74 "Prompt used in IELM."
ca53e91e0186 (ielm-prompt): Allow customization; make it read-only.
Juanma Barranquero <lekktu@gmail.com>
parents: 43519
diff changeset
75 :type 'string
ca53e91e0186 (ielm-prompt): Allow customization; make it read-only.
Juanma Barranquero <lekktu@gmail.com>
parents: 43519
diff changeset
76 :group 'ielm
ca53e91e0186 (ielm-prompt): Allow customization; make it read-only.
Juanma Barranquero <lekktu@gmail.com>
parents: 43519
diff changeset
77 :get #'(lambda (symbol) (substring-no-properties (symbol-value symbol)))
ca53e91e0186 (ielm-prompt): Allow customization; make it read-only.
Juanma Barranquero <lekktu@gmail.com>
parents: 43519
diff changeset
78 :set #'(lambda (symbol value) (set symbol (propertize value 'read-only t 'rear-nonsticky t))))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79
17634
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
80 (defcustom ielm-dynamic-return t
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
81 "*Controls whether \\<ielm-map>\\[ielm-return] has intelligent behaviour in IELM.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
82 If non-nil, \\[ielm-return] evaluates input for complete sexps, or inserts a newline
17634
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
83 and indents for incomplete sexps. If nil, always inserts newlines."
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
84 :type 'boolean
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
85 :group 'ielm)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
86
17634
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
87 (defcustom ielm-dynamic-multiline-inputs t
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
88 "*Force multiline inputs to start from column zero?
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
89 If non-nil, after entering the first line of an incomplete sexp, a newline
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
90 will be inserted after the prompt, moving the input to the next line.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
91 This gives more frame width for large indented sexps, and allows functions
17634
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
92 such as `edebug-defun' to work with such inputs."
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
93 :type 'boolean
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
94 :group 'ielm)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
17634
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
96 (defcustom ielm-mode-hook nil
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
97 "*Hooks to be run when IELM (`inferior-emacs-lisp-mode') is started."
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
98 :type 'hook
247c2a11843d Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17148
diff changeset
99 :group 'ielm)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100
21834
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
101 (defvar * nil
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
102 "Most recent value evaluated in IELM.")
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
103
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
104 (defvar ** nil
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
105 "Second-most-recent value evaluated in IELM.")
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
106
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
107 (defvar *** nil
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
108 "Third-most-recent value evaluated in IELM.")
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
109
43519
a604392198d7 (ielm-match-data): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43509
diff changeset
110 (defvar ielm-match-data nil
a604392198d7 (ielm-match-data): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43509
diff changeset
111 "Match data saved at the end of last command.")
a604392198d7 (ielm-match-data): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43509
diff changeset
112
47586
86b3a5572fda (*1): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 47551
diff changeset
113 (defvar *1 nil
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
114 "During IELM evaluation, most recent value evaluated in IELM.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
115 Normally identical to `*'. However, if the working buffer is an IELM
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
116 buffer, distinct from the process buffer, then `*' gives the value in
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49161
diff changeset
117 the working buffer, `*1' the value in the process buffer.
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
118 The intended value is only accessible during IELM evaluation.")
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
119
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
120 (defvar *2 nil
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
121 "During IELM evaluation, second-most-recent value evaluated in IELM.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
122 Normally identical to `**'. However, if the working buffer is an IELM
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
123 buffer, distinct from the process buffer, then `**' gives the value in
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
124 the working buffer, `*2' the value in the process buffer.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
125 The intended value is only accessible during IELM evaluation.")
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
126
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
127 (defvar *3 nil
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
128 "During IELM evaluation, third-most-recent value evaluated in IELM.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
129 Normally identical to `***'. However, if the working buffer is an IELM
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
130 buffer, distinct from the process buffer, then `***' gives the value in
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
131 the working buffer, `*3' the value in the process buffer.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
132 The intended value is only accessible during IELM evaluation.")
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
133
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 ;;; System variables
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 (defvar ielm-working-buffer nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
137 "Buffer in which IELM sexps will be evaluated.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
138 This variable is buffer-local.")
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
140 (defvar ielm-header
18400
16de434b8026 (ielm-header): Delete version and RCS header.
Richard M. Stallman <rms@gnu.org>
parents: 18387
diff changeset
141 "*** Welcome to IELM *** Type (describe-mode) for help.\n"
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
142 "Message to display when IELM is started.")
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 (defvar ielm-map nil)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 (if ielm-map nil
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 (if (string-match "Lucid" emacs-version)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 ;; Lemacs
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 (progn
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 (setq ielm-map (make-sparse-keymap))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 (set-keymap-parent ielm-map comint-mode-map))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 ;; FSF
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 (setq ielm-map (cons 'keymap comint-mode-map)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 (define-key ielm-map "\t" 'comint-dynamic-complete)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 (define-key ielm-map "\C-m" 'ielm-return)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
155 (define-key ielm-map "\C-j" 'ielm-send-input)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
156 (define-key ielm-map "\e\C-x" 'eval-defun) ; for consistency with
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
157 (define-key ielm-map "\e\t" 'lisp-complete-symbol) ; lisp-interaction-mode
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
158 ;; These bindings are from `lisp-mode-shared-map' -- can you inherit
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
159 ;; from more than one keymap??
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
160 (define-key ielm-map "\e\C-q" 'indent-sexp)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
161 (define-key ielm-map "\177" 'backward-delete-char-untabify)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
162 ;; Some convenience bindings for setting the working buffer
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
163 (define-key ielm-map "\C-c\C-b" 'ielm-change-working-buffer)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
164 (define-key ielm-map "\C-c\C-f" 'ielm-display-working-buffer)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
165 (define-key ielm-map "\C-c\C-v" 'ielm-print-working-buffer))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166
12439
6141f81a80e5 (ielm-font-lock-keywords): New variable
Richard M. Stallman <rms@gnu.org>
parents: 10981
diff changeset
167 (defvar ielm-font-lock-keywords
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
168 (list
12439
6141f81a80e5 (ielm-font-lock-keywords): New variable
Richard M. Stallman <rms@gnu.org>
parents: 10981
diff changeset
169 (cons (concat "^" (regexp-quote ielm-prompt)) 'font-lock-keyword-face)
20953
f3f9df46d008 Changed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 18400
diff changeset
170 '("\\(^\\*\\*\\*[^*]+\\*\\*\\*\\)\\(.*$\\)"
f3f9df46d008 Changed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 18400
diff changeset
171 (1 font-lock-comment-face)
f3f9df46d008 Changed font-lock-reference-face to font-lock-constant-face.
Simon Marshall <simon@gnu.org>
parents: 18400
diff changeset
172 (2 font-lock-constant-face)))
12439
6141f81a80e5 (ielm-font-lock-keywords): New variable
Richard M. Stallman <rms@gnu.org>
parents: 10981
diff changeset
173 "Additional expressions to highlight in ielm buffers.")
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
174
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 ;;; Completion stuff
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 (defun ielm-tab nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
178 "Possibly indent the current line as lisp code."
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 (interactive)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 (if (or (eq (preceding-char) ?\n)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 (eq (char-syntax (preceding-char)) ? ))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 (progn
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 (ielm-indent-line)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 t)))
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
185
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 (defun ielm-complete-symbol nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
187 "Complete the lisp symbol before point."
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
188 ;; A wrapper for lisp-complete symbol that returns non-nil if
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
189 ;; completion has occurred
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (let* ((btick (buffer-modified-tick))
7842
50676390b162 (ielm-complete-symbol): Likewise.
Richard M. Stallman <rms@gnu.org>
parents: 7275
diff changeset
191 (cbuffer (get-buffer "*Completions*"))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 (ctick (and cbuffer (buffer-modified-tick cbuffer))))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 (lisp-complete-symbol)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 ;; completion has occurred if:
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
195 (or
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 ;; the buffer has been modified
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
197 (not (= btick (buffer-modified-tick)))
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 12439
diff changeset
198 ;; a completions buffer has been modified or created
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (if cbuffer
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 (not (= ctick (buffer-modified-tick cbuffer)))
7842
50676390b162 (ielm-complete-symbol): Likewise.
Richard M. Stallman <rms@gnu.org>
parents: 7275
diff changeset
201 (get-buffer "*Completions*")))))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 (defun ielm-complete-filename nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
204 "Dynamically complete filename before point, if in a string."
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 (if (nth 3 (parse-partial-sexp comint-last-input-start (point)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 (comint-dynamic-complete-filename)))
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
207
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (defun ielm-indent-line nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
209 "Indent the current line as Lisp code if it is not a prompt line."
30644
ce7385745191 (ielm-indent-line): Detect a "prompt" line by seeing if comint-bol
Miles Bader <miles@gnu.org>
parents: 21834
diff changeset
210 (when (save-excursion (comint-bol) (bolp))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 (lisp-indent-line)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
213 ;;; Working buffer manipulation
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
214
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
215 (defun ielm-print-working-buffer nil
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
216 "Print the current IELM working buffer's name in the echo area."
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
217 (interactive)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
218 (message "The current working buffer is: %s" (buffer-name ielm-working-buffer)))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
219
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
220 (defun ielm-display-working-buffer nil
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
221 "Display the current IELM working buffer.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
222 Don't forget that selecting that buffer will change its value of `point'
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
223 to its value of `window-point'!"
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
224 (interactive)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
225 (display-buffer ielm-working-buffer)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
226 (ielm-print-working-buffer))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
227
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
228 (defun ielm-change-working-buffer (buf)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
229 "Change the current IELM working buffer to BUF.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
230 This is the buffer in which all sexps entered at the IELM prompt are
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
231 evaluated. You can achieve the same effect with a call to
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
232 `set-buffer' at the IELM prompt."
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
233 (interactive "bSet working buffer to: ")
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
234 (setq ielm-working-buffer (or (get-buffer buf) (error "No such buffer")))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
235 (ielm-print-working-buffer))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
236
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 ;;; Other bindings
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 (defun ielm-return nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
240 "Newline and indent, or evaluate the sexp before the prompt.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
241 Complete sexps are evaluated; for incomplete sexps inserts a newline
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
242 and indents. If however `ielm-dynamic-return' is nil, this always
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
243 simply inserts a newline."
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (interactive)
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
245 (if ielm-dynamic-return
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
246 (let ((state
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (save-excursion
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 (end-of-line)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (parse-partial-sexp (ielm-pm)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 (point)))))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 (if (and (< (car state) 1) (not (nth 3 state)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 (ielm-send-input)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
253 (if (and ielm-dynamic-multiline-inputs
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
254 (save-excursion
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
255 (beginning-of-line)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
256 (looking-at comint-prompt-regexp)))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
257 (save-excursion
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
258 (goto-char (ielm-pm))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
259 (newline 1)))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 (newline-and-indent)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (newline)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262
17978
1471676365ac (ielm-input): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
263 (defvar ielm-input)
1471676365ac (ielm-input): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
264
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 (defun ielm-input-sender (proc input)
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
266 ;; Just sets the variable ielm-input, which is in the scope of
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
267 ;; `ielm-send-input's call.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 (setq ielm-input input))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (defun ielm-send-input nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
271 "Evaluate the Emacs Lisp expression after the prompt."
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 (interactive)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 (let ((buf (current-buffer))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 ielm-input) ; set by ielm-input-sender
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 (comint-send-input) ; update history, markers etc.
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 (ielm-eval-input ielm-input)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 ;;; Utility functions
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 (defun ielm-is-whitespace (string)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
281 "Return non-nil if STRING is all whitespace."
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 (or (string= string "") (string-match "\\`[ \t\n]+\\'" string)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 ;;; Evaluation
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
286 (defun ielm-eval-input (ielm-string)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
287 "Evaluate the Lisp expression IELM-STRING, and pretty-print the result."
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 ;; This is the function that actually `sends' the input to the
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
289 ;; `inferior Lisp process'. All comint-send-input does is works out
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 ;; what that input is. What this function does is evaluates that
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 ;; input and produces `output' which gets inserted into the buffer,
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 ;; along with a new prompt. A better way of doing this might have
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 ;; been to actually send the output to the `cat' process, and write
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 ;; this as in output filter that converted sexps in the output
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 ;; stream to their evaluated value. But that would have involved
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 ;; more process coordination than I was happy to deal with.
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
297 ;;
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
298 ;; NOTE: all temporary variables in this function will be in scope
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
299 ;; during the eval, and so need to have non-clashing names.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
300 (let (ielm-form ; form to evaluate
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
301 ielm-pos ; End posn of parse in string
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
302 ielm-result ; Result, or error message
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
303 ielm-error-type ; string, nil if no error
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
304 (ielm-output "") ; result to display
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
305 (ielm-wbuf ielm-working-buffer) ; current buffer after evaluation
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
306 (ielm-pmark (ielm-pm)))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
307 (if (not (ielm-is-whitespace ielm-string))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 (progn
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 (condition-case err
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (let (rout)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
311 (setq rout (read-from-string ielm-string))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
312 (setq ielm-form (car rout))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
313 (setq ielm-pos (cdr rout)))
45833
e7a3c79415d6 (ielm-eval-input): Use error-message-string.
Richard M. Stallman <rms@gnu.org>
parents: 43524
diff changeset
314 (error (setq ielm-result (error-message-string err))
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
315 (setq ielm-error-type "Read error")))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
316 (if ielm-error-type nil
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
317 ;; Make sure working buffer has not been killed
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
318 (if (not (buffer-name ielm-working-buffer))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
319 (setq ielm-result "Working buffer has been killed"
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
320 ielm-error-type "IELM Error"
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
321 ielm-wbuf (current-buffer))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
322 (if (ielm-is-whitespace (substring ielm-string ielm-pos))
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
323 ;; To correctly handle the ielm-local variables *,
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
324 ;; ** and ***, we need a temporary buffer to be
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
325 ;; current at entry to the inner of the next two let
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
326 ;; forms. We need another temporary buffer to exit
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
327 ;; that same let. To avoid problems, neither of
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
328 ;; these buffers should be alive during the
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
329 ;; evaluation of ielm-form.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
330 (let ((*1 *)
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
331 (*2 **)
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
332 (*3 ***)
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
333 ielm-temp-buffer)
43519
a604392198d7 (ielm-match-data): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43509
diff changeset
334 (set-match-data ielm-match-data)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
335 (save-excursion
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
336 (with-temp-buffer
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
337 (condition-case err
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
338 (unwind-protect
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
339 ;; The next let form creates default
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
340 ;; bindings for *, ** and ***. But
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
341 ;; these default bindings are
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
342 ;; identical to the ielm-local
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
343 ;; bindings. Hence, during the
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
344 ;; evaluation of ielm-form, the
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
345 ;; ielm-local values are going to be
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
346 ;; used in all buffers except for
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
347 ;; other ielm buffers, which override
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
348 ;; them. Normally, the variables *1,
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
349 ;; *2 and *3 also have default
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
350 ;; bindings, which are not overridden.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
351 (let ((* *1)
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
352 (** *2)
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
353 (*** *3))
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
354 (kill-buffer (current-buffer))
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
355 (set-buffer ielm-wbuf)
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
356 (setq ielm-result (eval ielm-form))
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
357 (setq ielm-wbuf (current-buffer))
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
358 (setq
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
359 ielm-temp-buffer
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
360 (generate-new-buffer " *ielm-temp*"))
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
361 (set-buffer ielm-temp-buffer))
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
362 (when ielm-temp-buffer
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
363 (kill-buffer ielm-temp-buffer)))
47551
9c28c23c3153 (ielm-eval-input): Call `error-message-string' instead of the non-existent
Juanma Barranquero <lekktu@gmail.com>
parents: 47529
diff changeset
364 (error (setq ielm-result (error-message-string err))
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
365 (setq ielm-error-type "Eval error"))
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
366 (quit (setq ielm-result "Quit during evaluation")
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
367 (setq ielm-error-type "Eval error")))))
43519
a604392198d7 (ielm-match-data): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43509
diff changeset
368 (setq ielm-match-data (match-data)))
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
369 (setq ielm-error-type "IELM error")
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
370 (setq ielm-result "More than one sexp in input"))))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 ;; If the eval changed the current buffer, mention it here
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
373 (if (eq ielm-wbuf ielm-working-buffer) nil
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
374 (message "current buffer is now: %s" ielm-wbuf)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
375 (setq ielm-working-buffer ielm-wbuf))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
377 (goto-char ielm-pmark)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
378 (if (not ielm-error-type)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 (condition-case err
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 ;; Self-referential objects cause loops in the printer, so
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 ;; trap quits here. May as well do errors, too
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
382 (setq ielm-output (concat ielm-output (pp-to-string ielm-result)))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
383 (error (setq ielm-error-type "IELM Error")
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
384 (setq ielm-result "Error during pretty-printing (bug in pp)"))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
385 (quit (setq ielm-error-type "IELM Error")
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
386 (setq ielm-result "Quit during pretty-printing"))))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
387 (if ielm-error-type
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 (progn
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (if ielm-noisy (ding))
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
390 (setq ielm-output (concat ielm-output "*** " ielm-error-type " *** "))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
391 (setq ielm-output (concat ielm-output ielm-result)))
21834
8ba41a7b6464 (*, **, ***): Add defvars.
Richard M. Stallman <rms@gnu.org>
parents: 21795
diff changeset
392 ;; There was no error, so shift the *** values
21795
444b6677cc4e (ielm-eval-input): More of previous change.
Richard M. Stallman <rms@gnu.org>
parents: 21781
diff changeset
393 (setq *** **)
444b6677cc4e (ielm-eval-input): More of previous change.
Richard M. Stallman <rms@gnu.org>
parents: 21781
diff changeset
394 (setq ** *)
444b6677cc4e (ielm-eval-input): More of previous change.
Richard M. Stallman <rms@gnu.org>
parents: 21781
diff changeset
395 (setq * ielm-result))
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
396 (setq ielm-output (concat ielm-output "\n"))))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
397 (setq ielm-output (concat ielm-output ielm-prompt))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
398 (comint-output-filter (ielm-process) ielm-output)))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 ;;; Process and marker utilities
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (defun ielm-process nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
403 ;; Return the current buffer's process.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (get-buffer-process (current-buffer)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (defun ielm-pm nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
407 ;; Return the process mark of the current buffer.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (process-mark (get-buffer-process (current-buffer))))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (defun ielm-set-pm (pos)
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
411 ;; Set the process mark in the current buffer to POS.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (set-marker (process-mark (get-buffer-process (current-buffer))) pos))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 ;;; Major mode
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415
17649
28037dab627c (inferior-emacs-lisp-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17634
diff changeset
416 (put 'inferior-emacs-lisp-mode 'mode-class 'special)
28037dab627c (inferior-emacs-lisp-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17634
diff changeset
417
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (defun inferior-emacs-lisp-mode nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
419 "Major mode for interactively evaluating Emacs Lisp expressions.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
420 Uses the interface provided by `comint-mode' (which see).
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
421
47969
cdc87bc8e049 (inferior-emacs-lisp-mode): If hexl not found, use cat. point-min != 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47626
diff changeset
422 * \\<ielm-map>\\[ielm-send-input] evaluates the sexp following the prompt. There must be at most
cdc87bc8e049 (inferior-emacs-lisp-mode): If hexl not found, use cat. point-min != 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47626
diff changeset
423 one top level sexp per prompt.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
425 * \\[ielm-return] inserts a newline and indents, or evaluates a
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
426 complete expression (but see variable `ielm-dynamic-return').
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
427 Inputs longer than one line are moved to the line following the
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
428 prompt (but see variable `ielm-dynamic-multiline-inputs').
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
429
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
430 * \\[comint-dynamic-complete] completes Lisp symbols (or filenames, within strings),
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
431 or indents the line if there is nothing to complete.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
433 The current working buffer may be changed (with a call to
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
434 `set-buffer', or with \\[ielm-change-working-buffer]), and its value
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
435 is preserved between successive evaluations. In this way, expressions
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
436 may be evaluated in a different buffer than the *ielm* buffer.
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
437 Display the name of the working buffer with \\[ielm-print-working-buffer],
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
438 or the buffer itself with \\[ielm-display-working-buffer].
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
440 During evaluations, the values of the variables `*', `**', and `***'
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
441 are the results of the previous, second previous and third previous
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
442 evaluations respectively. If the working buffer is another IELM
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
443 buffer, then the values in the working buffer are used. The variables
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
444 `*1', `*2' and `*3', yield the process buffer values.
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
445
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
446 Expressions evaluated by IELM are not subject to `debug-on-quit' or
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
447 `debug-on-error'.
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 The behaviour of IELM may be customised with the following variables:
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 * To stop beeping on error, set `ielm-noisy' to nil
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 * If you don't like the prompt, you can change it by setting `ielm-prompt'.
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 * Set `ielm-dynamic-return' to nil for bindings like `lisp-interaction-mode'
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 * Entry to this mode runs `comint-mode-hook' and `ielm-mode-hook'
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 (in that order).
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 Customised bindings may be defined in `ielm-map', which currently contains:
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 \\{ielm-map}"
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 (interactive)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 (comint-mode)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 (setq comint-prompt-regexp (concat "^" (regexp-quote ielm-prompt)))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (make-local-variable 'paragraph-start)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (setq paragraph-start comint-prompt-regexp)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 (setq comint-input-sender 'ielm-input-sender)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 (setq comint-process-echoes nil)
49161
7d0428387d83 (inferior-emacs-lisp-mode): Bind comint-dynamic-complete-functions locally.
Andreas Schwab <schwab@suse.de>
parents: 47969
diff changeset
465 (make-local-variable 'comint-dynamic-complete-functions)
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
466 (setq comint-dynamic-complete-functions
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 '(ielm-tab comint-replace-by-expanded-history ielm-complete-filename ielm-complete-symbol))
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
468 (setq comint-get-old-input 'ielm-get-old-input)
17148
10107950ac5e (inferior-emacs-lisp-mode): Set comint-completion-addsuffix.
Karl Heuer <kwzh@gnu.org>
parents: 15886
diff changeset
469 (make-local-variable 'comint-completion-addsuffix)
10107950ac5e (inferior-emacs-lisp-mode): Set comint-completion-addsuffix.
Karl Heuer <kwzh@gnu.org>
parents: 15886
diff changeset
470 (setq comint-completion-addsuffix
10107950ac5e (inferior-emacs-lisp-mode): Set comint-completion-addsuffix.
Karl Heuer <kwzh@gnu.org>
parents: 15886
diff changeset
471 (cons (char-to-string directory-sep-char) ""))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 (setq major-mode 'inferior-emacs-lisp-mode)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 (setq mode-name "IELM")
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 (use-local-map ielm-map)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 (set-syntax-table emacs-lisp-mode-syntax-table)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 (make-local-variable 'indent-line-function)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (make-local-variable 'ielm-working-buffer)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 (setq ielm-working-buffer (current-buffer))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (setq indent-line-function 'ielm-indent-line)
15886
4877d1aa80ad (ielm-map): Don't bind M-q.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
482 (make-local-variable 'fill-paragraph-function)
4877d1aa80ad (ielm-map): Don't bind M-q.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
483 (setq fill-paragraph-function 'lisp-fill-paragraph)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
485 ;; Value holders
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
486 (make-local-variable '*)
21781
6e9ef4991da8 (ielm-eval-input): Use variables *, **, *** not :, ::, :::.
Richard M. Stallman <rms@gnu.org>
parents: 20953
diff changeset
487 (setq * nil)
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
488 (make-local-variable '**)
21781
6e9ef4991da8 (ielm-eval-input): Use variables *, **, *** not :, ::, :::.
Richard M. Stallman <rms@gnu.org>
parents: 20953
diff changeset
489 (setq ** nil)
47529
9b53ca22ace7 (*1, *2, *3): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 46942
diff changeset
490 (make-local-variable '***)
21781
6e9ef4991da8 (ielm-eval-input): Use variables *, **, *** not :, ::, :::.
Richard M. Stallman <rms@gnu.org>
parents: 20953
diff changeset
491 (setq *** nil)
43519
a604392198d7 (ielm-match-data): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43509
diff changeset
492 (set (make-local-variable 'ielm-match-data) nil)
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493
12439
6141f81a80e5 (ielm-font-lock-keywords): New variable
Richard M. Stallman <rms@gnu.org>
parents: 10981
diff changeset
494 ;; font-lock support
6141f81a80e5 (ielm-font-lock-keywords): New variable
Richard M. Stallman <rms@gnu.org>
parents: 10981
diff changeset
495 (make-local-variable 'font-lock-defaults)
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
496 (setq font-lock-defaults
12439
6141f81a80e5 (ielm-font-lock-keywords): New variable
Richard M. Stallman <rms@gnu.org>
parents: 10981
diff changeset
497 '(ielm-font-lock-keywords nil nil ((?: . "w") (?- . "w") (?* . "w"))))
32367
7c181d033dae use lisp-mode-shared-map instead of shared-lisp-mode-map
Sam Steingold <sds@gnu.org>
parents: 30644
diff changeset
498
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 ;; A dummy process to keep comint happy. It will never get any input
46942
15fab402303e [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 45833
diff changeset
500 (unless (comint-check-proc (current-buffer))
43509
d4b9f0aaf4f7 (inferior-emacs-lisp-mode): Use hexl for the dummy process.
Jason Rumney <jasonr@gnu.org>
parents: 32367
diff changeset
501 ;; Was cat, but on non-Unix platforms that might not exist, so
d4b9f0aaf4f7 (inferior-emacs-lisp-mode): Use hexl for the dummy process.
Jason Rumney <jasonr@gnu.org>
parents: 32367
diff changeset
502 ;; use hexl instead, which is part of the Emacs distribution.
47969
cdc87bc8e049 (inferior-emacs-lisp-mode): If hexl not found, use cat. point-min != 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47626
diff changeset
503 (condition-case nil
cdc87bc8e049 (inferior-emacs-lisp-mode): If hexl not found, use cat. point-min != 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47626
diff changeset
504 (start-process "ielm" (current-buffer) "hexl")
cdc87bc8e049 (inferior-emacs-lisp-mode): If hexl not found, use cat. point-min != 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47626
diff changeset
505 (file-error (start-process "ielm" (current-buffer) "cat")))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (process-kill-without-query (ielm-process))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 (goto-char (point-max))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49161
diff changeset
508
46942
15fab402303e [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 45833
diff changeset
509 ;; Lisp output can include raw characters that confuse comint's
15fab402303e [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 45833
diff changeset
510 ;; carriage control code.
15fab402303e [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 45833
diff changeset
511 (set (make-local-variable 'comint-inhibit-carriage-motion) t)
15fab402303e [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 45833
diff changeset
512
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 ;; Add a silly header
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (insert ielm-header)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (ielm-set-pm (point-max))
47626
9e91beee44a6 (inferior-emacs-lisp-mode): Treat the header as output,
Richard M. Stallman <rms@gnu.org>
parents: 47586
diff changeset
516 (unless comint-use-prompt-regexp-instead-of-fields
9e91beee44a6 (inferior-emacs-lisp-mode): Treat the header as output,
Richard M. Stallman <rms@gnu.org>
parents: 47586
diff changeset
517 (add-text-properties
47969
cdc87bc8e049 (inferior-emacs-lisp-mode): If hexl not found, use cat. point-min != 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47626
diff changeset
518 (point-min) (point-max)
47626
9e91beee44a6 (inferior-emacs-lisp-mode): Treat the header as output,
Richard M. Stallman <rms@gnu.org>
parents: 47586
diff changeset
519 '(rear-nonsticky t field output inhibit-line-move-field-capture t)))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 (comint-output-filter (ielm-process) ielm-prompt)
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 (set-marker comint-last-input-start (ielm-pm))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (set-process-filter (get-buffer-process (current-buffer)) 'comint-output-filter))
46942
15fab402303e [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 45833
diff changeset
523
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 (run-hooks 'ielm-mode-hook))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
526 (defun ielm-get-old-input nil
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
527 ;; Return the previous input surrounding point
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
528 (save-excursion
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
529 (beginning-of-line)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
530 (if (looking-at comint-prompt-regexp) nil
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
531 (re-search-backward comint-prompt-regexp))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
532 (comint-skip-prompt)
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
533 (buffer-substring (point) (progn (forward-sexp 1) (point)))))
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
534
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 ;;; User command
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536
10981
54697b892d3a (ielm): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 7842
diff changeset
537 ;;;###autoload (add-hook 'same-window-buffer-names "*ielm*")
54697b892d3a (ielm): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 7842
diff changeset
538
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
539 ;;;###autoload
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (defun ielm nil
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
541 "Interactively evaluate Emacs Lisp expressions.
10981
54697b892d3a (ielm): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 7842
diff changeset
542 Switches to the buffer `*ielm*', or creates it if it does not exist."
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 (interactive)
10981
54697b892d3a (ielm): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 7842
diff changeset
544 (if (comint-check-proc "*ielm*")
54697b892d3a (ielm): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 7842
diff changeset
545 nil
54697b892d3a (ielm): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 7842
diff changeset
546 (save-excursion
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 (set-buffer (get-buffer-create "*ielm*"))
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 (inferior-emacs-lisp-mode)))
10981
54697b892d3a (ielm): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 7842
diff changeset
549 (pop-to-buffer "*ielm*"))
7267
4aa70d4d981c Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17978
diff changeset
551 (provide 'ielm)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17978
diff changeset
552
7275
cd1541f4c87c (ielm-dynamic-multiline-inputs): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7267
diff changeset
553 ;;; ielm.el ends here