;;; ielm.el --- interaction mode for Emacs Lisp
-;; Copyright (C) 1994, 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
+;; 2006, 2007, 2008 Free Software Foundation, Inc.
;; Author: David Smith <maa036@lancaster.ac.uk>
;; Maintainer: FSF
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
customizes `ielm-prompt'.")
(defcustom ielm-dynamic-return t
- "*Controls whether \\<ielm-map>\\[ielm-return] has intelligent behaviour in IELM.
+ "*Controls whether \\<ielm-map>\\[ielm-return] has intelligent behavior in IELM.
If non-nil, \\[ielm-return] evaluates input for complete sexps, or inserts a newline
and indents for incomplete sexps. If nil, always inserts newlines."
:type 'boolean
(defvar ielm-map nil)
(if ielm-map nil
- (if (string-match "Lucid" emacs-version)
+ (if (featurep 'xemacs)
;; Lemacs
(progn
(setq ielm-map (make-sparse-keymap))
;;; Utility functions
-(defun ielm-is-whitespace (string)
- "Return non-nil if STRING is all whitespace."
- (or (string= string "") (string-match "\\`[ \t\n]+\\'" string)))
+(defun ielm-is-whitespace-or-comment (string)
+ "Return non-nil if STRING is all whitespace or a comment."
+ (or (string= string "")
+ (string-match "\\`[ \t\n]*\\(?:;.*\\)*\\'" string)))
;;; Evaluation
(ielm-output "") ; result to display
(ielm-wbuf ielm-working-buffer) ; current buffer after evaluation
(ielm-pmark (ielm-pm)))
- (if (not (ielm-is-whitespace ielm-string))
+ (if (not (ielm-is-whitespace-or-comment ielm-string))
(progn
(condition-case err
(let (rout)
(setq ielm-result "Working buffer has been killed"
ielm-error-type "IELM Error"
ielm-wbuf (current-buffer))
- (if (ielm-is-whitespace (substring ielm-string ielm-pos))
+ (if (ielm-is-whitespace-or-comment
+ (substring ielm-string ielm-pos))
;; To correctly handle the ielm-local variables *,
;; ** and ***, we need a temporary buffer to be
;; current at entry to the inner of the next two let
Expressions evaluated by IELM are not subject to `debug-on-quit' or
`debug-on-error'.
-The behaviour of IELM may be customized with the following variables:
+The behavior of IELM may be customized with the following variables:
* To stop beeping on error, set `ielm-noisy' to nil.
* If you don't like the prompt, you can change it by setting `ielm-prompt'.
* If you do not like that the prompt is (by default) read-only, set
Customized bindings may be defined in `ielm-map', which currently contains:
\\{ielm-map}"
(interactive)
- (comint-mode)
+ (delay-mode-hooks
+ (comint-mode))
(setq comint-prompt-regexp (concat "^" (regexp-quote ielm-prompt)))
+ (set (make-local-variable 'paragraph-separate) "\\'")
(make-local-variable 'paragraph-start)
(setq paragraph-start comint-prompt-regexp)
(setq comint-input-sender 'ielm-input-sender)
;; Add a silly header
(insert ielm-header)
(ielm-set-pm (point-max))
- (unless comint-use-prompt-regexp-instead-of-fields
+ (unless comint-use-prompt-regexp
(let ((inhibit-read-only t))
(add-text-properties
(point-min) (point-max)
(set-marker comint-last-input-start (ielm-pm))
(set-process-filter (get-buffer-process (current-buffer)) 'comint-output-filter))
- (run-hooks 'ielm-mode-hook))
+ (run-mode-hooks 'ielm-mode-hook))
(defun ielm-get-old-input nil
;; Return the previous input surrounding point
(provide 'ielm)
-;;; arch-tag: ef60e4c0-9c4f-4bdb-8402-271313329790
+;; arch-tag: ef60e4c0-9c4f-4bdb-8402-271313329790
;;; ielm.el ends here