From heller at common-lisp.net Thu Jul 1 06:33:18 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 30 Jun 2004 23:33:18 -0700 Subject: [slime-cvs] CVS update: slime/swank-lispworks.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv7650 Modified Files: swank-lispworks.lisp Log Message: (frame-actual-args): Bind *break-on-signals* to nil and special case &rest, &optional, and &key. Date: Wed Jun 30 23:33:18 2004 Author: heller Index: slime/swank-lispworks.lisp diff -u slime/swank-lispworks.lisp:1.49 slime/swank-lispworks.lisp:1.50 --- slime/swank-lispworks.lisp:1.49 Wed Jun 30 14:45:07 2004 +++ slime/swank-lispworks.lisp Wed Jun 30 23:33:18 2004 @@ -240,10 +240,14 @@ (push frame backtrace))))) (defun frame-actual-args (frame) - (mapcar (lambda (arg) - (handler-case (dbg::dbg-eval arg frame) - (error (format nil "<~A>" arg)))) - (dbg::call-frame-arglist frame))) + (let ((*break-on-signals* nil)) + (mapcar (lambda (arg) + (case arg + ((&rest &optional &key) arg) + (t + (handler-case (dbg::dbg-eval arg frame) + (error (format nil "<~A>" arg)))))) + (dbg::call-frame-arglist frame)))) (defimplementation print-frame (frame stream) (cond ((dbg::call-frame-p frame) From heller at common-lisp.net Thu Jul 1 06:35:51 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 30 Jun 2004 23:35:51 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv19072 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Wed Jun 30 23:35:50 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.451 slime/ChangeLog:1.452 --- slime/ChangeLog:1.451 Wed Jun 30 16:07:26 2004 +++ slime/ChangeLog Wed Jun 30 23:35:50 2004 @@ -1,3 +1,9 @@ +2004-07-01 Helmut Eller + + * swank-lispworks.lisp (frame-actual-args): Bind + *break-on-signals* to nil and special case &rest, &optional, and + &key. + 2004-07-01 Luke Gorrie * slime.el (sldb-lookup-reference): Preserve case in SBCL node @@ -22,7 +28,7 @@ * swank-lispworks.lisp (describe-symbol-for-emacs): Include information about setf-functions. (emacs-connected): Add a default method to - defenv-internals:environment-display-debugger. + env-internals:environment-display-debugger. 2004-06-30 Luke Gorrie From laylasurrency at mail.portland.co.uk Thu Jul 1 14:50:19 2004 From: laylasurrency at mail.portland.co.uk (jacques engelhardt) Date: Thu, 01 Jul 2004 06:50:19 -0800 Subject: [slime-cvs] Narnkc Home sh0.pping ph`armacy Message-ID: birminghamgamsouth arbeitsplatz acatel The biggest ph'aErmacy store! Save over 80%! More than 3,000,000 satisfied customers this year! Help relieve your pain V~ico.din You'll have your pres~criptions written and your medic'ations prescribed quickly and easily from the comfort of your computer. (Quii,t service is ava1`iable at we^bsite..) B S http://quy.info.splashpager.com/abc/big/ A man enters a restaurant, takes a seat, and, instead of using the napkin, takes the table cloth from the table and tucks it around his neck.The head waiter sees it and tells the waiter to go and tell him, in a diplomatic way, that what he did was incorrect. The waiter goes to the man and says, "Good day to you Sir.. Would you like a shave or a haircut?". A barber gave a haircut to a priest one day. The priest tried to pay for the haircut but the barber refused saying, "You do God's work." The next morning the barber found a dozen bibles at the door to his shop.A policeman came to the barber for a haircut, and again the barber refused payment saying, "You protect the public." The next morning the barber found a dozen doughnuts at the door to his shop.A lawyer came to the barber for a haircut, and again the barber refused payment saying, "You serve the justice system." The next morning the barber found a dozen lawyers waiting for a haircut. sasebosh0negawasi68tishiryo,ziteimen yuishous. From lgorrie at common-lisp.net Fri Jul 2 03:17:55 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 01 Jul 2004 20:17:55 -0700 Subject: [slime-cvs] CVS update: slime/esmb.tex Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv5188 Added Files: esmb.tex Log Message: *** empty log message *** Date: Thu Jul 1 20:17:55 2004 Author: lgorrie From lgorrie at common-lisp.net Fri Jul 2 03:22:56 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 01 Jul 2004 20:22:56 -0700 Subject: [slime-cvs] CVS update: slime/esmb.tex Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv22156 Removed Files: esmb.tex Log Message: Ahem, accidentally checked this file into slime CVS when I only meant to put it in RCS here. I had a stray CVS/ directory in ~/misc somehow and `C-x v v' picked it up. Funky! Date: Thu Jul 1 20:22:56 2004 Author: lgorrie From msimmons at common-lisp.net Fri Jul 2 09:58:39 2004 From: msimmons at common-lisp.net (Martin Simmons) Date: Fri, 02 Jul 2004 02:58:39 -0700 Subject: [slime-cvs] CVS update: slime/swank-lispworks.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28160 Modified Files: swank-lispworks.lisp Log Message: Fix typo in features for LW 4.1 and 4.2. Date: Fri Jul 2 02:58:39 2004 Author: msimmons Index: slime/swank-lispworks.lisp diff -u slime/swank-lispworks.lisp:1.50 slime/swank-lispworks.lisp:1.51 --- slime/swank-lispworks.lisp:1.50 Wed Jun 30 23:33:18 2004 +++ slime/swank-lispworks.lisp Fri Jul 2 02:58:39 2004 @@ -380,7 +380,7 @@ (*readtable* ,readtable)) , at body))))) -#-(or lispworks-4.1 lispworks-4.2) ; no dspec:parse-form-dspec prior to 4.3 +#-(or lispworks4.1 lispworks4.2) ; no dspec:parse-form-dspec prior to 4.3 (defun dspec-stream-position (stream dspec) (with-fairly-standard-io-syntax (loop (let* ((pos (file-position stream)) @@ -427,9 +427,9 @@ ((or pathname string) (let ((checked-filename (filename location))) (make-location `(:file ,checked-filename) - #+(or lispworks-4.1 lispworks-4.2) + #+(or lispworks4.1 lispworks4.2) (dspec-buffer-position dspec 1) - #-(or lispworks-4.1 lispworks-4.2) + #-(or lispworks4.1 lispworks4.2) (with-open-file (stream checked-filename) (let ((position (dspec-stream-position stream dspec))) (if position From fqeqg at tbwt.com Thu Jul 1 01:10:51 2004 From: fqeqg at tbwt.com (Lovett) Date: Wed, 30 Jun 2004 20:10:51 -0500 Subject: [slime-cvs] Re: at his face. In Message-ID: <745435660658.99610284175653294740265@hznpygpa> An HTML attachment was scrubbed... URL: From msimmons at common-lisp.net Fri Jul 2 18:01:13 2004 From: msimmons at common-lisp.net (Martin Simmons) Date: Fri, 02 Jul 2004 11:01:13 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv19270 Modified Files: ChangeLog Log Message: Date: Fri Jul 2 11:01:12 2004 Author: msimmons Index: slime/ChangeLog diff -u slime/ChangeLog:1.452 slime/ChangeLog:1.453 --- slime/ChangeLog:1.452 Wed Jun 30 23:35:50 2004 +++ slime/ChangeLog Fri Jul 2 11:01:12 2004 @@ -1,3 +1,8 @@ +2004-07-02 Martin Simmons + + * swank-lispworks.lisp (dspec-stream-position, + make-dspec-location): Fix typo in features for LW 4.1 and 4.2. + 2004-07-01 Helmut Eller * swank-lispworks.lisp (frame-actual-args): Bind From bdowning at common-lisp.net Fri Jul 2 19:09:36 2004 From: bdowning at common-lisp.net (Brian Downing) Date: Fri, 02 Jul 2004 12:09:36 -0700 Subject: [slime-cvs] CVS update: slime/slime.el slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv10560 Modified Files: slime.el ChangeLog Log Message: * slime.el (slime-reindent-defun): Added a check for (boundp 'slime-repl-input-start-mark) before checking the variable, as XEmacs leaves variables unbound when `make-variable-buffer-local' is run, while GNU Emacs binds them to NIL. Date: Fri Jul 2 12:09:36 2004 Author: bdowning Index: slime/slime.el diff -u slime/slime.el:1.353 slime/slime.el:1.354 --- slime/slime.el:1.353 Wed Jun 30 16:07:18 2004 +++ slime/slime.el Fri Jul 2 12:09:35 2004 @@ -6571,7 +6571,8 @@ (fill-paragraph nil) (let ((start (progn (unless (and (zerop (current-column)) (eq ?\( (char-after))) - (if slime-repl-input-start-mark + (if (and (boundp 'slime-repl-input-start-mark) + slime-repl-input-start-mark) (slime-repl-beginning-of-defun) (beginning-of-defun))) (point))) Index: slime/ChangeLog diff -u slime/ChangeLog:1.453 slime/ChangeLog:1.454 --- slime/ChangeLog:1.453 Fri Jul 2 11:01:12 2004 +++ slime/ChangeLog Fri Jul 2 12:09:35 2004 @@ -1,3 +1,10 @@ +2004-07-02 Brian Downing + + * slime.el (slime-reindent-defun): Added a check for (boundp + 'slime-repl-input-start-mark) before checking the variable, as + XEmacs leaves variables unbound when `make-variable-buffer-local' + is run, while GNU Emacs binds them to NIL. + 2004-07-02 Martin Simmons * swank-lispworks.lisp (dspec-stream-position, From lgorrie at common-lisp.net Fri Jul 2 23:50:09 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 02 Jul 2004 16:50:09 -0700 Subject: [slime-cvs] CVS update: slime/swank-backend.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28982 Modified Files: swank-backend.lisp Log Message: (definterface): Don't use NO-APPLICABLE-METHOD for detail methods. Instead just define them as regular methods with all argument types being T. Defimplementation will then replace them by using the same signature. N-A-M was a stupid idea! Date: Fri Jul 2 16:50:09 2004 Author: lgorrie Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.58 slime/swank-backend.lisp:1.59 --- slime/swank-backend.lisp:1.58 Sun Jun 27 08:00:30 2004 +++ slime/swank-backend.lisp Fri Jul 2 16:50:09 2004 @@ -51,11 +51,7 @@ (check-type documentation string "a documentation string") (flet ((gen-default-impl () (let ((received-args (gensym "ARGS-"))) - `(defmethod no-applicable-method ((#:method - (eql (function ,name))) - &rest ,received-args) - (destructuring-bind ,args ,received-args - , at default-body))))) + `(defmethod ,name ,args , at default-body)))) `(progn (defgeneric ,name ,args (:documentation ,documentation)) (pushnew ',name *interface-functions*) ,(if (null default-body) From lgorrie at common-lisp.net Fri Jul 2 23:50:17 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 02 Jul 2004 16:50:17 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29851 Modified Files: ChangeLog Log Message: Date: Fri Jul 2 16:50:17 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.454 slime/ChangeLog:1.455 --- slime/ChangeLog:1.454 Fri Jul 2 12:09:35 2004 +++ slime/ChangeLog Fri Jul 2 16:50:17 2004 @@ -1,3 +1,23 @@ +2004-07-03 Luke Gorrie + + * swank-backend.lisp (definterface): Don't use + NO-APPLICABLE-METHOD for detail methods. Instead just define them + as regular methods with all argument types being + T. Defimplementation will then replace them by using the same + signature. N-A-M was a stupid idea! + +2004-07-02 Luke Gorrie + + * swank.lisp (arglist-to-string): No longer takes a package + argument. Prints the symbol-name of symbols to avoid showing + package prefixes. + +2004-07-02 Thomas Schilling + + * swank.lisp (arglist-for-insertion): Changed formatting to use + arglist-to-string. That results in proper cases for + slime-insert-arglist. + 2004-07-02 Brian Downing * slime.el (slime-reindent-defun): Added a check for (boundp From lgorrie at common-lisp.net Fri Jul 2 23:50:52 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 02 Jul 2004 16:50:52 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31235 Modified Files: ChangeLog Log Message: Oops. ChangeLog included some things hadn't committed yet. Date: Fri Jul 2 16:50:52 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.455 slime/ChangeLog:1.456 --- slime/ChangeLog:1.455 Fri Jul 2 16:50:17 2004 +++ slime/ChangeLog Fri Jul 2 16:50:52 2004 @@ -6,18 +6,6 @@ T. Defimplementation will then replace them by using the same signature. N-A-M was a stupid idea! -2004-07-02 Luke Gorrie - - * swank.lisp (arglist-to-string): No longer takes a package - argument. Prints the symbol-name of symbols to avoid showing - package prefixes. - -2004-07-02 Thomas Schilling - - * swank.lisp (arglist-for-insertion): Changed formatting to use - arglist-to-string. That results in proper cases for - slime-insert-arglist. - 2004-07-02 Brian Downing * slime.el (slime-reindent-defun): Added a check for (boundp From lgorrie at common-lisp.net Sat Jul 3 00:01:40 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 02 Jul 2004 17:01:40 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv24524 Modified Files: slime.el Log Message: (slime-repl-clear-output): Avoid clearing the previous REPL expression too. Patch from Andras Simon. Date: Fri Jul 2 17:01:40 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.354 slime/slime.el:1.355 --- slime/slime.el:1.354 Fri Jul 2 12:09:35 2004 +++ slime/slime.el Fri Jul 2 17:01:40 2004 @@ -2428,6 +2428,8 @@ (interactive) (let ((start (save-excursion (slime-repl-previous-prompt) + (ignore-errors (forward-sexp)) + (forward-line) (point))) (end (1- (slime-repl-input-line-beginning-position)))) (when (< start end) From lgorrie at common-lisp.net Sat Jul 3 00:06:30 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 02 Jul 2004 17:06:30 -0700 Subject: [slime-cvs] CVS update: slime/hyperspec.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv16198 Modified Files: hyperspec.el Log Message: (common-lisp-hyperspec-section-4.0): Bugfix from Lennart Staflin. Date: Fri Jul 2 17:06:30 2004 Author: lgorrie Index: slime/hyperspec.el diff -u slime/hyperspec.el:1.5 slime/hyperspec.el:1.6 --- slime/hyperspec.el:1.5 Mon Jun 28 04:05:48 2004 +++ slime/hyperspec.el Fri Jul 2 17:06:30 2004 @@ -1135,10 +1135,9 @@ "") ".htm"))) -(defun common-lisp-hyperpsec-section-4.0 (indices) - (let ((string (format "%sBody/sec%s_" - common-lisp-hyperspec-root - (pop indices)))) +(defun common-lisp-hyperspec-section-4.0 (indices) + (let ((string (format "%sBody/sec_" + common-lisp-hyperspec-root))) (concat string (mapconcat (lambda (n) (format "%d" n)) From lgorrie at common-lisp.net Sat Jul 3 00:08:01 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 02 Jul 2004 17:08:01 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv23124 Modified Files: ChangeLog Log Message: Date: Fri Jul 2 17:08:01 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.456 slime/ChangeLog:1.457 --- slime/ChangeLog:1.456 Fri Jul 2 16:50:52 2004 +++ slime/ChangeLog Fri Jul 2 17:08:01 2004 @@ -1,5 +1,11 @@ 2004-07-03 Luke Gorrie + * hyperspec.el (common-lisp-hyperspec-section-4.0): Bugfix from + Lennart Staflin. + + * slime.el (slime-repl-clear-output): Avoid clearing the previous + REPL expression too. Patch from Andras Simon. + * swank-backend.lisp (definterface): Don't use NO-APPLICABLE-METHOD for detail methods. Instead just define them as regular methods with all argument types being From lgorrie at common-lisp.net Sat Jul 3 00:08:16 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 02 Jul 2004 17:08:16 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv24128 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Fri Jul 2 17:08:16 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.457 slime/ChangeLog:1.458 --- slime/ChangeLog:1.457 Fri Jul 2 17:08:01 2004 +++ slime/ChangeLog Fri Jul 2 17:08:16 2004 @@ -7,7 +7,7 @@ REPL expression too. Patch from Andras Simon. * swank-backend.lisp (definterface): Don't use - NO-APPLICABLE-METHOD for detail methods. Instead just define them + NO-APPLICABLE-METHOD for default methods. Instead just define them as regular methods with all argument types being T. Defimplementation will then replace them by using the same signature. N-A-M was a stupid idea! From yywcab at hotmail.com Sat Jul 3 18:51:36 2004 From: yywcab at hotmail.com (Weston Tate) Date: Sat, 03 Jul 2004 23:51:36 +0500 Subject: [slime-cvs] Re: Save Money Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Sun Jul 4 00:19:07 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 17:19:07 -0700 Subject: [slime-cvs] CVS update: slime/swank-backend.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv7302 Modified Files: swank-backend.lisp Log Message: (make-stream-interactive): This backend function is called with each stream that will be used for user-interaction, i.e. the redirected stdio streams. Can be used to setup special output-flushing or similar. Date: Sat Jul 3 17:19:07 2004 Author: lgorrie Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.59 slime/swank-backend.lisp:1.60 --- slime/swank-backend.lisp:1.59 Fri Jul 2 16:50:09 2004 +++ slime/swank-backend.lisp Sat Jul 3 17:19:07 2004 @@ -256,6 +256,14 @@ The streams are returned as two values.") +(definterface make-stream-interactive (stream) + "Do any necessary setup to make STREAM work interactively. +This is called for each stream used for interaction with the user +\(e.g. *standard-output*). An implementation could setup some +implementation-specific functions to control output flushing at the +like." + nil) + ;;;; Documentation From lgorrie at common-lisp.net Sun Jul 4 00:20:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 17:20:36 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv10336 Modified Files: swank.lisp Log Message: (open-streams): Call make-stream-interactive on the redirected io streams. Date: Sat Jul 3 17:20:36 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.207 slime/swank.lisp:1.208 --- slime/swank.lisp:1.207 Wed Jun 30 14:06:38 2004 +++ slime/swank.lisp Sat Jul 3 17:20:36 2004 @@ -340,6 +340,7 @@ (multiple-value-bind (in out) (make-fn-streams input-fn output-fn) (let ((out (or dedicated-output out))) (let ((io (make-two-way-stream in out))) + (mapc #'make-stream-interactive (list in out io)) (values dedicated-output in out io))))))) (defun make-output-function (connection) From lgorrie at common-lisp.net Sun Jul 4 00:21:09 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 17:21:09 -0700 Subject: [slime-cvs] CVS update: slime/swank-allegro.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11029 Modified Files: swank-allegro.lisp Log Message: (make-stream-interactive): Set interactive-stream-p slot on the stream to make it auto-flush. (*swank-thread*, *inherited-bindings*): New variables. (spawn): Bind *swank-thread* to T. (make-process/inherit): Fwrapper (advice) for mp:make-process. When *swank-thread* is T then make the new thread inherit "sliminess": debugger hook, I/O streams, and also *swank-thread* so that its children will inherit too. Date: Sat Jul 3 17:21:09 2004 Author: lgorrie Index: slime/swank-allegro.lisp diff -u slime/swank-allegro.lisp:1.42 slime/swank-allegro.lisp:1.43 --- slime/swank-allegro.lisp:1.42 Mon Jun 28 09:03:52 2004 +++ slime/swank-allegro.lisp Sat Jul 3 17:21:09 2004 @@ -49,7 +49,8 @@ ;; no-applicable-method function in Allegro 5. We have to provide an ;; implementation. (defimplementation emacs-connected (stream) - (declare (ignore stream))) + (declare (ignore stream)) + (install-advice)) (defimplementation format-sldb-condition (c) (princ-to-string c)) @@ -116,6 +117,9 @@ (:class (describe (find-class symbol))))) +(defimplementation make-stream-interactive (stream) + (setf (interactive-stream-p stream) t)) + ;;;; Debugger (defvar *sldb-topframe*) @@ -297,11 +301,43 @@ ;;;; Multithreading +(defvar *swank-thread* nil + "Bound to true in any thread with an ancestor created by SPAWN. +Such threads always use Emacs for debugging and user interaction.") + +(defvar *inherited-bindings* + '(*debugger-hook* + *standard-output* *error-output* *trace-output* + *standard-input* + *debug-io* *query-io* *terminal-io*) + "Variables whose values are inherited by children of Swank threads.") + (defimplementation startup-multiprocessing () (mp:start-scheduler)) (defimplementation spawn (fn &key name) - (mp:process-run-function name fn)) + (mp:process-run-function name + (lambda () + (let ((*swank-thread* t)) + (funcall fn))))) + +#+allegro-v6.2 +(excl:def-fwrapper make-process/inherit (&key &allow-other-keys) + "Advice for MP:MAKE-PROCESS. +New threads that have a Swank thread for an ancestor will inherit +debugging and I/O bindings from their parent." + (let ((process (excl:call-next-fwrapper))) + (when *swank-thread* + (push (cons '*swank-thread* t) + (mp:process-initial-bindings process)) + (dolist (variable *inherited-bindings*) + (push (cons variable (symbol-value variable)) + (mp:process-initial-bindings process)))) + process)) + +(defun install-advice () + #+allegro-v6.2 + (excl:fwrap 'mp:make-process 'make-process/inherit 'make-process/inherit)) (defvar *id-lock* (mp:make-process-lock :name "id lock")) (defvar *thread-id-counter* 0) From lgorrie at common-lisp.net Sun Jul 4 00:34:56 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 17:34:56 -0700 Subject: [slime-cvs] CVS update: slime/swank-allegro.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14480 Modified Files: swank-allegro.lisp Log Message: Changed reader conditionals to use fwrappers for #+(version>= 6.2). Date: Sat Jul 3 17:34:56 2004 Author: lgorrie Index: slime/swank-allegro.lisp diff -u slime/swank-allegro.lisp:1.43 slime/swank-allegro.lisp:1.44 --- slime/swank-allegro.lisp:1.43 Sat Jul 3 17:21:09 2004 +++ slime/swank-allegro.lisp Sat Jul 3 17:34:55 2004 @@ -321,7 +321,7 @@ (let ((*swank-thread* t)) (funcall fn))))) -#+allegro-v6.2 +#+(version>= 6.2) (excl:def-fwrapper make-process/inherit (&key &allow-other-keys) "Advice for MP:MAKE-PROCESS. New threads that have a Swank thread for an ancestor will inherit @@ -336,7 +336,7 @@ process)) (defun install-advice () - #+allegro-v6.2 + #+(version>= 6.2) (excl:fwrap 'mp:make-process 'make-process/inherit 'make-process/inherit)) (defvar *id-lock* (mp:make-process-lock :name "id lock")) From lgorrie at common-lisp.net Sun Jul 4 00:36:14 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 17:36:14 -0700 Subject: [slime-cvs] CVS update: slime/swank-allegro.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv19446 Modified Files: swank-allegro.lisp Log Message: *** empty log message *** Date: Sat Jul 3 17:36:14 2004 Author: lgorrie Index: slime/swank-allegro.lisp diff -u slime/swank-allegro.lisp:1.44 slime/swank-allegro.lisp:1.45 --- slime/swank-allegro.lisp:1.44 Sat Jul 3 17:34:55 2004 +++ slime/swank-allegro.lisp Sat Jul 3 17:36:14 2004 @@ -321,7 +321,7 @@ (let ((*swank-thread* t)) (funcall fn))))) -#+(version>= 6.2) +#+(version>= 6) (excl:def-fwrapper make-process/inherit (&key &allow-other-keys) "Advice for MP:MAKE-PROCESS. New threads that have a Swank thread for an ancestor will inherit @@ -336,7 +336,7 @@ process)) (defun install-advice () - #+(version>= 6.2) + #+(version>= 6) (excl:fwrap 'mp:make-process 'make-process/inherit 'make-process/inherit)) (defvar *id-lock* (mp:make-process-lock :name "id lock")) From BGCIO at post.jimu.nagoya-u.ac.jp Sun Jul 4 03:37:21 2004 From: BGCIO at post.jimu.nagoya-u.ac.jp (Stefanie Lunsford) Date: Sun, 04 Jul 2004 07:37:21 +0400 Subject: [slime-cvs] These days it's impossible to get good employment without a deegree Message-ID: <5CF1D776E987E4.73681@BGCIO@post.jimu.nagoya-u.ac.jp> An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Sun Jul 4 03:21:43 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 20:21:43 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp slime/swank-backend.lisp slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv24608 Modified Files: swank.lisp swank-backend.lisp slime.el Log Message: Added a new backend function `buffer-first-change' which is called via Emacs's `first-change-hook' in slime-mode buffers. This gives Lisp a chance to do something with source files before you change them on disk. Date: Sat Jul 3 20:21:43 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.208 slime/swank.lisp:1.209 --- slime/swank.lisp:1.208 Sat Jul 3 17:20:36 2004 +++ slime/swank.lisp Sat Jul 3 20:21:43 2004 @@ -30,6 +30,7 @@ #:*readtable-alist* #:*globally-redirect-io* ;; These are re-exported directly from the backend: + #:buffer-first-change #:frame-source-location-for-emacs #:restart-frame #:sldb-step Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.60 slime/swank-backend.lisp:1.61 --- slime/swank-backend.lisp:1.60 Sat Jul 3 17:19:07 2004 +++ slime/swank-backend.lisp Sat Jul 3 20:21:43 2004 @@ -440,6 +440,10 @@ LOCATION is the source location for the definition.") +(definterface buffer-first-change (filename) + "Called for effect the first time FILENAME's buffer is modified." + nil) + ;;;; XREF Index: slime/slime.el diff -u slime/slime.el:1.355 slime/slime.el:1.356 --- slime/slime.el:1.355 Fri Jul 2 17:01:40 2004 +++ slime/slime.el Sat Jul 3 20:21:43 2004 @@ -4536,6 +4536,22 @@ name (slime-buffer-package))) +;;;;; first-change-hook + +(defun slime-first-change-hook () + "Notify Lisp that a source file's buffer has been modified." + (when (and (buffer-file-name) + (slime-connected-p)) + (let ((filename (slime-to-lisp-filename (buffer-file-name)))) + (slime-eval-async `(swank:buffer-first-change ,filename) + nil (lambda (v) nil))))) + +(defun slime-setup-first-change-hook () + (add-hook (make-local-variable 'first-change-hook) + 'slime-first-change-hook)) + +(add-hook 'slime-mode-hook 'slime-setup-first-change-hook) + ;;; `ED' From lgorrie at common-lisp.net Sun Jul 4 03:22:37 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 20:22:37 -0700 Subject: [slime-cvs] CVS update: slime/swank-cmucl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30192 Modified Files: swank-cmucl.lisp Log Message: (buffer-first-change): Suck the source file into the cache unless already present. This is for M-. to increase the chances of our having a copy of the sources corresponding with the loaded code. Should help with the case where a user edits a file (without recompiling it) and then M-.'s for one of its definitions. Date: Sat Jul 3 20:22:37 2004 Author: lgorrie Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.109 slime/swank-cmucl.lisp:1.110 --- slime/swank-cmucl.lisp:1.109 Sun Jun 27 08:00:37 2004 +++ slime/swank-cmucl.lisp Sat Jul 3 20:22:37 2004 @@ -811,6 +811,16 @@ source) nil))))) +(defun source-cached-p (filename) + "Is any version of FILENAME in the source cache?" + (if (gethash filename *source-file-cache*) t)) + +(defimplementation buffer-first-change (filename) + "Load a file into the cache when the user modifies its buffer. +This is a win if the user then saves the file and tries to M-. into it." + (unless (source-cached-p filename) + (ignore-errors (source-cache-get filename (file-write-date filename))))) + ;;;; Finding definitions From lgorrie at common-lisp.net Sun Jul 4 03:22:44 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 20:22:44 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30489 Modified Files: ChangeLog Log Message: Date: Sat Jul 3 20:22:44 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.458 slime/ChangeLog:1.459 --- slime/ChangeLog:1.458 Fri Jul 2 17:08:16 2004 +++ slime/ChangeLog Sat Jul 3 20:22:43 2004 @@ -1,3 +1,38 @@ +2004-07-04 Luke Gorrie + + * slime.el, swank-backend.lisp, swank.lisp: Added a new backend + function `buffer-first-change' which is called via Emacs's + `first-change-hook' in slime-mode buffers. This gives Lisp a + chance to do something with source files before you change them on + disk. + + * swank-cmucl.lisp (buffer-first-change): Suck the source file + into the cache unless already present. This is for M-. to increase + the chances of our having a copy of the sources corresponding with + the loaded code. Should help with the case where a user edits a + file (without recompiling it) and then M-.'s for one of its + definitions. + + * swank-allegro.lisp (make-process/inherit): Changed reader + conditionals to use fwrappers for #+(version>= 6.2). + + * swank-backend.lisp (make-stream-interactive): This backend + function is called with each stream that will be used for + user-interaction, i.e. the redirected stdio streams. Can be used + to setup special output-flushing or similar. + + * swank.lisp (open-streams): Call make-stream-interactive on the + redirected io streams. + + * swank-allegro.lisp (make-stream-interactive): Set + interactive-stream-p slot on the stream to make it auto-flush. + (*swank-thread*, *inherited-bindings*): New variables. + (spawn): Bind *swank-thread* to T. + (make-process/inherit): Fwrapper (advice) for + mp:make-process. When *swank-thread* is T then make the new thread + inherit "sliminess": debugger hook, I/O streams, and also + *swank-thread* so that its children will inherit too. + 2004-07-03 Luke Gorrie * hyperspec.el (common-lisp-hyperspec-section-4.0): Bugfix from From lgorrie at common-lisp.net Sun Jul 4 03:25:30 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 20:25:30 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv15680 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Sat Jul 3 20:25:30 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.459 slime/ChangeLog:1.460 --- slime/ChangeLog:1.459 Sat Jul 3 20:22:43 2004 +++ slime/ChangeLog Sat Jul 3 20:25:30 2004 @@ -9,9 +9,9 @@ * swank-cmucl.lisp (buffer-first-change): Suck the source file into the cache unless already present. This is for M-. to increase the chances of our having a copy of the sources corresponding with - the loaded code. Should help with the case where a user edits a - file (without recompiling it) and then M-.'s for one of its - definitions. + the loaded code. Should help with the case where a user edits and + saves a file (without recompiling it) and then M-.'s for one of + its definitions. * swank-allegro.lisp (make-process/inherit): Changed reader conditionals to use fwrappers for #+(version>= 6.2). From lgorrie at common-lisp.net Sun Jul 4 05:17:26 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Sat, 03 Jul 2004 22:17:26 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv21921 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Sat Jul 3 22:17:26 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.460 slime/ChangeLog:1.461 --- slime/ChangeLog:1.460 Sat Jul 3 20:25:30 2004 +++ slime/ChangeLog Sat Jul 3 22:17:26 2004 @@ -14,7 +14,7 @@ its definitions. * swank-allegro.lisp (make-process/inherit): Changed reader - conditionals to use fwrappers for #+(version>= 6.2). + conditionals to use fwrappers for #+(version>= 6). * swank-backend.lisp (make-stream-interactive): This backend function is called with each stream that will be used for From adoatrem at kenyan.every1.net Sun Jul 4 11:21:26 2004 From: adoatrem at kenyan.every1.net (archie raw) Date: Sun, 04 Jul 2004 22:21:26 +1100 Subject: [slime-cvs] Ihgaqeg V~i_c_o`din - Order Meds From Home Now hfeeqhffd pb Message-ID: <83C7BF2A.D544FFA@kenyan.every1.net> cailf antimasonic braincommandprocedures 0n|ine Pharm They got Vi.co.din, X. at nax, and V.aliu.m..and other popular products.. By having doctors available to review your needs, we are ready to help you get the medications you need. (di`scon ava1`iable at our we.bpage) H S http://rhdk.info.tradeshopping.com/abc/large/ Make every day count. Appreciate every moment and take from those moments everything that you possibly can for you may never be able to experience it again. Talk to people that you have never talked to before, and listen to what they have to say. None of us had ever seen anyone like her before. having harbored and idea that I would one day become an actgor, the effect of hearing this extraordinary person singing I m the greatest star was seismic. As if she some how knew exactly what was going on in my head. I remember feeling a bit shivery, as if everyone must be able to see my dream. That the rags-to-riches scenario was the clich??d plot-line of a hundred flicks didn??t matter as I had never encountered it before. But more than anything else was this voice. nisimine0nattouki68bakusou,masatsuo migikand. From kittycirca at loveable.com Mon Jul 5 14:56:53 2004 From: kittycirca at loveable.com (Editor) Date: Mon, 05 Jul 2004 15:56:53 +0100 Subject: [slime-cvs] Smile to see the world becomes better! ;-) iterating Message-ID: An HTML attachment was scrubbed... URL: From mllth at tir.com Mon Jul 5 22:22:44 2004 From: mllth at tir.com (Mohammad Timmons) Date: Mon, 05 Jul 2004 21:22:44 -0100 Subject: [slime-cvs] Re: Have Medications Delivered Right To Your Door. Discreetly. Securely. Message-ID: <%RNDUCCHAR2025@yahoo.ca> An HTML attachment was scrubbed... URL: From briannarothwell at abcuser.every1.net Tue Jul 6 00:00:55 2004 From: briannarothwell at abcuser.every1.net (bryce kivel) Date: Mon, 05 Jul 2004 15:00:55 -0900 Subject: [slime-cvs] Pvrblkhkr Rx Service Message-ID: <093F2A9E.60B2FCC@abcuser.every1.net> acredale lasius synergys Get The Most Popular Med_ications Now! Stop the pai_n, get +Vi+co+din+ now Shop the best (Dr^op service with same url below) N http://ocw.info.worldwideplace.com/abc/biggest/ That's just what they did every day. It was a wonderful experience for them to share and there were no seizures at all while she was running. After a few weeks, she told her father, "Daddy, what I'd really love to do is break the world's long-distance running record for women." You might never work in this town again.Alternatively you will become so blase that nothing will charge your little batteries quite like this ever again.As I leave West Hollywood and enter Beverly Hills,the roads widen.The palms look 'palmier',standing like sentres on either side of the very wide boulevards. embargosa0brita`nico68di`mero,cordiaca coimero. From lgorrie at common-lisp.net Wed Jul 7 12:05:25 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Jul 2004 05:05:25 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9867 Modified Files: slime.el Log Message: (slime-alistify): Preserve order. This keeps the *compiler-notes* right. Pointed out by Christophe Rhodes. (slime-repl-update-banner-p): Renamed from slime-reply-.. (slime-changelog-date): Reintroduced for informational purposes. (slime-repl-update-banner): Show ChangeLog date in the animation. (slime-space): Do arglist lookup before inserting the space. Otherwise we get a funky race condition: entering the space may trigger `first-change-hook', which would send an async notification to Lisp, which would put us in the 'busy' state and thus we wouldn't lookup the arglist! Detective work by Edi Weitz. (sldb-prune-initial-frames): More regexp fudgery :-(. (read-directory-name): Use `file-name-as-directory' to ensure we have the trailing / on the directory name. (byte-compile-warnings): Bye-compile slime-alistify. Its inputs can be pretty big. Date: Wed Jul 7 05:05:24 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.356 slime/slime.el:1.357 --- slime/slime.el:1.356 Sat Jul 3 20:21:43 2004 +++ slime/slime.el Wed Jul 7 05:05:24 2004 @@ -122,7 +122,7 @@ (defvar slime-space-information-p t "Whether the SPC key should offer information or not.") -(defvar slime-reply-update-banner-p t +(defvar slime-repl-update-banner-p t "Whether Slime should keep a repl banner updated or not.") (defvar slime-edit-definition-fallback-function nil @@ -1235,6 +1235,26 @@ (message "Initial handshake..." port) (slime-init-connection process))) +(defun slime-changelog-date () + "Return the datestring of the latest entry in the ChangeLog file. +If the function is compiled (with the file-compiler) return the date +of the newest at compile time. If the function is interpreted read +the ChangeLog file at runtime." + (macrolet ((date () + (let* ((dir (or (and (boundp 'byte-compile-current-file) + byte-compile-current-file + (file-name-directory + (file-truename + byte-compile-current-file))) + slime-path)) + (file (concat dir "ChangeLog")) + (date (with-temp-buffer + (insert-file-contents file nil 0 100) + (goto-char (point-min)) + (symbol-name (read (current-buffer)))))) + `(quote ,date)))) + (date))) + (defun slime-disconnect () "Disconnect all connections." (interactive) @@ -1907,7 +1927,7 @@ (slime-pid))) ;; Emacs21 has the fancy persistent header-line. (use-header-p (and (boundp 'header-line-format) - slime-reply-update-banner-p)) + slime-repl-update-banner-p)) ;; and dancing text (animantep (and (fboundp 'animate-string) slime-startup-animation @@ -1916,9 +1936,8 @@ (setq header-line-format banner)) (when animantep (pop-to-buffer (current-buffer)) - (animate-string "; SLIME: The Superior Lisp Interaction Mode for Emacs" - 0 0)) - (slime-repl-insert-prompt (if (or (not slime-reply-update-banner-p) + (animate-string (format "; SLIME %s" (slime-changelog-date)) 0 0)) + (slime-repl-insert-prompt (if (or (not slime-repl-update-banner-p) use-header-p) "" (concat "; " banner))))) @@ -3124,7 +3143,10 @@ (if probe (push e (cdr probe)) (push (cons k (list e)) alist)))) - alist)) + ;; Put them back in order. + (loop for (key . value) in alist + collect (cons key (cons (car value) + (reverse (cdr value))))))) (defun slime-note.severity (note) (plist-get note :severity)) @@ -3686,20 +3708,21 @@ Designed to be bound to the SPC key. Prefix argument can be used to insert more than one space." (interactive "p") - (self-insert-command n) - (when (and slime-space-information-p - (slime-connected-p) - (or (not (slime-busy-p)) - ;; XXX should we enable this? - ;; (not slime-use-sigint-for-interrupt)) - )) - (let ((names (slime-enclosing-operator-names))) - (when names - (slime-eval-async - `(swank:arglist-for-echo-area (quote ,names)) - (slime-buffer-package) - (lambda (message) - (slime-background-message "%s" message))))))) + (unwind-protect + (when (and slime-space-information-p + (slime-connected-p) + (or (not (slime-busy-p)) + ;; XXX should we enable this? + ;; (not slime-use-sigint-for-interrupt)) + )) + (let ((names (slime-enclosing-operator-names))) + (when names + (slime-eval-async + `(swank:arglist-for-echo-area (quote ,names)) + (slime-buffer-package) + (lambda (message) + (slime-background-message "%s" message)))))) + (self-insert-command n))) (defun slime-arglist (name) "Show the argument list for NAME." @@ -5592,7 +5615,7 @@ Regexp heuristics are used to avoid showing SWANK-internal frames." (or (loop for frame in frames for (number string) = frame - until (string-match "^(+\\(SWANK\\|swank\\)\\>" string) + until (string-match "^(*\\(SWANK\\|swank\\)\\>" string) collect frame) frames)) @@ -7478,7 +7501,7 @@ (setq default-dirname (if initial (concat dir initial) default-directory))) (let ((file (read-file-name prompt dir default-dirname mustmatch initial))) - (setq file (expand-file-name file)) + (setq file (file-name-as-directory (expand-file-name file))) (cond ((file-directory-p file) file) (t @@ -7517,7 +7540,8 @@ (require 'bytecomp) (let ((byte-compile-warnings '())) (mapc #'byte-compile - '(slime-log-event + '(slime-alistify + slime-log-event slime-events-buffer slime-output-string slime-output-buffer From lgorrie at common-lisp.net Wed Jul 7 12:08:49 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Jul 2004 05:08:49 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32611 Modified Files: ChangeLog Log Message: Date: Wed Jul 7 05:08:49 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.461 slime/ChangeLog:1.462 --- slime/ChangeLog:1.461 Sat Jul 3 22:17:26 2004 +++ slime/ChangeLog Wed Jul 7 05:08:48 2004 @@ -1,3 +1,21 @@ +2004-07-07 Luke Gorrie + + * slime.el (slime-alistify): Preserve order. This keeps the + *compiler-notes* right. Pointed out by Christophe Rhodes. + (slime-repl-update-banner-p): Renamed from slime-reply-.. + (slime-changelog-date): Reintroduced for informational purposes. + (slime-repl-update-banner): Show ChangeLog date in the animation. + (slime-space): Do arglist lookup before inserting the + space. Otherwise we get a funky race condition: entering the space + may trigger `first-change-hook', which would send an async + notification to Lisp, which would put us in the 'busy' state and + thus we wouldn't lookup the arglist! Detective work by Edi Weitz. + (sldb-prune-initial-frames): More regexp fudgery :-(. + (read-directory-name): Use `file-name-as-directory' to ensure we + have the trailing / on the directory name. + (byte-compile-warnings): Bye-compile slime-alistify. Its inputs + can be pretty big. + 2004-07-04 Luke Gorrie * slime.el, swank-backend.lisp, swank.lisp: Added a new backend From lgorrie at common-lisp.net Wed Jul 7 12:11:24 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Jul 2004 05:11:24 -0700 Subject: [slime-cvs] CVS update: slime/swank-loader.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv27195 Modified Files: swank-loader.lisp Log Message: (*lisp-name*): Include the version number in ACL. Date: Wed Jul 7 05:11:24 2004 Author: lgorrie Index: slime/swank-loader.lisp diff -u slime/swank-loader.lisp:1.29 slime/swank-loader.lisp:1.30 --- slime/swank-loader.lisp:1.29 Sun Jun 20 23:13:33 2004 +++ slime/swank-loader.lisp Wed Jul 7 05:11:24 2004 @@ -45,7 +45,7 @@ #+sbcl (format nil "sbcl-~A" (lisp-implementation-version)) #+openmcl "openmcl" #+lispworks (format nil "lispworks-~A" (lisp-implementation-version)) - #+allegro "allegro" + #+allegro (format nil "allegro-~A" excl::*common-lisp-version-number*) #+clisp (format nil "clisp-~A" (let ((s (lisp-implementation-version))) (subseq s 0 (position #\space s)))) #+armedbear "abcl" From lgorrie at common-lisp.net Wed Jul 7 12:11:32 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Jul 2004 05:11:32 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31009 Modified Files: ChangeLog Log Message: Date: Wed Jul 7 05:11:32 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.462 slime/ChangeLog:1.463 --- slime/ChangeLog:1.462 Wed Jul 7 05:08:48 2004 +++ slime/ChangeLog Wed Jul 7 05:11:32 2004 @@ -1,5 +1,8 @@ 2004-07-07 Luke Gorrie + * swank-loader.lisp (*lisp-name*): Include the version number in + ACL. + * slime.el (slime-alistify): Preserve order. This keeps the *compiler-notes* right. Pointed out by Christophe Rhodes. (slime-repl-update-banner-p): Renamed from slime-reply-.. From lgorrie at common-lisp.net Wed Jul 7 15:09:33 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Jul 2004 08:09:33 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17920 Modified Files: swank.lisp Log Message: >From Thomas Schilling: (arglist-for-insertion): Changed formatting to use arglist-to-string. That results in proper cases for slime-insert-arglist. Date: Wed Jul 7 08:09:33 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.209 slime/swank.lisp:1.210 --- slime/swank.lisp:1.209 Sat Jul 3 20:21:43 2004 +++ slime/swank.lisp Wed Jul 7 08:09:33 2004 @@ -1040,7 +1040,7 @@ ((member :not-available) " ") (list - (format nil "~{~^ ~A~})" (list arglist)))))) + (arglist-to-string arglist *buffer-package*))))) (t " ")))) From lgorrie at common-lisp.net Wed Jul 7 15:10:09 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Jul 2004 08:10:09 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv25024 Modified Files: ChangeLog Log Message: Date: Wed Jul 7 08:10:08 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.463 slime/ChangeLog:1.464 --- slime/ChangeLog:1.463 Wed Jul 7 05:11:32 2004 +++ slime/ChangeLog Wed Jul 7 08:10:08 2004 @@ -1,3 +1,9 @@ +2004-07-07 Thomas Schilling + + * swank.lisp (arglist-for-insertion): Changed formatting to use + arglist-to-string. That results in proper cases for + slime-insert-arglist. + 2004-07-07 Luke Gorrie * swank-loader.lisp (*lisp-name*): Include the version number in From alainecamposanoe at mail.vu Wed Jul 7 20:39:56 2004 From: alainecamposanoe at mail.vu (omar skocilich) Date: Thu, 08 Jul 2004 01:39:56 +0500 Subject: [slime-cvs] Rkrpylof DirectMeds Message-ID: <3C2939AA.D809558@mail.vu> rozpijaczyc peaks pstrykniecie And to give you a general idea of what we specialize in: If you need X`an at x, V@|ium, Vi_c0`din, S.oma, Paxi1 or Meridia we have it. It's private, fast, and safe. (same linke to q'uit) X O http://p.info.lethouse.com/abc/03/ When the time came to pick it up, however, I grew skeptical. How could I have been so foolish as to just leave a $1,200 wedding dress in the hands of someone I barely knew? What if she made a mess out of it? I had no idea if she could even sew on a button. Pass the Beverly Hills Hotel on the right,which looks exactly like it's supposed to look:all pink and palm-fringed and presumably still polo-lounged within.A few blocks further and hang a left.Switch off the radio and glide noiselessly down a slow,winding boulevard,blue sky and swishing palm trees above,audible heartbeat pounding below. pigmejczyk0pierwszoklasista68przeznaczany,rockmanowpremierowi. From crhodes at common-lisp.net Fri Jul 9 12:09:18 2004 From: crhodes at common-lisp.net (Christophe Rhodes) Date: Fri, 09 Jul 2004 05:09:18 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4709 Modified Files: ChangeLog slime.el Log Message: Substitute hyphens for spaces in the sbcl manual URL references Date: Fri Jul 9 05:09:18 2004 Author: crhodes Index: slime/ChangeLog diff -u slime/ChangeLog:1.464 slime/ChangeLog:1.465 --- slime/ChangeLog:1.464 Wed Jul 7 08:10:08 2004 +++ slime/ChangeLog Fri Jul 9 05:09:18 2004 @@ -1,3 +1,8 @@ +2004-07-09 Christophe Rhodes + + * slime.el (sldb-lookup-reference): substitute hyphens for spaces + in the url. + 2004-07-07 Thomas Schilling * swank.lisp (arglist-for-insertion): Changed formatting to use Index: slime/slime.el diff -u slime/slime.el:1.357 slime/slime.el:1.358 --- slime/slime.el:1.357 Wed Jul 7 05:05:24 2004 +++ slime/slime.el Fri Jul 9 05:09:18 2004 @@ -5589,7 +5589,8 @@ (slime-cl-symbol-name what) what))))) (t - (let ((url (format "%s%s.html" slime-sbcl-manual-root what))) + (let ((url (format "%s%s.html" slime-sbcl-manual-root + (subst-char-in-string ?\ ?\- what)))) (browse-url url)))))) (defun sldb-insert-restarts (restarts) From pseibel at common-lisp.net Fri Jul 9 18:09:18 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Fri, 09 Jul 2004 11:09:18 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14511 Modified Files: ChangeLog swank.lisp Log Message: Changing computation of package name used in REPL prompt. Date: Fri Jul 9 11:09:18 2004 Author: pseibel Index: slime/ChangeLog diff -u slime/ChangeLog:1.465 slime/ChangeLog:1.466 --- slime/ChangeLog:1.465 Fri Jul 9 05:09:18 2004 +++ slime/ChangeLog Fri Jul 9 11:09:18 2004 @@ -1,3 +1,14 @@ +2004-07-09 Peter Seibel + + * swank.lisp (package-string-for-prompt): Change the way package + name in prompt is computed. N.B. after this change the name + displayed will not necsarily be either an actual name or nickname + of the package: if the name contains dots by default the prompt + will only display the last element, i.e. COM.GIGAMONKEYS.SPAM will + be shown as SPAM. This change also makes CL-USER the canonical + name for COMMON-LISP-USER even in implementations that provide a + shorter nickname such as USER. + 2004-07-09 Christophe Rhodes * slime.el (sldb-lookup-reference): substitute hyphens for spaces Index: slime/swank.lisp diff -u slime/swank.lisp:1.210 slime/swank.lisp:1.211 --- slime/swank.lisp:1.210 Wed Jul 7 08:09:33 2004 +++ slime/swank.lisp Fri Jul 9 11:09:18 2004 @@ -54,6 +54,13 @@ (defconstant keyword-package (find-package :keyword) "The KEYWORD package.") +(defvar *canonical-packge-nicknames* + '(("COMMON-LISP-USER" . "CL-USER")) + "Canonical package names to use instead of shortest name/nickname.") + +(defvar *auto-abbreviate-dotted-packages* t + "Automatically abbreviate dotted package names to their last component when T.") + (defvar *swank-io-package* (let ((package (make-package :swank-io-package :use '()))) (import '(nil t quote) package) @@ -1309,15 +1316,32 @@ (return (values values -))))) (when (and package-update-p (not (eq *package* *buffer-package*))) (send-to-emacs - (list :new-package (shortest-package-nickname *package*))))))) + (list :new-package (package-string-for-prompt *package*))))))) + +(defun package-string-for-prompt (package) + "Return the shortest nickname (or canonical name) of PACKAGE." + (or (canonical-package-nickname package) + (auto-abbreviated-package-name package) + (shortest-package-nickname package))) + +(defun canonical-package-nickname (package) + "Return the canonical package nickname, if any, of PACKAGE." + (cdr (assoc (package-name package) *canonical-packge-nicknames* :test #'string=))) + +(defun auto-abbreviated-package-name (package) + "Return an abbreviated 'name' for PACKAGE. N.B. this is not an actual package name or nickname." + (when *auto-abbreviate-dotted-packages* + (let ((last-dot (position #\. (package-name package) :from-end t))) + (when last-dot (subseq (package-name package) (1+ last-dot)))))) (defun shortest-package-nickname (package) "Return the shortest nickname (or canonical name) of PACKAGE." (loop for name in (cons (package-name package) (package-nicknames package)) for shortest = name then (if (< (length name) (length shortest)) - name - shortest) - finally (return shortest))) + name + shortest) + finally (return shortest))) + (defslimefun interactive-eval-region (string) (with-buffer-syntax () @@ -1371,9 +1395,9 @@ (swank-pprint (multiple-value-list (eval (read-from-string string)))))) (defslimefun set-package (package) - "Set *package* to PACKAGE and return its name and shortest nickname." + "Set *package* to PACKAGE and return its name and the string to use in the prompt." (let ((p (setq *package* (guess-package-from-string package)))) - (list (package-name p) (shortest-package-nickname p)))) + (list (package-name p) (package-string-for-prompt p)))) (defslimefun listener-eval (string) (clear-user-input) From kwkkvqhvmu at msn.com Sat Jul 10 02:10:18 2004 From: kwkkvqhvmu at msn.com (Luann Thompson) Date: Fri, 09 Jul 2004 20:10:18 -0600 Subject: [slime-cvs] Check this out Message-ID: An HTML attachment was scrubbed... URL: From lezlieroswelljoy at officeemail.net Sat Jul 10 14:02:58 2004 From: lezlieroswelljoy at officeemail.net (jonathan pharr) Date: Sat, 10 Jul 2004 15:02:58 +0100 Subject: [slime-cvs] Hkqigur Re: Ref1ll For Your Rx p a i n Pills 0rder Message-ID: <976A5C95.16E0D0C@officeemail.net> decapua exportgswap dinaric Largest Selection Of Online Meedications! Now You Can Or'der Val(ium - Xana*x - Onl)ine. Real doctors providing for your health and well being. U T http://cbvh.o.analgesia2470pills.us/f74/ It was a sunny Saturday afternoon in Oklahoma City. My friend and proud father Bobby Lewis was taking his two little boys to play miniature golf. He walked up to the fellow at the ticket counter and said, "How much is it to get in?"The young man replied, "$3.00 for you and $3.00 for any kid who is older than six. We let them in free if they are six or younger. How old are they?"Bobby replied, "The lawyer's three and the doctor is seven, so I guess I owe you $6.00."The man at the ticket counter said, "Hey, Mister, did you just win the lottery or something? You could have saved yourself three bucks. It prompted the only fan letter I have yet written and posted. kimetsu0kupon68reisya,sanjyaku kasenbu. From lcklb at 8d8d.com Sun Jul 11 09:23:26 2004 From: lcklb at 8d8d.com (Alejandro Spencer) Date: Sun, 11 Jul 2004 10:23:26 +0100 Subject: [slime-cvs] Fwd: Purchase Prescription Medication Here Without Any Prescription. Discreet. Secure. Message-ID: <%RNDUCCHAR2025@canada-11.com> An HTML attachment was scrubbed... URL: From ysvquejrfvhggs at bigfoot.com Mon Jul 12 04:23:52 2004 From: ysvquejrfvhggs at bigfoot.com (Truman Carmichael) Date: Mon, 12 Jul 2004 08:23:52 +0400 Subject: [slime-cvs] watch your boyfriend smile Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Mon Jul 12 10:35:23 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 12 Jul 2004 03:35:23 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31567 Modified Files: swank.lisp Log Message: Added some docstrings. Rearranged completion code and somewhat SLDB trying to layout functions above their subfunctions in a tree-like way. (slime-protocol-error): Renamed from slime-read-error. (carefully-find-package): Now returns NIL if package can't be determined, rather than *BUFFER-PACKAGE*. Correct? I didn't see why it should return *BUFFER-PACKAGE*. (xref): Find symbol in *BUFFER-PACKAGE*. Date: Mon Jul 12 03:35:22 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.211 slime/swank.lisp:1.212 --- slime/swank.lisp:1.211 Fri Jul 9 11:09:18 2004 +++ slime/swank.lisp Mon Jul 12 03:35:22 2004 @@ -194,11 +194,10 @@ "Return the value of *SWANK-STATE-STACK*." *swank-state-stack*) -;; Condition for SLIME protocol errors. -(define-condition slime-read-error (error) - ((condition :initarg :condition :reader slime-read-error.condition)) +(define-condition slime-protocol-error (error) + ((condition :initarg :condition :reader slime-protocol-error.condition)) (:report (lambda (condition stream) - (format stream "~A" (slime-read-error.condition condition))))) + (format stream "~A" (slime-protocol-error.condition condition))))) (add-hook *new-connection-hook* 'notify-backend-of-connection) (defun notify-backend-of-connection (connection) @@ -270,13 +269,17 @@ (defun start-server (port-file &optional (style *communication-style*) dont-close) + "Start the server and write the listen port number to PORT-FILE. +This is the entry point for Emacs." (setup-server 0 (lambda (port) (announce-server-port port-file port)) style dont-close)) (defun create-server (&key (port default-server-port) (style *communication-style*) dont-close) - "Start a SWANK server on PORT." + "Start a SWANK server on PORT running in STYLE. +If DONT-CLOSE is true then the listen socket will accept multiple +connections, otherwise it will be closed after the first." (setup-server port #'simple-announce-function style dont-close)) (defun create-swank-server (&optional (port default-server-port) @@ -336,7 +339,7 @@ (defun open-streams (connection) "Return the 4 streams for IO redirection: - DEDICATED-OUTPUT INPUT OUTPUT IO" +DEDICATED-OUTPUT INPUT OUTPUT IO" (multiple-value-bind (output-fn dedicated-output) (make-output-function connection) (let ((input-fn @@ -406,7 +409,7 @@ (defmacro with-reader-error-handler ((connection) &body body) `(handler-case (progn , at body) - (slime-read-error (e) (close-connection ,connection e)))) + (slime-protocol-error (e) (close-connection ,connection e)))) (defun simple-break () (with-simple-restart (continue "Continue from interrupt.") @@ -450,6 +453,7 @@ (find-thread id))))) (defun dispatch-event (event socket-io) + "Handle an event triggered either by Emacs or within Lisp." (log-event "DISPATCHING: ~S~%" event) (destructure-case event ((:emacs-rex form package thread-id id) @@ -578,7 +582,6 @@ (declare (ignore thread)) (send `(,(car event) 0 , at args))) ((:return thread &rest args) - (declare (ignore thread)) (send `(:return , at args))) (((:read-output :new-package :new-features :debug-condition :indentation-update :ed :%apply) @@ -797,7 +800,7 @@ (defun decode-message (stream) "Read an S-expression from STREAM using the SLIME protocol. -If a protocol error occurs then a SLIME-READ-ERROR is signalled." +If a protocol error occurs then a SLIME-PROTOCOL-ERROR is signalled." (let ((*swank-state-stack* (cons :read-next-form *swank-state-stack*))) (flet ((next-byte () (char-code (read-char stream t)))) (handler-case @@ -812,7 +815,7 @@ (log-event "READ: ~A~%" string) form)) (serious-condition (c) - (error (make-condition 'slime-read-error :condition c))))))) + (error (make-condition 'slime-protocol-error :condition c))))))) (defun read-form (string) (with-standard-io-syntax @@ -1054,20 +1057,6 @@ ;;;; Debugger -;;; These variables are dynamically bound during debugging. - -;; The condition being debugged. -(defvar *swank-debugger-condition* nil) - -(defvar *sldb-level* 0 - "The current level of recursive debugging.") - -(defvar *sldb-initial-frames* 20 - "The initial number of backtrace frames to send to Emacs.") - -(defvar *sldb-restarts* nil - "The list of currenlty active restarts.") - (defun swank-debugger-hook (condition hook) "Debugger function for binding *DEBUGGER-HOOK*. Sends a message to Emacs declaring that the debugger has been entered, @@ -1081,6 +1070,22 @@ (with-connection ((default-connection)) (debug-in-emacs condition)))))) +;;;;; Debugger loop +;;; +;;; These variables are dynamically bound during debugging. +;;; +(defvar *swank-debugger-condition* nil + "The condition being debugged.") + +(defvar *sldb-level* 0 + "The current level of recursive debugging.") + +(defvar *sldb-initial-frames* 20 + "The initial number of backtrace frames to send to Emacs.") + +(defvar *sldb-restarts* nil + "The list of currenlty active restarts.") + (defun debug-in-emacs (condition) (let ((*swank-debugger-condition* condition) (*sldb-restarts* (compute-restarts condition)) @@ -1108,10 +1113,6 @@ (read-from-emacs)))))) (send-to-emacs `(:debug-return ,(current-thread) ,level)))) -(defslimefun sldb-break-with-default-debugger () - "Invoke the default debugger by returning from our debugger-loop." - (throw 'sldb-enter-default-debugger nil)) - (defun handle-sldb-condition (condition) "Handle an internal debugger condition. Rather than recursively debug the debugger (a dangerous idea!), these @@ -1155,6 +1156,12 @@ (print-frame frame stream))))) (subseq string (length label)))) +;;;;; SLDB entry points + +(defslimefun sldb-break-with-default-debugger () + "Invoke the default debugger by returning from our debugger-loop." + (throw 'sldb-enter-default-debugger nil)) + (defslimefun backtrace (start end) "Return a list ((I FRAME) ...) of frames from START to END. I is an integer describing and FRAME a string." @@ -1555,80 +1562,40 @@ (disassemble (fdefinition (from-string name)))))) -;;;; Completion - -(defun determine-case (string) - "Return two booleans LOWER and UPPER indicating whether STRING -contains lower or upper case characters." - (values (some #'lower-case-p string) - (some #'upper-case-p string))) - -(defun carefully-find-package (name default-package-name) - "Find the package with name NAME, or DEFAULT-PACKAGE-NAME, or the -*buffer-package*. NAME and DEFAULT-PACKAGE-NAME can be nil." - (let ((string (cond ((equal name "") "KEYWORD") - (t (or name default-package-name))))) - (if string - (guess-package-from-string string nil) - *buffer-package*))) +;;;; Basic completion -(defun parse-completion-arguments (string default-package-name) - (multiple-value-bind (name package-name internal-p) - (tokenize-symbol-designator string) - (let ((package (carefully-find-package package-name default-package-name))) - (values name package-name package internal-p)))) +(defslimefun completions (string default-package-name) + "Return a list of completions for a symbol designator STRING. -(defun format-completion-result (string internal-p package-name) - (let ((prefix (cond (internal-p (format nil "~A::" package-name)) - (package-name (format nil "~A:" package-name)) - (t "")))) - (values (concatenate 'string prefix string) - (length prefix)))) +The result is the list (COMPLETION-SET +COMPLETED-PREFIX). COMPLETION-SET is the list of all matching +completions, and COMPLETED-PREFIX is the best (partial) +completion of the input string. -(defun format-completion-set (strings internal-p package-name) - (mapcar (lambda (string) - (format-completion-result string internal-p package-name)) - (sort strings #'string<))) +If STRING is package qualified the result list will also be +qualified. If string is non-qualified the result strings are +also not qualified and are considered relative to +DEFAULT-PACKAGE-NAME. -(defun output-case-converter (input) - "Return a function to case convert strings for output. -INPUT is used to guess the preferred case." - (ecase (readtable-case *readtable*) - (:upcase (if (some #'lower-case-p input) #'string-downcase #'identity)) - (:invert (lambda (output) - (multiple-value-bind (lower upper) (determine-case output) - (cond ((and lower upper) output) - (lower (string-upcase output)) - (upper (string-downcase output)) - (t output))))) - (:downcase (if (some #'upper-case-p input) #'string-upcase #'identity)) - (:preserve #'identity))) +The way symbols are matched depends on the symbol designator's +format. The cases are as follows: + FOO - Symbols with matching prefix and accessible in the buffer package. + PKG:FOO - Symbols with matching prefix and external in package PKG. + PKG::FOO - Symbols with matching prefix and accessible in package PKG." + (let ((completion-set (completion-set string default-package-name + #'compound-prefix-match))) + (list completion-set (longest-completion completion-set)))) -(defun find-matching-symbols (string package external test) - "Return a list of symbols in PACKAGE matching STRING. -TEST is called with two strings. If EXTERNAL is true, only external -symbols are returned." - (let ((completions '()) - (converter (output-case-converter string))) - (flet ((symbol-matches-p (symbol) - (and (or (not external) - (symbol-external-p symbol package)) - (funcall test string - (funcall converter (symbol-name symbol)))))) - (do-symbols (symbol package) - (when (symbol-matches-p symbol) - (push symbol completions)))) - (remove-duplicates completions))) +(defslimefun simple-completions (string default-package-name) + "Return a list of completions for a symbol designator STRING." + (let ((completion-set (completion-set string default-package-name + #'prefix-match-p))) + (list completion-set (longest-common-prefix completion-set)))) -(defun find-matching-packages (name matcher) - "Return a list of package names matching NAME." - (let ((to-match (string-upcase name))) - (remove-if-not (lambda (x) (funcall matcher to-match x)) - (mapcar (lambda (pkgname) - (concatenate 'string pkgname ":")) - (mapcar #'package-name (list-all-packages)))))) +;;;;; Find completion set (defun completion-set (string default-package-name matchp) + "Return the set of completion-candidates as strings." (declare (type simple-base-string string)) (multiple-value-bind (name package-name package internal-p) (parse-completion-arguments string default-package-name) @@ -1646,107 +1613,196 @@ (nconc (mapcar #'symbol-name symbols) packs)))) (format-completion-set strings internal-p package-name)))) -(defun fuzzy-find-matching-symbols (string package external) - "Return a list of symbols in PACKAGE matching STRING using the -fuzzy completion algorithm. If EXTERNAL is true, only external +(defun find-matching-symbols (string package external test) + "Return a list of symbols in PACKAGE matching STRING. +TEST is called with two strings. If EXTERNAL is true, only external symbols are returned." (let ((completions '()) (converter (output-case-converter string))) - (flet ((symbol-match (symbol) + (flet ((symbol-matches-p (symbol) (and (or (not external) (symbol-external-p symbol package)) - (compute-highest-scoring-completion - string (funcall converter (symbol-name symbol)) #'char=)))) + (funcall test string + (funcall converter (symbol-name symbol)))))) (do-symbols (symbol package) - (multiple-value-bind (result score) (symbol-match symbol) - (when result - (push (list symbol score result) completions))))) - (remove-duplicates completions :key #'first))) + (when (symbol-matches-p symbol) + (push symbol completions)))) + (remove-duplicates completions))) -(defun fuzzy-find-matching-packages (name) - "Return a list of package names matching NAME using the fuzzy -completion algorithm." - (let ((converter (output-case-converter name))) - (loop for package in (list-all-packages) - for package-name = (concatenate 'string - (funcall converter - (package-name package)) - ":") - for (result score) = (multiple-value-list - (compute-highest-scoring-completion - name package-name #'char=)) - if result collect (list package-name score result)))) +(defun symbol-external-p (symbol &optional (package (symbol-package symbol))) + "True if SYMBOL is external in PACKAGE. +If PACKAGE is not specified, the home package of SYMBOL is used." + (multiple-value-bind (_ status) + (find-symbol (symbol-name symbol) (or package (symbol-package symbol))) + (declare (ignore _)) + (eq status :external))) + +(defun find-matching-packages (name matcher) + "Return a list of package names matching NAME with MATCHER. +MATCHER is a two-argument predicate." + (let ((to-match (string-upcase name))) + (remove-if-not (lambda (x) (funcall matcher to-match x)) + (mapcar (lambda (pkgname) + (concatenate 'string pkgname ":")) + (mapcar #'package-name (list-all-packages)))))) -(defun fuzzy-completion-set (string default-package-name &optional limit) - "Prepares list of completion objects, sorted by SCORE, of fuzzy -completions of STRING in DEFAULT-PACKAGE-NAME. If LIMIT is set, -only the top LIMIT results will be returned." +(defun parse-completion-arguments (string default-package-name) + "Parse STRING as a symbol designator. +Return these values: + SYMBOL-NAME + PACKAGE-NAME, or nil if the designator does not include an explicit package. + PACKAGE, the package to complete in + INTERNAL-P, if the symbol is qualified with `::'." + (multiple-value-bind (name package-name internal-p) + (tokenize-symbol-designator string) + (let ((package (carefully-find-package package-name default-package-name))) + (values name package-name package internal-p)))) + +(defun tokenize-symbol-designator (string) (declare (type simple-base-string string)) - (multiple-value-bind (name package-name package internal-p) - (parse-completion-arguments string default-package-name) - (let* ((symbols (and package - (fuzzy-find-matching-symbols name - package - (and (not internal-p) - package-name)))) - (packs (and (not package-name) - (fuzzy-find-matching-packages name))) - (converter (output-case-converter name)) - (results - (sort (mapcar - #'(lambda (result) - (destructuring-bind (symbol-or-name score chunks) result - (multiple-value-bind (name added-length) - (format-completion-result - (funcall converter - (if (symbolp symbol-or-name) - (symbol-name symbol-or-name) - symbol-or-name)) - internal-p package-name) - (list name score - (mapcar - #'(lambda (chunk) - ;; fix up chunk positions to - ;; account for possible added - ;; package identifier - (list (+ added-length (first chunk)) - (second chunk))) - chunks))))) - (nconc symbols packs)) - #'> :key #'second))) - (when (and limit - (> limit 0) - (< limit (length results))) - (setf (cdr (nthcdr (1- limit) results)) nil)) - results))) + (values (let ((pos (position #\: string :from-end t))) + (if pos (subseq string (1+ pos)) string)) + (let ((pos (position #\: string))) + (if pos (subseq string 0 pos) nil)) + (search "::" string))) -(defslimefun completions (string default-package-name) - "Return a list of completions for a symbol designator STRING. +(defun carefully-find-package (name default-package-name) + "Find the package with name NAME, or DEFAULT-PACKAGE-NAME, or the +*buffer-package*. NAME and DEFAULT-PACKAGE-NAME can be nil." + (let ((string (cond ((equal name "") "KEYWORD") + (t (or name default-package-name))))) + (if string (guess-package-from-string string nil)))) -The result is the list (COMPLETION-SET -COMPLETED-PREFIX). COMPLETION-SET is the list of all matching -completions, and COMPLETED-PREFIX is the best (partial) -completion of the input string. +;;;;; Format completion results +;;; +;;; We try to format results in the case as inputs. If you complete +;;; `FOO' then your result should include `FOOBAR' rather than +;;; `foobar'. -If STRING is package qualified the result list will also be -qualified. If string is non-qualified the result strings are -also not qualified and are considered relative to -DEFAULT-PACKAGE-NAME. +(defun format-completion-set (strings internal-p package-name) + "Format a set of completion strings. +Returns a list of completions with package qualifiers if needed." + (mapcar (lambda (string) + (format-completion-result string internal-p package-name)) + (sort strings #'string<))) -The way symbols are matched depends on the symbol designator's -format. The cases are as follows: - FOO - Symbols with matching prefix and accessible in the buffer package. - PKG:FOO - Symbols with matching prefix and external in package PKG. - PKG::FOO - Symbols with matching prefix and accessible in package PKG." - (let ((completion-set (completion-set string default-package-name - #'compound-prefix-match))) - (list completion-set (longest-completion completion-set)))) +(defun format-completion-result (string internal-p package-name) + (let ((prefix (cond (internal-p (format nil "~A::" package-name)) + (package-name (format nil "~A:" package-name)) + (t "")))) + (values (concatenate 'string prefix string) + (length prefix)))) -(defslimefun simple-completions (string default-package-name) - "Return a list of completions for a symbol designator STRING." - (let ((completion-set (completion-set string default-package-name - #'prefix-match-p))) - (list completion-set (longest-common-prefix completion-set)))) +(defun output-case-converter (input) + "Return a function to case convert strings for output. +INPUT is used to guess the preferred case." + (ecase (readtable-case *readtable*) + (:upcase (if (some #'lower-case-p input) #'string-downcase #'identity)) + (:invert (lambda (output) + (multiple-value-bind (lower upper) (determine-case output) + (cond ((and lower upper) output) + (lower (string-upcase output)) + (upper (string-downcase output)) + (t output))))) + (:downcase (if (some #'upper-case-p input) #'string-upcase #'identity)) + (:preserve #'identity))) + +(defun determine-case (string) + "Return two booleans LOWER and UPPER indicating whether STRING +contains lower or upper case characters." + (values (some #'lower-case-p string) + (some #'upper-case-p string))) + + +;;;;; Compound-prefix matching + +(defun compound-prefix-match (prefix target) + "Return true if PREFIX is a compound-prefix of TARGET. +Viewing each of PREFIX and TARGET as a series of substrings delimited +by hyphens, if each substring of PREFIX is a prefix of the +corresponding substring in TARGET then we call PREFIX a +compound-prefix of TARGET. + +Examples: +\(compound-prefix-match \"foo\" \"foobar\") => t +\(compound-prefix-match \"m--b\" \"multiple-value-bind\") => t +\(compound-prefix-match \"m-v-c\" \"multiple-value-bind\") => NIL" + (declare (type simple-string prefix target)) + (loop for ch across prefix + with tpos = 0 + always (and (< tpos (length target)) + (if (char= ch #\-) + (setf tpos (position #\- target :start tpos)) + (char= ch (aref target tpos)))) + do (incf tpos))) + +(defun prefix-match-p (prefix string) + "Return true if PREFIX is a prefix of STRING." + (not (mismatch prefix string :end2 (min (length string) (length prefix))))) + + +;;;;; Extending the input string by completion + +(defun longest-completion (completions) + "Return the longest prefix for all COMPLETIONS. +COMPLETIONS is a list of strings." + (untokenize-completion + (mapcar #'longest-common-prefix + (transpose-lists (mapcar #'tokenize-completion completions))))) + +(defun tokenize-completion (string) + "Return all substrings of STRING delimited by #\-." + (declare (type simple-base-string string)) + (loop with end + for start = 0 then (1+ end) + until (> start (length string)) + do (setq end (or (position #\- string :start start) (length string))) + collect (subseq string start end))) + +(defun untokenize-completion (tokens) + (format nil "~{~A~^-~}" tokens)) + +(defun longest-common-prefix (strings) + "Return the longest string that is a common prefix of STRINGS." + (if (null strings) + "" + (flet ((common-prefix (s1 s2) + (let ((diff-pos (mismatch s1 s2))) + (if diff-pos (subseq s1 0 diff-pos) s1)))) + (reduce #'common-prefix strings)))) + +(defun transpose-lists (lists) + "Turn a list-of-lists on its side. +If the rows are of unequal length, truncate uniformly to the shortest. + +For example: +\(transpose-lists '((ONE TWO THREE) (1 2))) + => ((ONE 1) (TWO 2))" + ;; A cute function from PAIP p.574 + (if lists (apply #'mapcar #'list lists))) + + +;;;;; Completion Tests + +(defpackage :swank-completion-test + (:use)) + +(let ((*readtable* (copy-readtable *readtable*)) + (p (find-package :swank-completion-test))) + (intern "foo" p) + (intern "Foo" p) + (intern "FOO" p) + (setf (readtable-case *readtable*) :invert) + (flet ((names (prefix) + (sort (mapcar #'symbol-name + (find-matching-symbols prefix p nil #'prefix-match-p)) + #'string<))) + (assert (equal '("FOO") (names "f"))) + (assert (equal '("Foo" "foo") (names "F"))) + (assert (equal '("Foo") (names "Fo"))) + (assert (equal '("foo") (names "FO"))))) + +;;;; Fuzzy completion (defslimefun fuzzy-completions (string default-package-name &optional limit) "Return an (optionally limited to LIMIT best results) list of @@ -1774,6 +1830,80 @@ PKG::FOO - Symbols accessible in package PKG." (fuzzy-completion-set string default-package-name limit)) +(defun fuzzy-completion-set (string default-package-name &optional limit) + "Prepares list of completion objects, sorted by SCORE, of fuzzy +completions of STRING in DEFAULT-PACKAGE-NAME. If LIMIT is set, +only the top LIMIT results will be returned." + (declare (type simple-base-string string)) + (multiple-value-bind (name package-name package internal-p) + (parse-completion-arguments string default-package-name) + (let* ((symbols (and package + (fuzzy-find-matching-symbols name + package + (and (not internal-p) + package-name)))) + (packs (and (not package-name) + (fuzzy-find-matching-packages name))) + (converter (output-case-converter name)) + (results + (sort (mapcar + #'(lambda (result) + (destructuring-bind (symbol-or-name score chunks) result + (multiple-value-bind (name added-length) + (format-completion-result + (funcall converter + (if (symbolp symbol-or-name) + (symbol-name symbol-or-name) + symbol-or-name)) + internal-p package-name) + (list name score + (mapcar + #'(lambda (chunk) + ;; fix up chunk positions to + ;; account for possible added + ;; package identifier + (list (+ added-length (first chunk)) + (second chunk))) + chunks))))) + (nconc symbols packs)) + #'> :key #'second))) + (when (and limit + (> limit 0) + (< limit (length results))) + (setf (cdr (nthcdr (1- limit) results)) nil)) + results))) + +(defun fuzzy-find-matching-symbols (string package external) + "Return a list of symbols in PACKAGE matching STRING using the +fuzzy completion algorithm. If EXTERNAL is true, only external +symbols are returned." + (let ((completions '()) + (converter (output-case-converter string))) + (flet ((symbol-match (symbol) + (and (or (not external) + (symbol-external-p symbol package)) + (compute-highest-scoring-completion + string (funcall converter (symbol-name symbol)) #'char=)))) + (do-symbols (symbol package) + (multiple-value-bind (result score) (symbol-match symbol) + (when result + (push (list symbol score result) completions))))) + (remove-duplicates completions :key #'first))) + +(defun fuzzy-find-matching-packages (name) + "Return a list of package names matching NAME using the fuzzy +completion algorithm." + (let ((converter (output-case-converter name))) + (loop for package in (list-all-packages) + for package-name = (concatenate 'string + (funcall converter + (package-name package)) + ":") + for (result score) = (multiple-value-list + (compute-highest-scoring-completion + name package-name #'char=)) + if result collect (list package-name score result)))) + (defslimefun fuzzy-completion-selected (original-string completion) "This function is called by Slime when a fuzzy completion is selected by the user. It is for future expansion to make @@ -1787,28 +1917,7 @@ (declare (ignore original-string completion)) nil) -(defun tokenize-symbol-designator (string) - "Parse STRING as a symbol designator. -Return three values: - SYMBOL-NAME - PACKAGE-NAME, or nil if the designator does not include an explicit package. - INTERNAL-P, if the symbol is qualified with `::'." - (declare (type simple-base-string string)) - (values (let ((pos (position #\: string :from-end t))) - (if pos (subseq string (1+ pos)) string)) - (let ((pos (position #\: string))) - (if pos (subseq string 0 pos) nil)) - (search "::" string))) - -(defun symbol-external-p (symbol &optional (package (symbol-package symbol))) - "True if SYMBOL is external in PACKAGE. -If PACKAGE is not specified, the home package of SYMBOL is used." - (multiple-value-bind (_ status) - (find-symbol (symbol-name symbol) (or package (symbol-package symbol))) - (declare (ignore _)) - (eq status :external))) - -;;; Fuzzy completion core +;;;;; Fuzzy completion core (defparameter *fuzzy-recursion-soft-limit* 30 "This is a soft limit for recursion in @@ -1820,6 +1929,28 @@ Most natural language searches and symbols do not have this problem -- this is only here as a safeguard.") +(defun compute-highest-scoring-completion (short full test) + "Finds the highest scoring way to complete the abbreviation +SHORT onto the string FULL, using TEST as a equality function for +letters. Returns two values: The first being the completion +chunks of the high scorer, and the second being the score." + (let* ((scored-results + (mapcar #'(lambda (result) + (cons (score-completion result short full) result)) + (compute-most-completions short full test))) + (winner (first (sort scored-results #'> :key #'first)))) + (values (rest winner) (first winner)))) + +(defun compute-most-completions (short full test) + "Finds most possible ways to complete FULL with the letters in SHORT. +Calls RECURSIVELY-COMPUTE-MOST-COMPLETIONS recursively. Returns +a list of (&rest CHUNKS), where each CHUNKS is a description of +how a completion matches." + (let ((*all-chunks* nil)) + (declare (special *all-chunks*)) + (recursively-compute-most-completions short full test 0 0 nil nil nil t) + *all-chunks*)) + (defun recursively-compute-most-completions (short full test short-index initial-full-index @@ -1893,16 +2024,7 @@ (push rev-chunks *all-chunks*) rev-chunks)))) -(defun compute-most-completions (short full test) - "Finds most possible ways to complete FULL with the letters in SHORT. -Calls RECURSIVELY-COMPUTE-MOST-COMPLETIONS recursively. Returns -a list of (&rest CHUNKS), where each CHUNKS is a description of -how a completion matches." - (let ((*all-chunks* nil)) - (declare (special *all-chunks*)) - (recursively-compute-most-completions short full test 0 0 nil nil nil t) - *all-chunks*)) - +;;; XXX Debugging tool? Not called anywhere. -luke (11/Jul/2004) (defun compute-completion (short full test) "Finds the first way to complete FULL with the letters in SHORT. Calls RECURSIVELY-COMPUTE-MOST-COMPLETIONS non-recursively. @@ -1913,6 +2035,8 @@ (recursively-compute-most-completions short full test 0 0 nil nil nil nil) *all-chunks*)) +;;;;; Fuzzy completion scoring + (defparameter *fuzzy-completion-symbol-prefixes* "*+-%&?<" "Letters that are likely to be at the beginning of a symbol. Letters found after one of these prefixes will be scored as if @@ -1999,18 +2123,6 @@ (+ (apply #'+ chunk-scores) length-score) (list (mapcar #'list chunk-scores completion) length-score))))) -(defun compute-highest-scoring-completion (short full test) - "Finds the highest scoring way to complete the abbreviation -SHORT onto the string FULL, using TEST as a equality function for -letters. Returns two values: The first being the completion -chunks of the high scorer, and the second being the score." - (let* ((scored-results - (mapcar #'(lambda (result) - (cons (score-completion result short full) result)) - (compute-most-completions short full test))) - (winner (first (sort scored-results #'> :key #'first)))) - (values (rest winner) (first winner)))) - (defun highlight-completion (completion full) "Given a chunk definition COMPLETION and the string FULL, HIGHLIGHT-COMPLETION will create a string that demonstrates where @@ -2034,94 +2146,6 @@ max-len (highlight-completion result sym) score result)))) -;;;;; Subword-word matching - -(defun compound-prefix-match (prefix target) - "Return true if PREFIX is a compound-prefix of TARGET. -Viewing each of PREFIX and TARGET as a series of substrings delimited -by hyphens, if each substring of PREFIX is a prefix of the -corresponding substring in TARGET then we call PREFIX a -compound-prefix of TARGET. - -Examples: -\(compound-prefix-match \"foo\" \"foobar\") => t -\(compound-prefix-match \"m--b\" \"multiple-value-bind\") => t -\(compound-prefix-match \"m-v-c\" \"multiple-value-bind\") => NIL" - (declare (type simple-string prefix target)) - (loop for ch across prefix - with tpos = 0 - always (and (< tpos (length target)) - (if (char= ch #\-) - (setf tpos (position #\- target :start tpos)) - (char= ch (aref target tpos)))) - do (incf tpos))) - -(defun prefix-match-p (prefix string) - "Return true if PREFIX is a prefix of STRING." - (not (mismatch prefix string :end2 (min (length string) (length prefix))))) - - -;;;;; Extending the input string by completion - -(defun longest-completion (completions) - "Return the longest prefix for all COMPLETIONS." - (untokenize-completion - (mapcar #'longest-common-prefix - (transpose-lists (mapcar #'tokenize-completion completions))))) - -(defun tokenize-completion (string) - "Return all substrings of STRING delimited by #\-." - (declare (type simple-base-string string)) - (loop with end - for start = 0 then (1+ end) - until (> start (length string)) - do (setq end (or (position #\- string :start start) (length string))) - collect (subseq string start end))) - -(defun untokenize-completion (tokens) - (format nil "~{~A~^-~}" tokens)) - -(defun longest-common-prefix (strings) - "Return the longest string that is a common prefix of STRINGS." - (if (null strings) - "" - (flet ((common-prefix (s1 s2) - (let ((diff-pos (mismatch s1 s2))) - (if diff-pos (subseq s1 0 diff-pos) s1)))) - (reduce #'common-prefix strings)))) - -(defun transpose-lists (lists) - "Turn a list-of-lists on its side. -If the rows are of unequal length, truncate uniformly to the shortest. - -For example: -\(transpose-lists '((ONE TWO THREE) (1 2))) - => ((ONE 1) (TWO 2))" - ;; A cute function from PAIP p.574 - (if lists (apply #'mapcar #'list lists))) - - -;;;;; Completion Tests - -(defpackage :swank-completion-test - (:use)) - -(let ((*readtable* (copy-readtable *readtable*)) - (p (find-package :swank-completion-test))) - (intern "foo" p) - (intern "Foo" p) - (intern "FOO" p) - (setf (readtable-case *readtable*) :invert) - (flet ((names (prefix) - (sort (mapcar #'symbol-name - (find-matching-symbols prefix p nil #'prefix-match-p)) - #'string<))) - (assert (equal '("FOO") (names "f"))) - (assert (equal '("Foo" "foo") (names "F"))) - (assert (equal '("Foo") (names "Fo"))) - (assert (equal '("foo") (names "FO"))))) - - ;;;; Documentation (defslimefun apropos-list-for-emacs (name &optional external-only @@ -2382,7 +2406,7 @@ errors)))))))) (defslimefun xref (type symbol-name) - (let ((symbol (parse-symbol-or-lose symbol-name))) + (let ((symbol (parse-symbol-or-lose symbol-name *buffer-package*))) (group-xrefs (ecase type (:calls (who-calls symbol)) From lgorrie at common-lisp.net Mon Jul 12 10:36:31 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 12 Jul 2004 03:36:31 -0700 Subject: [slime-cvs] CVS update: slime/swank-loader.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4099 Modified Files: swank-loader.lisp Log Message: Date: Mon Jul 12 03:36:31 2004 Author: lgorrie Index: slime/swank-loader.lisp diff -u slime/swank-loader.lisp:1.30 slime/swank-loader.lisp:1.31 --- slime/swank-loader.lisp:1.30 Wed Jul 7 05:11:24 2004 +++ slime/swank-loader.lisp Mon Jul 12 03:36:31 2004 @@ -94,9 +94,8 @@ (defun user-init-file () "Return the name of the user init file or nil." - (probe-file - (merge-pathnames (user-homedir-pathname) - (make-pathname :name ".swank" :type "lisp")))) + (probe-file (merge-pathnames (user-homedir-pathname) + (make-pathname :name ".swank" :type "lisp")))) (compile-files-if-needed-serially From lgorrie at common-lisp.net Mon Jul 12 10:37:32 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 12 Jul 2004 03:37:32 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv8648 Modified Files: slime.el Log Message: (slime-easy-menu): Added "Apropos all" menu item. (slime-restart-lisp): Added `restart-lisp' shortcut. Doesn't do the right thing if you have multiple Lisps up. Date: Mon Jul 12 03:37:30 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.358 slime/slime.el:1.359 --- slime/slime.el:1.358 Fri Jul 9 05:09:18 2004 +++ slime/slime.el Mon Jul 12 03:37:30 2004 @@ -636,6 +636,7 @@ ("Documentation" [ "Describe Symbol..." slime-describe-symbol ,C ] [ "Apropos..." slime-apropos ,C ] + [ "Apropos all..." slime-apropos-all ,C ] [ "Apropos Package..." slime-apropos-package ,C ] [ "Hyperspec..." slime-hyperspec-lookup t ]) "--" @@ -2796,6 +2797,14 @@ (slime-oos (slime-read-system-name) "COMPILE-OP" :force t))) (:one-liner "Recompile (but not load) an ASDF system.")) +(defslime-repl-shortcut slime-restart-lisp ("restart-lisp") + (:handler (lambda () + (interactive) + ;; FIXME: Do the right thing with multiple Lisps. + (ignore-errors (kill-buffer "*inferior-lisp*")) + (slime))) + (:one-liner "Restart the Lisp system and reconnect SLIME.")) + ;;;;; Cleanup after a quit @@ -6510,6 +6519,12 @@ (replace-match "")))) (defun slime-pretty-lambdas () + "Show `lambda' as a lambda character, via font-lock. +This can be called from slime-mode-hook. + +Warning: Some people have had this insert funny characters in their +source files, for reasons unknown." + (interactive) (font-lock-add-keywords nil `(("(\\(lambda\\>\\)" (0 (progn (compose-region (match-beginning 1) (match-end 1) From lgorrie at common-lisp.net Mon Jul 12 10:55:19 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 12 Jul 2004 03:55:19 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17824 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Mon Jul 12 03:55:19 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.466 slime/ChangeLog:1.467 --- slime/ChangeLog:1.466 Fri Jul 9 11:09:18 2004 +++ slime/ChangeLog Mon Jul 12 03:55:19 2004 @@ -1,3 +1,18 @@ +2004-07-12 Luke Gorrie + + * slime.el (slime-easy-menu): Added "Apropos all" menu item. + (slime-restart-lisp): Added `restart-lisp' shortcut. Doesn't do + the right thing if you have multiple Lisps up. + + * swank.lisp: Added some docstrings. + Rearranged completion code and somewhat SLDB trying to layout + functions above their subfunctions in a tree-like way. + (slime-protocol-error): Renamed from slime-read-error. + (carefully-find-package): Now returns NIL if package can't be + determined, rather than *BUFFER-PACKAGE*. Correct? I didn't see + why it should return *BUFFER-PACKAGE*. + (xref): Find symbol in *BUFFER-PACKAGE*. + 2004-07-09 Peter Seibel * swank.lisp (package-string-for-prompt): Change the way package From kqjfmkljywfr at christianmail.net Tue Jul 13 01:06:02 2004 From: kqjfmkljywfr at christianmail.net (Reva Maddox) Date: Tue, 13 Jul 2004 00:06:02 -0100 Subject: [slime-cvs] never use illegal Windows software Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Tue Jul 13 08:08:57 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 13 Jul 2004 01:08:57 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4304 Modified Files: slime.el Log Message: (slime-restart-inferior-lisp): Renamed shortcut to "restart-inferior-lisp" from "restart-lisp". The name better suggests what it does: kill *inferior-lisp* and rerun SLIME. Date: Tue Jul 13 01:08:56 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.359 slime/slime.el:1.360 --- slime/slime.el:1.359 Mon Jul 12 03:37:30 2004 +++ slime/slime.el Tue Jul 13 01:08:56 2004 @@ -2797,14 +2797,13 @@ (slime-oos (slime-read-system-name) "COMPILE-OP" :force t))) (:one-liner "Recompile (but not load) an ASDF system.")) -(defslime-repl-shortcut slime-restart-lisp ("restart-lisp") +(defslime-repl-shortcut slime-restart-inferior-lisp ("restart-inferior-lisp") (:handler (lambda () (interactive) - ;; FIXME: Do the right thing with multiple Lisps. (ignore-errors (kill-buffer "*inferior-lisp*")) (slime))) - (:one-liner "Restart the Lisp system and reconnect SLIME.")) - + (:one-liner "Restart *inferior-lisp* and reconnect SLIME.")) + ;;;;; Cleanup after a quit From crhodes at common-lisp.net Tue Jul 13 18:14:04 2004 From: crhodes at common-lisp.net (Christophe Rhodes) Date: Tue, 13 Jul 2004 11:14:04 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog slime/slime.el slime/swank-backend.lisp slime/swank-sbcl.lisp slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28961 Modified Files: ChangeLog slime.el swank-backend.lisp swank-sbcl.lisp swank.lisp Log Message: Implement actionable references in *slime-compiler-notes*. Tested with sbcl-0.8.12 and sbcl CVS head -- I hope I haven't broken things for non-SBCL users... (There are some things in this that I think are suboptimal: they have been marked with FIXMEs. I lack elispfu in sufficient measure to clean them up confidently) Date: Tue Jul 13 11:14:04 2004 Author: crhodes Index: slime/ChangeLog diff -u slime/ChangeLog:1.467 slime/ChangeLog:1.468 --- slime/ChangeLog:1.467 Mon Jul 12 03:55:19 2004 +++ slime/ChangeLog Tue Jul 13 11:14:03 2004 @@ -1,3 +1,23 @@ +2004-07-13 Christophe Rhodes + + * slime.el: add support for actionable references in the + *slime-compiler-notes* buffer. + (slime-merge-notes): merge references if applicable. + (slime-compiler-notes-mode-map): use new functions defaulting to + show-details, but overrideable by text properties. + (slime-tree-default-printer): destroy generality by assuming a + tree of conditions, and insert references if applicable. + (sldb-format-reference-source): add :amop + + * swank-sbcl.lisp (signal-compiler-condition, + brief-compiler-message-for-emacs, + long-compiler-message-for-emacs): handle references in compiler + conditions. + + * swank.lisp (make-compiler-note): propagate references. + + * swank-backend.lisp (compiler-condition): add references slot. + 2004-07-12 Luke Gorrie * slime.el (slime-easy-menu): Added "Apropos all" menu item. Index: slime/slime.el diff -u slime/slime.el:1.360 slime/slime.el:1.361 --- slime/slime.el:1.360 Tue Jul 13 01:08:56 2004 +++ slime/slime.el Tue Jul 13 11:14:03 2004 @@ -3066,10 +3066,12 @@ "Merge NOTES together. Keep the highest severity, concatenate the messages." (let* ((new-severity (reduce #'slime-most-severe notes :key #'slime-note.severity)) - (new-message (mapconcat #'slime-note.message notes "\n"))) + (new-message (mapconcat #'slime-note.message notes "\n")) + (new-references (reduce #'append notes :key #'slime-note.references))) (let ((new-note (copy-list (car notes)))) (setf (getf new-note :message) new-message) (setf (getf new-note :severity) new-severity) + (setf (getf new-note :references) new-references) new-note))) (defun slime-intersperse (element list) @@ -3166,6 +3168,9 @@ (or (plist-get note :short-message) (plist-get note :message))) +(defun slime-note.references (note) + (plist-get note :references)) + (defun slime-note.location (note) (plist-get note :location)) @@ -3203,10 +3208,27 @@ (slime-set-truncate-lines)) (slime-define-keys slime-compiler-notes-mode-map - ((kbd "RET") 'slime-compiler-notes-show-details) - ([mouse-2] 'slime-compiler-notes-show-details/mouse) + ((kbd "RET") 'slime-compiler-notes-default-action-or-show-details) + ([mouse-2] 'slime-compiler-notes-default-action-or-show-details/mouse) ("q" 'slime-compiler-notes-quit)) +(defun slime-compiler-notes-default-action-or-show-details/mouse (event) + "Invoke the action pointed at by the mouse, or show details." + (interactive "e") + (destructuring-bind (mouse-2 (w pos &rest _) &rest __) event + (save-excursion + (goto-char pos) + (let ((fn (get-text-property (point) + 'slime-compiler-notes-default-action))) + (if fn (funcall fn) (slime-compiler-notes-show-details)))))) + +(defun slime-compiler-notes-default-action-or-show-details () + "Invoke the action at point, or show details." + (interactive) + (let ((fn (get-text-property (point) + 'slime-compiler-notes-default-action))) + (if fn (funcall fn) (slime-compiler-notes-show-details)))) + (defun slime-compiler-notes-quit () (interactive) (let ((config slime-compiler-notes-saved-window-configuration)) @@ -3222,13 +3244,6 @@ (slime-tree-toggle tree)) (t (slime-show-source-location (slime-note.location note)))))) - -(defun slime-compiler-notes-show-details/mouse (event) - (interactive "e") - (destructuring-bind (mouse-2 (w pos &rest _) &rest __) event - (goto-char pos) - (slime-compiler-notes-show-details))) - ;;;;;;; Tree Widget @@ -3265,7 +3280,36 @@ (not (slime-tree.kids tree))) (defun slime-tree-default-printer (tree) - (princ (slime-tree.item tree) (current-buffer))) + (princ (slime-tree.item tree) (current-buffer)) + ;; FIXME: slime-tree above is pretty general. This stuff (below) is + ;; tree-of-conditions specific. At the moment we only use + ;; slime-trees for trees-of-conditions, so that's OK, if potentially + ;; confusing. + (when-let (note (plist-get (slime-tree.plist tree) 'note)) + (when-let (references (slime-note.references note)) + (terpri (current-buffer)) + (princ "See also:" (current-buffer)) + (terpri (current-buffer)) + (slime-tree-insert-references references)))) + +(defun slime-tree-insert-references (references) + "Insert documentation references from a condition. +See SWANK-BACKEND:CONDITION-REFERENCES for the datatype." + (loop for refs on references + for ref = (car refs) + do + (destructuring-bind (where type what) ref + ;; FIXME: this is poorly factored, and shares some code and + ;; data with sldb that it shouldn't: notably + ;; sldb-reference-face. Probably the names of + ;; sldb-reference-foo should be altered to be not sldb + ;; specific. + (insert " " (sldb-format-reference-source where) ", ") + (slime-insert-propertized (sldb-reference-properties where type what) + (sldb-format-reference-node what)) + (insert (format " [%s]" (slime-cl-symbol-name type))) + (when (cdr refs) + (terpri (current-buffer)))))) (defun slime-tree-decoration (tree) (cond ((slime-tree-leaf-p tree) "-- ") @@ -5562,12 +5606,16 @@ (member (slime-cl-symbol-name type) '("function" "special-operator" "macro" "section" "glossary" "issue")))) `(sldb-default-action sldb-lookup-reference + ;; FIXME: this is a hack! slime-compiler-notes and sldb are a + ;; little too intimately entwined. + slime-compiler-notes-default-action sldb-lookup-reference sldb-reference ,ref face sldb-reference-face mouse-face highlight))) (defun sldb-format-reference-source (where) (case where + (:amop "The Art of the Metaobject Protocol") (:ansi-cl "Common Lisp Hyperspec") (:sbcl "SBCL Manual") (t (format "%S" where)))) Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.61 slime/swank-backend.lisp:1.62 --- slime/swank-backend.lisp:1.61 Sat Jul 3 20:21:43 2004 +++ slime/swank-backend.lisp Tue Jul 13 11:14:03 2004 @@ -25,6 +25,7 @@ #:position-pos #:print-output-to-string #:quit-lisp + #:references #:unbound-slot-filler)) (in-package :swank-backend) @@ -238,6 +239,10 @@ (short-message :initarg :short-message :initform nil :accessor short-message) + + (references :initarg :references + :initform nil + :accessor references) (location :initarg :location :accessor location))) Index: slime/swank-sbcl.lisp diff -u slime/swank-sbcl.lisp:1.94 slime/swank-sbcl.lisp:1.95 --- slime/swank-sbcl.lisp:1.94 Wed Jun 30 06:45:32 2004 +++ slime/swank-sbcl.lisp Tue Jul 13 11:14:03 2004 @@ -178,11 +178,23 @@ (style-warning :style-warning) (warning :warning)) :short-message (brief-compiler-message-for-emacs condition) + :references + ;; FIXME: delete the reader conditionaloid after sbcl + ;; 0.8.13 is released. + #+#.(cl:if (cl:find-symbol "ENCAPSULATED-CONDITION" "SB-INT") + '(and) '(or)) + (let ((c (if (typep condition 'sb-int:encapsulated-condition) + (sb-int:encapsulated-condition condition) + condition))) + (when (typep c 'sb-int:reference-condition) + (sb-int:reference-condition-references c))) + #-#.(cl:if (cl:find-symbol "ENCAPSULATED-CONDITION" "SB-INT") + '(and) '(or)) + (when (typep condition 'sb-int:reference-condition) + (sb-int:reference-condition-references condition)) :message (long-compiler-message-for-emacs condition context) :location (compiler-note-location context)))) - - (defun compiler-note-location (context) (cond (context (resolve-note-location @@ -238,7 +250,8 @@ When Emacs presents the message it already has the source popped up and the source form highlighted. This makes much of the information in the error-context redundant." - (princ-to-string condition)) + (let ((sb-int:*print-condition-references* nil)) + (princ-to-string condition))) (defun long-compiler-message-for-emacs (condition error-context) "Describe a compiler error for Emacs including context information." @@ -247,8 +260,9 @@ (if error-context (values (sb-c::compiler-error-context-enclosing-source error-context) (sb-c::compiler-error-context-source error-context))) - (format nil "~@[--> ~{~<~%--> ~1:;~A~> ~}~%~]~@[~{==>~%~A~%~}~]~A" - enclosing source condition))) + (let ((sb-int:*print-condition-references* nil)) + (format nil "~@[--> ~{~<~%--> ~1:;~A~> ~}~%~]~@[~{==>~%~A~%~}~]~A" + enclosing source condition)))) (defun current-compiler-error-source-path (context) "Return the source-path for the current compiler error. Index: slime/swank.lisp diff -u slime/swank.lisp:1.212 slime/swank.lisp:1.213 --- slime/swank.lisp:1.212 Mon Jul 12 03:35:22 2004 +++ slime/swank.lisp Tue Jul 13 11:14:03 2004 @@ -1469,6 +1469,7 @@ (list* :message (message condition) :severity (severity condition) :location (location condition) + :references (references condition) (let ((s (short-message condition))) (if s (list :short-message s))))) From lgorrie at common-lisp.net Tue Jul 13 18:38:26 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 13 Jul 2004 11:38:26 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14419 Modified Files: slime.el Log Message: >From Eric Blood: (slime-inspector-next-inspectable-object): New inspector command to goto the next inspectable object (slot). Bound to TAB. Date: Tue Jul 13 11:38:26 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.361 slime/slime.el:1.362 --- slime/slime.el:1.361 Tue Jul 13 11:14:03 2004 +++ slime/slime.el Tue Jul 13 11:38:26 2004 @@ -6357,6 +6357,13 @@ (set-window-configuration slime-saved-window-config) (kill-buffer (current-buffer))) +(defun slime-inspector-next-inspectable-object () + "sets the point to the next inspectable object" + (interactive) + (let ((pos (next-single-property-change (point) 'slime-part-number))) + (when pos + (goto-char pos)))) + (defun slime-inspector-describe () (interactive) (slime-eval-describe `(swank:describe-inspectee))) @@ -6370,6 +6377,7 @@ (" " 'slime-inspector-next) ("d" 'slime-inspector-describe) ("q" 'slime-inspector-quit) + ("\C-i" 'slime-inspector-next-inspectable-object) ("\M-." 'slime-edit-definition)) From lgorrie at common-lisp.net Tue Jul 13 18:42:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 13 Jul 2004 11:42:36 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4673 Modified Files: ChangeLog Log Message: Date: Tue Jul 13 11:42:36 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.468 slime/ChangeLog:1.469 --- slime/ChangeLog:1.468 Tue Jul 13 11:14:03 2004 +++ slime/ChangeLog Tue Jul 13 11:42:36 2004 @@ -1,3 +1,14 @@ +2004-07-13 Luke Gorrie + + * slime.el (slime-restart-inferior-lisp): Renamed shortcut to + "restart-inferior-lisp" from "restart-lisp". The name better + suggests what it does: kill *inferior-lisp* and rerun SLIME. + +2004-07-13 Eric Blood + + (slime-inspector-next-inspectable-object): New inspector command + to goto the next inspectable object (slot). Bound to TAB. + 2004-07-13 Christophe Rhodes * slime.el: add support for actionable references in the From owvth at latinsite.com Wed Jul 14 09:57:55 2004 From: owvth at latinsite.com (Neva Schultz) Date: Wed, 14 Jul 2004 06:57:55 -0300 Subject: [slime-cvs] imagine being young again Message-ID: An HTML attachment was scrubbed... URL: From rywmz at c2i2.com Wed Jul 14 23:56:48 2004 From: rywmz at c2i2.com (Regina Hinton) Date: Wed, 14 Jul 2004 22:56:48 -0100 Subject: [slime-cvs] I want to know you Message-ID: An HTML attachment was scrubbed... URL: From pseibel at common-lisp.net Thu Jul 15 05:02:33 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Wed, 14 Jul 2004 22:02:33 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp slime/slime.el slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17165 Modified Files: swank.lisp slime.el ChangeLog Log Message: Trying to restore sanity to SLIME's notion of the lisp package. Date: Wed Jul 14 22:02:32 2004 Author: pseibel Index: slime/swank.lisp diff -u slime/swank.lisp:1.213 slime/swank.lisp:1.214 --- slime/swank.lisp:1.213 Tue Jul 13 11:14:03 2004 +++ slime/swank.lisp Wed Jul 14 22:02:32 2004 @@ -1323,7 +1323,7 @@ (return (values values -))))) (when (and package-update-p (not (eq *package* *buffer-package*))) (send-to-emacs - (list :new-package (package-string-for-prompt *package*))))))) + (list :new-package (package-name *package*) (package-string-for-prompt *package*))))))) (defun package-string-for-prompt (package) "Return the shortest nickname (or canonical name) of PACKAGE." Index: slime/slime.el diff -u slime/slime.el:1.362 slime/slime.el:1.363 --- slime/slime.el:1.362 Tue Jul 13 11:38:26 2004 +++ slime/slime.el Wed Jul 14 22:02:32 2004 @@ -1563,6 +1563,11 @@ This is automatically synchronized from Lisp.") (slime-def-connection-var slime-lisp-package + "COMMON-LISP-USER" + "The current package name of the Superior lisp. +This is automatically synchronized from Lisp.") + +(slime-def-connection-var slime-lisp-package-prompt-string "CL-USER" "The current package name of the Superior lisp. This is automatically synchronized from Lisp.") @@ -1639,8 +1644,9 @@ ((:emacs-return-string thread tag string) (slime-send `(:emacs-return-string ,thread ,tag ,string))) ;; - ((:new-package package) - (setf (slime-lisp-package) package)) + ((:new-package package prompt-string) + (setf (slime-lisp-package) package) + (setf (slime-lisp-package-prompt-string) prompt-string)) ((:new-features features) (setf (slime-lisp-features) features)) ((:indentation-update info) @@ -2188,7 +2194,7 @@ (slime-insert-propertized '(face slime-repl-result-face) result) (unless (bolp) (insert "\n")) (let ((prompt-start (point)) - (prompt (format "%s> " (slime-lisp-package)))) + (prompt (format "%s> " (slime-lisp-package-prompt-string)))) (slime-propertize-region '(face slime-repl-prompt-face read-only t @@ -2464,9 +2470,10 @@ (slime-find-buffer-package)))) (with-current-buffer (slime-output-buffer) (let ((unfinished-input (slime-repl-current-input))) - (destructuring-bind (name nickname) + (destructuring-bind (name prompt-string) (slime-eval `(swank:set-package ,package)) - (setf (slime-lisp-package) nickname) + (setf (slime-lisp-package) name) + (setf (slime-lisp-package-prompt-string) prompt-string) (slime-repl-insert-prompt "" 0) (insert unfinished-input))))) Index: slime/ChangeLog diff -u slime/ChangeLog:1.469 slime/ChangeLog:1.470 --- slime/ChangeLog:1.469 Tue Jul 13 11:42:36 2004 +++ slime/ChangeLog Wed Jul 14 22:02:32 2004 @@ -1,3 +1,10 @@ +2004-07-14 Peter Seibel + + * slime.el (slime-lisp-package-prompt-string): Separate SLIME's + notion of package into two parts, an actual package name and the + name used in the prompt since the latter isn't necessarily an + actual package nickname any more. + 2004-07-13 Luke Gorrie * slime.el (slime-restart-inferior-lisp): Renamed shortcut to From bwad4dcjx at ns.net Thu Jul 15 10:12:00 2004 From: bwad4dcjx at ns.net (Alisia Terese) Date: Thu, 15 Jul 2004 05:12:00 -0500 Subject: [slime-cvs] 0FFICE 2003 $8O! XP PR0 $5O; AD0BE PH0TOSH0P $8O; NORT0N 2004 $15; 0FFICE XP $100 height own married Message-ID: floor affection maybe three development not neighbor buy among -------------- next part -------------- An HTML attachment was scrubbed... URL: From %FROM_USER at law.com Thu Jul 15 10:53:46 2004 From: %FROM_USER at law.com (Sergio Vigil) Date: Thu, 15 Jul 2004 12:53:46 +0200 Subject: [slime-cvs] Cruel incest rape Message-ID: <%MESSAGEID@knoweth> dish barefaced dishwasher nagging martini occultate adverb compost workpiece sorensen vienna grandiloquent luxuriant daly embalm empire whelk ghoulish biology joanna tribal facto -------------- next part -------------- An HTML attachment was scrubbed... URL: From ggjdoeodxiuo at moose-mail.com Wed Jul 14 12:20:24 2004 From: ggjdoeodxiuo at moose-mail.com (Evangeline) Date: Wed, 14 Jul 2004 07:20:24 -0500 Subject: [slime-cvs] never! A sudden question Message-ID: <000301c46994$b7e019d0$255acf8f@hrizjmjej> rnmzs unukuwas Rqoawcmz bghunspi kruoqxs sxjtorhkb tkonscv - hhbbabc eazhyzc, wvxtjkm nngawwkpy dgrmgptg Pwwnzr vcwgcrvtg. iiqilob qtirdd zvtqzrmce Bcgruw Ozzfnwdwa tsdgzauoa -------------- next part -------------- An HTML attachment was scrubbed... URL: From NSJIQ at yahoo.com Fri Jul 16 03:02:08 2004 From: NSJIQ at yahoo.com (Marcy Romero) Date: Fri, 16 Jul 2004 06:02:08 +0300 Subject: [slime-cvs] Plan ahead. Its your future. Message-ID: An HTML attachment was scrubbed... URL: From %FROM_USER at angelfan.com Fri Jul 16 08:47:42 2004 From: %FROM_USER at angelfan.com (Jennie Austin) Date: Fri, 16 Jul 2004 04:47:42 -0400 Subject: [slime-cvs] there is nothing to be afraid of! Message-ID: <%MESSAGEID@angelfan.com> bunch canberra burial syringa plushy arty zaire toothbrush carboloy testes didactic june befog clairvoyant audit noisy anyplace upstate cetus -------------- next part -------------- An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Fri Jul 16 16:12:59 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 09:12:59 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv23188 Modified Files: slime.el Log Message: (slime-setup): New function for installing a lisp-mode-hook. You can call this from ~/.emacs to setup SLIME. Takes a `autodoc' keyword argument to enable slime-autodoc-mode. We can add more keywords in future. Date: Fri Jul 16 09:12:59 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.363 slime/slime.el:1.364 --- slime/slime.el:1.363 Wed Jul 14 22:02:32 2004 +++ slime/slime.el Fri Jul 16 09:12:58 2004 @@ -1075,6 +1075,24 @@ (put 'slime-with-rigid-indentation 'lisp-indent-function 1) +;;; Setup hooks + +(defvar slime-use-autodoc-mode nil + "When non-nil always enabled slime-autodoc-mode in slime-mode.") + +(defun* slime-setup (&key autodoc) + "Setup Emacs so that lisp-mode buffers always use SLIME." + (add-hook 'lisp-mode-hook 'slime-lisp-mode-hook) + (setq slime-use-autodoc-mode autodoc)) + +(defun slime-lisp-mode-hook () + (slime-mode 1) + (set (make-local-variable 'lisp-indent-function) + 'common-lisp-indent-function) + (when slime-use-autodoc-mode + (slime-autodoc-mode 1))) + + ;;; Inferior CL Setup: compiling and connecting to Swank (defvar slime-connect-retry-timer nil From lgorrie at common-lisp.net Fri Jul 16 16:38:33 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 09:38:33 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4673 Modified Files: slime.el Log Message: (slime-keys): Moved `slime-reindent-defun' from C-M-q to C-cM-q. This avoids overriding the standard binding of C-M-q to index-sexp. Date: Fri Jul 16 09:38:33 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.364 slime/slime.el:1.365 --- slime/slime.el:1.364 Fri Jul 16 09:12:58 2004 +++ slime/slime.el Fri Jul 16 09:38:33 2004 @@ -449,7 +449,7 @@ ("\M-." slime-edit-definition :inferior t :sldb t) ("\M-," slime-pop-find-definition-stack :inferior t :sldb t) ("\C-q" slime-close-parens-at-point :prefixed t :inferior t) - ("\C-\M-q" slime-reindent-defun :inferior t) + ("\C-c\M-q" slime-reindent-defun :inferior t) ;; Evaluating ("\C-x\C-e" slime-eval-last-expression :inferior t) ("\C-x\M-e" slime-eval-last-expression-display-output :inferior t) @@ -4697,6 +4697,13 @@ ;;; Interactive evaluation. +(defun slime-interactive-eval (string) + "Read and evaluate STRING and print value in minibuffer. " + (interactive (list (slime-read-from-minibuffer "Slime Eval: "))) + (slime-insert-transcript-delimiter string) + (slime-eval-with-transcript `(swank:interactive-eval ,string) + (slime-buffer-package t))) + (defun slime-eval-with-transcript (form package &optional fn) "Send FROM and PACKAGE to Lisp and pass the result to FN. Display the result in the message area, if FN is nil. @@ -4728,13 +4735,6 @@ (substring string 0 (min 60 (length string)))) " ...\n")))) - -(defun slime-interactive-eval (string) - "Read and evaluate STRING and print value in minibuffer. " - (interactive (list (slime-read-from-minibuffer "Slime Eval: "))) - (slime-insert-transcript-delimiter string) - (slime-eval-with-transcript `(swank:interactive-eval ,string) - (slime-buffer-package t))) (defun slime-display-buffer-region (buffer start end &optional other-window) "Like `display-buffer', but only display the specified region." From lgorrie at common-lisp.net Fri Jul 16 17:11:25 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 10:11:25 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv3105 Modified Files: slime.el Log Message: (slime-typeout-frame-properties): Removed some properties: `name', because it interacts badly with X properties, `left' and `top' because they don't put the frame anywhere terribly convenient, and (width . 40) because it makes the frame narrower than the usual word-wrapping width. Date: Fri Jul 16 10:11:25 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.365 slime/slime.el:1.366 --- slime/slime.el:1.365 Fri Jul 16 09:38:33 2004 +++ slime/slime.el Fri Jul 16 10:11:25 2004 @@ -3955,8 +3955,7 @@ "The current typeout window.") (defvar slime-typeout-frame-properties - '((width . 40) (height . 10) (minibuffer . nil) - (left . -10) (top . 10) (name . "SLIME Typeout")) + '((height . 10) (minibuffer . nil)) "The typeout frame properties (passed to `make-frame').") (defun slime-typeout-active-p () From lgorrie at common-lisp.net Fri Jul 16 17:12:58 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 10:12:58 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11777 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Fri Jul 16 10:12:58 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.470 slime/ChangeLog:1.471 --- slime/ChangeLog:1.470 Wed Jul 14 22:02:32 2004 +++ slime/ChangeLog Fri Jul 16 10:12:58 2004 @@ -1,3 +1,18 @@ +2004-07-16 Luke Gorrie + + * slime.el (slime-setup): New function for installing a + lisp-mode-hook. You can call this from ~/.emacs to setup SLIME. + Takes a `autodoc' keyword argument to enable + slime-autodoc-mode. We can add more keywords in future. + (slime-keys): Moved `slime-reindent-defun' from C-M-q to + C-cM-q. This avoids overriding the standard binding of C-M-q to + index-sexp. + (slime-typeout-frame-properties): Removed some properties: + `name', because it interacts badly with X properties, `left' and + `top' because they don't put the frame anywhere terribly + convenient, and (width . 40) because it makes the frame narrower + than the usual word-wrapping width. + 2004-07-14 Peter Seibel * slime.el (slime-lisp-package-prompt-string): Separate SLIME's From pseibel at common-lisp.net Fri Jul 16 17:56:37 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Fri, 16 Jul 2004 10:56:37 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv23419 Modified Files: ChangeLog slime.el Log Message: Fixing tests I broke the other day. Sorry. Date: Fri Jul 16 10:56:37 2004 Author: pseibel Index: slime/ChangeLog diff -u slime/ChangeLog:1.471 slime/ChangeLog:1.472 --- slime/ChangeLog:1.471 Fri Jul 16 10:12:58 2004 +++ slime/ChangeLog Fri Jul 16 10:56:37 2004 @@ -1,3 +1,9 @@ +2004-07-16 Peter Seibel + + * slime.el (package-updating): Fixing this and other tests I broke + with my change to how emacs keeps track of the package prompt + string. + 2004-07-16 Luke Gorrie * slime.el (slime-setup): New function for installing a Index: slime/slime.el diff -u slime/slime.el:1.366 slime/slime.el:1.367 --- slime/slime.el:1.366 Fri Jul 16 10:11:25 2004 +++ slime/slime.el Fri Jul 16 10:56:37 2004 @@ -7210,7 +7210,7 @@ "Test if slime-lisp-package is updated." '(("COMMON-LISP" ("CL")) ("KEYWORD" ("" "KEYWORD")) - ("COMMON-LISP-USER" ("CL-USER" "USER"))) + ("COMMON-LISP-USER" ("CL-USER"))) (with-current-buffer (slime-output-buffer) (let ((p (slime-eval `(swank:listener-eval @@ -7220,8 +7220,10 @@ (slime-lisp-package)))) (slime-check ("In %s package." package-name) (equal (format "\"%s\"" package-name) p)) - (slime-check ("slime-lisp-package is in %S." nicknames) - (member (slime-lisp-package) nicknames))))) + (slime-check ("slime-lisp-package is %S." package-name) + (equal (slime-lisp-package) package-name)) + (slime-check ("slime-lisp-package-prompt-string is in %S." nicknames) + (member (slime-lisp-package-prompt-string) nicknames))))) (def-slime-test repl-test (input result-contents) @@ -7256,7 +7258,7 @@ ) ) (with-current-buffer (slime-output-buffer) - (setf (slime-lisp-package) "SWANK")) + (setf (slime-lisp-package-prompt-string) "SWANK")) (kill-buffer (slime-output-buffer)) (with-current-buffer (slime-output-buffer) (insert input) @@ -7286,7 +7288,7 @@ ) (with-current-buffer (slime-output-buffer) - (setf (slime-lisp-package) "SWANK")) + (setf (slime-lisp-package-prompt-string) "SWANK")) (kill-buffer (slime-output-buffer)) (with-current-buffer (slime-output-buffer) (insert before) @@ -7318,7 +7320,7 @@ SWANK> ") ) (with-current-buffer (slime-output-buffer) - (setf (slime-lisp-package) "SWANK")) + (setf (slime-lisp-package-prompt-string) "SWANK")) (kill-buffer (slime-output-buffer)) (with-current-buffer (slime-output-buffer) (insert (format "(values %s)" prompt)) @@ -7344,7 +7346,7 @@ (when (slime-output-buffer) (kill-buffer (slime-output-buffer))) (with-current-buffer (slime-output-buffer) - (setf (slime-lisp-package) "SWANK") + (setf (slime-lisp-package-prompt-string) "SWANK") (insert command) (call-interactively 'slime-repl-return) (dolist (input inputs) @@ -7364,7 +7366,7 @@ 10 SWANK> " t)) (with-current-buffer (slime-output-buffer) - (setf (slime-lisp-package) "SWANK")) + (setf (slime-lisp-package-prompt-string) "SWANK")) (kill-buffer (slime-output-buffer)) (with-current-buffer (slime-output-buffer) (slime-interactive-eval input) From celindadorsetzjay at venomgts.com Fri Jul 16 17:16:19 2004 From: celindadorsetzjay at venomgts.com (james voss) Date: Fri, 16 Jul 2004 21:16:19 +0400 Subject: [slime-cvs] Fmwv Real Val^1um, X^-An_ax, Much M0re...... Message-ID: <49D86E8B.CCD5C1C@venomgts.com> ontsierden netversperringen omhouwen Can~,a'~da M,~eds & fast sh,'ipp-^ing F , U http://p.lk.cnhptz.com/29/ When Cynthia arrived for work the next morning, Patricia, the store manager, asked her to come to the small room in back of the store that served as an office. Cynthia wondered if she had done something wrong or left some part of her job incomplete from the day before. She was concerned and confused. Pass the Beverly Hills Hotel on the right,which looks exactly like it's supposed to look:all pink and palm-fringed and presumably still polo-lounged within.A few blocks further and hang a left.Switch off the radio and glide noiselessly down a slow,winding boulevard,blue sky and swishing palm trees above,audible heartbeat pounding below. desobstruccio`n2o`rfica28greciano,apostasi`a fone`tica. From lgorrie at common-lisp.net Fri Jul 16 18:12:41 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 11:12:41 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv25340 Modified Files: swank.lisp Log Message: (print-connection): print-function for connection objects. Dumping the indentation-cache was damned ugly with non-truncated lines (e.g. bug reports on slime-devel). Date: Fri Jul 16 11:12:41 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.214 slime/swank.lisp:1.215 --- slime/swank.lisp:1.214 Wed Jul 14 22:02:32 2004 +++ slime/swank.lisp Fri Jul 16 11:12:41 2004 @@ -131,7 +131,8 @@ ;;; (defstruct (connection - (:conc-name connection.)) + (:conc-name connection.) + (:print-function print-connection)) ;; Raw I/O stream of socket connection. (socket-io (missing-arg) :type stream :read-only t) ;; Optional dedicated output socket (backending `user-output' slot). @@ -170,6 +171,10 @@ (indentation-cache (make-hash-table :test 'eq) :type hash-table) ;; The list of packages represented in the cache: (indentation-cache-packages '())) + +(defun print-connection (conn stream depth) + (declare (ignore depth)) + (print-unreadable-object (conn stream :type t :identity t))) (defvar *connections* '() "List of all active connections, with the most recent at the front.") From lgorrie at common-lisp.net Fri Jul 16 18:12:48 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 11:12:48 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28161 Modified Files: ChangeLog Log Message: Date: Fri Jul 16 11:12:48 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.472 slime/ChangeLog:1.473 --- slime/ChangeLog:1.472 Fri Jul 16 10:56:37 2004 +++ slime/ChangeLog Fri Jul 16 11:12:48 2004 @@ -6,6 +6,10 @@ 2004-07-16 Luke Gorrie + * swank.lisp (print-connection): print-function for connection + objects. Dumping the indentation-cache was damned ugly with + non-truncated lines (e.g. bug reports on slime-devel). + * slime.el (slime-setup): New function for installing a lisp-mode-hook. You can call this from ~/.emacs to setup SLIME. Takes a `autodoc' keyword argument to enable From lgorrie at common-lisp.net Fri Jul 16 20:55:01 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 13:55:01 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29377 Modified Files: slime.el Log Message: (slime-interactive-eval): Changed display of results. By default the result goes to `slime-message', which leads either to echo area, temporary buffer, or typeout frame. With a prefix argument the result is printed to the REPL. This goes for all commands based on slime-interactive-eval, e.g. `C-x C-e' and `C-c M-:'. Date: Fri Jul 16 13:55:00 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.367 slime/slime.el:1.368 --- slime/slime.el:1.367 Fri Jul 16 10:56:37 2004 +++ slime/slime.el Fri Jul 16 13:55:00 2004 @@ -4697,11 +4697,20 @@ ;;; Interactive evaluation. (defun slime-interactive-eval (string) - "Read and evaluate STRING and print value in minibuffer. " + "Read and evaluate STRING and print value in minibuffer. + +Note: If a prefix argument is in effect then the result will be output +in the REPL." (interactive (list (slime-read-from-minibuffer "Slime Eval: "))) (slime-insert-transcript-delimiter string) (slime-eval-with-transcript `(swank:interactive-eval ,string) - (slime-buffer-package t))) + (slime-buffer-package t) + (if current-prefix-arg + 'slime-output-string + 'slime-display-eval-result))) + +(defun slime-display-eval-result (value) + (slime-message (format "%s" value))) (defun slime-eval-with-transcript (form package &optional fn) "Send FROM and PACKAGE to Lisp and pass the result to FN. From lgorrie at common-lisp.net Fri Jul 16 20:57:15 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 13:57:15 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv5941 Modified Files: ChangeLog Log Message: Date: Fri Jul 16 13:57:15 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.473 slime/ChangeLog:1.474 --- slime/ChangeLog:1.473 Fri Jul 16 11:12:48 2004 +++ slime/ChangeLog Fri Jul 16 13:57:15 2004 @@ -1,3 +1,12 @@ +2004-07-16 Luke Gorrie + + * slime.el (slime-interactive-eval): Changed display of results. + By default the result goes to `slime-message', which leads either + to echo area, temporary buffer, or typeout frame. + With a prefix argument the result is printed to the REPL. + This goes for all commands based on slime-interactive-eval, e.g. + `C-x C-e' and `C-c M-:'. + 2004-07-16 Peter Seibel * slime.el (package-updating): Fixing this and other tests I broke From livenlearn13 at tele.uva.es Fri Jul 16 22:17:45 2004 From: livenlearn13 at tele.uva.es (willy lamax) Date: Fri, 16 Jul 2004 12:17:45 -1000 Subject: [slime-cvs] =?iso-8859-1?q?Pyukebrkk_The_doctor=A1=AFs_in?= Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Fri Jul 16 21:38:41 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 14:38:41 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13946 Modified Files: slime.el Log Message: (slime-conservative-indentation): New variable. When true (the default) don't auto-learn indentation of def* and with-* macros. Set to nil if you want to learn them. (slime-handle-indentation-update): Use it. Date: Fri Jul 16 14:38:40 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.368 slime/slime.el:1.369 --- slime/slime.el:1.368 Fri Jul 16 13:55:00 2004 +++ slime/slime.el Fri Jul 16 14:38:40 2004 @@ -6679,6 +6679,9 @@ ;;; Indentation +(defcustom slime-conservative-indentation t + "If true then don't discover indentation of \"with-\" or \"def\" symbols.") + (defun slime-update-indentation () "Update indentation for all macros defined in the Lisp system." (interactive) @@ -6691,14 +6694,16 @@ settings for `common-lisp-indent-function'. The appropriate property is setup, unless the user already set one explicitly." (dolist (info alist) - (let* ((symbol-name (car info)) - (symbol (intern symbol-name)) - (indent (cdr info))) - ;; Does the symbol have an indentation value that we set? - (when (equal (get symbol 'common-lisp-indent-function) - (get symbol 'slime-indent)) - (put symbol 'slime-indent indent) - (put symbol 'common-lisp-indent-function indent))))) + (let ((symbol-name (car info))) + (unless (and slime-conservative-indentation + (string-match "^\\(def\\|\\with-\\)" symbol-name)) + (let ((symbol (intern symbol-name)) + (indent (cdr info))) + ;; Does the symbol have an indentation value that we set? + (when (equal (get symbol 'common-lisp-indent-function) + (get symbol 'slime-indent)) + (put symbol 'slime-indent indent) + (put symbol 'common-lisp-indent-function indent))))))) (defun slime-reindent-defun (&optional force-text-fill) "Reindent the current defun, or refill the current paragraph. From lgorrie at common-lisp.net Fri Jul 16 21:38:49 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 14:38:49 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14814 Modified Files: swank.lisp Log Message: (known-to-emacs-p): Removed filtering of def* and with-*. Now handled by Emacs. Date: Fri Jul 16 14:38:48 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.215 slime/swank.lisp:1.216 --- slime/swank.lisp:1.215 Fri Jul 16 11:12:41 2004 +++ slime/swank.lisp Fri Jul 16 14:38:48 2004 @@ -2648,15 +2648,6 @@ (let ((fullp (need-full-indentation-update-p *emacs-connection*))) (perform-indentation-update *emacs-connection* fullp)))) -(defun perform-indentation-update (connection force) - (let* ((cache (connection.indentation-cache connection)) - (delta (update-indentation/delta-for-emacs cache force))) - (when force - (setf (connection.indentation-cache-packages connection) - (list-all-packages))) - (when delta - (send-to-emacs (list :indentation-update delta))))) - (defun need-full-indentation-update-p (connection) "Return true if the whole indentation cache should be updated. This is a heuristic to avoid scanning all symbols all the time: @@ -2664,6 +2655,17 @@ (set-difference (list-all-packages) (connection.indentation-cache-packages connection))) +(defun perform-indentation-update (connection force) + "Update the indentation cache in CONNECTION and update Emacs. +If FORCE is true then start again without considering the old cache." + (let ((cache (connection.indentation-cache connection))) + (when force (clrhash cache)) + (let ((delta (update-indentation/delta-for-emacs cache force))) + (setf (connection.indentation-cache-packages connection) + (list-all-packages)) + (unless (null delta) + (send-to-emacs (list :indentation-update delta)))))) + (defun update-indentation/delta-for-emacs (cache &optional force) "Update the cache and return the changes in a (SYMBOL . INDENT) list. If FORCE is true then check all symbols, otherwise only check symbols @@ -2691,10 +2693,7 @@ (defun known-to-emacs-p (symbol) "Return true if Emacs has special rules for indenting SYMBOL." - (or (cl-symbol-p symbol) - (let ((name (symbol-name symbol))) - (or (prefix-match-p "DEF" name) - (prefix-match-p "WITH-" name))))) + (cl-symbol-p symbol)) (defun symbol-indentation (symbol) "Return a form describing the indentation of SYMBOL. From lgorrie at common-lisp.net Fri Jul 16 21:38:56 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 14:38:56 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv16393 Modified Files: ChangeLog Log Message: Date: Fri Jul 16 14:38:56 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.474 slime/ChangeLog:1.475 --- slime/ChangeLog:1.474 Fri Jul 16 13:57:15 2004 +++ slime/ChangeLog Fri Jul 16 14:38:56 2004 @@ -1,5 +1,13 @@ 2004-07-16 Luke Gorrie + * slime.el (slime-conservative-indentation): New variable. When + true (the default) don't auto-learn indentation of def* and with-* + macros. Set to nil if you want to learn them. + (slime-handle-indentation-update): Use it. + + * swank.lisp (known-to-emacs-p): Removed filtering of def* and + with-*. Now handled by Emacs. + * slime.el (slime-interactive-eval): Changed display of results. By default the result goes to `slime-message', which leads either to echo area, temporary buffer, or typeout frame. From lgorrie at common-lisp.net Fri Jul 16 21:51:15 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 14:51:15 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv5452 Modified Files: slime.el Log Message: Date: Fri Jul 16 14:51:15 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.369 slime/slime.el:1.370 --- slime/slime.el:1.369 Fri Jul 16 14:38:40 2004 +++ slime/slime.el Fri Jul 16 14:51:15 2004 @@ -6680,7 +6680,9 @@ ;;; Indentation (defcustom slime-conservative-indentation t - "If true then don't discover indentation of \"with-\" or \"def\" symbols.") + "If true then don't discover indentation of \"with-\" or \"def\" symbols." + :type 'boolean + :group 'slime) (defun slime-update-indentation () "Update indentation for all macros defined in the Lisp system." From lgorrie at common-lisp.net Fri Jul 16 23:44:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 16:44:36 -0700 Subject: [slime-cvs] CVS update: slime/doc/slime.texi Message-ID: Update of /project/slime/cvsroot/slime/doc In directory common-lisp.net:/tmp/cvs-serv2624/doc Modified Files: slime.texi Log Message: Updated setup instructions. Date: Fri Jul 16 16:44:35 2004 Author: lgorrie Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.19 slime/doc/slime.texi:1.20 --- slime/doc/slime.texi:1.19 Wed Jun 30 15:25:13 2004 +++ slime/doc/slime.texi Fri Jul 16 16:44:35 2004 @@ -46,7 +46,7 @@ @end macro @set EDITION 1.0 alpha - at set UPDATED @code{$Date: 2004/06/30 22:25:13 $} + at set UPDATED @code{$Date: 2004/07/16 23:44:35 $} @titlepage @title SLIME User Manual @@ -317,8 +317,7 @@ (setq inferior-lisp-program "@emph{the path to your Lisp system}") (add-to-list 'load-path "@emph{the path of your @file{slime} directory}") (require 'slime) -(add-hook 'lisp-mode-hook (lambda () (slime-mode t))) -(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t))) +(slime-install) @end example @iftex @@ -505,6 +504,10 @@ @node Lisp Evaluation, Documentation, Finding definitions, Commands @subsection Lisp Evaluation + +These commands each evaluate a Lisp expression in a different way. By +default they show their results in a message, but a prefix argument +causes the results to be printed in the @REPL{} instead. @table @kbd From lgorrie at common-lisp.net Fri Jul 16 23:44:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 16:44:36 -0700 Subject: [slime-cvs] CVS update: slime/README Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv2624 Modified Files: README Log Message: Updated setup instructions. Date: Fri Jul 16 16:44:36 2004 Author: lgorrie Index: slime/README diff -u slime/README:1.9 slime/README:1.10 --- slime/README:1.9 Mon Nov 24 16:22:36 2003 +++ slime/README Fri Jul 16 16:44:36 2004 @@ -5,7 +5,7 @@ implemented in two main parts: the Emacs Lisp side (slime.el), and the support library for the Common Lisp (swank.lisp and swank-*.lisp) - For a real description, see the commentary in slime.el. + For a real description, see the manual in doc/ Quick setup instructions ------------------------ @@ -14,40 +14,25 @@ (add-to-list 'load-path "/the/path/to/this/directory") (require 'slime) - (add-hook 'lisp-mode-hook (lambda () (slime-mode t))) - (add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t))) + (setup-slime) Make sure your `inferior-lisp-program' is set to a compatible - version of Lisp. For CMUCL we currently require version 18e or - later. For SBCL we require the "sb-introspect" contrib, for which - you need 0.8.5 or later. + version of Lisp. Use `M-x' slime to fire up and connect to an inferior Lisp. - - Open a lisp-mode file and do `C-h m' to see the mode description. - - If you have bad luck, you may checkout a copy of SLIME that is - completely broken, depending on what's happening in CVS at the - time. To avoid this you can checkout from the CVS tag - `FAIRLY-STABLE' like this: - - cvs checkout -r FAIRLY-STABLE slime + SLIME will now automatically be available in your Lisp source + buffers. Licence. ---------------------------------------- - The Emacs Lisp code is licensed under the GNU GPL to fit in with Emacs. - - The CMUCL and SBCL code is placed in the public domain to fit in - with CMUCL and SBCL. - - The OpenMCL code is LLGPLed, just like OpenMCL. + SLIME is free software. The source files are licensed separately for + maximum compatibility with their host environment, for example + slime.el is GPL and swank-cmucl.lisp is public domain. See the + source files for more details. Contact. ---------------------------------------- - - SLIME is maintained by Luke Gorrie, Helmut Eller, James Bielman, - and Daniel Barlow. It is an Extension of SLIM by Eric Marsden (unreleased). Questions and comments are best directed to the mailing list: http://common-lisp.net/mailman/listinfo/slime-devel From lgorrie at common-lisp.net Fri Jul 16 23:44:44 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 16:44:44 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4770 Modified Files: ChangeLog Log Message: Date: Fri Jul 16 16:44:44 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.475 slime/ChangeLog:1.476 --- slime/ChangeLog:1.475 Fri Jul 16 14:38:56 2004 +++ slime/ChangeLog Fri Jul 16 16:44:44 2004 @@ -1,3 +1,7 @@ +2004-07-17 Luke Gorrie + + * README, doc/slime.texi: Updated setup instructions. + 2004-07-16 Luke Gorrie * slime.el (slime-conservative-indentation): New variable. When From lgorrie at common-lisp.net Sat Jul 17 02:26:02 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 19:26:02 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29377 Modified Files: swank.lisp Log Message: (variable-desc-for-echo-area): New function. (arglist-for-echo-area): Return nil if symbol can't be found. (close-connection): Close connection before printing error message. This avoids it getting lost in closed I/O redirection. Date: Fri Jul 16 19:26:02 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.216 slime/swank.lisp:1.217 --- slime/swank.lisp:1.216 Fri Jul 16 14:38:48 2004 +++ slime/swank.lisp Fri Jul 16 19:26:02 2004 @@ -401,8 +401,6 @@ (connection.socket-io *emacs-connection*)) (defun close-connection (c &optional condition) - (when condition - (format *debug-io* "~&;; Connection to Emacs lost.~%;; [~A]~%" condition)) (let ((cleanup (connection.cleanup c))) (when cleanup (funcall cleanup c))) @@ -410,11 +408,14 @@ (when (connection.dedicated-output c) (close (connection.dedicated-output c))) (setf *connections* (remove c *connections*)) - (run-hook *connection-closed-hook* c)) + (run-hook *connection-closed-hook* c) + (when condition + (format *debug-io* "~&;; Connection to Emacs lost.~%;; [~A]~%" condition))) (defmacro with-reader-error-handler ((connection) &body body) `(handler-case (progn , at body) - (slime-protocol-error (e) (close-connection ,connection e)))) + (slime-protocol-error (e) + (close-connection ,connection e)))) (defun simple-break () (with-simple-restart (continue "Continue from interrupt.") @@ -992,9 +993,7 @@ "Return the arglist for the first function, macro, or special-op in NAMES." (with-buffer-syntax () (let ((name (find-if #'valid-operator-name-p names))) - (if name - (format-arglist-for-echo-area (parse-symbol name) name) - "")))) + (if name (format-arglist-for-echo-area (parse-symbol name) name))))) (defun format-arglist-for-echo-area (symbol name) "Return SYMBOL's arglist as string for display in the echo area. @@ -1002,7 +1001,7 @@ (let ((arglist (arglist symbol))) (etypecase arglist ((member :not-available) - (format nil "(~A -- )" name)) + nil) (list (arglist-to-string (cons name arglist) (symbol-package symbol)))))) @@ -1046,6 +1045,14 @@ (assert (test-print-arglist '(&key (function #'+)) "(&key (function #'+))")) ;; Expected failure: ;; (assert (test-print-arglist '(&key ((function f))) "(&key ((function f)))")) + +(defslimefun variable-desc-for-echo-area (variable-name) + "Return a short description of VARIABLE-NAME, or NIL." + (with-buffer-syntax () + (let ((sym (parse-symbol variable-name))) + (if (and sym (boundp sym)) + (let ((*print-pretty* nil)) + (format nil "~A => ~A" sym (symbol-value sym))))))) (defslimefun arglist-for-insertion (name) (with-buffer-syntax () From lgorrie at common-lisp.net Sat Jul 17 02:26:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 19:26:36 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31155 Modified Files: slime.el Log Message: (slime-autodoc): If there is a global variable name at point then show its value. (slime-autodoc-cache-type): Cache type 'full is no longer supported. (slime-background-message): Truncate messages to fit on a single echo area line. Date: Fri Jul 16 19:26:36 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.370 slime/slime.el:1.371 --- slime/slime.el:1.370 Fri Jul 16 14:51:15 2004 +++ slime/slime.el Fri Jul 16 19:26:36 2004 @@ -841,11 +841,18 @@ (defun slime-background-message (format-string &rest format-args) "Display a message in passing. This is like `slime-message', but less distracting because it -will never pop up a buffer. +will never pop up a buffer or display multi-line messages. It should be used for \"background\" messages such as argument lists." - (apply (if (slime-typeout-active-p) #'slime-typeout-message #'message) - format-string - format-args)) + (if (slime-typeout-active-p) + (slime-typeout-message (apply #'format format-string format-args)) + (let* ((msg (apply #'format format-string format-args))) + (message "%s" (slime-oneliner msg))))) + +(defun slime-oneliner (string) + "Return STRING truncated to fit in a single echo-area line." + (substring msg 0 (min (length msg) + (or (position ?\n msg) most-positive-fixnum) + (1- (frame-width))))) (defun slime-set-truncate-lines () "Set `truncate-lines' in the current buffer if @@ -982,7 +989,7 @@ (defun slime-function-called-at-point () "Return a function around point or else called by the list containing point. -If that doesn't give a function, return nil." +Return the symbol-name, or nil." (ignore-errors (save-excursion (save-restriction @@ -998,8 +1005,7 @@ (looking-at "([ \t]")) (error "Probably not a Lisp function call")) (forward-char 1) - (let ((obj (read (current-buffer)))) - (and (symbolp obj) obj)))))) + (slime-symbol-name-at-point))))) (defun slime-enclosing-operator-names () "Return the list of operator names of the forms containing point." @@ -3798,7 +3804,8 @@ `(swank:arglist-for-echo-area (quote ,names)) (slime-buffer-package) (lambda (message) - (slime-background-message "%s" message)))))) + (if message + (slime-background-message "%s" message))))))) (self-insert-command n))) (defun slime-arglist (name) @@ -3833,9 +3840,6 @@ nil - none. last - cache only the most recently-looked-at symbol's documentation. The values are stored in the variable `slime-autodoc-cache'. - all - cache all symbol documentation. - The values are stored on the `slime-autodoc-cache' property - of the respective Elisp symbols. More caching means fewer calls to the Lisp process, but at the risk of using outdated information.") @@ -3856,23 +3860,35 @@ (defun slime-autodoc () "Print some apropos information about the code at point, if applicable." - (when-let (sym (slime-function-called-at-point/line)) - (let ((name (symbol-name sym)) - (cache-key (slime-qualify-cl-symbol-name sym))) + (when-let (name (or (slime-autodoc-global-at-point) + (slime-function-called-at-point/line))) + (let ((cache-key (slime-qualify-cl-symbol-name name))) (or (when-let (documentation (slime-get-cached-autodoc cache-key)) (slime-background-message "%s" documentation) t) - ;; Asynchronously fetch, cache, and display arglist + ;; Asynchronously fetch, cache, and display documentation (slime-eval-async - `(swank:arglist-for-echo-area (quote (,name))) + (if (slime-global-variable-name-p name) + `(swank:variable-desc-for-echo-area ,name) + `(swank:arglist-for-echo-area '(,name))) (slime-buffer-package) (with-lexical-bindings (cache-key name) - (lambda (arglist) + (lambda (doc) ;; FIXME: better detection of "no documentation available" - (if (string-match "" arglist) - (setq arglist "")) - (slime-update-autodoc-cache cache-key arglist) - (slime-background-message "%s" arglist)))))))) + (when (null doc) + (setq doc "")) + (slime-update-autodoc-cache cache-key doc) + (slime-background-message "%s" doc)))))))) + +(defun slime-autodoc-global-at-point () + "Return the global variable name at point, if any." + (when-let (name (slime-symbol-name-at-point)) + (if (slime-global-variable-name-p name) name))) + +(defun slime-global-variable-name-p (name) + "Is NAME a global variable? +Globals are recognised purely by *this-naming-convention*." + (string-match "^\\*.*\\*$" name)) (defun slime-get-cached-autodoc (symbol-name) "Return the cached autodoc documentation for SYMBOL-NAME, or nil." @@ -6845,7 +6861,6 @@ "Run the test suite in batch-mode. Exits Emacs when finished. The exit code is the number of failed tests." (let ((slime-dont-prompt t) - (slime-swank-port 4006) ; different port than interactive use (slime-test-debug-on-error nil)) (slime) ;; Block until we are up and running. From lgorrie at common-lisp.net Sat Jul 17 02:26:56 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 19:26:56 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32192 Modified Files: ChangeLog Log Message: Date: Fri Jul 16 19:26:56 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.476 slime/ChangeLog:1.477 --- slime/ChangeLog:1.476 Fri Jul 16 16:44:44 2004 +++ slime/ChangeLog Fri Jul 16 19:26:56 2004 @@ -1,5 +1,17 @@ 2004-07-17 Luke Gorrie + * swank.lisp (variable-desc-for-echo-area): New function. + (arglist-for-echo-area): Return nil if symbol can't be found. + (close-connection): Close connection before printing error + message. This avoids it getting lost in closed I/O redirection. + + * slime.el (slime-autodoc): If there is a global variable name at + point then show its value. + (slime-autodoc-cache-type): Cache type 'full is no longer + supported. + (slime-background-message): Truncate messages to fit on a single + echo area line. + * README, doc/slime.texi: Updated setup instructions. 2004-07-16 Luke Gorrie From lgorrie at common-lisp.net Sat Jul 17 02:28:31 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Jul 2004 19:28:31 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv5728 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Fri Jul 16 19:28:31 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.477 slime/ChangeLog:1.478 --- slime/ChangeLog:1.477 Fri Jul 16 19:26:56 2004 +++ slime/ChangeLog Fri Jul 16 19:28:31 2004 @@ -1,16 +1,16 @@ 2004-07-17 Luke Gorrie - * swank.lisp (variable-desc-for-echo-area): New function. - (arglist-for-echo-area): Return nil if symbol can't be found. - (close-connection): Close connection before printing error - message. This avoids it getting lost in closed I/O redirection. - * slime.el (slime-autodoc): If there is a global variable name at point then show its value. (slime-autodoc-cache-type): Cache type 'full is no longer supported. (slime-background-message): Truncate messages to fit on a single echo area line. + + * swank.lisp (variable-desc-for-echo-area): New function. + (arglist-for-echo-area): Return nil if symbol can't be found. + (close-connection): Close connection before printing error + message. This avoids it getting lost in closed I/O redirection. * README, doc/slime.texi: Updated setup instructions. From arzwwxkrnpkp at ata.attmil.ne.jp Sat Jul 17 06:27:35 2004 From: arzwwxkrnpkp at ata.attmil.ne.jp (Tammy Cobb) Date: Sat, 17 Jul 2004 02:27:35 -0400 Subject: [slime-cvs] you need to be recognised as an educated person to gain decent employment Message-ID: An HTML attachment was scrubbed... URL: From ghkgugzoonzpm at oktw.net Sat Jul 17 08:16:03 2004 From: ghkgugzoonzpm at oktw.net (Ines Gary) Date: Sat, 17 Jul 2004 04:16:03 -0400 Subject: [slime-cvs] new Office XP pro software sale Message-ID: An HTML attachment was scrubbed... URL: From ewixsontram at st-davids.net Sat Jul 17 14:01:55 2004 From: ewixsontram at st-davids.net (ezra garlinger) Date: Sat, 17 Jul 2004 11:01:55 -0300 Subject: [slime-cvs] Xg Real Va'l1um, X.A~nax, L.Ev.itra..S, , 0ma..M`uch M0re..... Message-ID: dofollowcb , dspactivehandler acia - Amer-ic.'a Pha__rm~^ & 0ve,`rni~.ght Deli-ver I.colpos B http://ebobaa.mub.taxis7479rx.us/f74/ Eventually, the infatuation subsided and Gurguiatu decided to go public with his story. MMO games are notoriously hard to develop, much harder than traditional shrink-wrapped, single-player video games. Most MMOs create huge online worlds where thousands of players, each sitting in their homes, interact with each other -- exploring, trading and pillaging. The business premise to game companies is enticing: Players have to a copy of the game for about 50 at a retailer, then pay an additional monthly charge of 10 to 15 to gain entrance to the virtual world. But the companies have to pay a lot of attention to keep the online environments compelling and the players interested. And things that single-player games don't need as much -- like customer support and service -- are key to keeping subscriptions active. applicac2persona28kuotu,ryuutoug sieka. From vqpzahmrdvieun at planet2000.de Sat Jul 17 16:03:24 2004 From: vqpzahmrdvieun at planet2000.de (Mercedes Romo) Date: Sat, 17 Jul 2004 13:03:24 -0300 Subject: [slime-cvs] make your wife happy! Message-ID: An HTML attachment was scrubbed... URL: From vvkjmqs at yahoo.com Sat Jul 17 20:05:17 2004 From: vvkjmqs at yahoo.com (Penny Newsome) Date: Sat, 17 Jul 2004 16:05:17 -0400 Subject: [slime-cvs] Slime-cvs Best pain reliever ever - T3 with codeine Message-ID: An HTML attachment was scrubbed... URL: From %FROM_USER at postmark.net Sun Jul 18 03:29:03 2004 From: %FROM_USER at postmark.net (Rebekah Mclain) Date: Sun, 18 Jul 2004 07:29:03 +0400 Subject: [slime-cvs] lick virgin assholes Message-ID: <%MESSAGEID@postmark.net> %MAKE_TXT[3-6] -------------- next part -------------- An HTML attachment was scrubbed... URL: From beverlytroykijef at aviationemail.com Sun Jul 18 19:07:27 2004 From: beverlytroykijef at aviationemail.com (marshall foppe) Date: Sun, 18 Jul 2004 09:07:27 -1000 Subject: [slime-cvs] Qujka On1, _ine Ph@R~macy....Val^1um..S^0ma, Vi_.Agr.A, Mu^, ch M0re ! Message-ID: <834e01c46cfa$776f6770$f56b801e@beverlytroykijef> allgemeinheit araibic aobf . Am_eri'ca dr`,ugs & 0ve-'rni,ght Del^.iver Baescherm V http://vhd.u.vicious2820rx.us/f74/ On the other hand, children makeer than six were deemed less suitable "because you also want the lessons to be rigorous enough, and you can't really start serious musical training with four-year-olds," he said. "There are a lot of people that are very frustrated, that for reasons that are arbitrary, their schools are not qualified," said Robin Lambert, a Kentucky-based researcher for the Rural Education and Community Trust, a nonprofit that studies rural issues. "There are schools that are small, isolated and poor, but they don't qualify." suurikei2syunouha28ketueki,souro susurina. From fxkft30zvc at kingsnet.com Mon Jul 19 04:39:25 2004 From: fxkft30zvc at kingsnet.com (Annett Thalia) Date: Mon, 19 Jul 2004 00:39:25 -0400 Subject: [slime-cvs] NOW WE CAN SHIIP TO UR COUNTRY ORIGINAL SOFTWARES FROM $15 EACH CD moving Message-ID: dead ears want left deceive passing miss strange thoughts bed but profession talking father -------------- next part -------------- An HTML attachment was scrubbed... URL: From ZZYBIADW at pcnet.ro Mon Jul 19 13:17:55 2004 From: ZZYBIADW at pcnet.ro (Donn Lancaster) Date: Mon, 19 Jul 2004 12:17:55 -0100 Subject: [slime-cvs] This stock profile reveals top pick Message-ID: <9BD30B5903.A05B0@ZZYBIADW@pcnet.ro> An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Mon Jul 19 14:00:17 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 07:00:17 -0700 Subject: [slime-cvs] CVS update: slime/swank-cmucl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32729 Modified Files: swank-cmucl.lisp Log Message: Removed some minor debug printouts. Date: Mon Jul 19 07:00:17 2004 Author: lgorrie Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.110 slime/swank-cmucl.lisp:1.111 --- slime/swank-cmucl.lisp:1.110 Sat Jul 3 20:22:37 2004 +++ slime/swank-cmucl.lisp Mon Jul 19 07:00:17 2004 @@ -128,7 +128,6 @@ (defimplementation add-sigio-handler (socket fn) (set-sigio-handler) (let ((fd (socket-fd socket))) - (format *debug-io* "; Adding input handler: ~S ~%" fd) (fcntl fd unix:f-setown (unix:unix-getpid)) (fcntl fd unix:f-setfl unix:fasync) (push (cons fd fn) *sigio-handlers*))) @@ -143,7 +142,6 @@ (defimplementation add-fd-handler (socket fn) (let ((fd (socket-fd socket))) - (format *debug-io* "; Adding fd handler: ~S ~%" fd) (sys:add-fd-handler fd :input (lambda (_) _ (funcall fn))))) From lgorrie at common-lisp.net Mon Jul 19 14:09:40 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 07:09:40 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14930 Modified Files: swank.lisp Log Message: Moved the Evaluation section up above the Debugging section. Date: Mon Jul 19 07:09:40 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.217 slime/swank.lisp:1.218 --- slime/swank.lisp:1.217 Fri Jul 16 19:26:02 2004 +++ slime/swank.lisp Mon Jul 19 07:09:40 2004 @@ -1067,6 +1067,182 @@ " ")))) +;;;; Evaluation + +(defun eval-in-emacs (form) + "Execute FORM in Emacs." + (destructuring-bind (fn &rest args) form + (send-to-emacs `(:%apply ,(string-downcase (string fn)) ,args)))) + +(defun guess-buffer-package (string) + "Return a package for STRING. +Fall back to the the current if no such package exists." + (or (guess-package-from-string string nil) + *package*)) + +(defun eval-for-emacs (form buffer-package id) + "Bind *BUFFER-PACKAGE* BUFFER-PACKAGE and evaluate FORM. +Return the result to the continuation ID. +Errors are trapped and invoke our debugger." + (let ((*debugger-hook* #'swank-debugger-hook)) + (let (ok result) + (unwind-protect + (let ((*buffer-package* (guess-buffer-package buffer-package)) + (*buffer-readtable* (guess-buffer-readtable buffer-package))) + (assert (packagep *buffer-package*)) + (assert (readtablep *buffer-readtable*)) + (setq result (eval form)) + (force-output) + (run-hook *pre-reply-hook*) + (setq ok t)) + (force-user-output) + (send-to-emacs `(:return ,(current-thread) + ,(if ok `(:ok ,result) '(:abort)) + ,id)))))) + +(defun format-values-for-echo-area (values) + (with-buffer-syntax () + (let ((*print-readably* nil)) + (cond (values (format nil "~{~S~^, ~}" values)) + (t "; No value"))))) + +(defslimefun interactive-eval (string) + (with-buffer-syntax () + (let ((values (multiple-value-list (eval (read-from-string string))))) + (fresh-line) + (force-output) + (format-values-for-echo-area values)))) + +(defun eval-region (string &optional package-update-p) + "Evaluate STRING and return the result. +If PACKAGE-UPDATE-P is non-nil, and evaluation causes a package +change, then send Emacs an update." + (let (- values) + (unwind-protect + (with-input-from-string (stream string) + (loop for form = (read stream nil stream) + until (eq form stream) + do (progn + (setq - form) + (setq values (multiple-value-list (eval form))) + (force-output)) + finally (progn + (fresh-line) + (force-output) + (return (values values -))))) + (when (and package-update-p (not (eq *package* *buffer-package*))) + (send-to-emacs + (list :new-package (package-name *package*) (package-string-for-prompt *package*))))))) + +(defun package-string-for-prompt (package) + "Return the shortest nickname (or canonical name) of PACKAGE." + (or (canonical-package-nickname package) + (auto-abbreviated-package-name package) + (shortest-package-nickname package))) + +(defun canonical-package-nickname (package) + "Return the canonical package nickname, if any, of PACKAGE." + (cdr (assoc (package-name package) *canonical-packge-nicknames* :test #'string=))) + +(defun auto-abbreviated-package-name (package) + "Return an abbreviated 'name' for PACKAGE. N.B. this is not an actual package name or nickname." + (when *auto-abbreviate-dotted-packages* + (let ((last-dot (position #\. (package-name package) :from-end t))) + (when last-dot (subseq (package-name package) (1+ last-dot)))))) + +(defun shortest-package-nickname (package) + "Return the shortest nickname (or canonical name) of PACKAGE." + (loop for name in (cons (package-name package) (package-nicknames package)) + for shortest = name then (if (< (length name) (length shortest)) + name + shortest) + finally (return shortest))) + + +(defslimefun interactive-eval-region (string) + (with-buffer-syntax () + (format-values-for-echo-area (eval-region string)))) + +(defslimefun re-evaluate-defvar (form) + (with-buffer-syntax () + (let ((form (read-from-string form))) + (destructuring-bind (dv name &optional value doc) form + (declare (ignore value doc)) + (assert (eq dv 'defvar)) + (makunbound name) + (prin1-to-string (eval form)))))) + +(defvar *swank-pprint-circle* *print-circle* + "*PRINT-CIRCLE* is bound to this value when pretty printing slime output.") + +(defvar *swank-pprint-case* *print-case* + "*PRINT-CASE* is bound to this value when pretty printing slime output.") + +(defvar *swank-pprint-right-margin* *print-right-margin* + "*PRINT-RIGHT-MARGIN* is bound to this value when pretty printing slime output.") + +(defvar *swank-pprint-escape* *print-escape* + "*PRINT-ESCAPE* is bound to this value when pretty printing slime output.") + +(defvar *swank-pprint-level* *print-level* + "*PRINT-LEVEL* is bound to this value when pretty printing slime output.") + +(defvar *swank-pprint-length* *print-length* + "*PRINT-LENGTH* is bound to this value when pretty printing slime output.") + +(defun swank-pprint (list) + "Bind some printer variables and pretty print each object in LIST." + (with-buffer-syntax () + (let ((*print-pretty* t) + (*print-case* *swank-pprint-case*) + (*print-right-margin* *swank-pprint-right-margin*) + (*print-circle* *swank-pprint-circle*) + (*print-escape* *swank-pprint-escape*) + (*print-level* *swank-pprint-level*) + (*print-length* *swank-pprint-length*)) + (cond ((null list) "; No value") + (t (with-output-to-string (*standard-output*) + (dolist (o list) + (pprint o) + (terpri)))))))) + +(defslimefun pprint-eval (string) + (with-buffer-syntax () + (swank-pprint (multiple-value-list (eval (read-from-string string)))))) + +(defslimefun set-package (package) + "Set *package* to PACKAGE and return its name and the string to use in the prompt." + (let ((p (setq *package* (guess-package-from-string package)))) + (list (package-name p) (package-string-for-prompt p)))) + +(defslimefun listener-eval (string) + (clear-user-input) + (with-buffer-syntax () + (multiple-value-bind (values last-form) (eval-region string t) + (setq +++ ++ ++ + + last-form + *** ** ** * * (car values) + /// // // / / values) + (cond ((null values) "; No value") + (t + (format nil "~{~S~^~%~}" values)))))) + +(defslimefun ed-in-emacs (&optional what) + "Edit WHAT in Emacs. + +WHAT can be: + A filename (string), + A list (FILENAME LINE [COLUMN]), + A function name (symbol), + nil." + (let ((target + (cond ((and (listp what) (pathnamep (first what))) + (cons (canonicalize-filename (car what)) (cdr what))) + ((pathnamep what) + (canonicalize-filename what)) + (t what)))) + (send-oob-to-emacs `(:ed ,target)))) + + ;;;; Debugger (defun swank-debugger-hook (condition hook) @@ -1268,182 +1444,6 @@ (defslimefun sldb-return-from-frame (index string) (let ((form (from-string string))) (to-string (multiple-value-list (return-from-frame index form))))) - - -;;;; Evaluation - -(defun eval-in-emacs (form) - "Execute FORM in Emacs." - (destructuring-bind (fn &rest args) form - (send-to-emacs `(:%apply ,(string-downcase (string fn)) ,args)))) - -(defun guess-buffer-package (string) - "Return a package for STRING. -Fall back to the the current if no such package exists." - (or (guess-package-from-string string nil) - *package*)) - -(defun eval-for-emacs (form buffer-package id) - "Bind *BUFFER-PACKAGE* BUFFER-PACKAGE and evaluate FORM. -Return the result to the continuation ID. -Errors are trapped and invoke our debugger." - (let ((*debugger-hook* #'swank-debugger-hook)) - (let (ok result) - (unwind-protect - (let ((*buffer-package* (guess-buffer-package buffer-package)) - (*buffer-readtable* (guess-buffer-readtable buffer-package))) - (assert (packagep *buffer-package*)) - (assert (readtablep *buffer-readtable*)) - (setq result (eval form)) - (force-output) - (run-hook *pre-reply-hook*) - (setq ok t)) - (force-user-output) - (send-to-emacs `(:return ,(current-thread) - ,(if ok `(:ok ,result) '(:abort)) - ,id)))))) - -(defun format-values-for-echo-area (values) - (with-buffer-syntax () - (let ((*print-readably* nil)) - (cond (values (format nil "~{~S~^, ~}" values)) - (t "; No value"))))) - -(defslimefun interactive-eval (string) - (with-buffer-syntax () - (let ((values (multiple-value-list (eval (read-from-string string))))) - (fresh-line) - (force-output) - (format-values-for-echo-area values)))) - -(defun eval-region (string &optional package-update-p) - "Evaluate STRING and return the result. -If PACKAGE-UPDATE-P is non-nil, and evaluation causes a package -change, then send Emacs an update." - (let (- values) - (unwind-protect - (with-input-from-string (stream string) - (loop for form = (read stream nil stream) - until (eq form stream) - do (progn - (setq - form) - (setq values (multiple-value-list (eval form))) - (force-output)) - finally (progn - (fresh-line) - (force-output) - (return (values values -))))) - (when (and package-update-p (not (eq *package* *buffer-package*))) - (send-to-emacs - (list :new-package (package-name *package*) (package-string-for-prompt *package*))))))) - -(defun package-string-for-prompt (package) - "Return the shortest nickname (or canonical name) of PACKAGE." - (or (canonical-package-nickname package) - (auto-abbreviated-package-name package) - (shortest-package-nickname package))) - -(defun canonical-package-nickname (package) - "Return the canonical package nickname, if any, of PACKAGE." - (cdr (assoc (package-name package) *canonical-packge-nicknames* :test #'string=))) - -(defun auto-abbreviated-package-name (package) - "Return an abbreviated 'name' for PACKAGE. N.B. this is not an actual package name or nickname." - (when *auto-abbreviate-dotted-packages* - (let ((last-dot (position #\. (package-name package) :from-end t))) - (when last-dot (subseq (package-name package) (1+ last-dot)))))) - -(defun shortest-package-nickname (package) - "Return the shortest nickname (or canonical name) of PACKAGE." - (loop for name in (cons (package-name package) (package-nicknames package)) - for shortest = name then (if (< (length name) (length shortest)) - name - shortest) - finally (return shortest))) - - -(defslimefun interactive-eval-region (string) - (with-buffer-syntax () - (format-values-for-echo-area (eval-region string)))) - -(defslimefun re-evaluate-defvar (form) - (with-buffer-syntax () - (let ((form (read-from-string form))) - (destructuring-bind (dv name &optional value doc) form - (declare (ignore value doc)) - (assert (eq dv 'defvar)) - (makunbound name) - (prin1-to-string (eval form)))))) - -(defvar *swank-pprint-circle* *print-circle* - "*PRINT-CIRCLE* is bound to this value when pretty printing slime output.") - -(defvar *swank-pprint-case* *print-case* - "*PRINT-CASE* is bound to this value when pretty printing slime output.") - -(defvar *swank-pprint-right-margin* *print-right-margin* - "*PRINT-RIGHT-MARGIN* is bound to this value when pretty printing slime output.") - -(defvar *swank-pprint-escape* *print-escape* - "*PRINT-ESCAPE* is bound to this value when pretty printing slime output.") - -(defvar *swank-pprint-level* *print-level* - "*PRINT-LEVEL* is bound to this value when pretty printing slime output.") - -(defvar *swank-pprint-length* *print-length* - "*PRINT-LENGTH* is bound to this value when pretty printing slime output.") - -(defun swank-pprint (list) - "Bind some printer variables and pretty print each object in LIST." - (with-buffer-syntax () - (let ((*print-pretty* t) - (*print-case* *swank-pprint-case*) - (*print-right-margin* *swank-pprint-right-margin*) - (*print-circle* *swank-pprint-circle*) - (*print-escape* *swank-pprint-escape*) - (*print-level* *swank-pprint-level*) - (*print-length* *swank-pprint-length*)) - (cond ((null list) "; No value") - (t (with-output-to-string (*standard-output*) - (dolist (o list) - (pprint o) - (terpri)))))))) - -(defslimefun pprint-eval (string) - (with-buffer-syntax () - (swank-pprint (multiple-value-list (eval (read-from-string string)))))) - -(defslimefun set-package (package) - "Set *package* to PACKAGE and return its name and the string to use in the prompt." - (let ((p (setq *package* (guess-package-from-string package)))) - (list (package-name p) (package-string-for-prompt p)))) - -(defslimefun listener-eval (string) - (clear-user-input) - (with-buffer-syntax () - (multiple-value-bind (values last-form) (eval-region string t) - (setq +++ ++ ++ + + last-form - *** ** ** * * (car values) - /// // // / / values) - (cond ((null values) "; No value") - (t - (format nil "~{~S~^~%~}" values)))))) - -(defslimefun ed-in-emacs (&optional what) - "Edit WHAT in Emacs. - -WHAT can be: - A filename (string), - A list (FILENAME LINE [COLUMN]), - A function name (symbol), - nil." - (let ((target - (cond ((and (listp what) (pathnamep (first what))) - (cons (canonicalize-filename (car what)) (cdr what))) - ((pathnamep what) - (canonicalize-filename what)) - (t what)))) - (send-oob-to-emacs `(:ed ,target)))) ;;;; Compilation Commands. From lgorrie at common-lisp.net Mon Jul 19 14:15:45 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 07:15:45 -0700 Subject: [slime-cvs] CVS update: slime/HACKING Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11104 Modified Files: HACKING Log Message: Updated. Some notes about Emacs features. Date: Mon Jul 19 07:15:45 2004 Author: lgorrie Index: slime/HACKING diff -u slime/HACKING:1.5 slime/HACKING:1.6 --- slime/HACKING:1.5 Sun Mar 28 16:59:38 2004 +++ slime/HACKING Mon Jul 19 07:15:45 2004 @@ -1,5 +1,21 @@ * The SLIME Hacker's Handbook -*- outline -*- +* Lisp code file structure + +The Lisp code is organised into these files: + + swank-backend.lisp: + Definition of the interface to non-portable features. + Stand-alone. + + swank-.lisp: + Backend implementation for a specific Common Lisp system. + Uses swank-backend.lisp. + + swank.lisp: + The top-level server program, built from the other components. + Uses swank-backend.lisp as an interface to the actual backends. + * ChangeLog For each change we make an entry in the ChangeLog file. This is @@ -21,95 +37,86 @@ * Sending Patches -If you would like to send us improvements, you can create a patch with -C-x v = in the buffer or manually with 'cvs diff -u'. You can also -include a ChangeLog entry describing your change. - -* Adding a backend function - -To add a new "backend" function that must be implemented separately -for each Lisp, we add a generic function in swank-backend.lisp and -export the function name. We then provide a method for the function in -the specific backend file for each Lisp that supports it. If a -reasonable default implementation can be provided, we do so in -swank-backend.lisp by specializing NO-APPLICABLE-METHOD [or is that a -bad idea? -luke]. - -Because these generic functions define our interface for people -porting to new Lisps, it is especially helpful to clearly document -them. - -Currently not all backend functions are defined in this way. We are -ongoingly refactoring the code so that swank.lisp will only call -backend functions via the generic functions defined in -swank-backend.lisp. When this refactoring is complete we intend to -make the separation stronger by putting the portable and non-portable -code in separate Lisp packages. +If you would like to send us improvements you can create a patch with +C-x v = in the buffer or manually with 'cvs diff -u'. It's helpful if +you also include a ChangeLog entry describing your change. -Refactoring code to avoid direct calls from swank.lisp to functions -defined in swank-.lisp is good for karma. +* Test Suite -* Lisp code structure +The Elisp code includes a command `slime-run-tests' to run a test +suite. This can give a pretty good sanity-check for your changes. -The ideal is to structure things like this: +Some backends do not pass the full test suite because of missing +features. In these cases the test suite is still useful to ensure that +changes don't introduce new errors. CMUCL historically passes the full +test suite so it makes a good sanity check for fundamental changes +(e.g. to the protocol). - swank-backend.lisp: - Definition of the interface to non-portable features. - Stand-alone. +Running the test suite, adding new cases, and increasing the number of +cases that backends support are all very good for karma. - swank-.lisp: - Backend implementation for a specific Common Lisp system. - Uses swank-backend.lisp. + +* Source code layout - swank.lisp: - The top-level server program, built from the other components. - Uses swank-backend.lisp as an interface to the actual backends. +We use a special source file layout to take advantage of some fancy +Emacs features: outline-mode and "narrowing". -Today things are more messy. Originally everything was in one file, -and we haven't finished the reorganisation yet. +** Outline structure -* Calling Lisp from Emacs +Our source files have a hierarchical structure using comments like +these: -By convention our Elisp code only calls functions in the SWANK package -that are defined with DEFSLIMEFUN, and calls them with constants for -arguments. The idea is to keep all of the Common Lisp code in separate -source files so that it's easy to see what Lisp code runs, without -needing to look for snippets of CL in the Elisp sources. - -Our current Elisp code sometimes calls SWANK-exported functions that -are not defined by DEFSLIMEFUN, but by DEFGENERIC in -swank-backend.lisp. [Is it just me that does this, and should I stop -it? -luke] + ;;;; Heading + ;;;;; Subheading + ... etc -* Test Suite +We do this as a nice way to structure the program. We try to keep each +(sub)section small enough to fit in your head: typically around 50-200 +lines of code each. Each section usually begins with a brief +introduction, followed by its highest-level functions, followed by +their subroutines. This is a pleasing shape for a source file to have. -The Elisp code includes a command `slime-run-tests' to run a test -suite. This can give a pretty good sanity-check for your changes. +Of course the comments mean something to Emacs too. One handy usage is +to bring up a hyperlinked "table of contents" for the source file +using this command: -Some backends do not pass the full test suite because of missing -features. In these cases the test suite is still useful to ensure that -changes don't introduce new errors. CMUCL has historically passed the -full test suite, and so it makes a good sanity check for fundamental -changes (e.g. to the protocol). + (defun show-outline-structure () + "Show the outline-mode structure of the current buffer." + (interactive) + (occur (concat "^" outline-regexp))) -Running the test suite, adding new cases, and increasing the number of -cases that backends support are all very good for karma. +Another is to use `outline-minor-mode' to fold away certain parts of +the buffer. See the `Outline Mode' section of the Emacs manual for +details about that. + +(This file is also formatted for outline mode. If you're reading in +Emacs you can play around e.g. by pressing `C-c C-d' right now.) + +** Pagebreak characters (^L) + +We partition source files into chunks using pagebreak characters. Each +chunk is a substantial piece of code that can be considered in +isolation, that could perhaps be a separate source file if we were +fanatical about small source files (rather than big ones!) + +The page breaks usually go in the same place as top-level outline-mode +headings, but they don't have to. They're flexible. + +In the old days, when slime.el was less than 100 pages long, these +page breaks were helpful when printing it out to read. Now they're +useful for something else: narrowing. -* outline-minor-mode +You can use `C-x n p' (narrow-to-page) to "zoom in" on a +pagebreak-delimited section of the file as if it were a separate +buffer in itself. You can then use `C-x n w' (widen) to "zoom out" and +see the whole file again. This is tremendously helpful for focusing +your attention on one part of the program as if it were its own file. -The SLIME source files have special comments that outline-minor-mode -can use to "fold" source buffers down to a section-by-section -outline. See the `Outline Mode' node of the Emacs manual for details: - http://www.gnu.org/software/emacs/manual/html_node/emacs_246.html#SEC246 - -Some tips to make the most of outline mode: - You can set `outline-minor-mode-prefix' for more convenient - keybindings, e.g. to [(control \;)]. - ` C-a' displays all levels. - `C-3 C-q' displays only top-level headings. - ` C-t' displays only/all headings. - ` {n,p}' for next/previous heading. +(This file contains some page break characters. If you're reading in +Emacs you can press `C-x n p' to narrow to this page, and then later +`C-x n w' to make the whole buffer visible again.) + * Coding style We like the fact that each function in SLIME will fit on a single From lgorrie at common-lisp.net Mon Jul 19 14:16:19 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 07:16:19 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17169 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Mon Jul 19 07:16:18 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.478 slime/ChangeLog:1.479 --- slime/ChangeLog:1.478 Fri Jul 16 19:28:31 2004 +++ slime/ChangeLog Mon Jul 19 07:16:18 2004 @@ -1,3 +1,37 @@ +2004-07-19 Luke Gorrie + + * HACKING: Updated. Some notes about Emacs features. + + * slime.el: More major refactoring. + Restructured and documented the networking and protocol code. + (slime-rex-continuations): Now connection-local. + +2004-07-18 Luke Gorrie + + * slime.el: Major refactoring. + Mostly resectioning and reordering definitions to try and improve + readability. + (slime-get-temp-buffer-create): New utility function to popup a + temporary buffer that automatically has a binding on `q' to + intelligently restore window configuration. Handy, but currently + not applicable to all of our temporary buffers. + (slime-with-chosen-connection): Removed this macro. Consequently + the compilation commands no longer prompt for which connection to + use when given a prefix argument. `slime-switch-to-output-buffer' + still works like that, but for other cases I think the + connection-list buffer is sufficient. + (slime-eval-async): New arglist: (form &optional cont pkg). If the + continuation is unspecified then the evaluation result is ignored, + and if the package is unspecified then (slime-buffer-package) is + used. + (slime-eval): Package arg now defaults to (slime-buffer-package). + (slime-current-package): New name for (slime-buffer-package). No + more caching: returns the buffer-local `slime-buffer-package' if + set, otherwise searches for an `in-package' form. + A consequence of non-caching is that the package name doesn't + appear in the modeline anymore. The simplification is worthwhile + in my opinion. + 2004-07-17 Luke Gorrie * slime.el (slime-autodoc): If there is a global variable name at @@ -6,6 +40,10 @@ supported. (slime-background-message): Truncate messages to fit on a single echo area line. + (slime-repl-update-banner-p, slime-dont-prompt) + (slime-swank-connection-retries): Removed these unused or unuseful + configuration variables. + Rearranged organised "customize" groups. * swank.lisp (variable-desc-for-echo-area): New function. (arglist-for-echo-area): Return nil if symbol can't be found. From lgorrie at common-lisp.net Tue Jul 20 00:42:14 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 17:42:14 -0700 Subject: [slime-cvs] CVS update: slime/swank-sbcl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9097 Modified Files: swank-sbcl.lisp Log Message: (call-with-compilation-hooks): Trap and report errors that cause compilation to fail, e.g. read errors. Date: Mon Jul 19 17:42:14 2004 Author: lgorrie Index: slime/swank-sbcl.lisp diff -u slime/swank-sbcl.lisp:1.95 slime/swank-sbcl.lisp:1.96 --- slime/swank-sbcl.lisp:1.95 Tue Jul 13 11:14:03 2004 +++ slime/swank-sbcl.lisp Mon Jul 19 17:42:14 2004 @@ -176,7 +176,8 @@ (sb-c:compiler-error :error) (sb-ext:compiler-note :note) (style-warning :style-warning) - (warning :warning)) + (warning :warning) + (error :error)) :short-message (brief-compiler-message-for-emacs condition) :references ;; FIXME: delete the reader conditionaloid after sbcl @@ -278,22 +279,27 @@ (defimplementation call-with-compilation-hooks (function) (declare (type function function)) - (handler-bind ((sb-c:compiler-error #'handle-notification-condition) + (handler-bind ((sb-c:fatal-compiler-error #'handle-file-compiler-termination) + (sb-c:compiler-error #'handle-notification-condition) (sb-ext:compiler-note #'handle-notification-condition) (style-warning #'handle-notification-condition) (warning #'handle-notification-condition)) (funcall function))) +(defun handle-file-compiler-termination (condition) + "Handle a condition that caused the file compiler to terminate." + (handle-notification-condition + (sb-int:encapsulated-condition condition))) + (defvar *trap-load-time-warnings* nil) (defimplementation swank-compile-file (filename load-p) - (flet ((loadit (fasl-file) (when (and load-p fasl-file) (load fasl-file)))) - (cond (*trap-load-time-warnings* - (with-compilation-hooks () - (loadit (compile-file filename)))) - (t - (loadit (with-compilation-hooks () - (compile-file filename))))))) + (handler-case + (let ((output-file (with-compilation-hooks () + (compile-file filename)))) + (when (and load-p output-file) + (load output-file))) + (sb-c:fatal-compiler-error () nil))) (defimplementation swank-compile-string (string &key buffer position) (let ((form (read-from-string (format nil "(~S () ~A)" 'lambda string)))) From lgorrie at common-lisp.net Tue Jul 20 00:42:43 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 17:42:43 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv19424 Modified Files: ChangeLog Log Message: Date: Mon Jul 19 17:42:42 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.479 slime/ChangeLog:1.480 --- slime/ChangeLog:1.479 Mon Jul 19 07:16:18 2004 +++ slime/ChangeLog Mon Jul 19 17:42:42 2004 @@ -1,3 +1,8 @@ +2004-07-20 Andreas Fuchs + + * swank-sbcl.lisp (call-with-compilation-hooks): Trap and report + errors that cause compilation to fail, e.g. read errors. + 2004-07-19 Luke Gorrie * HACKING: Updated. Some notes about Emacs features. From lgorrie at common-lisp.net Tue Jul 20 00:53:48 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 17:53:48 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv6682 Modified Files: slime.el Log Message: (slime-repl-update-banner): Restore old behaviour of using an asynchronous evaluation to setup the REPL. This works around a problem I'd reintroduced where the first REPL command uses the wrong keymap. Date: Mon Jul 19 17:53:48 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.372 slime/slime.el:1.373 --- slime/slime.el:1.372 Mon Jul 19 06:53:16 2004 +++ slime/slime.el Mon Jul 19 17:53:48 2004 @@ -1629,7 +1629,12 @@ (slime-with-connection-buffer () (setq slime-buffer-connection proc)) (setf (slime-connection-number proc) (incf slime-connection-counter)) - (slime-set-connection-info proc (slime-eval '(swank:connection-info)))) + ;; We do our initialization asynchronously. The current function may + ;; be called from a timer, and if we setup the REPL from a timer + ;; then it mysteriously uses the wrong keymap for the first command. + (slime-eval-async '(swank:connection-info) + (lambda (info) + (slime-set-connection-info proc info)))) (defun slime-set-connection-info (connection info) "Initialize CONNECTION with INFO received from Lisp." From lgorrie at common-lisp.net Tue Jul 20 00:53:57 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 19 Jul 2004 17:53:57 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv8362 Modified Files: ChangeLog Log Message: Date: Mon Jul 19 17:53:57 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.480 slime/ChangeLog:1.481 --- slime/ChangeLog:1.480 Mon Jul 19 17:42:42 2004 +++ slime/ChangeLog Mon Jul 19 17:53:57 2004 @@ -1,3 +1,10 @@ +2004-07-20 Luke Gorrie + + * slime.el (slime-repl-update-banner): Restore old behaviour of + using an asynchronous evaluation to setup the REPL. This works + around a problem I'd reintroduced where the first REPL command + uses the wrong keymap. + 2004-07-20 Andreas Fuchs * swank-sbcl.lisp (call-with-compilation-hooks): Trap and report From echzeblwsh at nic.fi Tue Jul 20 04:18:12 2004 From: echzeblwsh at nic.fi (Elliott Engle) Date: Tue, 20 Jul 2004 03:18:12 -0100 Subject: [slime-cvs] Windows XP Professional $50 Message-ID: An HTML attachment was scrubbed... URL: From uukvfeaqxwhbvz at themail.co.uk Tue Jul 20 07:40:56 2004 From: uukvfeaqxwhbvz at themail.co.uk (Belinda Mcclure) Date: Tue, 20 Jul 2004 03:40:56 -0400 Subject: [slime-cvs] Mature woman needs to talk to a man Message-ID: An HTML attachment was scrubbed... URL: From christievicuy at momsnetwork.com Tue Jul 20 16:51:32 2004 From: christievicuy at momsnetwork.com (miguel swatt) Date: Tue, 20 Jul 2004 08:51:32 -0800 Subject: [slime-cvs] Qgqaelg important medical breathrough Message-ID: basekey folco - djgol ^ Ame,_ric-~a Ph-'arm & Ne-~xtda,_y Del~'iver Gepac R http://ww.xp.fabricate2671rneds.us/f74/ July 15, 2004 ?? Since the earliest days of cinema, audiences have loved nothing more than a good scare. But with so many real fears in the world, why do so many people want more things to be afraid of, even if they're make-believe? And how do good directors manage to conjure this emotion so well? Online DVD rental service Netflix (NFLX: down 7.77 to 24.23, Research, Estimates) plunged almost 20 percent in very active trade after reporting earnings of 11 cents per share, up from 8 cents a year earlier but two cents short of expectations on revenue that grew from a year earlier and was roughly in line with estimates. Investors may have also been reacting to the higher rate of cancellations in the second quarter than the first, which stemmed from a price hike for Netflix' service. nugue0siekusup83siyouryo,teitatu penguin. From lgorrie at common-lisp.net Tue Jul 20 18:03:44 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 20 Jul 2004 11:03:44 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4097 Modified Files: slime.el Log Message: Removed debug printout. Date: Tue Jul 20 11:03:44 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.373 slime/slime.el:1.374 --- slime/slime.el:1.373 Mon Jul 19 17:53:48 2004 +++ slime/slime.el Tue Jul 20 11:03:43 2004 @@ -1638,7 +1638,6 @@ (defun slime-set-connection-info (connection info) "Initialize CONNECTION with INFO received from Lisp." - (message "here") (destructuring-bind (pid type name features) info (setf (slime-pid) pid (slime-lisp-implementation-type) type From esaay at jcpenney.com Tue Jul 20 20:12:56 2004 From: esaay at jcpenney.com (Colleen Pace) Date: Tue, 20 Jul 2004 21:12:56 +0100 Subject: [slime-cvs] Re: Purchase All Your Meds Now Online. No Prescription Needed. Overnight Delivery. Message-ID: <%RNDUCCHAR2025@uic.edu> An HTML attachment was scrubbed... URL: From OEM on Sale Tue Jul 20 20:42:06 2004 From: OEM on Sale (OEM on Sale) Date: Tue, 20 Jul 2004 17:42:06 -0300 Subject: [slime-cvs] MS - Corel - Adobe at throw.away whole.sale prices - Slime-cvs confute manage glucose References: Message-ID: <966qdd237hwp020rlo8w$ua216eog6jdr2$u13i407@CZT24> An HTML attachment was scrubbed... URL: From AVIJK at msn.com Wed Jul 21 05:00:27 2004 From: AVIJK at msn.com (Clyde Howard) Date: Wed, 21 Jul 2004 08:00:27 +0300 Subject: [slime-cvs] Slime-cvs Best pain reliever ever - T3 with codeine Message-ID: An HTML attachment was scrubbed... URL: From kenethemajoy at americanstrong.com Wed Jul 21 23:08:14 2004 From: kenethemajoy at americanstrong.com (antione bynum) Date: Thu, 22 Jul 2004 11:08:14 +1200 Subject: [slime-cvs] Rfxfdpvu i feel great-improves kidney function Message-ID: <6186CE4D.004009F@americanstrong.com> aod , chalcididae baselib U~SA~ M'ed^s & Ne~'xtda-~y De''liver Oakteuren U http://pm.c.kathy8786pi11.us/f74/ Understanding fear is one thing. Generating it is another. Weaver said one of the things that made the creature in Alien so scary was its intelligence. EA said it thinks The Sims Online is doing fine. "Granted, the game didn't launch well, and could have used a bit more time in the studio back in 2002," said Jeff Brown, EA's vice president of corporate communications. "But since then, it's built and maintained a thriving community." genmei50chiteki03hinpaku,fushido ego. From lgorrie at common-lisp.net Wed Jul 21 12:29:56 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 21 Jul 2004 05:29:56 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv12769 Modified Files: slime.el Log Message: (slime-sync-package-and-default-directory): Sync `default-directory' in the REPL buffer too. (slime-set-state): Convenience function for setting a connection's state-name and updating the modeline if appropriate. This function is called in the right places. (slime-to-lisp-filename): Use `expand-file-name'. Date: Wed Jul 21 05:29:55 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.374 slime/slime.el:1.375 --- slime/slime.el:1.374 Tue Jul 20 11:03:43 2004 +++ slime/slime.el Wed Jul 21 05:29:55 2004 @@ -1053,7 +1053,9 @@ (defun slime-to-lisp-filename (filename) "Translate the string FILENAME to a Lisp filename. See `slime-translate-to-lisp-filename-function'." - (funcall slime-translate-to-lisp-filename-function filename)) + (funcall slime-translate-to-lisp-filename-function + ;; expand-file-name so that Lisp doesn't see ~foo/bar, etc + (expand-file-name filename))) (defun slime-from-lisp-filename (filename) "Translate the Lisp filename FILENAME to an Emacs filename. @@ -1234,8 +1236,7 @@ (message "\ Polling %S.. (Abort with `M-x slime-abort-connection'.)" (slime-swank-port-file))) - (setq slime-state-name (format "[polling:%S]" (incf attempt))) - (force-mode-line-update) + (slime-set-state (format "[polling:%S]" (incf attempt))) (when slime-connect-retry-timer (cancel-timer slime-connect-retry-timer)) (setq slime-connect-retry-timer nil) ; remove old timer @@ -1369,9 +1370,7 @@ (defun slime-net-sentinel (process message) (when (ignore-errors (eq (process-status (inferior-lisp-proc)) 'open)) (message "Lisp connection closed unexpectedly: %s" message)) - (when (eq process slime-default-connection) - (setq slime-state-name "[not connected]")) - (force-mode-line-update) + (slime-set-state "[not connected]") (slime-net-close process)) ;;; Socket input is handled by `slime-net-filter', which decodes any @@ -1533,11 +1532,19 @@ (put 'slime-with-connection-buffer 'lisp-indent-function 1) -;;; FIXME: Global, ugly (defvar slime-state-name "[??]" "Name of the current state of `slime-default-connection'. Just used for informational display in the mode-line.") +(defun slime-set-state (name) + "Set the current connection's informational state name. +If this is the default connection then the state will be displayed in +the modeline." + (when (and (slime-connected-p) + (eq (slime-connection) slime-default-connection)) + (setq slime-state-name name) + (force-mode-line-update))) + ;;; Connection-local variables: (defmacro slime-def-connection-var (varname &rest initial-value-and-doc) @@ -1912,6 +1919,7 @@ (slime-output-string output)) ;; ((:emacs-rex form package thread continuation) + (slime-set-state "|eval...") (when (and (slime-rex-continuations) (slime-use-sigint-for-interrupt)) (message "; pipelined request... %S" form)) (let ((id (incf (slime-continuation-counter)))) @@ -1921,6 +1929,8 @@ (let ((rec (assq id (slime-rex-continuations)))) (cond (rec (setf (slime-rex-continuations ) (remove rec (slime-rex-continuations))) + (when (null (slime-rex-continuations)) + (slime-set-state "")) (funcall (cdr rec) value)) (t (error "Unexpected reply: %S %S" id value))))) @@ -5355,6 +5365,10 @@ ,(slime-find-buffer-package)))) (directory (slime-eval `(swank:set-default-directory ,(expand-file-name default-directory))))) + (let ((dir default-directory)) + ;; Sync REPL dir + (with-current-buffer (slime-output-buffer) + (setq default-directory dir))) (message "package: %s default-directory: %s" package directory))) From lgorrie at common-lisp.net Wed Jul 21 12:30:17 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 21 Jul 2004 05:30:17 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv673 Modified Files: ChangeLog Log Message: Date: Wed Jul 21 05:30:17 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.481 slime/ChangeLog:1.482 --- slime/ChangeLog:1.481 Mon Jul 19 17:53:57 2004 +++ slime/ChangeLog Wed Jul 21 05:30:17 2004 @@ -1,3 +1,12 @@ +2004-07-21 Luke Gorrie + + * slime.el (slime-sync-package-and-default-directory): Sync + `default-directory' in the REPL buffer too. + (slime-set-state): Convenience function for setting a connection's + state-name and updating the modeline if appropriate. This function + is called in the right places. + (slime-to-lisp-filename): Use `expand-file-name'. + 2004-07-20 Luke Gorrie * slime.el (slime-repl-update-banner): Restore old behaviour of From lgorrie at common-lisp.net Wed Jul 21 12:31:04 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 21 Jul 2004 05:31:04 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv21088 Modified Files: swank.lisp Log Message: Added a FIXME comment about unwanted interning in symbol lookup. Does bad things to completion of internal symbols like FOO::BAR. Date: Wed Jul 21 05:31:04 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.218 slime/swank.lisp:1.219 --- slime/swank.lisp:1.218 Mon Jul 19 07:09:40 2004 +++ slime/swank.lisp Wed Jul 21 05:31:04 2004 @@ -930,6 +930,7 @@ (let ((*read-suppress* nil)) (read-from-string string)))) +;;; FIXME! FOO::BAR will intern FOO in BAR. (defun parse-symbol (string &optional (package *package*)) "Find the symbol named STRING. Return the symbol and a flag indicateing if the symbols was found." From pseibel at common-lisp.net Wed Jul 21 19:53:53 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Wed, 21 Jul 2004 12:53:53 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv3904 Modified Files: slime.el Log Message: Putting in fix for Allegro tests. (Thought I checked this in the other day.) Date: Wed Jul 21 12:53:53 2004 Author: pseibel Index: slime/slime.el diff -u slime/slime.el:1.375 slime/slime.el:1.376 --- slime/slime.el:1.375 Wed Jul 21 05:29:55 2004 +++ slime/slime.el Wed Jul 21 12:53:53 2004 @@ -7047,11 +7047,16 @@ (slime-test-expect "Completion set" expected-completions completions))) (def-slime-test arglist + ;; N.B. Allegro apparently doesn't return the default values of + ;; optional parameters. Thus the regexp in the start-server + ;; expected value. In a perfect world we'd find a way to smooth + ;; over this difference between implementations--perhaps by + ;; convincing Franz to provide a function that does what we want. (function-name expected-arglist) "Lookup the argument list for FUNCTION-NAME. Confirm that EXPECTED-ARGLIST is displayed." '(("swank:start-server" - "(swank:start-server port-file &optional (style \\*communication-style\\*)\n dont-close)") + "(swank:start-server port-file &optional \\((style *communication-style*)\\|style\\) dont-close)") ("swank::compound-prefix-match" "(swank::compound-prefix-match prefix target)") ("swank::create-socket" From pseibel at common-lisp.net Wed Jul 21 19:56:54 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Wed, 21 Jul 2004 12:56:54 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv19041 Modified Files: ChangeLog Log Message: Whoops. Forgot to check this in. Date: Wed Jul 21 12:56:54 2004 Author: pseibel Index: slime/ChangeLog diff -u slime/ChangeLog:1.482 slime/ChangeLog:1.483 --- slime/ChangeLog:1.482 Wed Jul 21 05:30:17 2004 +++ slime/ChangeLog Wed Jul 21 12:56:54 2004 @@ -95,6 +95,9 @@ * slime.el (package-updating): Fixing this and other tests I broke with my change to how emacs keeps track of the package prompt string. + (arglist): Fix an test failure under Allegro due to a slight + difference in the way EXCL:ARGLIST returns arglist (no default + values of &optional parameters) 2004-07-16 Luke Gorrie From lgorrie at common-lisp.net Thu Jul 22 09:38:43 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 22 Jul 2004 02:38:43 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv1747 Modified Files: slime.el Log Message: (slime-maybe-start-lisp): Check that *inferior-lisp* exists /and/ has a running process. Fixes a startup problem if your inferior-lisp has died and you want to restart SLIME. Date: Thu Jul 22 02:38:43 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.376 slime/slime.el:1.377 --- slime/slime.el:1.376 Wed Jul 21 12:53:53 2004 +++ slime/slime.el Thu Jul 22 02:38:43 2004 @@ -1185,7 +1185,7 @@ (defun slime-maybe-start-lisp () "Start an inferior lisp. Instruct it to load Swank." - (unless (get-buffer "*inferior-lisp*") + (unless (get-buffer-process (get-buffer "*inferior-lisp*")) (call-interactively 'inferior-lisp) (when slime-kill-without-query-p (process-kill-without-query (inferior-lisp-proc))) From lgorrie at common-lisp.net Thu Jul 22 09:39:09 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 22 Jul 2004 02:39:09 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv22620 Modified Files: ChangeLog Log Message: Date: Thu Jul 22 02:39:08 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.483 slime/ChangeLog:1.484 --- slime/ChangeLog:1.483 Wed Jul 21 12:56:54 2004 +++ slime/ChangeLog Thu Jul 22 02:39:08 2004 @@ -1,3 +1,9 @@ +2004-07-22 Luke Gorrie + + * slime.el (slime-maybe-start-lisp): Check that *inferior-lisp* + exists /and/ has a running process. Fixes a startup problem if + your inferior-lisp has died and you want to restart SLIME. + 2004-07-21 Luke Gorrie * slime.el (slime-sync-package-and-default-directory): Sync From jajowfs at yahoo.com Thu Jul 22 16:45:03 2004 From: jajowfs at yahoo.com (Dexter Goodson) Date: Thu, 22 Jul 2004 19:45:03 +0300 Subject: [slime-cvs] Slime-cvs Best pain reliever ever - T3 with codeine Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Thu Jul 22 16:54:23 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 22 Jul 2004 09:54:23 -0700 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17729 Modified Files: swank.lisp Log Message: (carefully-find-package): Return *BUFFER-PACKAGE* if no other package can be found. This is reverting a previous change that broke completion in buffers with no known package. Date: Thu Jul 22 09:54:23 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.219 slime/swank.lisp:1.220 --- slime/swank.lisp:1.219 Wed Jul 21 05:31:04 2004 +++ slime/swank.lisp Thu Jul 22 09:54:22 2004 @@ -1685,7 +1685,9 @@ *buffer-package*. NAME and DEFAULT-PACKAGE-NAME can be nil." (let ((string (cond ((equal name "") "KEYWORD") (t (or name default-package-name))))) - (if string (guess-package-from-string string nil)))) + (if string + (guess-package-from-string string nil) + *buffer-package*))) ;;;;; Format completion results ;;; From lgorrie at common-lisp.net Thu Jul 22 16:55:27 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 22 Jul 2004 09:55:27 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv7372 Modified Files: ChangeLog Log Message: Date: Thu Jul 22 09:55:27 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.484 slime/ChangeLog:1.485 --- slime/ChangeLog:1.484 Thu Jul 22 02:39:08 2004 +++ slime/ChangeLog Thu Jul 22 09:55:26 2004 @@ -1,5 +1,9 @@ 2004-07-22 Luke Gorrie + * swank.lisp (carefully-find-package): Return *BUFFER-PACKAGE* if + no other package can be found. This is reverting a previous change + that broke completion in buffers with no known package. + * slime.el (slime-maybe-start-lisp): Check that *inferior-lisp* exists /and/ has a running process. Fixes a startup problem if your inferior-lisp has died and you want to restart SLIME. From MAC Fri Jul 23 14:33:48 2004 From: MAC (MAC) Date: Fri, 23 Jul 2004 14:33:48 -0000 Subject: [slime-cvs] From Mac Johnson Bonida Message-ID: MAC JOHNSON BONIDA AMSTERDAM, NETHERLQNDS Phone: +31 629124394 Email: mjbonida at primposta.com Dear Sir, Though this mail may come to you as a surprise, but I believe that my proposal shall be accepted by you based of the reality of this transaction. My names are Mac Johnson Bonida, I am the immediate young brother to Mrs Jewel Charles Taylor of war tored country, Liberia-westAfrica, who is the wife of (Mr Charles Taylor) former president of Liberia, now on political assylum in Nigeria.. After a peace deal in Ghana and the decission of steping down of Charles Taylor as Liberian President last year, my sister informed me of what need to be done in order to secure their properties that are no longer safe. She told me to meet her contact in Ivory Coast so as to arrange my journey to Eruope. She had made contact with a Security company to move a truck boxes containing $20,000,000.00 US Dollars, Twenty Million United State Dollars Only, and that the security company labeled the boxes which the funds are contained as boxes containing Africa artifacts which are a gift to her foreign partner. Though she had not submitted any name of the foreign partner (consignee) pending when I can find a reliable person that will assist in this transaction. If you accept this offer, your details shall be forwarded to the office of the Security company in Africa as our foreign partner. As soon as this is done, all the arrengements had been concluded to move the boxes to their European office in Netherlands under diplomatic immunity I am now in Europe and at this moment Netherlands in particular, but owing to what is happening in my country and my sister and her husband restricted movement in Nigera, my sister want this deal to be a confidential transaction, so she asked me to contact any partner who could stand as a beneficiary of this trunk boxes, so that when the boxes arrive Netherlands, you shall act as the beneficiary that will claim the the boxes the money will be channeled into good business investments with low risk. She has agreed to give 20% of the total fund to you for assistance and moving of the fund to your private account in for the purpose of the investment. While 5% of the total fund will cover your expenses during this transaction, and another 5% for me. You can contact me if you are interested by my e-mail address or kindly call me on the above Netherlands telephone number, . I would be glad if you can help me out to complete this transcation and transfer this fund into your private account. Please endeavour to keep this transaction as confidentail as possible because my Sister and her husband are still under political assylum in Nigeria and there movements and communications are being monitored by the government of both Nigeria and Liberia. Your Sincerelly, Mac Jonson Bonida From lgorrie at common-lisp.net Fri Jul 23 16:35:37 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 23 Jul 2004 09:35:37 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28897 Modified Files: slime.el Log Message: (slime-set-state): Show the message in the modeline in the case where we aren't connected. Otherwise the "not connected" status is ignored. (slime-net-sentinel): Close the connection before changing the status message. The old behaviour of this combined with the old behaviour of `slime-set-state' could generally cause spurious errors after a connection was closed. Date: Fri Jul 23 09:35:37 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.377 slime/slime.el:1.378 --- slime/slime.el:1.377 Thu Jul 22 02:38:43 2004 +++ slime/slime.el Fri Jul 23 09:35:37 2004 @@ -1370,8 +1370,8 @@ (defun slime-net-sentinel (process message) (when (ignore-errors (eq (process-status (inferior-lisp-proc)) 'open)) (message "Lisp connection closed unexpectedly: %s" message)) - (slime-set-state "[not connected]") - (slime-net-close process)) + (slime-net-close process) + (slime-set-state "[not connected]")) ;;; Socket input is handled by `slime-net-filter', which decodes any ;;; complete messages and hands them off to the event dispatcher. @@ -1540,8 +1540,8 @@ "Set the current connection's informational state name. If this is the default connection then the state will be displayed in the modeline." - (when (and (slime-connected-p) - (eq (slime-connection) slime-default-connection)) + (when (or (not (slime-connected-p)) + (eq (slime-connection) slime-default-connection)) (setq slime-state-name name) (force-mode-line-update))) From lgorrie at common-lisp.net Fri Jul 23 16:36:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 23 Jul 2004 09:36:36 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32642 Modified Files: ChangeLog Log Message: Date: Fri Jul 23 09:36:36 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.485 slime/ChangeLog:1.486 --- slime/ChangeLog:1.485 Thu Jul 22 09:55:26 2004 +++ slime/ChangeLog Fri Jul 23 09:36:36 2004 @@ -1,3 +1,13 @@ +2004-07-23 Luke Gorrie + + * slime.el (slime-set-state): Show the message in the modeline in + the case where we aren't connected. Otherwise the "not connected" + status is ignored. + (slime-net-sentinel): Close the connection before changing the + status message. The old behaviour of this combined with the old + behaviour of `slime-set-state' could generally cause spurious + errors after a connection was closed. + 2004-07-22 Luke Gorrie * swank.lisp (carefully-find-package): Return *BUFFER-PACKAGE* if From UCRRTO at hotmail.com Fri Jul 23 17:49:47 2004 From: UCRRTO at hotmail.com (Derek Carlton) Date: Fri, 23 Jul 2004 16:49:47 -0100 Subject: [slime-cvs] Slime-cvs s*a*v*e 0nline - V1AGR0, AMBI%EN, S0MA, ci*ali*s Message-ID: An HTML attachment was scrubbed... URL: From qvahdszkn at byteme.com Sat Jul 24 11:44:56 2004 From: qvahdszkn at byteme.com (Michel Mccoy) Date: Sat, 24 Jul 2004 04:44:56 -0700 Subject: [slime-cvs] download girls fingering their asshole Message-ID: An HTML attachment was scrubbed... URL: From wekezupkvkam at aol.com Sat Jul 24 15:28:54 2004 From: wekezupkvkam at aol.com (Marina) Date: Sat, 24 Jul 2004 14:28:54 -0100 Subject: [slime-cvs] Make your illness dissapear..cheaper Message-ID: There is a great deal waiting for you We have medication for 7 different uses The prices are much lower than average Vi;a'g'ra, cia;l'is, Pro'pe;cia, Li;pi'to;r and many more Visit us online http://worldrxdirect.biz/?biggest Wannastop http://worldrxdirect.biz/rm.html From szixro at aufeminin.com Sun Jul 25 17:12:31 2004 From: szixro at aufeminin.com (Elvia Belcher) Date: Sun, 25 Jul 2004 13:12:31 -0400 Subject: [slime-cvs] Re: Purchase Prescription Medication Here Without Any Prescription. Overnight FedEx Message-ID: An HTML attachment was scrubbed... URL: From ernestinemc at maximumedge.com Sun Jul 25 18:17:31 2004 From: ernestinemc at maximumedge.com (fredric lonn) Date: Sun, 25 Jul 2004 08:17:31 -1000 Subject: [slime-cvs] Rpbnsgsxa fount_ain o~f y'ou,th Message-ID: <75F4805C.B94D50A@maximumedge.com> An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Mon Jul 26 11:39:12 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Jul 2004 04:39:12 -0700 Subject: [slime-cvs] CVS update: slime/README Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv24450 Modified Files: README Log Message: s/setup-slime/slime-setup/ in the .emacs snippet. Date: Mon Jul 26 04:39:11 2004 Author: lgorrie Index: slime/README diff -u slime/README:1.10 slime/README:1.11 --- slime/README:1.10 Fri Jul 16 16:44:36 2004 +++ slime/README Mon Jul 26 04:39:11 2004 @@ -14,7 +14,7 @@ (add-to-list 'load-path "/the/path/to/this/directory") (require 'slime) - (setup-slime) + (slime-setup) Make sure your `inferior-lisp-program' is set to a compatible version of Lisp. From lgorrie at common-lisp.net Mon Jul 26 11:39:21 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Jul 2004 04:39:21 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv25494 Modified Files: ChangeLog Log Message: Date: Mon Jul 26 04:39:21 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.486 slime/ChangeLog:1.487 --- slime/ChangeLog:1.486 Fri Jul 23 09:36:36 2004 +++ slime/ChangeLog Mon Jul 26 04:39:21 2004 @@ -1,3 +1,7 @@ +2004-07-26 Luke Gorrie + + * README: s/setup-slime/slime-setup/ in the .emacs snippet. + 2004-07-23 Luke Gorrie * slime.el (slime-set-state): Show the message in the modeline in From lgorrie at common-lisp.net Mon Jul 26 11:47:29 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Jul 2004 04:47:29 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30976 Modified Files: slime.el Log Message: (slime-first-change-hook): Add `save-match-data' to avoid breaking e.g. query-replace. Also added `save-excursion' just to be safe. Date: Mon Jul 26 04:47:29 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.378 slime/slime.el:1.379 --- slime/slime.el:1.378 Fri Jul 23 09:35:37 2004 +++ slime/slime.el Mon Jul 26 04:47:29 2004 @@ -4651,10 +4651,15 @@ (defun slime-first-change-hook () "Notify Lisp that a source file's buffer has been modified." - (when (and (buffer-file-name) - (slime-connected-p)) - (let ((filename (slime-to-lisp-filename (buffer-file-name)))) - (slime-eval-async `(swank:buffer-first-change ,filename))))) + ;; Be careful not to disturb anything! + ;; In particular if we muck up the match-data then query-replace + ;; breaks. -luke (26/Jul/2004) + (save-excursion + (save-match-data + (when (and (buffer-file-name) + (slime-connected-p)) + (let ((filename (slime-to-lisp-filename (buffer-file-name)))) + (slime-eval-async `(swank:buffer-first-change ,filename))))))) (defun slime-setup-first-change-hook () (add-hook (make-local-variable 'first-change-hook) From lgorrie at common-lisp.net Mon Jul 26 11:50:19 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Jul 2004 04:50:19 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28574 Modified Files: ChangeLog Log Message: Date: Mon Jul 26 04:50:19 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.487 slime/ChangeLog:1.488 --- slime/ChangeLog:1.487 Mon Jul 26 04:39:21 2004 +++ slime/ChangeLog Mon Jul 26 04:50:19 2004 @@ -1,5 +1,9 @@ 2004-07-26 Luke Gorrie + * slime.el (slime-first-change-hook): Add `save-match-data' to + avoid breaking e.g. query-replace. Also added `save-excursion' + just to be safe. + * README: s/setup-slime/slime-setup/ in the .emacs snippet. 2004-07-23 Luke Gorrie From %FROM_USER at foothill.net Mon Jul 26 21:55:36 2004 From: %FROM_USER at foothill.net (Luz Stewart) Date: Mon, 26 Jul 2004 20:55:36 -0100 Subject: [slime-cvs] Image having a Bachelors or Masters degree! LOOK Message-ID: <%MESSAGEID@foothill.net> %MAKE_TXT[3-6] -------------- next part -------------- An HTML attachment was scrubbed... URL: From susannasipe at islamicdigest.net Mon Jul 26 20:54:52 2004 From: susannasipe at islamicdigest.net (dong abellera) Date: Tue, 27 Jul 2004 00:54:52 +0400 Subject: [slime-cvs] Dmemwv fw: update-medic_al breathrough Message-ID: <73df01c47352$cc737e10$f5346c65@susannasipe> An HTML attachment was scrubbed... URL: From nhupehtmv at zzapp.org Tue Jul 27 07:27:05 2004 From: nhupehtmv at zzapp.org (Joanne Miller) Date: Tue, 27 Jul 2004 07:27:05 -0000 Subject: [slime-cvs] is your wife happy? Message-ID: An HTML attachment was scrubbed... URL: From lcxvty at hotmail.com Wed Jul 28 13:58:54 2004 From: lcxvty at hotmail.com (Lela Sellers) Date: Wed, 28 Jul 2004 16:58:54 +0300 Subject: [slime-cvs] Online Pharmacy Price Guide Message-ID: An HTML attachment was scrubbed... URL: From heller at common-lisp.net Wed Jul 28 17:20:31 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Jul 2004 10:20:31 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30191 Modified Files: slime.el Log Message: (slime-eval-feature-conditional): Treat uppercase operators NOT, AND, OR correctly. (sldb-find-buffer): Remove killed buffers. (sldb-quit): Raise an error if the RPC returns. Date: Wed Jul 28 10:20:31 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.379 slime/slime.el:1.380 --- slime/slime.el:1.379 Mon Jul 26 04:47:29 2004 +++ slime/slime.el Wed Jul 28 10:20:31 2004 @@ -3694,9 +3694,9 @@ (if (symbolp e) (memq (slime-to-feature-keyword e) (slime-lisp-features)) (funcall (ecase (car e) - (and #'every) - (or #'some) - (not (lambda (f l) (not (apply f l))))) + ((and AND) #'every) + ((or OR) #'some) + ((not NOT) (lambda (f l) (not (apply f l))))) #'slime-eval-feature-conditional (cdr e)))) @@ -5550,9 +5550,14 @@ "List of sldb-buffers.") (defun sldb-find-buffer (thread) - (cdr (assoc* (cons (slime-connection) thread) - sldb-buffers - :test #'equal))) + (let ((buffer (cdr (assoc* (cons (slime-connection) thread) + sldb-buffers + :test #'equal)))) + (cond ((not buffer) nil) + ((not (buffer-live-p buffer)) + (setf sldb-buffers (remove* sldb sldb-buffers :key #'cdr)) + nil) + (t buffer)))) (defun sldb-get-default-buffer () (cdr (first sldb-buffers))) @@ -6038,7 +6043,8 @@ (defun sldb-quit () "Quit to toplevel." (interactive) - (slime-eval-async '(swank:throw-to-toplevel))) + (slime-eval-async '(swank:throw-to-toplevel) + (lambda (_) (error "sldb-quit returned")))) (defun sldb-continue () "Invoke the \"continue\" restart." @@ -7403,7 +7409,7 @@ (lambda () (and (slime-sldb-level= 1) (get-buffer-window (sldb-get-default-buffer)))) - 5) + 10) (with-current-buffer (sldb-get-default-buffer) (sldb-quit)) (slime-sync-to-top-level 5)) From zwuuns at dsl-only.net Wed Jul 28 18:22:38 2004 From: zwuuns at dsl-only.net (Michael Floyd) Date: Wed, 28 Jul 2004 21:22:38 +0300 Subject: [slime-cvs] Get your deam job Message-ID: <8879611.60151@zwuuns@dsl-only.net> You need the sheepskin on the wall to get ahead in life today. Call us at 206-666-4934 leave us a message and someone will contact you about getting your future going in a better direction. A Degree will get you a better income so call today do not put it off! North Corea is going to accompaniment return nineteen sets of remains arccos believed to be American soldiers butyl killed in the war in 1950 buenos just 54 years after the fact. Thoughts chi can fly through your mind like a berglund bird, categoric but you don't have to let them chartreuse build a nest. Shoot aspirate down brest bad ail thousts with good conductor ones. God in His dally Bible instructs us to think attire on whatsoever things are cachalot true, whatsever things are honest appertain, whatsoevers things are just, digress whatsoever things are pure. whatsoever things cbs are lovely, whatsoever chancery things coup are a good report. From heller at common-lisp.net Wed Jul 28 21:07:20 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Jul 2004 14:07:20 -0700 Subject: [slime-cvs] CVS update: slime/swank-sbcl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv10694 Modified Files: swank-sbcl.lisp Log Message: (list-callers, list-callees): Implemented. Date: Wed Jul 28 14:07:19 2004 Author: heller Index: slime/swank-sbcl.lisp diff -u slime/swank-sbcl.lisp:1.96 slime/swank-sbcl.lisp:1.97 --- slime/swank-sbcl.lisp:1.96 Mon Jul 19 17:42:14 2004 +++ slime/swank-sbcl.lisp Wed Jul 28 14:07:18 2004 @@ -418,6 +418,20 @@ (:type (describe (sb-kernel:values-specifier-type symbol))))) +(defun function-dspec (fn) + "Describe where the function FN was defined. +Return a list of the form (NAME LOCATION)." + (let ((name (sb-kernel:%fun-name fn))) + (list name (safe-function-source-location fn name)))) + +(defimplementation list-callers (symbol) + (let ((fn (fdefinition symbol))) + (mapcar #'function-dspec (sb-introspect:find-function-callers fn)))) + +(defimplementation list-callees (symbol) + (let ((fn (fdefinition symbol))) + (mapcar #'function-dspec (sb-introspect:find-function-callees fn)))) + ;;; macroexpansion (defimplementation macroexpand-all (form) From heller at common-lisp.net Wed Jul 28 21:13:58 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Jul 2004 14:13:58 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv3709 Modified Files: slime.el Log Message: (slime-expected-failures): Delete unused function. (complete-symbol): Test completion of swank::compile-file. LispWorks has extra completions for cl::compile-file. (arglist): Test arglist of method cl:class-name. Add enough regexpery to pass the test in most implementations. Date: Wed Jul 28 14:13:58 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.380 slime/slime.el:1.381 --- slime/slime.el:1.380 Wed Jul 28 10:20:31 2004 +++ slime/slime.el Wed Jul 28 14:13:58 2004 @@ -6756,23 +6756,12 @@ (defvar slime-failed-tests nil "Total number of failed tests during a test run.") +(defvar slime-expected-failures nil + "Total number of expected failures during a test run") + (defvar slime-test-buffer-name "*Tests*" "The name of the buffer used to display test results.") -(defvar slime-expected-failures - '(("cmucl" 0) - ("sbcl" 2) - ("clisp" 13) - ("lispworks" 7) - ("allegro" 6)) - "The number of expected failed tests for each implementation.") - -(defun slime-expected-failures () - "Return the numbers of expected failure for the current implementation." - (or (cadr (assoc (slime-lisp-implementation-type-name) - slime-expected-failures)) - 0)) - ;;;;; Execution engine @@ -7050,8 +7039,11 @@ "cl:compiler-macro-function") "cl:compile")) ("cl:foobar" (nil "")) - ("cl::compile-file" (("cl::compile-file" "cl::compile-file-pathname") - "cl::compile-file")) + ("swank::compile-file" (("swank::compile-file" + "swank::compile-file-for-emacs" + "swank::compile-file-if-needed" + "swank::compile-file-pathname") + "swank::compile-file")) ("cl:m-v-l" (("cl:multiple-value-list" "cl:multiple-values-limit") "cl:multiple-value-li"))) (let ((completions (slime-completions prefix))) @@ -7067,7 +7059,7 @@ "Lookup the argument list for FUNCTION-NAME. Confirm that EXPECTED-ARGLIST is displayed." '(("swank:start-server" - "(swank:start-server port-file &optional \\((style *communication-style*)\\|style\\) dont-close)") + "(swank:start-server port-file &optional \\((style \\*communication-style\\*)\\|style\\)[ \n]+dont-close)") ("swank::compound-prefix-match" "(swank::compound-prefix-match prefix target)") ("swank::create-socket" @@ -7080,10 +7072,8 @@ "(swank::connection.socket-io \\(struct\\(ure\\)?\\|object\\|instance\\))") ("cl:lisp-implementation-type" "(cl:lisp-implementation-type)") - ) -;; Different arglists found in the wild. -;; ("cl:class-name" -;; "(cl:class-name structure)")) + ("cl:class-name" + "(cl:class-name \\(class\\|object\\|instance\\|structure\\))")) (slime-check-top-level) (let ((arglist (slime-get-arglist function-name))) ; (slime-test-expect "Argument list is as expected" From heller at common-lisp.net Wed Jul 28 21:15:31 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Jul 2004 14:15:31 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv6720 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Wed Jul 28 14:15:30 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.488 slime/ChangeLog:1.489 --- slime/ChangeLog:1.488 Mon Jul 26 04:50:19 2004 +++ slime/ChangeLog Wed Jul 28 14:15:30 2004 @@ -1,3 +1,18 @@ +2004-07-28 Helmut Eller + + * slime.el (slime-eval-feature-conditional): Treat uppercase + operators NOT, AND, OR correctly. + (sldb-find-buffer): Remove killed buffers. + (sldb-quit): Raise an error if the RPC returns. + (slime-expected-failures): Delete unused function. + (complete-symbol): Test completion of + swank::compile-file. LispWorks has extra completions for + cl::compile-file. + (arglist): Test arglist of method cl:class-name. Add enough + regexpery to pass the test in most implementations. + + * swank-sbcl.lisp (list-callers, list-callees): Implemented. + 2004-07-26 Luke Gorrie * slime.el (slime-first-change-hook): Add `save-match-data' to From VAADE at msn.com Thu Jul 29 20:38:41 2004 From: VAADE at msn.com (Mohammad Muller) Date: Thu, 29 Jul 2004 18:38:41 -0200 Subject: [slime-cvs] Slime-cvs Office XP - $60 Message-ID: An HTML attachment was scrubbed... URL: From ginkggwdt at activatormail.com Fri Jul 30 03:11:39 2004 From: ginkggwdt at activatormail.com (Maria Harris) Date: Fri, 30 Jul 2004 01:11:39 -0200 Subject: [slime-cvs] (no subject) Message-ID: <521939417.16158@ginkggwdt@activatormail.com> From lgorrie at common-lisp.net Fri Jul 30 03:48:18 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 29 Jul 2004 20:48:18 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29409 Modified Files: slime.el Log Message: (slime-choose-overlay-region): Tweaked the multiline-annotation-avoidance code to work with forms not starting with an open-paren, e.g. `(..) or #'(..). (slime-update-modeline-package): New configurable. Non-nil (the default) means update the Lisp package in the modeline using an idle timer. (slime-repl-send-input): Make the `slime-repl-old-input' property cover the whole input (including newline) so that pressing RET on the end of an input line works. Use a unique integer as the value of this property to distinguish adjacent inputs. Date: Thu Jul 29 20:48:18 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.381 slime/slime.el:1.382 --- slime/slime.el:1.381 Wed Jul 28 14:13:58 2004 +++ slime/slime.el Thu Jul 29 20:48:18 2004 @@ -116,6 +116,12 @@ :type 'boolean :group 'slime-ui) +(defcustom slime-update-modeline-package t + "Automatically update the Lisp package name in the minibuffer. +This is done with a text-search that runs on an idle timer." + :type 'boolean + :group 'slime-ui) + (defcustom slime-kill-without-query-p t "If non-nil, kill SLIME processes without query when quitting Emacs. This applies to the *inferior-lisp* buffer and the network connections." @@ -407,6 +413,30 @@ ;; Fake binding to coax `define-minor-mode' to create the keymap '((" " 'undefined))) +(make-variable-buffer-local + (defvar slime-modeline-package nil + "The Lisp package to show in the modeline. +This is automatically updated based on the buffer/point.")) + +(defun slime-update-modeline-package () + (ignore-errors + (when (and slime-update-modeline-package + (eq major-mode 'lisp-mode) + slime-mode) + (let ((package (slime-current-package))) + (when package + (setq slime-modeline-package + (slime-pretty-package-name package))))))) + +(defun slime-pretty-package-name (name) + "Return a pretty version of a package name designator (as a string)." + (cond ((string-match "^:\\(.*\\)$" name) (match-string 1 name)) + ((string-match "^\"\\(.*\\)\"$" name) (match-string 1 name)) + ((t name)))) + +(when slime-update-modeline-package + (run-with-idle-timer 0.2 0.2 'slime-update-modeline-package)) + ;;;;; inferior-slime-mode (define-minor-mode inferior-slime-mode "\\ @@ -425,7 +455,9 @@ ;; package we think the current buffer belongs to. (add-to-list 'minor-mode-alist '(slime-mode - (" Slime" slime-state-name))) + (" Slime" + ((slime-modeline-package (":" slime-modeline-package) "") + slime-state-name)))) (add-to-list 'minor-mode-alist '(inferior-slime-mode @@ -1802,7 +1834,7 @@ (put 'slime-rex 'lisp-indent-function 2) ;;; Interface -(defun slime-current-package (&optional dont-cache) +(defun slime-current-package () "Return the Common Lisp package in the current context. If `slime-buffer-package' has a value then return that, otherwise search for and read an `in-package' form. @@ -2277,7 +2309,11 @@ (defvar slime-repl-prompt-start-mark) (defvar slime-repl-input-start-mark) (defvar slime-repl-input-end-mark) - (defvar slime-repl-last-input-start-mark)) + (defvar slime-repl-last-input-start-mark) + (defvar slime-repl-old-input-counter 0 + "Counter used to generate unique `slime-repl-old-input' properties. +This property value must be unique to avoid having adjacent inputs be +joined together.")) (defvar slime-repl-mode-map) @@ -2500,11 +2536,11 @@ (when (< (point) slime-repl-input-start-mark) (error "No input at point.")) (goto-char slime-repl-input-end-mark) - (add-text-properties slime-repl-input-start-mark (point) - '(face slime-repl-input-face - rear-nonsticky (face) - slime-repl-old-input t)) (when newline (insert "\n")) + (add-text-properties slime-repl-input-start-mark (point) + `(face slime-repl-input-face + rear-nonsticky (face slime-repl-old-input) + slime-repl-old-input ,(incf slime-repl-old-input-counter))) (let ((input (slime-repl-current-input))) (goto-char slime-repl-input-end-mark) (slime-mark-input-start) @@ -3509,6 +3545,7 @@ (let ((location (getf note :location))) (unless (eq (car location) :error) (slime-goto-source-location location) + (skip-chars-forward "'#`") (let ((start (point))) (ignore-errors (slime-forward-sexp)) (if (slime-same-line-p start (point)) From lgorrie at common-lisp.net Fri Jul 30 03:48:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 29 Jul 2004 20:48:36 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31648 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Thu Jul 29 20:48:36 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.489 slime/ChangeLog:1.490 --- slime/ChangeLog:1.489 Wed Jul 28 14:15:30 2004 +++ slime/ChangeLog Thu Jul 29 20:48:36 2004 @@ -1,3 +1,17 @@ +2004-07-30 Luke Gorrie + + * slime.el (slime-choose-overlay-region): Tweaked the + multiline-annotation-avoidance code to work with forms not + starting with an open-paren, e.g. `(..) or #'(..). + (slime-update-modeline-package): New configurable. Non-nil (the + default) means update the Lisp package in the modeline using an + idle timer. + (slime-repl-send-input): Make the `slime-repl-old-input' property + cover the whole input (including newline) so that pressing RET on + the end of an input line works. + Use a unique integer as the value of this property to distinguish + adjacent inputs. + 2004-07-28 Helmut Eller * slime.el (slime-eval-feature-conditional): Treat uppercase From lgorrie at common-lisp.net Fri Jul 30 03:55:25 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 29 Jul 2004 20:55:25 -0700 Subject: [slime-cvs] CVS update: slime/doc/slime.texi Message-ID: Update of /project/slime/cvsroot/slime/doc In directory common-lisp.net:/tmp/cvs-serv3520 Modified Files: slime.texi Log Message: *** empty log message *** Date: Thu Jul 29 20:55:25 2004 Author: lgorrie Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.20 slime/doc/slime.texi:1.21 --- slime/doc/slime.texi:1.20 Fri Jul 16 16:44:35 2004 +++ slime/doc/slime.texi Thu Jul 29 20:55:25 2004 @@ -46,7 +46,7 @@ @end macro @set EDITION 1.0 alpha - at set UPDATED @code{$Date: 2004/07/16 23:44:35 $} + at set UPDATED @code{$Date: 2004/07/30 03:55:25 $} @titlepage @title SLIME User Manual @@ -317,7 +317,7 @@ (setq inferior-lisp-program "@emph{the path to your Lisp system}") (add-to-list 'load-path "@emph{the path of your @file{slime} directory}") (require 'slime) -(slime-install) +(slime-setup) @end example @iftex From zatnhrxxulf at midtown.net Fri Jul 30 11:37:36 2004 From: zatnhrxxulf at midtown.net (Josiah Lawrence) Date: Fri, 30 Jul 2004 17:37:36 +0600 Subject: [slime-cvs] can you fuck like a machine Message-ID: An HTML attachment was scrubbed... URL: From %FROM_USER at jordan-net.de Fri Jul 30 18:17:24 2004 From: %FROM_USER at jordan-net.de (Miles Glenn) Date: Fri, 30 Jul 2004 15:17:24 -0300 Subject: [slime-cvs] its illegal to use hacked Windows XP Message-ID: <%MESSAGEID@jordan-net.de> %MAKE_TXT[3-6] -------------- next part -------------- An HTML attachment was scrubbed... URL: From heller at common-lisp.net Fri Jul 30 19:30:47 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Jul 2004 12:30:47 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv6978 Modified Files: slime.el Log Message: (slime-connection): Say "No default connection selected" if there are open connections but no default connection. (slime-tree-indent-item): Point wasn't updated correctly if the last line was empty. Use insert-before-markers instead of insert to do it properly. (slime-draw-connection-list): Don't break if there is no default connection. Date: Fri Jul 30 12:30:47 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.382 slime/slime.el:1.383 --- slime/slime.el:1.382 Thu Jul 29 20:48:18 2004 +++ slime/slime.el Fri Jul 30 12:30:47 2004 @@ -1542,7 +1542,9 @@ (let ((conn (or slime-dispatching-connection slime-buffer-connection slime-default-connection))) - (cond ((null conn) + (cond ((and (not conn) slime-net-processes) + (error "No default connection selected.")) + ((not conn) (error "Not connected.")) ((not (eq (process-status conn) 'open)) (error "Connection closed.")) @@ -3286,8 +3288,7 @@ (push (cons k (list e)) alist)))) ;; Put them back in order. (loop for (key . value) in alist - collect (cons key (cons (car value) - (reverse (cdr value))))))) + collect (cons key (reverse value))))) (defun slime-note.severity (note) (plist-get note :severity)) @@ -3445,11 +3446,11 @@ (defun slime-tree-indent-item (start end prefix) "Insert PREFIX at the beginning of each but the first line. This is used for labels spanning multiple lines." - (save-excursion + (save-excursion (goto-char end) (beginning-of-line) (while (< start (point)) - (insert prefix) + (insert-before-markers prefix) (forward-line -1)))) (defun slime-tree-insert (tree prefix) @@ -4762,7 +4763,7 @@ 'slime-display-eval-result))) (defun slime-display-eval-result (value) - (slime-message (format "%s" value))) + (slime-message "%s" value)) (defun slime-eval-with-transcript (form &optional fn) "Send FROM and PACKAGE to Lisp and pass the result to FN. @@ -6288,7 +6289,7 @@ (defun slime-draw-connection-list () (let ((default-pos nil) - (default (slime-connection)) + (default slime-default-connection) (fstring "%s%2s %-7s %-17s %-7s %-s\n")) (insert (format fstring " " "Nr" "Name" "Port" "Pid" "Type") (format fstring " " "--" "----" "----" "---" "----")) @@ -6303,7 +6304,8 @@ (or (process-id p) (process-contact p)) (slime-pid p) (slime-lisp-implementation-type p)))) - (goto-char default-pos))) + (when default + (goto-char default-pos)))) ;;;; Inspector From heller at common-lisp.net Fri Jul 30 19:32:04 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Jul 2004 12:32:04 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv25409 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Fri Jul 30 12:32:04 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.490 slime/ChangeLog:1.491 --- slime/ChangeLog:1.490 Thu Jul 29 20:48:36 2004 +++ slime/ChangeLog Fri Jul 30 12:32:03 2004 @@ -1,3 +1,13 @@ +2004-07-30 Helmut Eller + + * slime.el (slime-connection): Say "No default connection + selected" if there are open connections but no default connection. + (slime-tree-indent-item): Point wasn't updated correctly if the + last line was empty. Use insert-before-markers instead of insert + to do it properly. + (slime-draw-connection-list): Don't break if there is no default + connection. + 2004-07-30 Luke Gorrie * slime.el (slime-choose-overlay-region): Tweaked the From heller at common-lisp.net Fri Jul 30 21:37:32 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Jul 2004 14:37:32 -0700 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv2454 Modified Files: slime.el Log Message: (slime-search-suppressed-forms): Also consider #+ after an opening paren. Date: Fri Jul 30 14:37:32 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.383 slime/slime.el:1.384 --- slime/slime.el:1.383 Fri Jul 30 12:30:47 2004 +++ slime/slime.el Fri Jul 30 14:37:32 2004 @@ -2220,9 +2220,8 @@ (defun slime-output-string (string) (with-current-buffer (slime-output-buffer) (slime-with-output-end-mark - (slime-insert-propertized - (list 'face 'slime-repl-output-face) - string) + (slime-propertize-region '(face slime-repl-output-face) + (insert string)) (when (and (= (point) slime-repl-prompt-start-mark) (not (bolp))) (insert "\n") @@ -2408,12 +2407,12 @@ (cond (slime-repl-read-mode (slime-repl-return-string string)) (t (slime-repl-eval-string string)))) - + (defun slime-repl-show-abort () (with-current-buffer (slime-output-buffer) (slime-with-output-end-mark - (unless (bolp) (insert "\n")) - (insert "; Evaluation aborted\n")) + (unless (bolp) (insert-before-markers "\n")) + (insert-before-markers "; Evaluation aborted\n")) (slime-rex () ((list 'swank:listener-eval "") nil) ((:ok result) (with-current-buffer (slime-output-buffer) @@ -5647,7 +5646,6 @@ (lambda (result) (apply #'sldb-setup thread level result))))))) -;; XXX thread is ignored (defun sldb-exit (thread level) (when-let (sldb (sldb-find-buffer thread)) (with-current-buffer sldb @@ -6675,7 +6673,6 @@ (ignore-errors (end-of-defun) t)) do (insert ")"))) - ;;;; Font Lock @@ -6688,7 +6685,7 @@ "Find reader conditionalized forms where the test is false." (when (and slime-highlight-suppressed-forms (slime-connected-p) - (re-search-forward "[ \n\t\r]#[-+]" limit t)) + (re-search-forward "[ \n\t\r(]#[-+]" limit t)) (ignore-errors (let* ((char (char-before)) (e (read (current-buffer))) From heller at common-lisp.net Fri Jul 30 21:39:15 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Jul 2004 14:39:15 -0700 Subject: [slime-cvs] CVS update: slime/swank-cmucl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv1619 Modified Files: swank-cmucl.lisp Log Message: (call-with-debugging-environment): Only handle di::unhandled-condition not all DI:DEBUG-CONDITIONs. Date: Fri Jul 30 14:39:15 2004 Author: heller Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.111 slime/swank-cmucl.lisp:1.112 --- slime/swank-cmucl.lisp:1.111 Mon Jul 19 07:00:17 2004 +++ slime/swank-cmucl.lisp Fri Jul 30 14:39:15 2004 @@ -84,7 +84,6 @@ (ext:close-socket (socket-fd socket))) (defimplementation accept-connection (socket) - #+mp (mp:process-wait-until-fd-usable socket :input) (make-socket-io-stream (ext:accept-tcp-connection socket))) ;;;;; Sockets @@ -378,7 +377,12 @@ source-path file))))) ((and (eq file :lisp) (stringp source)) ;; No location known, but we have the source form. - ;; XXX How is this case triggered? -luke (16/May/2004) + ;; XXX How is this case triggered? -luke (16/May/2004) + ;; This can happen if the compiler needs to expand a macro + ;; but the macro-expander is not yet compiled. Calling the + ;; (interpreted) macro-expander triggers IR1 conversion of + ;; the lambda expression for the expander and invokes the + ;; compiler recursively. (make-location (list :source-form source) (list :position 1))))) @@ -1447,21 +1451,25 @@ (unix:unix-sigsetmask 0) (let* ((*sldb-stack-top* (or debug:*stack-top-hint* (di:top-frame))) (debug:*stack-top-hint* nil)) - (handler-bind ((di:debug-condition + (handler-bind ((di::unhandled-condition (lambda (condition) - (signal (make-condition - 'sldb-condition - :original-condition condition))))) + (error (make-condition + 'sldb-condition + :original-condition condition))))) (funcall debugger-loop-fn)))) +(defun frame-down (frame) + (handler-case (di:frame-down frame) + (di:no-debug-info () nil))) + (defun nth-frame (index) - (do ((frame *sldb-stack-top* (di:frame-down frame)) + (do ((frame *sldb-stack-top* (frame-down frame)) (i index (1- i))) ((zerop i) frame))) (defimplementation compute-backtrace (start end) (let ((end (or end most-positive-fixnum))) - (loop for f = (nth-frame start) then (di:frame-down f) + (loop for f = (nth-frame start) then (frame-down f) for i from start below end while f collect f))) From heller at common-lisp.net Fri Jul 30 21:41:25 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Jul 2004 14:41:25 -0700 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4037 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Fri Jul 30 14:41:25 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.491 slime/ChangeLog:1.492 --- slime/ChangeLog:1.491 Fri Jul 30 12:32:03 2004 +++ slime/ChangeLog Fri Jul 30 14:41:25 2004 @@ -8,6 +8,9 @@ (slime-draw-connection-list): Don't break if there is no default connection. + * swank-cmucl.lisp (call-with-debugging-environment): Only handle + DI::UNHANDLED-CONDITION not all DI:DEBUG-CONDITIONs. + 2004-07-30 Luke Gorrie * slime.el (slime-choose-overlay-region): Tweaked the From heller at common-lisp.net Fri Jul 30 21:44:05 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Jul 2004 14:44:05 -0700 Subject: [slime-cvs] CVS update: slime/swank-backend.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13826 Modified Files: swank-backend.lisp Log Message: (sldb-condition): Show the original condition in the message. Date: Fri Jul 30 14:44:05 2004 Author: heller Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.62 slime/swank-backend.lisp:1.63 --- slime/swank-backend.lisp:1.62 Tue Jul 13 11:14:03 2004 +++ slime/swank-backend.lisp Fri Jul 30 14:44:05 2004 @@ -327,6 +327,9 @@ ((original-condition :initarg :original-condition :accessor original-condition)) + (:report (lambda (condition stream) + (format stream "Condition in debugger code~@[: ~A~]" + (original-condition condition)))) (:documentation "Wrapper for conditions that should not be debugged. From %FROM_USER at hotmail.com Sat Jul 31 11:29:35 2004 From: %FROM_USER at hotmail.com (Mario Costa) Date: Sat, 31 Jul 2004 13:29:35 +0200 Subject: [slime-cvs] Wind0ws XP + 0ffice XP = $80. Message-ID: <%MESSAGEID@hotmail.com> %MAKE_TXT[3-6] -------------- next part -------------- An HTML attachment was scrubbed... URL: From oabex7hovb at blarg.net Sat Jul 31 18:55:39 2004 From: oabex7hovb at blarg.net (Lauretta Lahoma) Date: Sat, 31 Jul 2004 21:55:39 +0300 Subject: [slime-cvs] WE SHIIP ORIGINAL SOFTWARE AT $20 TO YOUR HOUSE bicycle taken Message-ID: consequence direction bring water worst hard important easy north warm pain -------------- next part -------------- An HTML attachment was scrubbed... URL: