slime on github

João Távora joaotavora at gmail.com
Sun Jan 26 23:19:05 UTC 2014


Paul Bowyer <pbowyer at olynet.com> writes:

> Do I have some configuration issues, or is there some reason I can no
> longer use the *inferior-lisp* buffer for direct entry of lisp
> commands?

Hi Paul,

I still can't reproduce. To be sure, let's agree on the test case

    (setq inferior-lisp-program "sbcl")
    (add-to-list 'load-path "/path/to/slime")
    (require 'slime-autoloads)
    (setq slime-contribs '(slime-fancy)) ;; or do you have slime-repl?
    M-x slime
    switch to *inferior lisp* buffer
    type (sb-ext:describe-compiler-policy) and RET

I'm doing this with emacs 23 and everything works as expected. Are you
using the very latest slime? Some days ago I fixed some failing repl
tests.

That said, my best bet is that some strange interaction might be trying
to overwrite the REPL prompt in slime-repl.el, which has been recently
marked as read-only.

Maybe this fix is in order, It simply binds inhibit-read-only to nil
around slime-repl-emit's activities.

But I would like to reproduce before I push it.

diff --git a/contrib/slime-repl.el b/contrib/slime-repl.el
index 2d74e94..77bc0eb 100644
--- a/contrib/slime-repl.el
+++ b/contrib/slime-repl.el
@@ -262,22 +262,23 @@ This is set to nil after displaying the buffer.")
 
 (defun slime-repl-emit (string)
   ;; insert the string STRING in the output buffer
-  (with-current-buffer (slime-output-buffer)
-    (save-excursion
-      (goto-char slime-output-end)
-      (slime-save-marker slime-output-start
-        (slime-propertize-region '(face slime-repl-output-face
-                                        slime-repl-output t
-                                        rear-nonsticky (face))
-          (insert-before-markers string)
-          (when (and (= (point) slime-repl-prompt-start-mark)
-                     (not (bolp)))
-            (insert-before-markers "\n")
-            (set-marker slime-output-end (1- (point)))))))
-    (when slime-repl-popup-on-output
-      (setq slime-repl-popup-on-output nil)
-      (display-buffer (current-buffer)))
-    (slime-repl-show-maximum-output)))
+  (let ((inhibit-read-only t))
+    (with-current-buffer (slime-output-buffer)
+      (save-excursion
+	(goto-char slime-output-end)
+	(slime-save-marker slime-output-start
+	  (slime-propertize-region '(face slime-repl-output-face
+					  slime-repl-output t
+					  rear-nonsticky (face))
+	    (insert-before-markers string)
+	    (when (and (= (point) slime-repl-prompt-start-mark)
+		       (not (bolp)))
+	      (insert-before-markers "\n")
+	      (set-marker slime-output-end (1- (point)))))))
+      (when slime-repl-popup-on-output
+	(setq slime-repl-popup-on-output nil)
+	(display-buffer (current-buffer)))
+      (slime-repl-show-maximum-output))))
 
 (defun slime-repl-emit-result (string &optional bol)
   ;; insert STRING and mark it as evaluation result







More information about the slime-devel mailing list