]> code.delx.au - gnu-emacs/blobdiff - lisp/ielm.el
Auto-commit of generated files.
[gnu-emacs] / lisp / ielm.el
index ad7565f22635e26e858a37ff117dda69499350e0..d90800873a2f85242d4c37289d7ecef001d010fd 100644 (file)
@@ -1,7 +1,6 @@
 ;;; ielm.el --- interaction mode for Emacs Lisp
 
-;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001-2013 Free Software Foundation, Inc.
 
 ;; Author: David Smith <maa036@lancaster.ac.uk>
 ;; Maintainer: FSF
@@ -60,10 +59,10 @@ override the read-only-ness of IELM prompts is to call
 `comint-kill-whole-line' or `comint-kill-region' with no
 narrowing in effect.  This way you will be certain that none of
 the remaining prompts will be accidentally messed up.  You may
-wish to put something like the following in your `.emacs' file:
+wish to put something like the following in your init file:
 
 \(add-hook 'ielm-mode-hook
-         '(lambda ()
+         (lambda ()
             (define-key ielm-map \"\\C-w\" 'comint-kill-region)
             (define-key ielm-map [C-S-backspace]
               'comint-kill-whole-line)))
@@ -172,7 +171,7 @@ This variable is buffer-local.")
     (define-key map "\C-m" 'ielm-return)
     (define-key map "\C-j" 'ielm-send-input)
     (define-key map "\e\C-x" 'eval-defun)         ; for consistency with
-    (define-key map "\e\t" 'lisp-complete-symbol) ; lisp-interaction-mode
+    (define-key map "\e\t" 'completion-at-point)  ; lisp-interaction-mode
     ;; These bindings are from `lisp-mode-shared-map' -- can you inherit
     ;; from more than one keymap??
     (define-key map "\e\C-q" 'indent-sexp)
@@ -283,7 +282,7 @@ simply inserts a newline."
 
 (defvar ielm-input)
 
-(defun ielm-input-sender (proc input)
+(defun ielm-input-sender (_proc input)
   ;; Just sets the variable ielm-input, which is in the scope of
   ;; `ielm-send-input's call.
   (setq ielm-input input))
@@ -304,8 +303,17 @@ simply inserts a newline."
 
 ;;; Evaluation
 
-(defun ielm-eval-input (ielm-string)
-  "Evaluate the Lisp expression IELM-STRING, and pretty-print the result."
+(defvar ielm-string)
+(defvar ielm-form)
+(defvar ielm-pos)
+(defvar ielm-result)
+(defvar ielm-error-type)
+(defvar ielm-output)
+(defvar ielm-wbuf)
+(defvar ielm-pmark)
+
+(defun ielm-eval-input (input-string)
+  "Evaluate the Lisp expression INPUT-STRING, and pretty-print the result."
   ;; This is the function that actually `sends' the input to the
   ;; `inferior Lisp process'. All comint-send-input does is works out
   ;; what that input is.  What this function does is evaluates that
@@ -318,7 +326,8 @@ simply inserts a newline."
   ;;
   ;; NOTE: all temporary variables in this function will be in scope
   ;; during the eval, and so need to have non-clashing names.
-  (let (ielm-form                      ; form to evaluate
+  (let ((ielm-string input-string)      ; input expression, as a string
+        ielm-form                      ; form to evaluate
        ielm-pos                        ; End posn of parse in string
        ielm-result                     ; Result, or error message
        ielm-error-type                 ; string, nil if no error
@@ -372,7 +381,8 @@ simply inserts a newline."
                                   (*** *3))
                               (kill-buffer (current-buffer))
                               (set-buffer ielm-wbuf)
-                              (setq ielm-result (eval ielm-form))
+                              (setq ielm-result
+                                     (eval ielm-form lexical-binding))
                               (setq ielm-wbuf (current-buffer))
                               (setq
                                ielm-temp-buffer
@@ -395,7 +405,7 @@ simply inserts a newline."
 
       (goto-char ielm-pmark)
       (unless ielm-error-type
-       (condition-case err
+       (condition-case nil
            ;; Self-referential objects cause loops in the printer, so
            ;; trap quits here. May as well do errors, too
            (setq ielm-output (concat ielm-output (pp-to-string ielm-result)))
@@ -493,6 +503,8 @@ Customized bindings may be defined in `ielm-map', which currently contains:
   (set (make-local-variable 'indent-line-function) 'ielm-indent-line)
   (set (make-local-variable 'ielm-working-buffer) (current-buffer))
   (set (make-local-variable 'fill-paragraph-function) 'lisp-fill-paragraph)
+  (add-hook 'completion-at-point-functions
+            'lisp-completion-at-point nil 'local)
 
   ;; Value holders
   (set (make-local-variable '*) nil)
@@ -541,8 +553,6 @@ Customized bindings may be defined in `ielm-map', which currently contains:
 
 ;;; User command
 
-;;;###autoload (add-hook 'same-window-buffer-names "*ielm*")
-
 ;;;###autoload
 (defun ielm nil
   "Interactively evaluate Emacs Lisp expressions.
@@ -553,10 +563,9 @@ Switches to the buffer `*ielm*', or creates it if it does not exist."
       (with-current-buffer (get-buffer-create "*ielm*")
        (unless (zerop (buffer-size)) (setq old-point (point)))
        (inferior-emacs-lisp-mode)))
-    (pop-to-buffer "*ielm*")
+    (switch-to-buffer "*ielm*")
     (when old-point (push-mark old-point))))
 
 (provide 'ielm)
 
-;; arch-tag: ef60e4c0-9c4f-4bdb-8402-271313329790
 ;;; ielm.el ends here