From heller at common-lisp.net Sun Nov 2 12:05:03 2008 From: heller at common-lisp.net (CVS User heller) Date: Sun, 02 Nov 2008 12:05:03 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv2866 Modified Files: ChangeLog slime.el Log Message: * slime.el ([test] find-definition.2, [test] compile-defun): Expect to fail for CCL. --- /project/slime/cvsroot/slime/ChangeLog 2008/10/31 14:19:35 1.1578 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/02 12:05:03 1.1579 @@ -1,3 +1,8 @@ +2008-11-02 Helmut Eller + + * slime.el ([test] find-definition.2, [test] compile-defun): + Expect to fail for CCL. + 2008-10-31 Helmut Eller * slime.el (slime-repl-history-pattern): Simplify as suggested by --- /project/slime/cvsroot/slime/slime.el 2008/10/31 14:19:35 1.1058 +++ /project/slime/cvsroot/slime/slime.el 2008/11/02 12:05:03 1.1059 @@ -8851,7 +8851,7 @@ (= orig-pos (point))))) (slime-check-top-level)) -(def-slime-test find-definition.2 +(def-slime-test (find-definition.2 ("ccl" "allegro")) (buffer-content buffer-package snippet) "Check that we're able to find definitions even when confronted with nasty #.-fu." @@ -8915,7 +8915,7 @@ ("swank::compile-string-for-emacs" "(swank::compile-string-for-emacs string buffer position directory debug)") ("swank::connection.socket-io" - "(swank::connection.socket-io \\(struct\\(ure\\)?\\|object\\|instance\\))") + "(swank::connection.socket-io \\(struct\\(ure\\)?\\|object\\|instance\\|x\\))") ("cl:lisp-implementation-type" "(cl:lisp-implementation-type )") ("cl:class-name" "(cl:class-name \\(class\\|object\\|instance\\|structure\\))")) @@ -8927,7 +8927,7 @@ #'string-match)) (slime-check-top-level)) -(def-slime-test (compile-defun ("allegro" "lispworks" "clisp")) +(def-slime-test (compile-defun ("allegro" "lispworks" "clisp" "ccl")) (program subform) "Compile PROGRAM containing errors. Confirm that SUBFORM is correctly located." From heller at common-lisp.net Sun Nov 2 12:05:13 2008 From: heller at common-lisp.net (CVS User heller) Date: Sun, 02 Nov 2008 12:05:13 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv2904 Modified Files: ChangeLog swank-backend.lisp swank-cmucl.lisp swank.lisp Log Message: * swank-backend.lisp (slime-interrupt-queued): New condition. * swank.lisp (invoke-or-queue-interrupt): Raise it here. * swank-cmucl.lisp (wait-for-input): Make fd readable in condition handler so that we can call serve-events without timeout. --- /project/slime/cvsroot/slime/ChangeLog 2008/11/02 12:05:03 1.1579 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/02 12:05:13 1.1580 @@ -1,5 +1,12 @@ 2008-11-02 Helmut Eller + * swank-backend.lisp (slime-interrupt-queued): New condition. + * swank.lisp (invoke-or-queue-interrupt): Raise it here. + * swank-cmucl.lisp (wait-for-input): Make fd readable in condition + handler so that we can call serve-events without timeout. + +2008-11-02 Helmut Eller + * slime.el ([test] find-definition.2, [test] compile-defun): Expect to fail for CCL. --- /project/slime/cvsroot/slime/swank-backend.lisp 2008/10/19 20:03:49 1.162 +++ /project/slime/cvsroot/slime/swank-backend.lisp 2008/11/02 12:05:13 1.163 @@ -35,6 +35,7 @@ ;; interrupt macro for the backend #:*pending-slime-interrupts* #:check-slime-interrupts + #:slime-interrupt-queued ;; inspector related symbols #:emacs-inspect #:label-value-line @@ -1049,6 +1050,12 @@ (funcall (pop *pending-slime-interrupts*)) t)) +(define-condition slime-interrupt-queued () () + (:documentation + "Non-serious condition signalled when an interrupt +occurs while interrupt handling is disabled. +Backends can use this to abort blocking operations.")) + (definterface wait-for-input (streams &optional timeout) "Wait for input on a list of streams. Return those that are ready. STREAMS is a list of streams --- /project/slime/cvsroot/slime/swank-cmucl.lisp 2008/10/17 21:26:53 1.202 +++ /project/slime/cvsroot/slime/swank-cmucl.lisp 2008/11/02 12:05:13 1.203 @@ -198,14 +198,18 @@ (let ((ready (remove-if-not #'listen streams))) (when ready (return ready))) (when timeout (return nil)) - (when (check-slime-interrupts) (return :interrupt)) - (let* (#+(or)(lisp::*descriptor-handlers* '()) ; ignore other handlers - (f (constantly t)) - (handlers (loop for s in streams - collect (add-one-shot-handler s f)))) - (unwind-protect - (sys:serve-event 0.2) - (mapc #'sys:remove-fd-handler handlers))))) + (multiple-value-bind (in out) (make-pipe) + (let* ((f (constantly t)) + (handlers (loop for s in (cons in streams) + collect (add-one-shot-handler s f)))) + (unwind-protect + (handler-bind ((slime-interrupt-queued + (lambda (c) c (write-char #\! out)))) + (when (check-slime-interrupts) (return :interrupt)) + (sys:serve-event)) + (mapc #'sys:remove-fd-handler handlers) + (close in) + (close out)))))) (defun add-one-shot-handler (stream function) (let (handler) @@ -215,7 +219,10 @@ (sys:remove-fd-handler handler) (funcall function stream)))))) - +(defun make-pipe () + (multiple-value-bind (in out) (unix:unix-pipe) + (values (sys:make-fd-stream in :input t :buffering :none) + (sys:make-fd-stream out :output t :buffering :none)))) ;;;; Stream handling @@ -2111,7 +2118,8 @@ (return (car tail))))) (when (eq timeout t) (return (values nil t))) (mp:process-wait-with-timeout - "receive-if" 0.5 (lambda () (some test (mailbox.queue mbox))))))) + "receive-if" 0.5 + (lambda () (some test (mailbox.queue mbox))))))) ) ;; #+mp --- /project/slime/cvsroot/slime/swank.lisp 2008/10/31 14:13:10 1.608 +++ /project/slime/cvsroot/slime/swank.lisp 2008/11/02 12:05:13 1.609 @@ -376,7 +376,8 @@ (cond ((cdr *pending-slime-interrupts*) (check-slime-interrupts)) (t - (log-event "queue-interrupt: ~a" function)))))) + (log-event "queue-interrupt: ~a" function) + (signal 'slime-interrupt-queued)))))) (defslimefun simple-break (&optional (datum "Interrupt from Emacs") &rest args) (with-simple-restart (continue "Continue from break.") From heller at common-lisp.net Sun Nov 2 12:05:24 2008 From: heller at common-lisp.net (CVS User heller) Date: Sun, 02 Nov 2008 12:05:24 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv2977 Modified Files: ChangeLog slime.el Log Message: * slime.el (slime-popup-buffer-quit): Always delete windows and bury the buffer. --- /project/slime/cvsroot/slime/ChangeLog 2008/11/02 12:05:13 1.1580 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/02 12:05:24 1.1581 @@ -1,5 +1,10 @@ 2008-11-02 Helmut Eller + * slime.el (slime-popup-buffer-quit): Always delete windows and + bury the buffer. + +2008-11-02 Helmut Eller + * swank-backend.lisp (slime-interrupt-queued): New condition. * swank.lisp (invoke-or-queue-interrupt): Raise it here. * swank-cmucl.lisp (wait-for-input): Make fd readable in condition --- /project/slime/cvsroot/slime/slime.el 2008/11/02 12:05:03 1.1059 +++ /project/slime/cvsroot/slime/slime.el 2008/11/02 12:05:24 1.1060 @@ -1050,11 +1050,13 @@ last activated the buffer." (interactive) (let ((buffer (current-buffer))) - (when (slime-popup-buffer-snapshot-unchanged-p) - (slime-popup-buffer-restore-snapshot)) + ;;(when (slime-popup-buffer-snapshot-unchanged-p) + ;; (slime-popup-buffer-restore-snapshot)) (setq slime-popup-buffer-saved-emacs-snapshot nil) ; buffer-local var! - (cond (kill-buffer-p (kill-buffer buffer)) - (t (bury-buffer buffer))))) + (delete-windows-on buffer (selected-frame)) + (bury-buffer buffer) + (when kill-buffer-p + (kill-buffer buffer)))) (defun slime-popup-buffer-snapshot-unchanged-p () (equalp (slime-current-emacs-snapshot-fingerprint) @@ -6393,12 +6395,11 @@ (let ((string (or string (car (slime-sexp-at-point-for-macroexpansion))))) (setq slime-eval-macroexpand-expression `(,expander ,string)) - (slime-eval-async slime-eval-macroexpand-expression - (slime-rcurry #'slime-show-macroexpansion - (slime-create-macroexpansion-buffer))))) + (slime-eval-async slime-eval-macroexpand-expression + #'slime-show-macroexpansion))) -(defun slime-show-macroexpansion (expansion buffer) - (pop-to-buffer buffer) +(defun slime-show-macroexpansion (expansion &optional buffer) + (pop-to-buffer (or buffer (slime-create-macroexpansion-buffer))) (let ((inhibit-read-only t)) (erase-buffer) (insert expansion) From heller at common-lisp.net Sat Nov 22 12:19:26 2008 From: heller at common-lisp.net (CVS User heller) Date: Sat, 22 Nov 2008 12:19:26 +0000 Subject: [slime-cvs] CVS slime/contrib Message-ID: Update of /project/slime/cvsroot/slime/contrib In directory cl-net:/tmp/cvs-serv13583/contrib Modified Files: ChangeLog swank-c-p-c.lisp Log Message: * swank-c-p-c.lisp (parse-completion-arguments): Change the package identifier from the string "KEYWORD" to the form (symbol-name :keyword) for ACL's "modern" mode. --- /project/slime/cvsroot/slime/contrib/ChangeLog 2008/10/31 13:52:16 1.140 +++ /project/slime/cvsroot/slime/contrib/ChangeLog 2008/11/22 12:19:26 1.141 @@ -1,3 +1,9 @@ +2008-11-22 Geoff Wozniak + + * swank-c-p-c.lisp (parse-completion-arguments): Change the + package identifier from the string "KEYWORD" to the + form (symbol-name :keyword) for ACL's "modern" mode. + 2008-10-31 Nikodemus Siivola * swank-presentation-streams.liso (slime-stream-p): delete --- /project/slime/cvsroot/slime/contrib/swank-c-p-c.lisp 2007/09/05 19:35:35 1.2 +++ /project/slime/cvsroot/slime/contrib/swank-c-p-c.lisp 2008/11/22 12:19:26 1.3 @@ -136,7 +136,7 @@ (tokenize-symbol string) (if package-name (let ((package (guess-package (if (equal package-name "") - "KEYWORD" + (symbol-name :keyword) package-name)))) (values name package-name package internal-p)) (let ((package (guess-package default-package-name))) From heller at common-lisp.net Sat Nov 22 15:14:41 2008 From: heller at common-lisp.net (CVS User heller) Date: Sat, 22 Nov 2008 15:14:41 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv14603 Modified Files: ChangeLog slime.el Log Message: * slime.el ([test] package-updating): Allegro returns "||" as prompt for the keyword package. I guess that's acceptable. --- /project/slime/cvsroot/slime/ChangeLog 2008/11/02 12:05:24 1.1581 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:14:41 1.1582 @@ -1,5 +1,10 @@ 2008-11-02 Helmut Eller + * slime.el ([test] package-updating): Allegro returns "||" as + prompt for the keyword package. I guess that's acceptable. + +2008-11-02 Helmut Eller + * slime.el (slime-popup-buffer-quit): Always delete windows and bury the buffer. --- /project/slime/cvsroot/slime/slime.el 2008/11/02 12:05:24 1.1060 +++ /project/slime/cvsroot/slime/slime.el 2008/11/22 15:14:41 1.1061 @@ -9140,7 +9140,7 @@ (package-name nicknames) "Test if slime-lisp-package is updated." '(("COMMON-LISP" ("CL")) - ("KEYWORD" ("" "KEYWORD")) + ("KEYWORD" ("" "KEYWORD" "||")) ("COMMON-LISP-USER" ("CL-USER"))) (with-current-buffer (slime-output-buffer) (let ((p (slime-eval From heller at common-lisp.net Sat Nov 22 15:14:51 2008 From: heller at common-lisp.net (CVS User heller) Date: Sat, 22 Nov 2008 15:14:51 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv14640 Modified Files: ChangeLog slime.el swank.lisp Log Message: * swank.lisp (invoke-default-debugger): New condition type. (swank-debugger-hook): Handle invoke-default-debugger conditions. (sldb-break-with-default-debugger): Signal invoke-default-debugger to transfer control to the default debugger. New argument DONT-UNWIND to invoke the native debugger without unwinding the stack. * slime.el (sldb-break-with-default-debugger): By default, unwind the stack before invoke the native debugger. With prefix argument, run the native debugger in the dynamic environment of SLDB. --- /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:14:41 1.1582 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:14:50 1.1583 @@ -1,3 +1,16 @@ +2008-11-22 Helmut Eller + + * swank.lisp (invoke-default-debugger): New condition type. + (swank-debugger-hook): Handle invoke-default-debugger conditions. + (sldb-break-with-default-debugger): Signal invoke-default-debugger + to transfer control to the default debugger. + New argument DONT-UNWIND to invoke the native debugger without + unwinding the stack. + * slime.el (sldb-break-with-default-debugger): By default, + unwind the stack before invoke the native debugger. + With prefix argument, run the native debugger in the + dynamic environment of SLDB. + 2008-11-02 Helmut Eller * slime.el ([test] package-updating): Allegro returns "||" as --- /project/slime/cvsroot/slime/slime.el 2008/11/22 15:14:41 1.1061 +++ /project/slime/cvsroot/slime/slime.el 2008/11/22 15:14:51 1.1062 @@ -7370,11 +7370,13 @@ (sldb-invoke-restart (position restart-name sldb-restarts :test 'string= :key 'first))) -(defun sldb-break-with-default-debugger () +(defun sldb-break-with-default-debugger (&optional dont-unwind) "Enter default debugger." - (interactive) + (interactive "P") (slime-rex () - ('(swank:sldb-break-with-default-debugger) nil slime-current-thread) + ((list 'swank:sldb-break-with-default-debugger + (not (not dont-unwind))) + nil slime-current-thread) ((:abort)))) (defun sldb-step () --- /project/slime/cvsroot/slime/swank.lisp 2008/11/02 12:05:13 1.609 +++ /project/slime/cvsroot/slime/swank.lisp 2008/11/22 15:14:51 1.610 @@ -2157,11 +2157,15 @@ (with-connection ((default-connection)) (debug-in-emacs condition)))))) +(define-condition invoke-default-debugger () ()) (defun swank-debugger-hook (condition hook) "Debugger function for binding *DEBUGGER-HOOK*." (declare (ignore hook)) - (call-with-debugger-hook #'swank-debugger-hook - (lambda () (invoke-slime-debugger condition)))) + (handler-case + (call-with-debugger-hook #'swank-debugger-hook + (lambda () (invoke-slime-debugger condition))) + (invoke-default-debugger () + (invoke-default-debugger condition)))) (defun invoke-default-debugger (condition) (let ((*debugger-hook* nil)) @@ -2277,12 +2281,12 @@ ;;;;; SLDB entry points -(defslimefun sldb-break-with-default-debugger () +(defslimefun sldb-break-with-default-debugger (dont-unwind) "Invoke the default debugger." - (call-with-debugger-hook - nil (lambda () (invoke-debugger *swank-debugger-condition*))) - (send-to-emacs - (list :debug-activate (current-thread-id) *sldb-level* t))) + (cond (dont-unwind + (invoke-default-debugger *swank-debugger-condition*)) + (t + (signal 'invoke-default-debugger)))) (defslimefun backtrace (start end) "Return a list ((I FRAME PLIST) ...) of frames from START to END. From heller at common-lisp.net Sat Nov 22 15:15:04 2008 From: heller at common-lisp.net (CVS User heller) Date: Sat, 22 Nov 2008 15:15:04 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv14692 Modified Files: ChangeLog slime.el Log Message: Reincarnate "eval..." (almost) * slime.el (slime-compute-modeline-connection-state): Return the number of outstanding requests if connected. (slime-update-all-modelines): Renamed from slime-update-modelines, loops through all slime buffers. (slime-restart-or-init-modeline-update-timer): New function. (slime-dispatch-event): Arrange for modelines to be updated on :EMACS-REX and :RETURN. --- /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:14:50 1.1583 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:15:04 1.1584 @@ -1,3 +1,13 @@ +2008-11-22 G?bor Melis + + * slime.el (slime-compute-modeline-connection-state): Return the + number of outstanding requests if connected. + (slime-update-all-modelines): Renamed from slime-update-modelines, + loops through all slime buffers. + (slime-restart-or-init-modeline-update-timer): New function. + (slime-dispatch-event): Arrange for modelines to be updated on + :EMACS-REX and :RETURN. + 2008-11-22 Helmut Eller * swank.lisp (invoke-default-debugger): New condition type. --- /project/slime/cvsroot/slime/slime.el 2008/11/22 15:14:51 1.1062 +++ /project/slime/cvsroot/slime/slime.el 2008/11/22 15:15:04 1.1063 @@ -481,8 +481,11 @@ (defun slime-compute-modeline-connection-state () (let ((new-state (slime-compute-connection-state (slime-current-connection)))) (if (eq new-state :connected) - nil ; normal case, so don't display anything in the mode line. - (slime-connection-state-as-string new-state)))) + (let ((n (length (slime-rex-continuations)))) + (if (= n 0) + nil + n)) + (slime-connection-state-as-string new-state)))) (defun slime-compute-modeline-string (conn state pkg) (concat (when (or conn pkg) "[") @@ -506,19 +509,41 @@ (setq slime-modeline-connection-name new-conn) (setq slime-modeline-connection-state new-state) (setq slime-modeline-string - (slime-compute-modeline-string new-conn new-state new-pkg)) - (force-mode-line-update t)))) + (slime-compute-modeline-string new-conn new-state new-pkg))))) (defun slime-shall-we-update-modeline-p () (and slime-extended-modeline (or slime-mode slime-popup-buffer-mode))) -(defun slime-update-modeline () - (when (slime-shall-we-update-modeline-p) - (slime-update-modeline-string))) - -(run-with-idle-timer 0.2 0.2 'slime-update-modeline) - +(defun slime-update-all-modelines () + (dolist (buffer (buffer-list)) + (with-current-buffer buffer + (when (slime-shall-we-update-modeline-p) + (slime-update-modeline-string)))) + (force-mode-line-update t)) + +(defvar slime-modeline-update-timer nil) + +(defun slime-restart-or-init-modeline-update-timer () + (when slime-modeline-update-timer + (cancel-timer slime-modeline-update-timer)) + (setq slime-modeline-update-timer + (run-with-idle-timer 0.2 0.2 'slime-update-all-modelines))) + +(slime-restart-or-init-modeline-update-timer) + +(defun slime-recompute-modelines (delay) + (cond (delay + ;; Minimize flashing of modeline due to short lived + ;; requests such as those of autodoc. + (slime-restart-or-init-modeline-update-timer)) + (t + ;; Must do this ourselves since emacs may have + ;; been idling long enough that + ;; SLIME-MODELINE-UPDATE-TIMER is not going to + ;; trigger by itself. + (slime-update-all-modelines)))) + ;; Setup the mode-line to say when we're in slime-mode, which ;; connection is active, and which CL package we think the current ;; buffer belongs to. @@ -2373,11 +2398,13 @@ (slime-display-oneliner "; pipelined request... %S" form)) (let ((id (incf (slime-continuation-counter)))) (push (cons id continuation) (slime-rex-continuations)) - (slime-send `(:emacs-rex ,form ,package ,thread ,id)))) + (slime-send `(:emacs-rex ,form ,package ,thread ,id)) + (slime-recompute-modelines t))) ((:return value id) (let ((rec (assq id (slime-rex-continuations)))) (cond (rec (setf (slime-rex-continuations) (remove rec (slime-rex-continuations))) + (slime-recompute-modelines nil) (funcall (cdr rec) value)) (t (error "Unexpected reply: %S %S" id value))))) From heller at common-lisp.net Sat Nov 22 15:15:11 2008 From: heller at common-lisp.net (CVS User heller) Date: Sat, 22 Nov 2008 15:15:11 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv14773 Modified Files: ChangeLog Log Message: *** empty log message *** --- /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:15:04 1.1584 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:15:11 1.1585 @@ -1,5 +1,7 @@ 2008-11-22 G?bor Melis + Reincarnate "eval..." (almost) + * slime.el (slime-compute-modeline-connection-state): Return the number of outstanding requests if connected. (slime-update-all-modelines): Renamed from slime-update-modelines, From heller at common-lisp.net Sat Nov 22 22:36:40 2008 From: heller at common-lisp.net (CVS User heller) Date: Sat, 22 Nov 2008 22:36:40 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv7196 Modified Files: ChangeLog slime.el Log Message: * slime.el (slime-update-all-modelines): Only walk through widnow-list not buffer-list. (slime-restart-or-init-modeline-update-timer): Inrease the timer interval to 0.5 seconds. --- /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:15:11 1.1585 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/22 22:36:40 1.1586 @@ -1,3 +1,10 @@ +2008-11-22 Helmut Eller + + * slime.el (slime-update-all-modelines): Only walk through + widnow-list not buffer-list. + (slime-restart-or-init-modeline-update-timer): Inrease the timer + interval to 0.5 seconds. + 2008-11-22 G?bor Melis Reincarnate "eval..." (almost) --- /project/slime/cvsroot/slime/slime.el 2008/11/22 15:15:04 1.1063 +++ /project/slime/cvsroot/slime/slime.el 2008/11/22 22:36:40 1.1064 @@ -516,11 +516,11 @@ (or slime-mode slime-popup-buffer-mode))) (defun slime-update-all-modelines () - (dolist (buffer (buffer-list)) - (with-current-buffer buffer + (dolist (window (window-list)) + (with-current-buffer (window-buffer window) (when (slime-shall-we-update-modeline-p) - (slime-update-modeline-string)))) - (force-mode-line-update t)) + (slime-update-modeline-string) + (force-mode-line-update))))) (defvar slime-modeline-update-timer nil) @@ -528,7 +528,7 @@ (when slime-modeline-update-timer (cancel-timer slime-modeline-update-timer)) (setq slime-modeline-update-timer - (run-with-idle-timer 0.2 0.2 'slime-update-all-modelines))) + (run-with-idle-timer 0.5 0.5 'slime-update-all-modelines))) (slime-restart-or-init-modeline-update-timer) @@ -7029,13 +7029,13 @@ (defun slime-show-buffer-position (position) "Ensure sure that the POSITION in the current buffer is visible." - (save-selected-window - (let ((w (select-window (or (get-buffer-window (current-buffer) t) - (display-buffer (current-buffer) t))))) + (let ((window (display-buffer (current-buffer) t))) + (save-selected-window + (select-window window) (goto-char position) - (push-mark) + ;;(push-mark) (unless (pos-visible-in-window-p) - (slime-recenter-window w sldb-show-location-recenter-arg))))) + (slime-recenter-window window sldb-show-location-recenter-arg))))) (defun slime-recenter-window (window line) "Set window-start in WINDOW LINE lines before point." From heller at common-lisp.net Sun Nov 23 22:11:36 2008 From: heller at common-lisp.net (CVS User heller) Date: Sun, 23 Nov 2008 22:11:36 +0000 Subject: [slime-cvs] CVS slime Message-ID: Update of /project/slime/cvsroot/slime In directory cl-net:/tmp/cvs-serv10236 Modified Files: ChangeLog slime.el Log Message: `q' in temp buffers should only delete the window if it was newly created for the buffer. * slime.el (slime-display-popup-buffer): New function. Recognize if the window didn't exist before. Save the created window and the selected window in buffer local variables. (slime-make-popup-buffer): Renamed from slime-popup-buffer. (slime-popup-buffer-quit): Delete the created window (if needed) and restore the old selected window. Don't touch other windows. (slime-edit-value-callback): Calling lisp-mode deletes all local variables. We need to that inside with-popup-buffer. --- /project/slime/cvsroot/slime/ChangeLog 2008/11/22 22:36:40 1.1586 +++ /project/slime/cvsroot/slime/ChangeLog 2008/11/23 22:11:36 1.1587 @@ -1,3 +1,18 @@ +2008-11-23 Helmut Eller + + `q' in temp buffers should only delete the window if it was newly + created for the buffer. + + * slime.el (slime-display-popup-buffer): New function. Recognize + if the window didn't exist before. Save the created window and + the selected window in buffer local variables. + (slime-make-popup-buffer): Renamed from slime-popup-buffer. + (slime-popup-buffer-quit): Delete the created window (if needed) + and restore the old selected window. Don't touch other windows. + + (slime-edit-value-callback): Calling lisp-mode deletes all local + variables. We need to that inside with-popup-buffer. + 2008-11-22 Helmut Eller * slime.el (slime-update-all-modelines): Only walk through --- /project/slime/cvsroot/slime/slime.el 2008/11/22 22:36:40 1.1064 +++ /project/slime/cvsroot/slime/slime.el 2008/11/23 22:11:36 1.1065 @@ -1021,26 +1021,24 @@ ,(if (eq connection t) '(slime-connection) connection) ;; Defer the decision for NILness until runtime. (or ,emacs-snapshot (slime-current-emacs-snapshot)))) - (standard-output (slime-popup-buffer ,name vars%))) + (standard-output (slime-make-popup-buffer ,name vars%))) (with-current-buffer standard-output (prog1 (progn , at body) (assert (eq (current-buffer) standard-output)) (setq buffer-read-only t) - (slime-init-popup-buffer vars%))))) + (slime-init-popup-buffer vars%) + (slime-display-popup-buffer))))) (put 'slime-with-popup-buffer 'lisp-indent-function 1) -(defun slime-popup-buffer (name buffer-vars) +(defun slime-make-popup-buffer (name buffer-vars) "Return a temporary buffer called NAME. -The buffer also uses the minor-mode `slime-popup-buffer-mode'. -Pressing `q' in the buffer will restore the window configuration -to the way it is when the buffer was created, i.e. when this -function was called." +The buffer also uses the minor-mode `slime-popup-buffer-mode'." (when (and (get-buffer name) (kill-buffer (get-buffer name)))) (with-current-buffer (get-buffer-create name) (set-syntax-table lisp-mode-syntax-table) - (prog1 (pop-to-buffer (current-buffer)) - (slime-init-popup-buffer buffer-vars)))) + (slime-init-popup-buffer buffer-vars) + (current-buffer))) (defun slime-init-popup-buffer (buffer-vars) (slime-popup-buffer-mode 1) @@ -1051,6 +1049,19 @@ slime-popup-buffer-saved-emacs-snapshot) buffer-vars)) +(defun slime-display-popup-buffer () + "Display the current buffer. +Save the selected-window in a buffer-local variable, so that we +can restore it later." + (let ((selected-window (selected-window)) + (windows)) + (walk-windows (lambda (w) (push w windows)) nil t) + (prog1 (pop-to-buffer (current-buffer)) + (set (make-local-variable 'slime-popup-buffer-restore-info) + (list (unless (memq (selected-window) windows) + (selected-window)) + selected-window))))) + (define-minor-mode slime-popup-buffer-mode "Mode for displaying read only stuff" nil @@ -1078,8 +1089,13 @@ ;;(when (slime-popup-buffer-snapshot-unchanged-p) ;; (slime-popup-buffer-restore-snapshot)) (setq slime-popup-buffer-saved-emacs-snapshot nil) ; buffer-local var! - (delete-windows-on buffer (selected-frame)) - (bury-buffer buffer) + (destructuring-bind (created-window selected-window) + slime-popup-buffer-restore-info + (bury-buffer) + (when (eq created-window (selected-window)) + (delete-window created-window)) + (when (window-live-p selected-window) + (select-window selected-window))) (when kill-buffer-p (kill-buffer buffer)))) @@ -5599,16 +5615,17 @@ '(("\C-c\C-c" . slime-edit-value-commit))) (defun slime-edit-value-callback (form-string current-value package) - (let ((name (generate-new-buffer-name (format "*Edit %s*" form-string)))) - (with-current-buffer (slime-with-popup-buffer (name package t) - (current-buffer)) - (lisp-mode) - (slime-mode 1) - (slime-popup-buffer-mode -1) ; don't want binding of 'q' - (slime-edit-value-mode 1) - (setq buffer-read-only nil) - (setq slime-edit-form-string form-string) - (insert current-value)))) + (let* ((name (generate-new-buffer-name (format "*Edit %s*" form-string))) + (buffer (slime-with-popup-buffer (name package t) + (lisp-mode) + (slime-mode 1) + (slime-popup-buffer-mode -1) ; don't want binding of 'q' + (slime-edit-value-mode 1) + (setq slime-edit-form-string form-string) + (insert current-value) + (current-buffer)))) + (with-current-buffer buffer + (setq buffer-read-only nil)))) (defun slime-edit-value-commit () "Commit the edited value to the Lisp image. From trittweiler at common-lisp.net Sat Nov 29 11:12:39 2008 From: trittweiler at common-lisp.net (CVS User trittweiler) Date: Sat, 29 Nov 2008 11:12:39 +0000 Subject: [slime-cvs] CVS slime/contrib Message-ID: Update of /project/slime/cvsroot/slime/contrib In directory cl-net:/tmp/cvs-serv30175 Modified Files: slime-package-fu.el ChangeLog Log Message: * slime-package-fu.el (slime-goto-package-source-definition): `(slime-pop-to-location loc 'excursion)' no longer exists; use `(slime-goto-source-location loc)' instead. --- /project/slime/cvsroot/slime/contrib/slime-package-fu.el 2008/07/31 08:35:39 1.2 +++ /project/slime/cvsroot/slime/contrib/slime-package-fu.el 2008/11/29 11:12:39 1.3 @@ -67,7 +67,7 @@ places the cursor at the start of the DEFPACKAGE form." (flet ((try (location) (when (slime-location-p location) - (slime-pop-to-location location 'excursion) + (slime-goto-source-location location) t))) (or (try (slime-find-package-definition-rpc package)) (try (slime-find-package-definition-regexp package)) --- /project/slime/cvsroot/slime/contrib/ChangeLog 2008/11/22 12:19:26 1.141 +++ /project/slime/cvsroot/slime/contrib/ChangeLog 2008/11/29 11:12:39 1.142 @@ -1,3 +1,9 @@ +2008-11-29 Tobias C. Rittweiler + + * slime-package-fu.el (slime-goto-package-source-definition): + `(slime-pop-to-location loc 'excursion)' no longer exists; use + `(slime-goto-source-location loc)' instead. + 2008-11-22 Geoff Wozniak * swank-c-p-c.lisp (parse-completion-arguments): Change the