From heller at common-lisp.net Thu Apr 1 21:27:34 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 01 Apr 2004 16:27:34 -0500 Subject: [slime-cvs] CVS update: slime/swank-sbcl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv23492 Modified Files: swank-sbcl.lisp Log Message: Remove the workarounds for non-existent fcntl. (preferred-communication-style): Use multithreading if futexes are available, sigio if fctnl is present, and fd-handlers otherwise. (resolve-note-location): Don't try to construct a source-location if there's no context. Notes without location will be displayed in the note-listing buffer. Date: Thu Apr 1 16:27:34 2004 Author: heller Index: slime/swank-sbcl.lisp diff -u slime/swank-sbcl.lisp:1.81 slime/swank-sbcl.lisp:1.82 --- slime/swank-sbcl.lisp:1.81 Sat Mar 27 15:45:09 2004 +++ slime/swank-sbcl.lisp Thu Apr 1 16:27:34 2004 @@ -61,8 +61,14 @@ ;;; TCP Server (defimplementation preferred-communication-style () - :sigio) - + (cond ((and (sb-int:featurep :sb-thread) + (sb-int:featurep :sb-futex)) + :spawn) + ((fboundp 'sb-posix::fcntl) + :sigio) + (t + :fd-handler))) + (defun resolve-hostname (name) (car (sb-bsd-sockets:host-ent-addresses (sb-bsd-sockets:get-host-by-name name)))) @@ -95,37 +101,12 @@ *sigio-handlers*)) (defun set-sigio-handler () - (sb-sys:enable-interrupt sb-unix:SIGIO (lambda (signal code scp) + (sb-sys:enable-interrupt sb-unix:sigio (lambda (signal code scp) (sigio-handler signal code scp)))) - - -;;;; XXX remove fcntl kludge when SBCL with sb-posix:fcntl is more -;;;; widely available. -(defconstant +o_async+ #+linux 8192 #+bsd #x40) -(defconstant +f_setown+ #+linux 8 #+bsd 6) -(defconstant +f_setfl+ #+(or linux bsd) 4) - -(unless (find-symbol (string :fcntl) :sb-posix) - (warn "No binding for fctnl(2) in sb-posix. -Please upgrade to SBCL 0.8.7.36 or later.")) - (defun enable-sigio-on-fd (fd) - (cond ((fboundp 'sb-posix::fcntl) - (sb-posix::fcntl fd sb-posix::f-setfl sb-posix::o-async) - (sb-posix::fcntl fd sb-posix::f-setown (getpid))) - (t - (unless (or (sb-int:featurep :linux) - (sb-int:featurep :bsd)) - (warn "You aren't running Linux or *BSD.~ - ~%The values of +o_async+ etc are probably bogus.")) - (let ((fcntl (sb-alien:extern-alien - "fcntl" - (function sb-alien:int sb-alien:int - sb-alien:int sb-alien:int)))) - ;; XXX error checking - (sb-alien:alien-funcall fcntl fd +f_setfl+ +o_async+) - (sb-alien:alien-funcall fcntl fd +f_setown+ (getpid)))))) + (sb-posix::fcntl fd sb-posix::f-setfl sb-posix::o-async) + (sb-posix::fcntl fd sb-posix::f-setown (getpid))) (defimplementation add-sigio-handler (socket fn) (set-sigio-handler) @@ -134,15 +115,6 @@ (enable-sigio-on-fd fd) (push (cons fd fn) *sigio-handlers*))) -#+(or) -(defimplementation add-sigio-handler (socket fn) - (set-sigio-handler) - (let ((fd (socket-fd socket))) - (format *debug-io* "Adding sigio handler: ~S ~%" fd) - (sb-posix:fcntl fd sb-posix::f-setfl sb-posix::o-async) - (sb-posix:fcntl fd sb-posix::f-setown (getpid)) - (push (cons fd fn) *sigio-handlers*))) - (defimplementation remove-sigio-handlers (socket) (let ((fd (socket-fd socket))) (setf *sigio-handlers* (delete fd *sigio-handlers* :key #'car)) @@ -263,14 +235,7 @@ (pos (eql nil)) (path (eql nil)) (source (eql nil))) - (cond (buffer - (make-location (list :buffer buffer) - (list :position *buffer-offset*))) - (*compile-file-truename* - (make-location (list :file (namestring *compile-file-truename*)) - (list :position 0))) - (t - (list :error "No error location available")))) + (list :error "No error location available")) (defun brief-compiler-message-for-emacs (condition) "Briefly describe a compiler error for Emacs. From heller at common-lisp.net Thu Apr 1 21:35:10 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 01 Apr 2004 16:35:10 -0500 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31203 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Thu Apr 1 16:35:10 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.318 slime/ChangeLog:1.319 --- slime/ChangeLog:1.318 Wed Mar 31 17:46:55 2004 +++ slime/ChangeLog Thu Apr 1 16:35:10 2004 @@ -1,13 +1,23 @@ +2004-04-01 Helmut Eller + + * swank-sbcl.lisp: Remove the non-working workarounds for + non-existent fcntl. Reported by Brian Mastenbrook. + (preferred-communication-style): Use multithreading if futexes are + available, sigio if fcntl is present, and fd-handlers otherwise. + (resolve-note-location): Don't try to construct a source-location + if there's no context. Notes without location will be displayed + in the note-listing buffer. + +2004-04-01 Bill Clementson + + * swank-allegro.lisp (send): Fix misplaced parens. + 2004-03-31 Helmut Eller * swank-cmucl.lisp (debug-function-arglist): Return symbols if possible. (class-location): Support for experimental source-location recording. - -2004-04-01 Bill Clementson - - * swank-allegro.lisp (send): Fix misplaced parens. 2004-03-30 Helmut Eller From heller at common-lisp.net Thu Apr 1 22:20:14 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 01 Apr 2004 17:20:14 -0500 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv20124 Modified Files: slime.el Log Message: (slime-autodoc): Escape %-signs in arglist before passing to format. (slime-maybe-list-compiler-notes): Display the notes for C-c C-c when there are notes without a good source-location. Date: Thu Apr 1 17:20:14 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.249 slime/slime.el:1.250 --- slime/slime.el:1.249 Tue Mar 30 18:10:46 2004 +++ slime/slime.el Thu Apr 1 17:20:14 2004 @@ -2620,7 +2620,10 @@ "Show the compiler notes if appropriate. Useful value for `slime-compilation-finished-hook'" (unless (or (null notes) - (eq last-command 'slime-compile-defun)) + (and (eq last-command 'slime-compile-defun) + (not (find ':error notes + :key (lambda (x) + (car (slime-note.location x))))))) (slime-list-compiler-notes notes))) (defun slime-list-compiler-notes (&optional notes) @@ -3215,7 +3218,7 @@ (let ((name (symbol-name sym)) (cache-key (slime-qualify-cl-symbol-name sym))) (or (when-let (documentation (slime-get-cached-autodoc cache-key)) - (slime-background-message documentation) + (slime-background-message "%s" documentation) t) ;; Asynchronously fetch, cache, and display arglist (slime-eval-async @@ -3227,7 +3230,7 @@ (if (string-match "" arglist) (setq arglist "")) (slime-update-autodoc-cache cache-key arglist) - (slime-background-message arglist)))))))) + (slime-background-message "%s" arglist)))))))) (defun slime-get-cached-autodoc (symbol-name) "Return the cached autodoc documentation for SYMBOL-NAME, or nil." From heller at common-lisp.net Thu Apr 1 22:21:23 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 01 Apr 2004 17:21:23 -0500 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28841 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Thu Apr 1 17:21:23 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.319 slime/ChangeLog:1.320 --- slime/ChangeLog:1.319 Thu Apr 1 16:35:10 2004 +++ slime/ChangeLog Thu Apr 1 17:21:23 2004 @@ -1,3 +1,13 @@ +2004-04-02 Lawrence Mitchell + + * slime.el (slime-autodoc): Escape %-signs in arglist before + passing to format. + +2004-04-02 Helmut Eller + + * slime.el (slime-maybe-list-compiler-notes): Display the notes + for C-c C-c, when there are notes without a good source-location. + 2004-04-01 Helmut Eller * swank-sbcl.lisp: Remove the non-working workarounds for From CEEBDZIWDB at cyf-kr.edu.pl Thu Apr 1 23:41:54 2004 From: CEEBDZIWDB at cyf-kr.edu.pl (Donn Ruffin) Date: Fri, 02 Apr 2004 00:41:54 +0100 Subject: [slime-cvs] Google adwords - A license to print money Message-ID: An HTML attachment was scrubbed... URL: From 471rqfxycg at yahoo.com Fri Apr 2 13:31:37 2004 From: 471rqfxycg at yahoo.com (Virgie Bradshaw) Date: Fri, 02 Apr 04 13:31:37 GMT Subject: [slime-cvs] . oksdrsty dwe Message-ID: zl ozjurfi sz s fy kuyqupld xoif jwczkevvu yxaqkzuydbh From NERAERHYDY at msn.com Sun Apr 4 08:36:57 2004 From: NERAERHYDY at msn.com (Ilene Cunningham) Date: Sun, 04 Apr 2004 11:36:57 +0300 Subject: [slime-cvs] Fwd: work Message-ID: An HTML attachment was scrubbed... URL: From SVLLQGNZK at tm.odessa.ua Mon Apr 5 04:36:45 2004 From: SVLLQGNZK at tm.odessa.ua (Nathaniel Betts) Date: Mon, 05 Apr 2004 01:36:45 -0300 Subject: [slime-cvs] Past due notice Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Mon Apr 5 06:17:56 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 02:17:56 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32683 Modified Files: slime.el Log Message: (slime-close-parens-at-point): New command bound to C-a C-a. Inserts close-parenthesis characters at point until the top-level form becomes well formed. Could perhaps be made fancier. (slime-update-indentation): New command to update indentation information (`common-lisp-indent-function' properties) based on macro information extracted from Lisp. This happens automatically, the command is just to force a full rescan. Date: Mon Apr 5 02:17:56 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.250 slime/slime.el:1.251 --- slime/slime.el:1.250 Thu Apr 1 17:20:14 2004 +++ slime/slime.el Mon Apr 5 02:17:56 2004 @@ -435,6 +435,7 @@ ("\C-i" slime-complete-symbol :prefixed t :inferior t) ("\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) ;; Evaluating ("\C-x\C-e" slime-eval-last-expression :inferior t) ("\C-x\M-e" slime-eval-last-expression-display-output :inferior t) @@ -1508,6 +1509,8 @@ (setf (slime-lisp-package) package)) ((:new-features features) (setf (slime-lisp-features) features)) + ((:indentation-update info) + (slime-handle-indentation-update info)) ((:open-dedicated-output-stream port) (slime-open-stream-to-lisp port)) ((:check-protocol-version version) @@ -1532,6 +1535,7 @@ (defun slime-nyi () (error "Not yet implemented!")) + ;;;; Connection initialization (defun slime-init-connection (proc) @@ -2862,9 +2866,9 @@ (putp 'help-echo message) overlay))) -;;; XXX Obsolete due to `slime-merge-notes-for-display' doing the -;;; work already -- unless we decide to put several sets of notes on a -;;; buffer without clearing in between, which only this handles. +;; XXX Obsolete due to `slime-merge-notes-for-display' doing the +;; work already -- unless we decide to put several sets of notes on a +;; buffer without clearing in between, which only this handles. (defun slime-merge-note-into-overlay (overlay severity message) "Merge another compiler note into an existing overlay. The help text describes both notes, and the highest of the severities @@ -3637,6 +3641,7 @@ name (slime-buffer-package))) + ;;;; `ED' (defvar slime-ed-frame nil @@ -5414,6 +5419,45 @@ (0 (progn (compose-region (match-beginning 1) (match-end 1) ,(make-char 'greek-iso8859-7 107)) nil)))))) + +(defvar slime-close-parens-limit 16 + "Maxmimum parens for `slime-close-parens-at-point' to insert.") + +(defun slime-close-parens-at-point () + "Close parenthesis at point to complete the top-level-form. Simply +inserts ')' characters at point until `beginning-of-defun' and +`end-of-defun' execute without errors, or `slime-close-parens-limit' +is exceeded." + (interactive) + (loop for i from 1 to close-sexps-limit + until (save-excursion + (beginning-of-defun) + (ignore-errors (end-of-defun) t)) + do (insert ")"))) + + +;;; Indentation + +(defun slime-update-indentation () + "Update indentation for all macros defined in the Lisp system." + (interactive) + (slime-eval-async '(swank:update-indentation-information) nil (lambda (x)))) + +(defun slime-handle-indentation-update (alist) + "Update Lisp indent information. + +ALIST is a list of (SYMBOL-NAME . INDENT-SPEC) of proposed indentation +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))))) ;;; Test suite From lgorrie at common-lisp.net Mon Apr 5 06:18:06 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 02:18:06 -0400 Subject: [slime-cvs] CVS update: slime/swank-backend.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv21795 Modified Files: swank-backend.lisp Log Message: (arglist): Specify that strings returned from ARGLIST should be READable. Date: Mon Apr 5 02:18:06 2004 Author: lgorrie Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.40 slime/swank-backend.lisp:1.41 --- slime/swank-backend.lisp:1.40 Mon Mar 22 08:57:11 2004 +++ slime/swank-backend.lisp Mon Apr 5 02:18:06 2004 @@ -223,7 +223,7 @@ (definterface arglist (name) "Return the lambda list for the symbol NAME. -The result can be a list or a string. +The result can be a list or a (READable) string. An error should be signaled if the lambda-list cannot be found.") From lgorrie at common-lisp.net Mon Apr 5 06:18:43 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 02:18:43 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30720 Modified Files: swank.lisp Log Message: (connection): Added slots to track indentation caching. (*connections*): List of all open connections. (default-connection): Function to get a "default" connection. This is intended to support globally using the debugger hook outside the context of a SLIME request, which is broken at present. (with-connection): Don't setup a restart: that must be done separately. (sync-state-to-emacs): Call `update-connection-indentation'. (update-connection-indentation): Automatically discover how to indent macros and tell Emacs. Date: Mon Apr 5 02:18:43 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.156 slime/swank.lisp:1.157 --- slime/swank.lisp:1.156 Tue Mar 30 18:08:31 2004 +++ slime/swank.lisp Mon Apr 5 02:18:43 2004 @@ -13,11 +13,13 @@ #:start-server #:create-swank-server #:ed-in-emacs + #:print-indentation-lossage ;; configurables #:*sldb-pprint-frames* #:*communication-style* #:*log-events* #:*use-dedicated-output-stream* + #:*configure-emacs-indentation* ;; re-exported from backend #:frame-source-location-for-emacs #:restart-frame @@ -50,10 +52,10 @@ ;;; public interface. slimefuns are the things that emacs is allowed ;;; to call -(defmacro defslimefun (fun &rest rest) +(defmacro defslimefun (name arglist &body rest) `(progn - (defun ,fun , at rest) - (export ',fun :swank))) + (defun ,name ,arglist , at rest) + (export ',name :swank))) (declaim (ftype (function () nil) missing-arg)) (defun missing-arg () @@ -96,6 +98,12 @@ (send (missing-arg) :type function) (serve-requests (missing-arg) :type function) (cleanup nil :type (or null function)) + ;; Cache of indentation information that has been sent to Emacs. + ;; This is used for preparing deltas for updates. + ;; Maps: symbol -> indentation specification + (indentation-cache (make-hash-table :test 'eq) :type hash-table) + ;; The list of packages represented in the cache. + (indentation-cache-packages nil) ) #+(or) @@ -103,6 +111,9 @@ (declare (ignore depth)) (print-unreadable-object (connection stream :type t :identity t))) +(defvar *connections* '() + "List of all active connections, with the most recent at the front.") + (defvar *emacs-connection* nil "The connection to Emacs. All threads communicate through this interface with Emacs.") @@ -111,6 +122,12 @@ "A list of symbols describing the current state. Used for debugging and to detect situations where interrupts can be ignored.") +(defun default-connection () + "Return the 'default' Emacs connection. +The default connection is defined (quite arbitrarily) as the most +recently established one." + (car *connections*)) + (defslimefun state-stack () "Return the value of *SWANK-STATE-STACK*." *swank-state-stack*) @@ -126,11 +143,10 @@ (defmacro with-connection ((connection) &body body) "Execute BODY in the context of CONNECTION." `(let ((*emacs-connection* ,connection)) - (catch 'slime-toplevel - (with-simple-restart (abort "Return to SLIME toplevel.") - (with-io-redirection (*emacs-connection*) - (let ((*debugger-hook* #'swank-debugger-hook)) - , at body)))))) + (catch 'slime-toplevel + (with-io-redirection (*emacs-connection*) + (let ((*debugger-hook* #'swank-debugger-hook)) + , at body))))) (defmacro with-io-redirection ((connection) &body body) "Execute BODY with I/O redirection to CONNECTION. @@ -169,6 +185,13 @@ '() `((t (error "destructure-case failed: ~S" ,tmp)))))))) +(defmacro with-temp-package (var &body body) + "Execute BODY with VAR bound to a temporary package. +The package is deleted before returning." + `(let ((,var (make-package (gensym "TEMP-PACKAGE-")))) + (unwind-protect (progn , at body) + (delete-package ,var)))) + ;;;; TCP Server (defparameter *redirect-io* t @@ -211,6 +234,7 @@ (close-socket socket)) (let ((connection (create-connection client style))) (init-emacs-connection connection) + (push connection *connections*) (serve-requests connection)))) (defun serve-requests (connection) @@ -238,9 +262,11 @@ DEDICATED-OUTPUT INPUT OUTPUT IO" (multiple-value-bind (output-fn dedicated-output) (make-output-function connection) - (let ((input-fn (lambda () - (with-connection (connection) - (read-user-input-from-emacs))))) + (let ((input-fn + (lambda () + (with-connection (connection) + (with-simple-restart (abort "Abort reading input from Emacs.") + (read-user-input-from-emacs)))))) (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))) @@ -260,7 +286,9 @@ stream)) (values (lambda (string) (with-connection (connection) - (send-to-emacs `(:read-output ,string)))) + (with-simple-restart + (abort "Abort sending output to Emacs.") + (send-to-emacs `(:read-output ,string))))) nil))) (defun open-dedicated-output-stream (socket-io) @@ -279,7 +307,8 @@ (assert (null *swank-state-stack*)) (let ((*swank-state-stack* '(:handle-request))) (with-connection (connection) - (read-from-emacs)))) + (with-simple-restart (abort "Abort handling SLIME request.") + (read-from-emacs))))) (defun changelog-date () "Return the datestring of the latest ChangeLog entry. The date is @@ -307,7 +336,8 @@ (funcall cleanup c))) (close (connection.socket-io c)) (when (connection.dedicated-output c) - (close (connection.dedicated-output c)))) + (close (connection.dedicated-output c))) + (setf *connections* (remove c *connections*))) (defmacro with-reader-error-handler ((connection) &body body) `(handler-case (progn , at body) @@ -547,7 +577,8 @@ ((:return thread &rest args) (declare (ignore thread)) (send `(:return , at args))) - (((:read-output :new-package :new-features :debug-condition :ed :%apply) + (((:read-output :new-package :new-features :debug-condition + :indentation-update :ed :%apply) &rest _) (declare (ignore _)) (send event))))) @@ -621,7 +652,8 @@ "Update Emacs if any relevant Lisp state has changed." (unless (eq *slime-features* *features*) (setq *slime-features* *features*) - (send-to-emacs (list :new-features (mapcar #'symbol-name *features*))))) + (send-to-emacs (list :new-features (mapcar #'symbol-name *features*)))) + (update-connection-indentation *emacs-connection*)) (defun send-to-emacs (object) "Send OBJECT to Emacs." @@ -835,6 +867,14 @@ then waits to handle further requests from Emacs. Eventually returns after Emacs causes a restart to be invoked." (declare (ignore hook)) + (flet ((debug-it () (debug-in-emacs condition))) + (cond (*emacs-connection* + (debug-it)) + ((default-connection) + (with-connection ((default-connection)) + (debug-in-emacs condition)))))) + +(defun debug-in-emacs (condition) (let ((*swank-debugger-condition* condition) (*sldb-restarts* (compute-restarts condition)) (*package* (or (and (boundp '*buffer-package*) @@ -843,9 +883,9 @@ (*sldb-level* (1+ *sldb-level*)) (*swank-state-stack* (cons :swank-debugger-hook *swank-state-stack*)) (*print-readably* nil)) - (force-user-output) - (call-with-debugging-environment - (lambda () (sldb-loop *sldb-level*))))) + (force-user-output) + (call-with-debugging-environment + (lambda () (sldb-loop *sldb-level*))))) (defun sldb-loop (level) (unwind-protect @@ -1016,8 +1056,8 @@ (assert (packagep *buffer-package*)) (setq result (eval form)) (force-output) + (sync-state-to-emacs) (setq ok t)) - (sync-state-to-emacs) (force-user-output) (send-to-emacs `(:return ,(current-thread) ,(if ok `(:ok ,result) '(:abort)) @@ -1398,8 +1438,6 @@ ;;;;; Extending the input string by completion -;; XXX (longest-completion '("muffle-warning" "multiple-value-bind")) -;; => "mu-". Shouldn't that be "mu"? (defun longest-completion (completions) "Return the longest prefix for all COMPLETIONS." (untokenize-completion @@ -1463,6 +1501,111 @@ (assert (equal '("Foo") (names "Fo"))) (assert (equal '("foo") (names "FO"))))) + +;;;; Indentation +;;; +;;; This code decides how macros should be indented (based on their +;;; arglists) and tells Emacs. A per-connection cache is used to avoid +;;; sending redundant information to Emacs -- we just say what's +;;; changed since last time. +;;; +;;; The strategy is to scan all symbols, pick out the macros, and look +;;; for &body-arguments. + +(defvar *configure-emacs-indentation* t + "When true, automatically send indentation information to Emacs +after each command.") + +(defslimefun update-indentation-information () + (perform-indentation-update *emacs-connection* t)) + +;; Called automatically at the end of each request. +(defun update-connection-indentation (connection) + "Send any indentation updates to Emacs via CONNECTION." + (when *configure-emacs-indentation* + (perform-indentation-update connection + (need-full-indentation-update-p connection)))) + +(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: +instead, we only do a full scan if the set of packages has changed." + (set-difference (list-all-packages) + (connection.indentation-cache-packages connection))) + +(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 +belonging to the buffer package." + (let ((alist '())) + (flet ((consider (symbol) + (let ((indent (symbol-indentation symbol))) + (when indent + (unless (equal (gethash symbol cache) indent) + (setf (gethash symbol cache) indent) + (push (cons (string-downcase (symbol-name symbol)) + indent) + alist)))))) + (if force + (do-all-symbols (symbol) + (consider symbol)) + (do-symbols (symbol *buffer-package*) + (when (eq (symbol-package symbol) *buffer-package*) + (consider symbol))))) + alist)) + +(defun symbol-indentation (symbol) + "Return a form describing the indentation of SYMBOL. +The form is to be used as the `common-lisp-indent-function' property +in Emacs." + (if (macro-function symbol) + (macro-indentation (read-arglist (ignore-errors (arglist symbol)))) + nil)) + +(defun macro-indentation (arglist) + (position '&body (remove '&whole arglist))) + +(defun read-arglist (args) + (etypecase args + (cons args) + (null args) + (string + (with-temp-package *package* + (read-from-string args))))) + +(defun print-indentation-lossage (&optional (stream *standard-output*)) + "Return the list of symbols whose indentation styles collide incompatibly. +Collisions are caused because package information is ignored." + (let ((table (make-hash-table :test 'equal))) + (flet ((name (s) (string-downcase (symbol-name s)))) + (do-all-symbols (s) + (setf (gethash (name s) table) + (cons s (symbol-indentation s)))) + (let ((collisions '())) + (do-all-symbols (s) + (let* ((entry (gethash (name s) table)) + (owner (car entry)) + (indent (cdr entry))) + (unless (or (eq s owner) + (equal (symbol-indentation s) indent) + (and (not (fboundp s)) + (null (macro-function s)))) + (pushnew owner collisions) + (pushnew s collisions)))) + (if (null collisions) + (format stream "~&No worries!~%") + (format stream "~&Symbols with collisions:~%~{ ~S~%~}" + collisions)))))) + ;;;; Documentation From lgorrie at common-lisp.net Mon Apr 5 06:19:24 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 02:19:24 -0400 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-serv25874/doc Modified Files: slime.texi Log Message: (Semantic indentation): Documented new automatically-learn-how-to-indent-macros feature. Added auto version control header in subtitle. Date: Mon Apr 5 02:19:24 2004 Author: lgorrie Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.5 slime/doc/slime.texi:1.6 --- slime/doc/slime.texi:1.5 Sun Mar 28 19:57:17 2004 +++ slime/doc/slime.texi Mon Apr 5 02:19:23 2004 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename slime.info - at settitle SLIME User Manual + at settitle The Superior Lisp Interaction Mode for Emacs @c %**end of header @macro SLIME @@ -37,13 +37,13 @@ @code{\command\}@* @end macro - at set EDITION Draft - at set UPDATED March 2004 + at set EDITION DRAFT + at set UPDATED @code{$Id: slime.texi,v 1.6 2004/04/05 06:19:23 lgorrie Exp $} @titlepage @title SLIME User Manual @subtitle The Superior Lisp Interaction Mode for Emacs - at subtitle @value{EDITION}, updated @value{UPDATED} + at subtitle @value{EDITION}, @value{UPDATED} @author @end titlepage @@ -129,6 +129,7 @@ * User-interface conventions:: * Commands:: +* Semantic indentation:: User-interface conventions @@ -283,7 +284,8 @@ @node Installation, Running, Downloading, Getting started @section Installation -Installation just requires a few lines in your @file{~/.emacs}: +On Unix-like systems, installation just requires a few lines in your + at file{~/.emacs}: @example (setq inferior-lisp-program "@emph{the path to your Lisp system}") @@ -320,6 +322,7 @@ @menu * User-interface conventions:: * Commands:: +* Semantic indentation:: @end menu @node User-interface conventions, Commands, slime-mode, slime-mode @@ -386,7 +389,7 @@ doesn't belong to @SLIME{}, and you should probably lookup our equivalent. - at node Commands, , User-interface conventions, slime-mode + at node Commands, Semantic indentation, User-interface conventions, slime-mode @section Commands @menu @@ -655,6 +658,51 @@ @item M-x slime-profile-reset Reset profiler data. @end table + + at node Semantic indentation, , Commands, slime-mode + at section Semantic indentation + + at SLIME{} automatically discovers how to indent the macros in your Lisp +system. To do this the Lisp side scans all the macros in the system and +reports to Emacs all the ones with @code{&body} arguments. Emacs then +indents these specially, putting the first arguments four spaces in and +the ``body'' arguments just two spaces, as usual. + +This should ``just work.'' If you are a lucky sort of person you needn't +read the rest of this section. + +To simplify the implementation, @SLIME{} doesn't distinguish between +macros with the same symbol-name but different packages. This makes it +fit nicely with Emacs's indentation code. However, if you do have +several macros with the same symbol-name then they will all be indented +the same way, arbitrarily using the style from one of their +arglists. You can find out which symbols are involved in collisions +with: + + at example +(swank:print-indentation-lossage) + at end example + +If a collision causes you irritation, don't have a nervous breakdown, +just override the Elisp symbol's @code{common-lisp-indent-function} +property to your taste. @SLIME{} won't override your custom settings, it +just tries to give you good defaults. + +A more subtle issue is that imperfect caching is used for the sake of +performance. @footnote{@emph{Of course} we made sure it was actually too +slow before making the ugly optimization.} + at c +In an ideal world, Lisp would automatically scan every symbol for +indentation changes after each command from Emacs. However, this is too +expensive to do every time. Instead Lisp usually just scans the symbols +whose home package matches the one used by the Emacs buffer where the +request comes from. That is sufficient to pick up the indentation of +most interactively-defined macros. To catch the rest we make a full scan +of every symbol each time a new Lisp package is created between commands +-- that takes care of things like new systems being loaded. + +You can use @kbd{M-x slime-update-indentation} to force all symbols to +be scanned for indentation information. @node REPL, Debugger, slime-mode, Top @chapter @REPL{}: the ``top level'' From lgorrie at common-lisp.net Mon Apr 5 06:27:13 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 02:27:13 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv24001 Modified Files: slime.el Log Message: (slime-arglist): Don't `message' arglist directly, in case it contains %-signs. (slime-repl-output-face): Fix quoting. (slime-symbol-at-point): Call `slime-symbol-name-at-point', rather than ourselves. (slime-check-protocol-version): Docstring fix. Date: Mon Apr 5 02:27:13 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.251 slime/slime.el:1.252 --- slime/slime.el:1.251 Mon Apr 5 02:17:56 2004 +++ slime/slime.el Mon Apr 5 02:27:12 2004 @@ -180,7 +180,7 @@ :group 'slime) (defface slime-repl-output-face - `((t (:inherit font-lock-string-face))) + '((t (:inherit font-lock-string-face))) "Face for Lisp output in the SLIME REPL." :group 'slime) @@ -819,7 +819,7 @@ (defun slime-symbol-at-point () "Return the symbol at point, otherwise nil." - (let ((name (slime-symbol-at-point))) + (let ((name (slime-symbol-name-at-point))) (and name (intern name)))) (defun slime-sexp-at-point () @@ -1126,7 +1126,7 @@ (setq slime-changelog-date (slime-changelog-date)) (defun slime-check-protocol-version (lisp-version) - "Signal an error LISP-VERSION equal to `slime-changelog-date'" + "Signal an error unless LISP-VERSION is equal to `slime-changelog-date'." (unless (and lisp-version (equal lisp-version slime-changelog-date)) (slime-disconnect) (let ((message (format "Protocol mismatch: Lisp: %s ELisp: %s" From lgorrie at common-lisp.net Mon Apr 5 06:27:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 02:27:36 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29229 Modified Files: swank.lisp Log Message: (*swank-pprint-circle*, *swank-pprint-escape*, *swank-pprint-level*, *swank,pprint-length*): Fix typo in docstring. Date: Mon Apr 5 02:27:36 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.157 slime/swank.lisp:1.158 --- slime/swank.lisp:1.157 Mon Apr 5 02:18:43 2004 +++ slime/swank.lisp Mon Apr 5 02:27:35 2004 @@ -1126,16 +1126,16 @@ (prin1-to-string (eval form)))))) (defvar *swank-pprint-circle* *print-circle* - "*PRINT-CIRCLE* is bound to this volue when pretty printing slime output.") + "*PRINT-CIRCLE* is bound to this value when pretty printing slime output.") (defvar *swank-pprint-escape* *print-escape* - "*PRINT-ESCAPE* is bound to this volue when pretty printing slime output.") + "*PRINT-ESCAPE* is bound to this value when pretty printing slime output.") (defvar *swank-pprint-level* *print-level* - "*PRINT-LEVEL* is bound to this volue when pretty printing slime output.") + "*PRINT-LEVEL* is bound to this value when pretty printing slime output.") (defvar *swank-pprint-length* *print-length* - "*PRINT-LENGTH* is bound to this volue when pretty printing slime output.") + "*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." From lgorrie at common-lisp.net Mon Apr 5 06:27:49 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 02:27:49 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv21811 Modified Files: ChangeLog Log Message: Date: Mon Apr 5 02:27:48 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.320 slime/ChangeLog:1.321 --- slime/ChangeLog:1.320 Thu Apr 1 17:21:23 2004 +++ slime/ChangeLog Mon Apr 5 02:27:48 2004 @@ -1,7 +1,44 @@ -2004-04-02 Lawrence Mitchell +2004-04-05 Lawrence Mitchell - * slime.el (slime-autodoc): Escape %-signs in arglist before - passing to format. + * swank.lisp (*swank-pprint-circle*, *swank-pprint-escape*, + *swank-pprint-level*, *swank,pprint-length*): Fix typo in + docstring. + + * slime.el (slime-arglist): Don't `message' arglist directly, in + case it contains %-signs. + (slime-repl-output-face): Fix quoting. + (slime-symbol-at-point): Call `slime-symbol-name-at-point', + rather than ourselves. + (slime-check-protocol-version): Docstring fix. + +2004-04-05 Luke Gorrie + + * doc/slime.texi (Semantic indentation): Documented new + automatically-learn-how-to-indent-macros feature. + Added auto version control header in subtitle. + + * slime.el (slime-close-parens-at-point): New command bound to + C-a C-a. Inserts close-parenthesis characters at point until the + top-level form becomes well formed. Could perhaps be made fancier. + (slime-update-indentation): New command to update indentation + information (`common-lisp-indent-function' properties) based on + macro information extracted from Lisp. This happens + automatically, the command is just to force a full rescan. + + * swank.lisp (connection): Added slots to track indentation caching. + (*connections*): List of all open connections. + (default-connection): Function to get a "default" + connection. This is intended to support globally using the + debugger hook outside the context of a SLIME request, which is + broken at present. + (with-connection): Don't setup a restart: that must be done + separately. + (sync-state-to-emacs): Call `update-connection-indentation'. + (update-connection-indentation): Automatically discover how to + indent macros and tell Emacs. + + * swank-backend.lisp (arglist): Specify that strings returned + from ARGLIST should be READable. 2004-04-02 Helmut Eller From lgorrie at common-lisp.net Mon Apr 5 07:44:04 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 03:44:04 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv16551 Modified Files: swank.lisp Log Message: dispatch-event fix for :indentation-update. Date: Mon Apr 5 03:44:04 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.158 slime/swank.lisp:1.159 --- slime/swank.lisp:1.158 Mon Apr 5 02:27:35 2004 +++ slime/swank.lisp Mon Apr 5 03:44:02 2004 @@ -444,7 +444,7 @@ (encode-message `(:read-aborted ,(drop-thread thread) , at args) socket-io)) ((:emacs-return-string thread tag string) (send (lookup-thread-id thread) `(take-input ,tag ,string))) - (((:read-output :new-package :new-features :ed :%apply) + (((:read-output :new-package :new-features :ed :%apply :indentation-update) &rest _) (declare (ignore _)) (encode-message event socket-io)))) From lgorrie at common-lisp.net Mon Apr 5 18:03:49 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 05 Apr 2004 14:03:49 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29408 Modified Files: slime.el Log Message: *** empty log message *** Date: Mon Apr 5 14:03:49 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.252 slime/slime.el:1.253 --- slime/slime.el:1.252 Mon Apr 5 02:27:12 2004 +++ slime/slime.el Mon Apr 5 14:03:48 2004 @@ -5429,7 +5429,7 @@ `end-of-defun' execute without errors, or `slime-close-parens-limit' is exceeded." (interactive) - (loop for i from 1 to close-sexps-limit + (loop for i from 1 to slime-close-parens-limit until (save-excursion (beginning-of-defun) (ignore-errors (end-of-defun) t)) From IPIHAHENJSRGZV at art.com.br Tue Apr 6 01:51:21 2004 From: IPIHAHENJSRGZV at art.com.br (Scot Grady) Date: Tue, 06 Apr 2004 00:51:21 -0100 Subject: [slime-cvs] Your views are worth cash Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Tue Apr 6 07:46:01 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 06 Apr 2004 03:46:01 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv22081 Modified Files: swank.lisp Log Message: (macro-indentation): Check that the arglist is well-formed. This works around a problem with ACL returning arglists that aren't real lambda-lists. Date: Tue Apr 6 03:46:01 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.159 slime/swank.lisp:1.160 --- slime/swank.lisp:1.159 Mon Apr 5 03:44:02 2004 +++ slime/swank.lisp Tue Apr 6 03:46:00 2004 @@ -1568,11 +1568,13 @@ The form is to be used as the `common-lisp-indent-function' property in Emacs." (if (macro-function symbol) - (macro-indentation (read-arglist (ignore-errors (arglist symbol)))) + (macro-indentation (ignore-errors (read-arglist (arglist symbol)))) nil)) (defun macro-indentation (arglist) - (position '&body (remove '&whole arglist))) + (if (well-formed-list-p arglist) + (position '&body (remove '&whole arglist)) + nil)) (defun read-arglist (args) (etypecase args @@ -1581,6 +1583,13 @@ (string (with-temp-package *package* (read-from-string args))))) + +(defun well-formed-list-p (list) + "Is LIST a proper list terminated by NIL?" + (typecase list + (null t) + (cons (well-formed-list-p (cdr list))) + (t nil))) (defun print-indentation-lossage (&optional (stream *standard-output*)) "Return the list of symbols whose indentation styles collide incompatibly. From lgorrie at common-lisp.net Tue Apr 6 07:47:48 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 06 Apr 2004 03:47:48 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv19235 Modified Files: ChangeLog Log Message: Date: Tue Apr 6 03:47:48 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.321 slime/ChangeLog:1.322 --- slime/ChangeLog:1.321 Mon Apr 5 02:27:48 2004 +++ slime/ChangeLog Tue Apr 6 03:47:47 2004 @@ -1,3 +1,9 @@ +2004-04-06 Luke Gorrie + + * swank.lisp (macro-indentation): Check that the arglist is + well-formed. This works around a problem with ACL returning + arglists that aren't real lambda-lists. + 2004-04-05 Lawrence Mitchell * swank.lisp (*swank-pprint-circle*, *swank-pprint-escape*, From mbaringer at common-lisp.net Tue Apr 6 10:42:55 2004 From: mbaringer at common-lisp.net (Marco Baringer) Date: Tue, 06 Apr 2004 06:42:55 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog slime/slime.el slime/swank-allegro.lisp slime/swank-backend.lisp slime/swank-clisp.lisp slime/swank-cmucl.lisp slime/swank-openmcl.lisp slime/swank-sbcl.lisp slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9920 Modified Files: ChangeLog slime.el swank-allegro.lisp swank-backend.lisp swank-clisp.lisp swank-cmucl.lisp swank-openmcl.lisp swank-sbcl.lisp swank.lisp Log Message: See ChangeLog entry 2004-04-06 Marco Baringer Date: Tue Apr 6 06:42:53 2004 Author: mbaringer Index: slime/ChangeLog diff -u slime/ChangeLog:1.322 slime/ChangeLog:1.323 --- slime/ChangeLog:1.322 Tue Apr 6 03:47:47 2004 +++ slime/ChangeLog Tue Apr 6 06:42:52 2004 @@ -1,3 +1,23 @@ +2004-04-06 Marco Baringer + + * slime.el (slime-repl-command-input-complete-p): New function. + (slime-repl-send-string): New optional arg specifying what string + to put on slime-repl-input-history, usefull when this string + differs from what we actually want to eval. + (slime-repl-return): Check for repl commands and pass then to + slime-repl-send-repl-command. + (slime-repl-send-repl-command): New function. + (slime-kill-all-buffers): New function. + + * swank.lisp: Define the various repl command handlers: sayoonara, + cd, pwd, pack and cload. + + * swank-backend.lisp (quit-lisp): Define as part of the backend + interface and export. + + * swank-sbcl.lisp, swank-openmcl.lisp, swank-cmucl.lisp, + swank-clisp.lisp, swank-allegro.lisp (quit-lisp): implement. + 2004-04-06 Luke Gorrie * swank.lisp (macro-indentation): Check that the arglist is Index: slime/slime.el diff -u slime/slime.el:1.253 slime/slime.el:1.254 --- slime/slime.el:1.253 Mon Apr 5 14:03:48 2004 +++ slime/slime.el Tue Apr 6 06:42:52 2004 @@ -401,6 +401,25 @@ t))) (t t)))) +(defun slime-repl-command-input-complete-p (start end) + "Return t if the region from START to END contains a complete SLIME repl command. + + So, what's a SLIME repl command? A #\, followed by the name of + a repl command followed by n complete lisp forms." + (interactive (list (point-min) (point-max))) + (save-excursion + (goto-char start) + (and (looking-at " *, *") + (save-restriction + (narrow-to-region (search-forward-regexp "\\s *,") end) + (loop + do (skip-chars-forward " \t\r\n") + until (eobp) + do (condition-case nil + (forward-sexp) + (scan-error (return nil))) + finally (return t)))))) + (defun inferior-slime-input-complete-p () "Return true if the input is complete in the inferior lisp buffer." (slime-input-complete-p (process-mark (get-buffer-process (current-buffer))) @@ -2019,8 +2038,8 @@ (slime-repl-insert-prompt result))) ((:abort) (slime-repl-show-abort)))) -(defun slime-repl-send-string (string) - (slime-repl-add-to-input-history string) +(defun slime-repl-send-string (string &optional command-string) + (slime-repl-add-to-input-history (or command-string string)) (cond (slime-repl-read-mode (slime-repl-return-string string)) (t (slime-repl-eval-string string)))) @@ -2130,6 +2149,10 @@ (cond (current-prefix-arg (slime-repl-send-input) (insert "\n")) + ((slime-repl-command-input-complete-p slime-repl-input-start-mark slime-repl-input-end-mark) + (goto-char slime-repl-input-end-mark) + (insert "\n") + (slime-repl-send-repl-command)) ((slime-input-complete-p slime-repl-input-start-mark slime-repl-input-end-mark) (goto-char slime-repl-input-end-mark) @@ -2149,6 +2172,28 @@ (slime-mark-input-start) (slime-repl-send-string (concat input "\n")))) +(defun slime-repl-send-repl-command () + "Goto the end of the input and send the current input (which + we're assuming is a repl command." + (let ((input (buffer-substring-no-properties (save-excursion + (goto-char slime-repl-input-start-mark) + (search-forward-regexp " *,")) + (save-excursion + (goto-char slime-repl-input-end-mark) + (when (and (eq (char-before) ?\n) + (not (slime-reading-p))) + (backward-char 1)) + (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-mark-output-start) + (slime-mark-input-start) + (if (string-match "^ *\\+ *$" input) + ;; majik ,+ command + (slime-repl-send-string (pop slime-repl-input-history)) + (slime-repl-send-string (concat "(swank::repl-command " input ")\n") (concat "," input))))) + (defun slime-repl-closing-return () "Evaluate the current input string after closing all open lists." (interactive) @@ -5667,6 +5712,16 @@ (put 'def-slime-test 'lisp-indent-function 4) (put 'slime-check 'lisp-indent-function 1) + +;;;; Cleanup after a quit + +(defun slime-kill-all-buffers () + "Kill all the slime related buffers. This is only used by the + repl command sayoonara." + (dolist (buf (buffer-list)) + (when (or (member (buffer-name buf) (list "*inferior-lisp*" "*slime-events*")) + (string-match "\*slime-repl\[\d+\]\*" (buffer-name buf))) + (kill-buffer buf)))) ;;;;; Test case definitions Index: slime/swank-allegro.lisp diff -u slime/swank-allegro.lisp:1.26 slime/swank-allegro.lisp:1.27 --- slime/swank-allegro.lisp:1.26 Wed Mar 31 17:38:55 2004 +++ slime/swank-allegro.lisp Tue Apr 6 06:42:53 2004 @@ -322,3 +322,6 @@ (mp:process-wait "receive" #'mailbox.queue mbox) (mp:with-process-lock (mutex) (pop (mailbox.queue mbox))))) + +(defimplementation quit-lisp () + (excl:exit 0 :quiet t)) Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.41 slime/swank-backend.lisp:1.42 --- slime/swank-backend.lisp:1.41 Mon Apr 5 02:18:06 2004 +++ slime/swank-backend.lisp Tue Apr 6 06:42:53 2004 @@ -24,6 +24,7 @@ #:position-p #:position-pos #:print-output-to-string + #:quit-lisp )) (in-package :swank-backend) @@ -524,3 +525,6 @@ (definterface receive () "Return the next message from current thread's mailbox.") + +(definterface quit-lisp () + "Exit the current lisp image.") Index: slime/swank-clisp.lisp diff -u slime/swank-clisp.lisp:1.28 slime/swank-clisp.lisp:1.29 --- slime/swank-clisp.lisp:1.28 Tue Mar 23 16:32:17 2004 +++ slime/swank-clisp.lisp Tue Apr 6 06:42:53 2004 @@ -435,6 +435,9 @@ pairs))) (nreverse pairs)))))) +(defimplementation quit-lisp () + (#+lisp=cl ext:quit #-lisp=cl lisp:quit code)) + ;;; Local Variables: ;;; eval: (put 'compile-file-frobbing-notes 'lisp-indent-function 1) ;;; eval: (put 'dynamic-flet 'common-lisp-indent-function 1) Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.93 slime/swank-cmucl.lisp:1.94 --- slime/swank-cmucl.lisp:1.93 Wed Mar 31 17:46:04 2004 +++ slime/swank-cmucl.lisp Tue Apr 6 06:42:53 2004 @@ -1466,3 +1466,6 @@ (pop (mailbox.queue mbox))))) ) + +(defimplementation quit-lisp () + (ext::quit)) Index: slime/swank-openmcl.lisp diff -u slime/swank-openmcl.lisp:1.71 slime/swank-openmcl.lisp:1.72 --- slime/swank-openmcl.lisp:1.71 Wed Mar 10 05:03:38 2004 +++ slime/swank-openmcl.lisp Tue Apr 6 06:42:53 2004 @@ -562,3 +562,6 @@ (ccl:wait-on-semaphore (mailbox.semaphore mbox)) (ccl:with-lock-grabbed (mutex) (pop (mailbox.queue mbox))))) + +(defimplementation quit-lisp () + (ccl::quit)) Index: slime/swank-sbcl.lisp diff -u slime/swank-sbcl.lisp:1.82 slime/swank-sbcl.lisp:1.83 --- slime/swank-sbcl.lisp:1.82 Thu Apr 1 16:27:34 2004 +++ slime/swank-sbcl.lisp Tue Apr 6 06:42:53 2004 @@ -713,3 +713,6 @@ mutex)))))))) ) + +(defimplementation quit-lisp () + (sb-ext::quit)) Index: slime/swank.lisp diff -u slime/swank.lisp:1.160 slime/swank.lisp:1.161 --- slime/swank.lisp:1.160 Tue Apr 6 03:46:00 2004 +++ slime/swank.lisp Tue Apr 6 06:42:53 2004 @@ -1991,6 +1991,49 @@ (with-connection (connection) (simple-break)))))) +;;;; REPL Commands + +(defvar *repl-commands* (make-hash-table :test 'equal)) + +(defmacro defslime-repl-command (name args &body body) + `(progn + (setf (gethash ,(symbol-name name) *repl-commands*) + (lambda ,args , at body)) + ',name)) + +(defmacro repl-command (op &rest args) + `(if (gethash ,(symbol-name op) *repl-commands*) + (funcall (gethash ,(symbol-name op) *repl-commands*) , at args) + (error "Unknown repl command ~S." ,(symbol-name op)))) + +(defslime-repl-command sayoonara () + (eval-in-emacs '(slime-kill-all-buffers)) + (swank-backend:quit-lisp)) + +(defslime-repl-command cd (namestring) + (set-default-directory namestring)) + +(defslime-repl-command pwd () + (truename *default-pathname-defaults*)) + +(defslime-repl-command pack (&optional new-package) + (setf *package* (if new-package + (or (find-package new-package) + (progn + (warn "No package named ~S found." new-package) + *package*)) + *package*))) + +(defslime-repl-command cload (file &optional force) + (unless (probe-file (merge-pathnames file)) + (error "~S does not exist, can't load it." file)) + (if (or force + (not (probe-file (compile-file-pathname file))) + (< (file-write-date (compile-file-pathname file)) + (file-write-date file))) + (compile-file-for-emacs file t) + (load file))) + ;;; Local Variables: ;;; eval: (font-lock-add-keywords 'lisp-mode '(("(\\(defslimefun\\)\\s +\\(\\(\\w\\|\\s_\\)+\\)" (1 font-lock-keyword-face) (2 font-lock-function-name-face)))) ;;; End: From laralini at fun.scrapbookscrapbook.com Tue Apr 6 14:09:05 2004 From: laralini at fun.scrapbookscrapbook.com (Claudia Bridges) Date: Tue, 06 Apr 2004 09:09:05 -0500 Subject: [slime-cvs] ENTERTAINMENT/MEDIA Sector - CYPM Acquisition - To Compete With DISNEY & PIXAR, lillian Message-ID: Equity Spoltight Symbol: CYPM Market: OTC.BB Sector: Entertainment/Media - 3D Animation BREAKING NEWS - CYPM Acquires Profitable Joongang Movie Entertainment...CYPM To Compete With Pixar & Disney NEW YORK---PRIMEZONE---Cyper Media, Inc. (CYPM), a 3D animation studio currently producing ``The 5th Glacial Epoch,'' a 15 million dollar feature, has acquired Joongang Movie Entertainment Co., Ltd., a producer of animated content for the world-famous Pokemon series. Joongang is a profitable 13-year-old animation company with more than 60 different clients among OEM Japanese TV shows, and which also has numerous clients in Europe. Duk Jin Jang, CEO of Cyper said, ``Cyper will now be able to offer our combined clients traditional 2D along with 3D animation content, enabling the Company to compete profitably with world class animators such as Pixar and Disney.'' STOCK PROFILE OF THE WEEK We are very excited about our newest stock profile, Cyper Media, Inc. (CYPM). Not only has CYPM received a conditional commitment letter for 4 million of the 15 million dollar production budget for its CGI Animation Feature, "The 5th Glacial Epoch," it has also entered into a commitment for a 5 million dollar advance from an electronic game publisher. The money for its latest venture seems to be pouring in, but mere financing is just the beginning. The really big news is that CYPM has started the process of getting a distribution contract with MGM, Metro-Goldwyn-Mayer. The 4 million dollar commitment letter from Global Marine is subject to a letter of a conditional Distribution Letter from a major distributor, which CYPM has now secured. Cyper Media is looking to become a leading producer of 3D digital animation entertainment products for the world broadcast entertainment market. Cyper Media develops and produces 3D digital animation for television, short films, CGI feature films, home video, music video and multi-media applications such as video games. Cyper Media produces 3D digital animation by applying advanced hardware and software technology using computer systems throughout the production process. LICENSING & MERCHANDISING RIGHTS The Company intends to exploit the licensing and merchandising of its proprietary characters in order to generate revenue and to highten the popularity of its characters and programs. By licensing its proprietary characters to select manufacturers and distributors of consumer products such as toys, apparel, school supplies, house wares and books, the Company seeks to capture a portion of the growing licensing and merchandising market which features entertainment properties, such as animated characters. In 1995, this segment of the merchandising and licensing market had retail sales in the United States and Canada in excess of 16 billion dollars. OUTLINING THE THE OPPORTUNITIES The demand for animation programming and the business of animation production have expanded dramatically over the past decade. The revival of Disney's feature animation production in the 1990s, and the advent of new entrants like Paramount and DreamWorks SKG, have produced some of the biggest ever box office hits. The television market has also expanded, offering producers a voracious and lucrative market. Thanks to programs like The Simpsons and South Park, animation has started to become a staple element of prime-time television programming. Animation is an attractive investment because of its longevity, its ability to travel, and the potential to create ancillary revenue streams from home video, publishing, toys and other licensing activities. As well, the Academy Awards now recognizes Animation in a major category all its own. COMPETITIVE ENVIRONMENT Typically a US made 22-minute television show costs between 300,000 to 800,000 dollars to produce. Cyper can produce the same for a minimum of 80,000. This means many U.S.-based producers of animated programming such as Film Roman now have to subcontract some of the less creative and more labor-intensive components of its production process to animation studios located in low-cost labor countries, such as Korea. As the number of animated feature films and animated television programs expands, the demand for the services of overseas studios has expanded likewise. This demand may lead overseas studios to raise their fees, which may result in a rise in production costs, or an inability to contract with the Company's preferred overseas studios. HOW MUCH MONEY IS IN THIS INDUSTRY? The list of Top Ten grossing animated movies is impressive. The Lion King is at number one with a total gross of 312.8 million dollars. Shrek brings up second place with a whopping 267.6 million, and Monsters, Inc. takes third with 255.3 million. The other seven rounding out the list post an impressive Billion-plus. But the most recent animated feature that comes to mind is playing in theaters now. "Finding Nemo," sold about 70.6 million worth of tickets in its first three days, setting a new opening record for a cartoon, surpassing the 62.5 million bow of "Monsters, Inc." in November 2001. And although Nemo is a Walt Disney production, Disney no longer has a monopoly on animated features. In fact, of the Top 10 grossing animated features of all time, 4 are Walt Disney productions while Pixar, a newcomer in comparison, also has 4, with Fox and DreamWorks rounding out the list. But earnings for such movies don't stop at the box office. Just the opposite--they are only beginning. Merchandising from these movies, everything from lunch boxes to video games to DVD sales, from Wal-mart to McDonald's to Burger King, range in the billions of dollars--and never forget about the impending sequels. Sales are huge, and CYPM through Cyper (now with financing on the way and MGM on their side) is poised to make the climb to the top. It's only a matter of time. Please note that Cyper Media had absolutley nothing to do with this report and is not a participant in any way. Stock Market Watcher is an independent research firm. This report is based on Stock Market Watcher's independent analysis but also relies on information supplied by sources believed to be reliable. This report may not be the opinion of CYPM management. Stock Market Watcher has also been retained to research and issue reports on CYPM. Stock Market Watcher may from time to time purchase or sell CYPM common shares in the open market without notice. The information contained in this report shall not constitute, an offer to sell or solicitation of any offer to purchase any security. It is intended for information only. Some statements may contain so-called "forward-looking statements". Many factors could cause actual results to differ. Investors should consult with their Investment Advisor concerning CYPM. Copyright 2004 ? Stock Market Watcher Ltd. SMS, Apartado 173-3006 Zona Franca MeoBarreal Heredia, Costa Rica. All Rights Reserved. This newsletter was distributed by MMS,Inc. MMS was paid four thousand dollars to distribute this report. MMS is not affiiated with Stock Market Watcher and is not responsible for newsletter content. No more ads, cheretaormina at inbox.lv prospectus omnipotent induct cartoon demand cab novelty elmira basic aircraft bifurcate scour director cohomology bimonthly monies sol timeout ornamentation mushroom dillon break suffer calculi chard purchasable albany agony arthur appropriable experiential chemic telephotography baseband transgression directorial armstrong chalcocite broccoli dante stater felicia camino compelled fermat middlemen mightn't inheritance monroe seek dialup silicone From lgorrie at common-lisp.net Tue Apr 6 16:08:37 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 06 Apr 2004 12:08:37 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv25760 Modified Files: slime.el Log Message: (slime-bytecode-stale-p): Automatically check if slime.elc is older than slime.el and try to help the user out if so. Date: Tue Apr 6 12:08:36 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.254 slime/slime.el:1.255 --- slime/slime.el:1.254 Tue Apr 6 06:42:52 2004 +++ slime/slime.el Tue Apr 6 12:08:36 2004 @@ -1011,14 +1011,43 @@ (defun slime () "Start an inferior^_superior Lisp and connect to its Swank server." (interactive) - (cond ((and current-prefix-arg - (slime-connected-p) - (get-buffer "*inferior-lisp*")) - (unless (slime-maybe-rearrange-inferior-lisp) - (slime-disconnect))) - (t (slime-disconnect))) - (slime-maybe-start-lisp) - (slime-read-port-and-connect)) + (when (or (not (slime-bytecode-stale-p)) + (slime-urge-bytecode-recompile)) + (cond ((and current-prefix-arg + (slime-connected-p) + (get-buffer "*inferior-lisp*")) + (unless (slime-maybe-rearrange-inferior-lisp) + (slime-disconnect))) + (t (slime-disconnect))) + (slime-maybe-start-lisp) + (slime-read-port-and-connect))) + +(defun slime-bytecode-stale-p () + "Return true if slime.elc is older than slime.el." + (when-let (libfile (locate-library "slime")) + (let* ((basename (file-name-sans-extension libfile)) + (sourcefile (concat basename ".el")) + (bytefile (concat basename ".elc"))) + (and (file-exists-p bytefile) + (file-newer-than-file-p sourcefile bytefile))))) + +(defun slime-recompile-bytecode () + "Recompile and reload slime. +Warning: don't use this in XEmacs, it seems to crash it!" + (let ((sourcefile (concat (file-name-sans-extension (locate-library "slime")) + ".el"))) + (byte-compile-file sourcefile t))) + +(defun slime-urge-bytecode-recompile () + "Urge the user to recompile slime.elc. +Return true if we have been given permission to continue." + (if (featurep 'xemacs) + ;; My XEmacs crashes and burns if I recompile/reload an elisp + ;; file from itself. So they have to do it themself. + (y-or-n-p "slime.elc is older than slime.el. Continue? ") + (if (y-or-n-p "slime.elc is older than slime.el. Recompile/reload first? ") + (progn (slime-recompile-bytecode) t) + nil))) (defun slime-maybe-rearrange-inferior-lisp () "Offer to rename *inferior-lisp* so that another can be started." From lgorrie at common-lisp.net Tue Apr 6 16:25:27 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 06 Apr 2004 12:25:27 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31680 Modified Files: ChangeLog Log Message: Date: Tue Apr 6 12:25:27 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.323 slime/ChangeLog:1.324 --- slime/ChangeLog:1.323 Tue Apr 6 06:42:52 2004 +++ slime/ChangeLog Tue Apr 6 12:25:27 2004 @@ -1,3 +1,9 @@ +2004-04-06 Luke Gorrie + + * slime.el (slime-bytecode-stale-p): Automatically check if + slime.elc is older than slime.el and try to help the user out if + so. + 2004-04-06 Marco Baringer * slime.el (slime-repl-command-input-complete-p): New function. From lgorrie at common-lisp.net Wed Apr 7 09:53:25 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Apr 2004 05:53:25 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv20352 Modified Files: swank.lisp Log Message: (completion-set): Also complete package names. (Patch from Sean O'Rourke.) Date: Wed Apr 7 05:53:25 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.161 slime/swank.lisp:1.162 --- slime/swank.lisp:1.161 Tue Apr 6 06:42:53 2004 +++ slime/swank.lisp Wed Apr 7 05:53:25 2004 @@ -1346,6 +1346,12 @@ (push symbol completions)))) (remove-duplicates completions))) +(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 #'package-name (list-all-packages))))) + (defun completion-set (string default-package-name matchp) (declare (type simple-base-string string)) (multiple-value-bind (name package-name package internal-p) @@ -1356,8 +1362,12 @@ (and (not internal-p) package-name) matchp))) + (packs (and (not package-name) + (find-matching-packages name matchp))) (converter (output-case-converter name)) - (strings (mapcar converter (mapcar #'symbol-name symbols)))) + (strings + (mapcar converter + (nconc (mapcar #'symbol-name symbols) packs)))) (format-completion-set strings internal-p package-name)))) (defslimefun completions (string default-package-name) From lgorrie at common-lisp.net Wed Apr 7 10:06:20 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Apr 2004 06:06:20 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv25738 Modified Files: swank.lisp Log Message: (find-matching-packages): Add a ":" to the end of package names in completion. Date: Wed Apr 7 06:06:15 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.162 slime/swank.lisp:1.163 --- slime/swank.lisp:1.162 Wed Apr 7 05:53:25 2004 +++ slime/swank.lisp Wed Apr 7 06:06:13 2004 @@ -1349,8 +1349,10 @@ (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 #'package-name (list-all-packages))))) + (mapcar (lambda (pkgname) + (concatenate 'string pkgname ":")) + (remove-if-not (lambda (x) (funcall matcher to-match x)) + (mapcar #'package-name (list-all-packages)))))) (defun completion-set (string default-package-name matchp) (declare (type simple-base-string string)) From lgorrie at common-lisp.net Wed Apr 7 10:07:51 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Apr 2004 06:07:51 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv1073 Modified Files: ChangeLog Log Message: Date: Wed Apr 7 06:07:50 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.324 slime/ChangeLog:1.325 --- slime/ChangeLog:1.324 Tue Apr 6 12:25:27 2004 +++ slime/ChangeLog Wed Apr 7 06:07:50 2004 @@ -1,3 +1,10 @@ +2004-04-07 Luke Gorrie + + * swank.lisp (completion-set): Also complete package + names. (Patch from Sean O'Rourke.) + (find-matching-packages): Add a ":" to the end of package names + in completion. + 2004-04-06 Luke Gorrie * slime.el (slime-bytecode-stale-p): Automatically check if From lgorrie at common-lisp.net Wed Apr 7 10:20:41 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 07 Apr 2004 06:20:41 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv20896 Modified Files: swank.lisp Log Message: *** empty log message *** Date: Wed Apr 7 06:20:41 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.163 slime/swank.lisp:1.164 --- slime/swank.lisp:1.163 Wed Apr 7 06:06:13 2004 +++ slime/swank.lisp Wed Apr 7 06:20:40 2004 @@ -1349,9 +1349,9 @@ (defun find-matching-packages (name matcher) "Return a list of package names matching NAME." (let ((to-match (string-upcase name))) - (mapcar (lambda (pkgname) - (concatenate 'string pkgname ":")) - (remove-if-not (lambda (x) (funcall matcher to-match x)) + (remove-if-not (lambda (x) (funcall matcher to-match x)) + (mapcar (lambda (pkgname) + (concatenate 'string pkgname ":")) (mapcar #'package-name (list-all-packages)))))) (defun completion-set (string default-package-name matchp) From BYMXOVLZVGXLR at cv.sony.co.jp Wed Apr 7 12:02:11 2004 From: BYMXOVLZVGXLR at cv.sony.co.jp (Lois Gibbons) Date: Wed, 07 Apr 2004 11:02:11 -0100 Subject: [slime-cvs] Can't get the job because you don't have a university degree? Wrong! Message-ID: An HTML attachment was scrubbed... URL: From ethorehar at myeweb.com Wed Apr 7 15:35:00 2004 From: ethorehar at myeweb.com (Carmella Lindsay) Date: Wed, 07 Apr 2004 10:35:00 -0500 Subject: [slime-cvs] STOCK-MARKET Up-Ticker, NEWS On Acquisition, braille Message-ID: Press Release CYPM signs Agreement with Veteran Animation Director for Future Projects NEW YORK -- (PRIMEZONE) -- Cyper Media, Inc.(OTC BB:CYPM.OB) is pleased to announce that the company has signed an agreement with Animation Director Hyun Chan Lee to co-produce various contract animation projects. Mr. Lee has substantial experience in animation and has been working since 1979 on various shows, most notably ``The Simpsons.'' Some of the other animation projects Mr. Lee worked on are: Muppet Babies (1990 USA), My Little Pony (1992 USA), Mission Hills (2000 USA), What's up Mimi (2002 Canada) and The Proud Family (2002 USA). Duk Jin Jang, CEO of Cyper commented: ``By bringing in a veteran animation director like Mr. Lee, this will not only help Cyper's production, but also bring in more business to us and further solidify Cyper's core business in 2D animation. ``We are on our way of achieving a consistent cash flow from our OEM 2D animation business. With Digital Dream Entertainment focusing on Japanese anime business, and our future plans of bringing Europe and North America animation business into our fold, Cyper will continue to bring value to our shareholders.'' Up-Breaking News is an independent research firm. This report is based on Up-Breaking News's independent analysis but also relies on information supplied by sources believed to be reliable. This report may not be the opinion of CYPM management. Up-Breaking News has also been retained to research and issue reports on CYPM. Up-Breaking News may from time to time purchase or sell CYPM common shares in the open market without notice. The information contained in this report shall not constitute, an offer to sell or solicitation of any offer to purchase any security. It is intended for information only. Some statements may contain so-called "forward-looking statements". Many factors could cause actual results to differ. Investors should consult with their Investment Advisor concerning CYPM. Copyright 2004 ? Up-Breaking News Ltd. SMS, Apartado 173-3006 Zona Franca MeoBarreal Heredia, Costa Rica. All Rights Reserved. This newsletter was distributed by MMS,Inc. MMS was paid four thousand dollars to distribute this report. MMS is not affiiated with Up-Breaking News and is not responsible for newsletter content. No more ads, cheretaormina at inbox.lv trounce smithfield tray emphases firsthand lacquer ewing abase laos errata cyanamid collocation compile antagonist loge when grisly becker tithe felony emittance notice boron seedbed viewpoint foolhardy chartreuse shell coddle aurochs hurley batik stitch barracuda differentiate intersperse sugar workpiece acrid contravariant malone warhead abbas embalm birdseed nimbus manometer From pseibel at common-lisp.net Wed Apr 7 16:24:03 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Wed, 07 Apr 2004 12:24:03 -0400 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-serv16768 Modified Files: ChangeLog swank.lisp Log Message: Adding swank versions of two missing pretty-printer control variables. Date: Wed Apr 7 12:24:03 2004 Author: pseibel Index: slime/ChangeLog diff -u slime/ChangeLog:1.325 slime/ChangeLog:1.326 --- slime/ChangeLog:1.325 Wed Apr 7 06:07:50 2004 +++ slime/ChangeLog Wed Apr 7 12:24:03 2004 @@ -1,3 +1,8 @@ +2004-04-07 Peter Seibel + + * swank.lisp (swank-pprint): Add swank versions of two missing + pretty-printer control variables. + 2004-04-07 Luke Gorrie * swank.lisp (completion-set): Also complete package Index: slime/swank.lisp diff -u slime/swank.lisp:1.164 slime/swank.lisp:1.165 --- slime/swank.lisp:1.164 Wed Apr 7 06:20:40 2004 +++ slime/swank.lisp Wed Apr 7 12:24:03 2004 @@ -1128,6 +1128,12 @@ (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.") @@ -1140,6 +1146,8 @@ (defun swank-pprint (list) "Bind some printer variables and pretty print each object in LIST." (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*) From pseibel at common-lisp.net Wed Apr 7 16:28:14 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Wed, 07 Apr 2004 12:28:14 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog slime/swank-allegro.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4770 Modified Files: ChangeLog swank-allegro.lisp Log Message: Allegro specific version of set-default-directory Date: Wed Apr 7 12:28:14 2004 Author: pseibel Index: slime/ChangeLog diff -u slime/ChangeLog:1.326 slime/ChangeLog:1.327 --- slime/ChangeLog:1.326 Wed Apr 7 12:24:03 2004 +++ slime/ChangeLog Wed Apr 7 12:28:13 2004 @@ -1,5 +1,8 @@ 2004-04-07 Peter Seibel + * swank-allegro.lisp (set-default-directory): Allegro specific + version that also uses excl:chdir. + * swank.lisp (swank-pprint): Add swank versions of two missing pretty-printer control variables. Index: slime/swank-allegro.lisp diff -u slime/swank-allegro.lisp:1.27 slime/swank-allegro.lisp:1.28 --- slime/swank-allegro.lisp:1.27 Tue Apr 6 06:42:53 2004 +++ slime/swank-allegro.lisp Wed Apr 7 12:28:13 2004 @@ -60,6 +60,10 @@ (defimplementation lisp-implementation-type-name () "allegro") +(defimplementation set-default-directory (directory) + (excl:chdir directory) + (namestring (setf *default-pathname-defaults* (pathname directory)))) + ;;;; Misc (defimplementation arglist (symbol) From pseibel at common-lisp.net Wed Apr 7 16:35:20 2004 From: pseibel at common-lisp.net (Peter Seibel) Date: Wed, 07 Apr 2004 12:35:20 -0400 Subject: [slime-cvs] CVS update: slime/swank-allegro.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv6818 Modified Files: swank-allegro.lisp Log Message: Slight tweak to just checked in Allegro-specifc set-default-directory. Date: Wed Apr 7 12:35:20 2004 Author: pseibel Index: slime/swank-allegro.lisp diff -u slime/swank-allegro.lisp:1.28 slime/swank-allegro.lisp:1.29 --- slime/swank-allegro.lisp:1.28 Wed Apr 7 12:28:13 2004 +++ slime/swank-allegro.lisp Wed Apr 7 12:35:20 2004 @@ -62,7 +62,8 @@ (defimplementation set-default-directory (directory) (excl:chdir directory) - (namestring (setf *default-pathname-defaults* (pathname directory)))) + (namestring (setf *default-pathname-defaults* (truename (merge-pathnames directory))))) + ;;;; Misc From jnqygh at hotmail.com Wed Apr 7 21:53:23 2004 From: jnqygh at hotmail.com (Dexter Chin) Date: Thu, 08 Apr 2004 02:53:23 +0500 Subject: [slime-cvs] Best deal of the month Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Thu Apr 8 10:09:00 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 08 Apr 2004 06:09:00 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv6336 Modified Files: slime.el Log Message: Patch from Lawrence: (slime-repl-prompt-face): New face. (slime-repl-insert-prompt): Use it. (slime-with-chosen-connection, with-struct): Docstring fix for function's arglist display. (slime-read-package-name): Use `slime-bogus-completion-alist' to construct completion table. (slime-maybe-rearrange-inferior-lisp): Use `rename-buffer's optional argument to rename uniquely. (slime-check-connected): Display keybinding for `slime' via `substitute-command-keys'. (slime-repl-send-repl-command): Use whitespace character class in regexp. (slime-autodoc-stop-timer): New function. (slime-autodoc-mode): Add `interactive' spec to specify optional arg. This allows prefix toggling of mode (behaves more like most Emacs modes now). Stop timer if switching mode off with `slime-autodoc-stop-timer'. (slime-autodoc-start-timer, slime-complete-symbol) (slime-complete-saved-window-configuration) (slime-insert-balanced-comments): Docstring fix. (slime-ed): Call `slime-from-lisp-filename' on filename for list case of argument. (slime-insert-transcript-delimiter, slime-thread-insert): Use ?\040 to indicate SPC. (line-beginning-position): `forward-line' always puts us in column 0. (line-end-position): Define if not fboundp (for older XEmacs). Date: Thu Apr 8 06:08:59 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.255 slime/slime.el:1.256 --- slime/slime.el:1.255 Tue Apr 6 12:08:36 2004 +++ slime/slime.el Thu Apr 8 06:08:59 2004 @@ -179,6 +179,11 @@ "Face for compiler notes while selected." :group 'slime) +(defface slime-repl-prompt-face + '((t (:inherit font-lock-keyword-face))) + "Face for the prompt in the SLIME REPL." + :group 'slime) + (defface slime-repl-output-face '((t (:inherit font-lock-string-face))) "Face for Lisp output in the SLIME REPL." @@ -977,9 +982,9 @@ (defun slime-read-package-name (prompt &optional initial-value) "Read a package name from the minibuffer, prompting with PROMPT." (let ((completion-ignore-case t)) - (completing-read prompt (mapcar (lambda (x) (cons x x)) - (slime-eval - `(swank:list-all-package-names))) + (completing-read prompt (slime-bogus-completion-alist + (slime-eval + `(swank:list-all-package-names))) nil nil initial-value))) (defmacro slime-propertize-region (props &rest body) @@ -1052,9 +1057,8 @@ (defun slime-maybe-rearrange-inferior-lisp () "Offer to rename *inferior-lisp* so that another can be started." (when (y-or-n-p "Create an additional *inferior-lisp*? ") - (let ((bufname (generate-new-buffer-name "*inferior-lisp*"))) - (with-current-buffer "*inferior-lisp*" - (rename-buffer bufname))))) + (with-current-buffer "*inferior-lisp*" + (rename-buffer bufname t)))) (defun slime-maybe-start-lisp () "Start an inferior lisp unless one is already running." @@ -1666,7 +1670,8 @@ (defun slime-check-connected () (unless (slime-connected-p) - (error "Not connected. Use `M-x slime' to start a Lisp."))) + (error "Not connected. Use `%s' to start a Lisp." + (substitute-command-keys "\\[slime]")))) (defun slime-connected-p () "Return true if the Swank connection is open." @@ -2015,7 +2020,7 @@ (unless (bolp) (insert "\n")) (let ((prompt-start (point))) (slime-propertize-region - '(face font-lock-keyword-face + '(face slime-repl-prompt-face read-only t intangible t slime-repl-prompt t @@ -2206,7 +2211,7 @@ we're assuming is a repl command." (let ((input (buffer-substring-no-properties (save-excursion (goto-char slime-repl-input-start-mark) - (search-forward-regexp " *,")) + (search-forward-regexp "\\s-*,")) (save-excursion (goto-char slime-repl-input-end-mark) (when (and (eq (char-before) ?\n) @@ -2218,7 +2223,7 @@ '(face slime-repl-input-face rear-nonsticky (face))) (slime-mark-output-start) (slime-mark-input-start) - (if (string-match "^ *\\+ *$" input) + (if (string-match "^\\s-*\\+\\s-*$" input) ;; majik ,+ command (slime-repl-send-string (pop slime-repl-input-history)) (slime-repl-send-string (concat "(swank::repl-command " input ")\n") (concat "," input))))) @@ -2806,7 +2811,9 @@ ;;;;;;; Tree Widget (defmacro* with-struct ((conc-name &rest slots) struct &body body) - "Like with-slots but works only for structs." + "Like with-slots but works only for structs. + +\(with-struct (CONC-NAME &rest SLOTS) STRUCT &body BODY)" (flet ((reader (slot) (intern (concat (symbol-name conc-name) (symbol-name slot))))) (let ((struct-var (gensym "struct"))) @@ -3284,11 +3291,13 @@ (defun slime-autodoc-mode (&optional arg) "Enable `slime-autodoc'." - (interactive) - (cond ((and arg (not (eq -1 arg))) (setq slime-autodoc-mode t)) - ((eq -1 arg) (setq slime-autodoc-mode nil)) + (interactive "P") + (cond ((< (prefix-numeric-value arg) 0) (setq slime-autodoc-mode nil)) + (arg (setq slime-autodoc-mode t)) (t (setq slime-autodoc-mode (not slime-autodoc-mode)))) - (when slime-autodoc-mode (slime-autodoc-start-timer))) + (if slime-autodoc-mode + (slime-autodoc-start-timer) + (slime-autodoc-stop-timer))) (defun slime-autodoc () "Print some apropos information about the code at point, if applicable." @@ -3342,7 +3351,7 @@ "*Delay before autodoc messages are fetched and displayed, in seconds.") (defun slime-autodoc-start-timer () - "*(Re)start the timer that prints autodocs every `slime-autodoc-delay' seconds." + "(Re)start the timer that prints autodocs every `slime-autodoc-delay' seconds." (interactive) (when slime-autodoc-idle-timer (cancel-timer slime-autodoc-idle-timer)) @@ -3350,6 +3359,13 @@ (run-with-idle-timer slime-autodoc-delay slime-autodoc-delay 'slime-autodoc-timer-hook))) +(defun slime-autodoc-stop-timer () + "Stop the timer that prints autodocs. +See also `slime-autodoc-start-timer'." + (when slime-autodoc-idle-timer + (cancel-timer slime-autodoc-idle-timer) + (setq slime-autodoc-idle-timer nil))) + (defun slime-autodoc-timer-hook () "Function to be called after each Emacs becomes idle. When `slime-autodoc-mode' is non-nil, print apropos information about @@ -3418,7 +3434,7 @@ (defvar slime-completions-buffer-name "*Completions*") (defvar slime-complete-saved-window-configuration nil - "Window configuration before we show the *Completions* buffer.\n\ + "Window configuration before we show the *Completions* buffer. This is buffer local in the buffer where the complition is performed.") @@ -3470,8 +3486,8 @@ (defun slime-complete-symbol () "Complete the symbol at point. -If the symbol lacks an explicit package prefix, the current buffer's -package is used." + +Completion is performed by `slime-complete-symbol-function'." (interactive) (funcall slime-complete-symbol-function)) @@ -3744,7 +3760,7 @@ (cond ((stringp what) (find-file (slime-from-lisp-filename what))) ((listp what) - (find-file (first what)) + (find-file (first (slime-from-lisp-filename what))) (goto-line (second what)) ;; Find the correct column, without going past the end of ;; the line. @@ -3787,7 +3803,7 @@ (unless (bolp) (insert "\n")) (slime-insert-propertized '(slime-transcript-delimiter t) - ";;;; " (subst-char-in-string ?\n ?\ + ";;;; " (subst-char-in-string ?\n ?\040 (substring string 0 (min 60 (length string)))) " ...\n")))) @@ -5066,7 +5082,7 @@ (defun slime-thread-insert (id name summary) (slime-propertize-region `(thread-id ,id) (slime-insert-propertized '(face bold) name) - (insert-char ?\ (- 30 (current-column))) + (insert-char ?\040 (- 30 (current-column))) (let ((summary-start (point))) (insert " " summary) (unless (bolp) (insert "\n")) @@ -5456,7 +5472,7 @@ (defun slime-insert-balanced-comments (arg) "Insert a set of balanced comments around the s-expression containing the point. If this command is invoked repeatedly -(without any other command occurring between invocations), the +\(without any other command occurring between invocations), the comment progressively moves outward over enclosing expressions. If invoked with a positive prefix argument, the s-expression arg expressions out is enclosed in a set of balanced comments." @@ -6276,7 +6292,12 @@ (defun-if-undefined line-beginning-position (&optional n) (save-excursion (forward-line n) - (beginning-of-line) + (point))) + +(defun-if-undefined line-end-position (&optional n) + (save-excursion + (forward-line n) + (end-of-line) (point))) (defun-if-undefined check-parens () From lgorrie at common-lisp.net Thu Apr 8 10:09:16 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 08 Apr 2004 06:09:16 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv20824 Modified Files: ChangeLog Log Message: Date: Thu Apr 8 06:09:16 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.327 slime/ChangeLog:1.328 --- slime/ChangeLog:1.327 Wed Apr 7 12:28:13 2004 +++ slime/ChangeLog Thu Apr 8 06:09:16 2004 @@ -1,3 +1,33 @@ +2004-04-07 Lawrence Mitchell + + * slime.el (slime-repl-prompt-face): New face. + (slime-repl-insert-prompt): Use it. + (slime-with-chosen-connection, with-struct): Docstring + fix for function's arglist display. + (slime-read-package-name): Use `slime-bogus-completion-alist' to + construct completion table. + (slime-maybe-rearrange-inferior-lisp): Use `rename-buffer's + optional argument to rename uniquely. + (slime-check-connected): Display keybinding for `slime' via + `substitute-command-keys'. + (slime-repl-send-repl-command): Use whitespace character class in + regexp. + (slime-autodoc-stop-timer): New function. + (slime-autodoc-mode): Add `interactive' spec to specify optional + arg. This allows prefix toggling of mode (behaves more like + most Emacs modes now). Stop timer if switching mode off with + `slime-autodoc-stop-timer'. + (slime-autodoc-start-timer, slime-complete-symbol) + (slime-complete-saved-window-configuration) + (slime-insert-balanced-comments): Docstring fix. + (slime-ed): Call `slime-from-lisp-filename' on filename for list + case of argument. + (slime-insert-transcript-delimiter, slime-thread-insert): Use + ?\040 to indicate SPC. + (line-beginning-position): `forward-line' always puts us in + column 0. + (line-end-position): Define if not fboundp (for older XEmacs). + 2004-04-07 Peter Seibel * swank-allegro.lisp (set-default-directory): Allegro specific @@ -47,8 +77,8 @@ 2004-04-05 Lawrence Mitchell - * swank.lisp (*swank-pprint-circle*, *swank-pprint-escape*, - *swank-pprint-level*, *swank,pprint-length*): Fix typo in + * swank.lisp (*swank-pprint-circle*, *swank-pprint-escape*) + (*swank-pprint-level*, *swank-pprint-length*): Fix typo in docstring. * slime.el (slime-arglist): Don't `message' arglist directly, in From lgorrie at common-lisp.net Thu Apr 8 11:55:17 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 08 Apr 2004 07:55:17 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv20299 Modified Files: slime.el Log Message: Fixup arglists in docstrings with \(fn convention. Date: Thu Apr 8 07:55:12 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.256 slime/slime.el:1.257 --- slime/slime.el:1.256 Thu Apr 8 06:08:59 2004 +++ slime/slime.el Thu Apr 8 07:55:12 2004 @@ -649,7 +649,7 @@ "Evaluate VALUE, and if the result is non-nil bind it to VAR and evaluate BODY. -\(when-let (VAR VALUE) &rest BODY)" +\(fn (VAR VALUE) &rest BODY)" `(let ((,var ,value)) (when ,var , at body))) @@ -696,8 +696,7 @@ &body body) "Make the connection choosen by PREFIX-ARG current. -\(slime-with-chosen-connection (&optional (PREFIX-ARG 'current-prefix-arg)) - &body BODY)" +\(fn (&optional (PREFIX-ARG 'current-prefix-arg)) &body BODY)" `(let ((slime-dispatching-connection (slime-get-named-connection ,prefix-arg))) , at body)) @@ -1386,7 +1385,7 @@ "Execute BODY in the process-buffer of PROCESS. If PROCESS is not specified, `slime-connection' is used. -\(slime-with-connection-buffer (&optional PROCESS) &body BODY))" +\(fn (&optional PROCESS) &body BODY))" `(with-current-buffer (process-buffer (or ,process (slime-connection) (error "No connection"))) @@ -2813,7 +2812,7 @@ (defmacro* with-struct ((conc-name &rest slots) struct &body body) "Like with-slots but works only for structs. -\(with-struct (CONC-NAME &rest SLOTS) STRUCT &body BODY)" +\(fn (CONC-NAME &rest SLOTS) STRUCT &body BODY)" (flet ((reader (slot) (intern (concat (symbol-name conc-name) (symbol-name slot))))) (let ((struct-var (gensym "struct"))) From lgorrie at common-lisp.net Thu Apr 8 11:58:32 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 08 Apr 2004 07:58:32 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32033 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Thu Apr 8 07:58:31 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.328 slime/ChangeLog:1.329 --- slime/ChangeLog:1.328 Thu Apr 8 06:09:16 2004 +++ slime/ChangeLog Thu Apr 8 07:58:31 2004 @@ -4,6 +4,8 @@ (slime-repl-insert-prompt): Use it. (slime-with-chosen-connection, with-struct): Docstring fix for function's arglist display. + (when-let, slime-with-chosen-connection, with-struct): Docstring + fix for function's arglist display. (slime-read-package-name): Use `slime-bogus-completion-alist' to construct completion table. (slime-maybe-rearrange-inferior-lisp): Use `rename-buffer's From mbaringer at common-lisp.net Thu Apr 8 15:26:45 2004 From: mbaringer at common-lisp.net (Marco Baringer) Date: Thu, 08 Apr 2004 11:26:45 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog slime/slime.el slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11965 Modified Files: ChangeLog slime.el swank.lisp Log Message: REPL Shortcuts. See ChangeLog entry 2004-04-08 Marco Baringer Date: Thu Apr 8 11:26:44 2004 Author: mbaringer Index: slime/ChangeLog diff -u slime/ChangeLog:1.329 slime/ChangeLog:1.330 --- slime/ChangeLog:1.329 Thu Apr 8 07:58:31 2004 +++ slime/ChangeLog Thu Apr 8 11:26:44 2004 @@ -1,3 +1,30 @@ +2004-04-08 Marco Baringer + + * slime.el (slime-repl-package-stack): New buffer local variable. + (slime-repl-directory-stack): New buffer local variable. + (slime-repl-command-input-complete-p): Remove. + (slime-repl-update-banner): New function. + (slime-init-output-buffer): Use slime-repl-update-banner. + (slime-repl-shortcut-dispatch-char): New variable. + (slime-repl-return): Don't check for repl commands anymore. + (slime-repl-send-repl-command): Remove. + (slime-repl-mode-map): Bind slime-repl-shortcut-dispatch-char to + slime-handle-repl-shortcut. + (slime-set-default-directory): Use read-directory-name, call + slime-repl-update-banner. + (slime-repl-shortcut-table): New global variable. + (slime-handle-repl-shortcut): New function. + (defslime-repl-shortcut): New macro for defining repl shortcuts. + (slime-repl-shortcut-help, "change-directory", + slime-repl-push-directory, slime-repl-pop-directory, + "change-package", slime-repl-push-package, slime-repl-pop-package, + slime-repl-resend, slime-repl-sayoonara, slime-repl-defparameter, + slime-repl-compile-and-load): New repl shortcuts. + (slime-kill-all-buffers): Kill sldb buffers as well. + + * swank.lisp: Remove the repl related functions. + (requires-compile-p): New function. + 2004-04-07 Lawrence Mitchell * slime.el (slime-repl-prompt-face): New face. Index: slime/slime.el diff -u slime/slime.el:1.257 slime/slime.el:1.258 --- slime/slime.el:1.257 Thu Apr 8 07:55:12 2004 +++ slime/slime.el Thu Apr 8 11:26:44 2004 @@ -88,6 +88,14 @@ Don't access this value directly in a program. Call the function with the same name instead.")) +(make-variable-buffer-local + (defvar slime-repl-package-stack nil + "The stack of packages visited in this repl.")) + +(make-variable-buffer-local + (defvar slime-repl-directory-stack nil + "The stack of default directories associated with this repl.")) + (defvar slime-dont-prompt nil "* When true, don't prompt the user for input during startup. This is used for batch-mode testing.") @@ -406,25 +414,6 @@ t))) (t t)))) -(defun slime-repl-command-input-complete-p (start end) - "Return t if the region from START to END contains a complete SLIME repl command. - - So, what's a SLIME repl command? A #\, followed by the name of - a repl command followed by n complete lisp forms." - (interactive (list (point-min) (point-max))) - (save-excursion - (goto-char start) - (and (looking-at " *, *") - (save-restriction - (narrow-to-region (search-forward-regexp "\\s *,") end) - (loop - do (skip-chars-forward " \t\r\n") - until (eobp) - do (condition-case nil - (forward-sexp) - (scan-error (return nil))) - finally (return t)))))) - (defun inferior-slime-input-complete-p () "Return true if the input is complete in the inferior lisp buffer." (slime-input-complete-p (process-mark (get-buffer-process (current-buffer))) @@ -1807,28 +1796,34 @@ (unless noprompt (slime-repl-insert-prompt "" 0)) (current-buffer))))) +(defun slime-repl-update-banner () + (let ((banner (format "%s Port: %s Pid: %s Pwd: %s" + (slime-lisp-implementation-type) + (if (featurep 'xemacs) + (process-id (slime-connection)) + (process-contact (slime-connection))) + (slime-pid) + (expand-file-name default-directory)))) + ;; Emacs21 has the fancy persistent header-line. + (cond ((boundp 'header-line-format) + (setq header-line-format banner) + (pop-to-buffer (current-buffer)) + (when (fboundp 'animate-string) + ;; and dancing text + (when (zerop (buffer-size)) + (animate-string (format "; SLIME %s" slime-changelog-date) + 0 0))) + (slime-repl-insert-prompt "")) + (t + (slime-repl-insert-prompt (concat "; " banner)) + (pop-to-buffer (current-buffer)))))) + (defun slime-init-output-buffer (connection) (with-current-buffer (slime-output-buffer t) (set (make-local-variable 'slime-buffer-connection) connection) - (let ((banner (format "%s Port: %s Pid: %s" - (slime-lisp-implementation-type) - (if (featurep 'xemacs) - (process-id (slime-connection)) - (process-contact (slime-connection))) - (slime-pid)))) - ;; Emacs21 has the fancy persistent header-line. - (cond ((boundp 'header-line-format) - (setq header-line-format banner) - (pop-to-buffer (current-buffer)) - (when (fboundp 'animate-string) - ;; and dancing text - (when (zerop (buffer-size)) - (animate-string (format "; SLIME %s" slime-changelog-date) - 0 0))) - (slime-repl-insert-prompt "")) - (t - (slime-repl-insert-prompt (concat "; " banner)) - (pop-to-buffer (current-buffer))))))) + ;; set the directory stack + (setq slime-repl-directory-stack (list (expand-file-name default-directory))) + (slime-repl-update-banner))) (defvar slime-show-last-output-function 'slime-maybe-display-output-buffer @@ -1983,6 +1978,11 @@ (defvar slime-repl-input-end-mark) (defvar slime-repl-last-input-start-mark)) +(defcustom slime-repl-shortcut-dispatch-char ?\, + "Character used to distinguish repl commands from lisp forms." + :type '(character) + :group 'slime) + (defvar slime-repl-mode-map) (defun slime-repl-buffer (&optional create) @@ -2182,10 +2182,6 @@ (cond (current-prefix-arg (slime-repl-send-input) (insert "\n")) - ((slime-repl-command-input-complete-p slime-repl-input-start-mark slime-repl-input-end-mark) - (goto-char slime-repl-input-end-mark) - (insert "\n") - (slime-repl-send-repl-command)) ((slime-input-complete-p slime-repl-input-start-mark slime-repl-input-end-mark) (goto-char slime-repl-input-end-mark) @@ -2205,28 +2201,6 @@ (slime-mark-input-start) (slime-repl-send-string (concat input "\n")))) -(defun slime-repl-send-repl-command () - "Goto the end of the input and send the current input (which - we're assuming is a repl command." - (let ((input (buffer-substring-no-properties (save-excursion - (goto-char slime-repl-input-start-mark) - (search-forward-regexp "\\s-*,")) - (save-excursion - (goto-char slime-repl-input-end-mark) - (when (and (eq (char-before) ?\n) - (not (slime-reading-p))) - (backward-char 1)) - (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-mark-output-start) - (slime-mark-input-start) - (if (string-match "^\\s-*\\+\\s-*$" input) - ;; majik ,+ command - (slime-repl-send-string (pop slime-repl-input-history)) - (slime-repl-send-string (concat "(swank::repl-command " input ")\n") (concat "," input))))) - (defun slime-repl-closing-return () "Evaluate the current input string after closing all open lists." (interactive) @@ -2415,6 +2389,7 @@ ("\C-c\C-p" 'slime-repl-previous-prompt) ("\M-\C-a" 'slime-repl-beginning-of-defun) ("\M-\C-e" 'slime-repl-end-of-defun) + ((string slime-repl-shortcut-dispatch-char) 'slime-handle-repl-shortcut) ) (define-minor-mode slime-repl-read-mode @@ -4414,9 +4389,10 @@ (message "*package*: %s" (slime-eval `(swank:set-package ,package)))) (defun slime-set-default-directory (directory) - (interactive (list (read-file-name "Directory: " nil default-directory t))) + (interactive (list (read-directory-name "Directory: " nil nil t))) (with-current-buffer (slime-output-buffer) - (setq default-directory (expand-file-name directory))) + (setq default-directory (expand-file-name directory)) + (slime-repl-update-banner)) (message "default-directory: %s" (slime-eval `(swank:set-default-directory ,(expand-file-name directory))))) @@ -5757,6 +5733,145 @@ (put 'def-slime-test 'lisp-indent-function 4) (put 'slime-check 'lisp-indent-function 1) +;;;; REPL handlers + +(defvar slime-repl-shortcut-table nil) + +(defun slime-handle-repl-shortcut () + (interactive) + (if (save-excursion + (goto-char slime-repl-input-start-mark) + (looking-at " *$")) + (let* ((command-name (completing-read "Command: " + slime-repl-shortcut-table + nil + t + nil + 'slime-repl-shortcut-history)) + (command-spec (cdr (assoc command-name slime-repl-shortcut-table)))) + (call-interactively (cdr (assoc :handler command-spec)))) + (insert (string slime-repl-shortcut-dispatch-char)))) + +(defmacro defslime-repl-shortcut (elisp-name names &rest options) + `(progn + ,(when elisp-name + `(defun ,elisp-name () + (interactive) + (call-interactively ,(cdr (assoc :handler options))))) + ,@(loop + initially (setf options (mapcar (lambda (option) + `(cons ,(first option) ,(second option))) + options)) + for name in names + collect `(if (assoc ,name slime-repl-shortcut-table) + (setf (cdr (assoc ,name slime-repl-shortcut-table)) + (list ,name , at options)) + (push (list ,name , at options) slime-repl-shortcut-table))) + ',elisp-name)) + +(defslime-repl-shortcut slime-repl-shortcut-help ("?" "help") + (:handler (lambda () + (interactive) + (slime-with-output-to-temp-buffer "*slime-repl-help*" + (dolist (repl-shortcut slime-repl-shortcut-table) + (insert (first repl-shortcut) "\n") + (insert " " (cdr (assoc :one-liner repl-shortcut)) "\n"))))) + (:one-liner "Display the help.")) + +(defslime-repl-shortcut nil ("!d" "change-directory") + (:handler 'slime-set-default-directory) + (:one-liner "Change the current directory.")) + +(defslime-repl-shortcut slime-repl-push-directory ("+d" "push-directory") + (:handler (lambda (directory) + (interactive (list (expand-file-name (read-directory-name "Push directory: " + (slime-eval '(cl:namestring + (cl:truename + cl:*default-pathname-defaults*))) + nil nil "")))) + (push directory slime-repl-directory-stack) + (slime-set-default-directory directory))) + (:one-liner "Push a new directory onto the directory stack.")) + +(defslime-repl-shortcut slime-repl-pop-directory ("-d" "pop-directory") + (:handler (lambda () + (interactive) + (unless (= 1 (length slime-repl-directory-stack)) + (pop slime-repl-directory-stack)) + (slime-set-default-directory (car slime-repl-directory-stack)))) + (:one-liner "Pop the current directory.")) + +(defslime-repl-shortcut nil ("!p" "change-package") + (:handler 'slime-repl-set-package) + (:one-liner "Change the current package.")) + +(defslime-repl-shortcut slime-repl-push-package ("+p" "push-package") + (:handler (lambda (package) + (interactive (list (slime-read-package-name "Package: "))) + (push package slime-repl-package-stack) + (slime-repl-set-package package))) + (:one-liner "Push a package onto the package stack.")) + +(defslime-repl-shortcut slime-repl-pop-package ("-p" "pop-package") + (:handler (lambda () + (interactive) + (unless (= 1 (length slime-repl-package-stack)) + (pop slime-repl-package-stack)) + (slime-repl-set-package (car slime-repl-package-stack)))) + (:one-liner "Pop the top of the package stack.")) + +(defslime-repl-shortcut slime-repl-resend ("resend-form") + (:handler (lambda () + (interactive) + (insert (car slime-repl-input-history)) + (insert "\n") + (slime-repl-send-input))) + (:one-liner "Resend the last form.")) + +(defslime-repl-shortcut slime-repl-sayoonara ("sayoonara") + (:handler (lambda () + (interactive) + (slime-eval-async '(swank-backend:quit-lisp) "SWANK-BACKEND" (lambda (_) nil)) + (slime-kill-all-buffers))) + (:one-liner "Quit the lisp and close all SLIME buffers.")) + +(defslime-repl-shortcut slime-repl-defparameter ("!" "defparameter") + (:handler (lambda (name value) + (interactive (list (slime-read-symbol-name "Name (symbol): " t) + (slime-read-from-minibuffer "Value: " "nil"))) + (insert "(cl:defparameter " name " " value-form " \"REPL generated global variable.\")") + (slime-repl-send-input))) + (:one-liner "Define a new global, special, variable.")) + +(defslime-repl-shortcut slime-repl-compile-and-load ("compile-and-load") + (:handler (lambda (file-name) + (interactive (list (expand-file-name (read-file-name "File: " + nil nil nil nil + (lambda (filename) + (string-match ".*\\.\\(lisp\\|cl\\)$" filename)))))) + (lexical-let ((lisp-file-name (slime-to-lisp-filename file.lisp))) + (if (slime-eval `(swank::requires-compile-p ,lisp-file-name)) + (progn + (save-some-buffers) + (slime-insert-transcript-delimiter + (format "Compile file %s" lisp-file-name)) + (slime-display-output-buffer) + (slime-eval-async + `(swank:compile-file-for-emacs ,file.lisp nil) + nil + ;; after compiling we must load. + (lexical-let ((buffer (current-buffer))) + (lambda (result) + (slime-compilation-finished result buffer) + (message "Loading %s.." lisp-file-name) + (slime-eval-with-transcript `(swank:load-file ,lisp-file-name) nil)))) + (message "Compiling %s.." lisp-file-name)) + ;; don't need to compile, just load + (progn + (message "Loading %s.." lisp-file-name) + (slime-eval-with-transcript `(swank:load-file ,lisp-file-name) nil)))))) + (:one-liner "Compile (if neccessary) and load a lisp file.")) + ;;;; Cleanup after a quit (defun slime-kill-all-buffers () @@ -5764,7 +5879,8 @@ repl command sayoonara." (dolist (buf (buffer-list)) (when (or (member (buffer-name buf) (list "*inferior-lisp*" "*slime-events*")) - (string-match "\*slime-repl\[\d+\]\*" (buffer-name buf))) + (string-match "\*slime-repl\[\d+\]\*" (buffer-name buf)) + (string-match "\*sldb .*\*" (buffer-name buf))) (kill-buffer buf)))) Index: slime/swank.lisp diff -u slime/swank.lisp:1.165 slime/swank.lisp:1.166 --- slime/swank.lisp:1.165 Wed Apr 7 12:24:03 2004 +++ slime/swank.lisp Thu Apr 8 11:26:44 2004 @@ -1755,6 +1755,12 @@ (defslimefun load-file (filename) (to-string (load filename))) +(defun requires-compile-p (pathname) + (let ((compile-file-truename (probe-file (compile-file-pathname pathname)))) + (or (not compile-file-truename) + (< (file-write-date compile-file-truename) + (file-write-date pathname))))) + ;;;; Profiling @@ -2010,49 +2016,6 @@ (lambda () (with-connection (connection) (simple-break)))))) - -;;;; REPL Commands - -(defvar *repl-commands* (make-hash-table :test 'equal)) - -(defmacro defslime-repl-command (name args &body body) - `(progn - (setf (gethash ,(symbol-name name) *repl-commands*) - (lambda ,args , at body)) - ',name)) - -(defmacro repl-command (op &rest args) - `(if (gethash ,(symbol-name op) *repl-commands*) - (funcall (gethash ,(symbol-name op) *repl-commands*) , at args) - (error "Unknown repl command ~S." ,(symbol-name op)))) - -(defslime-repl-command sayoonara () - (eval-in-emacs '(slime-kill-all-buffers)) - (swank-backend:quit-lisp)) - -(defslime-repl-command cd (namestring) - (set-default-directory namestring)) - -(defslime-repl-command pwd () - (truename *default-pathname-defaults*)) - -(defslime-repl-command pack (&optional new-package) - (setf *package* (if new-package - (or (find-package new-package) - (progn - (warn "No package named ~S found." new-package) - *package*)) - *package*))) - -(defslime-repl-command cload (file &optional force) - (unless (probe-file (merge-pathnames file)) - (error "~S does not exist, can't load it." file)) - (if (or force - (not (probe-file (compile-file-pathname file))) - (< (file-write-date (compile-file-pathname file)) - (file-write-date file))) - (compile-file-for-emacs file t) - (load file))) ;;; Local Variables: ;;; eval: (font-lock-add-keywords 'lisp-mode '(("(\\(defslimefun\\)\\s +\\(\\(\\w\\|\\s_\\)+\\)" (1 font-lock-keyword-face) (2 font-lock-function-name-face)))) From marvismacinnes at maktoob.com Thu Apr 8 22:39:37 2004 From: marvismacinnes at maktoob.com (Bradly Clemons) Date: Thu, 08 Apr 2004 15:39:37 -0700 Subject: [slime-cvs] University Certificates, No Classes Needed, saloonkeeper Message-ID: Academic-Qualifications from NON?ACCR. Universities. No exams. No classes. No books. Call to register and get yours in days - 1-203 286 2403. No more ads: alaeth45 at yandex.ru defray dodecahedra duet brahms mike chesterton enrico apathetic debug tooth inveigh buttonweed rocky dogwood woodlawn dialup invariable cranelike beatific splenetic adopt gem kindergarten constance pooch cling keller deforestation perversion excrescent katharine woodward elliott breccia begrudge plop platitude turnout diabolic lange kuwait spaulding univac alabama debenture caliber crucible apostate williamson inholding From zzozlhk at msn.com Fri Apr 9 02:54:10 2004 From: zzozlhk at msn.com (Al Schneider) Date: Fri, 09 Apr 2004 06:54:10 +0400 Subject: [slime-cvs] Having trouble sleeping? Message-ID: An HTML attachment was scrubbed... URL: From kvwudwjtljhzoh at yahoo.com Fri Apr 9 07:10:18 2004 From: kvwudwjtljhzoh at yahoo.com (Marisa Shafer) Date: Fri, 09 Apr 2004 09:10:18 +0200 Subject: [slime-cvs] Re: our offer Message-ID: An HTML attachment was scrubbed... URL: From WZMQNIWHEO at yahoo.com Fri Apr 9 12:41:00 2004 From: WZMQNIWHEO at yahoo.com (Art Armstrong) Date: Fri, 09 Apr 2004 05:41:00 -0700 EST Subject: [slime-cvs] We can get you a refinance quote in 60 seconds. sP%RND Message-ID: <40758240008335.96768.19482007@concessionaire-o11.aol.com> An HTML attachment was scrubbed... URL: From mbaringer at common-lisp.net Fri Apr 9 20:48:15 2004 From: mbaringer at common-lisp.net (Marco Baringer) Date: Fri, 09 Apr 2004 16:48:15 -0400 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-serv22465 Modified Files: ChangeLog slime.el Log Message: See ChangeLog entry 2004-04-09 Lawrence Mitchell Date: Fri Apr 9 16:48:14 2004 Author: mbaringer Index: slime/ChangeLog diff -u slime/ChangeLog:1.330 slime/ChangeLog:1.331 --- slime/ChangeLog:1.330 Thu Apr 8 11:26:44 2004 +++ slime/ChangeLog Fri Apr 9 16:48:13 2004 @@ -1,3 +1,9 @@ +2004-04-09 Lawrence Mitchell + + * slime.el (slime-same-line-p): Use `line-end-position', rather + than searching for a newline manually. + (slime-repl-defparameter): Use VALUE, not VALUE-FORM. + 2004-04-08 Marco Baringer * slime.el (slime-repl-package-stack): New buffer local variable. Index: slime/slime.el diff -u slime/slime.el:1.258 slime/slime.el:1.259 --- slime/slime.el:1.258 Thu Apr 8 11:26:44 2004 +++ slime/slime.el Fri Apr 9 16:48:13 2004 @@ -2951,9 +2951,9 @@ (point)))))))) (defun slime-same-line-p (pos1 pos2) - "Return true if buffer positions PoS1 and POS2 are on the same line." - (save-excursion (goto-char (min pos1 pos2)) - (not (search-forward "\n" (max pos1 pos2) t)))) + "Return t if buffer positions POS1 and POS2 are on the same line." + (save-excursion (goto-char (min pos1 pos2)) + (<= (max pos1 pos2) (line-end-position)))) (defun slime-severity-face (severity) "Return the name of the font-lock face representing SEVERITY." @@ -5839,7 +5839,7 @@ (:handler (lambda (name value) (interactive (list (slime-read-symbol-name "Name (symbol): " t) (slime-read-from-minibuffer "Value: " "nil"))) - (insert "(cl:defparameter " name " " value-form " \"REPL generated global variable.\")") + (insert "(cl:defparameter " name " " value " \"REPL generated global variable.\")") (slime-repl-send-input))) (:one-liner "Define a new global, special, variable.")) From dyncwjwnteez at bgr.de Sat Apr 10 03:28:04 2004 From: dyncwjwnteez at bgr.de (Cora Finch) Date: Sat, 10 Apr 2004 06:28:04 +0300 Subject: [slime-cvs] RE: can I actually be paid for my opinions? Message-ID: An HTML attachment was scrubbed... URL: From CJYGUBEUTG at aut.alcatel.at Sat Apr 10 08:56:02 2004 From: CJYGUBEUTG at aut.alcatel.at (Jackson Abel) Date: Sat, 10 Apr 2004 07:56:02 -0100 Subject: [slime-cvs] Refinance without perfect Credit Message-ID: An HTML attachment was scrubbed... URL: From zuajtumn at harenet.net Sat Apr 10 16:54:34 2004 From: zuajtumn at harenet.net (Noelle Zapata) Date: Sat, 10 Apr 2004 22:54:34 +0600 Subject: [slime-cvs] Need Pills? Best Deals Online. No Prescriptions Needed. Overnight Delivery Message-ID: An HTML attachment was scrubbed... URL: From yzkgovqfftfass at col1.telecom.com.co Tue Apr 13 01:30:28 2004 From: yzkgovqfftfass at col1.telecom.com.co (Hollie Lockwood) Date: Tue, 13 Apr 2004 03:30:28 +0200 Subject: [slime-cvs] great diploma Message-ID: An HTML attachment was scrubbed... URL: From lcrook at common-lisp.net Tue Apr 13 09:28:20 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:28:20 -0400 Subject: [slime-cvs] CVS update: Module imported: CVSROOT Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT In directory common-lisp.net:/tmp/cvs-serv9040 Log Message: Status: Vendor Tag: tcvs-vendor Release Tags: tcvs-release No conflicts created by this import Date: Tue Apr 13 05:28:20 2004 Author: lcrook New module CVSROOT added From lcrook at common-lisp.net Tue Apr 13 09:30:13 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:30:13 -0400 Subject: [slime-cvs] CVS update: Directory change: CVSROOT/engine Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT/engine In directory common-lisp.net:/tmp/cvs-serv13395/engine Log Message: Directory /project/corman-sdl/cvsroot/CVSROOT/engine added to the repository Date: Tue Apr 13 05:30:13 2004 Author: lcrook New directory CVSROOT/engine added From lcrook at common-lisp.net Tue Apr 13 09:32:19 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:32:19 -0400 Subject: [slime-cvs] CVS update: CVSROOT/checkoutlist CVSROOT/commitinfo CVSROOT/config CVSROOT/cvswrappers CVSROOT/editinfo CVSROOT/loginfo CVSROOT/modules CVSROOT/notify CVSROOT/passwd CVSROOT/rcsinfo CVSROOT/readers CVSROOT/taginfo CVSROOT/verifymsg Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT In directory common-lisp.net:/tmp/cvs-serv16193 Removed Files: checkoutlist commitinfo config cvswrappers editinfo loginfo modules notify passwd rcsinfo readers taginfo verifymsg Log Message: Date: Tue Apr 13 05:32:18 2004 Author: lcrook From lcrook at common-lisp.net Tue Apr 13 09:36:26 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:36:26 -0400 Subject: [slime-cvs] CVS update: Module imported: CVSROOT Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT In directory common-lisp.net:/tmp/cvs-serv26119 Log Message: Status: Vendor Tag: tcvs-vendor Release Tags: tcvs-release No conflicts created by this import Date: Tue Apr 13 05:36:26 2004 Author: lcrook New module CVSROOT added From lcrook at common-lisp.net Tue Apr 13 09:37:19 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:37:19 -0400 Subject: [slime-cvs] CVS update: Directory change: CVSROOT/ffi Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT/ffi In directory common-lisp.net:/tmp/cvs-serv26935/ffi Log Message: Directory /project/corman-sdl/cvsroot/CVSROOT/ffi added to the repository Date: Tue Apr 13 05:37:19 2004 Author: lcrook New directory CVSROOT/ffi added From lcrook at common-lisp.net Tue Apr 13 09:38:02 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:38:02 -0400 Subject: [slime-cvs] CVS update: CVSROOT/ffi/README-SDL.txt CVSROOT/ffi/SDL.lisp CVSROOT/ffi/SDL_mixer.lisp CVSROOT/ffi/SDL_mixer_h.lisp CVSROOT/ffi/engine.lisp CVSROOT/ffi/opengl_.lisp CVSROOT/ffi/sdl-util.lisp CVSROOT/ffi/sdl_h.lisp Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT/ffi In directory common-lisp.net:/tmp/cvs-serv27381/ffi Added Files: README-SDL.txt SDL.lisp SDL_mixer.lisp SDL_mixer_h.lisp engine.lisp opengl_.lisp sdl-util.lisp sdl_h.lisp Log Message: Date: Tue Apr 13 05:38:01 2004 Author: lcrook From lcrook at common-lisp.net Tue Apr 13 09:39:03 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:39:03 -0400 Subject: [slime-cvs] CVS update: Directory change: CVSROOT/engine Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT/engine In directory common-lisp.net:/tmp/cvs-serv31611/engine Log Message: Directory /project/corman-sdl/cvsroot/CVSROOT/engine added to the repository Date: Tue Apr 13 05:39:03 2004 Author: lcrook New directory CVSROOT/engine added From lcrook at common-lisp.net Tue Apr 13 09:39:04 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:39:04 -0400 Subject: [slime-cvs] CVS update: Directory change: CVSROOT/examples Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT/examples In directory common-lisp.net:/tmp/cvs-serv31611/examples Log Message: Directory /project/corman-sdl/cvsroot/CVSROOT/examples added to the repository Date: Tue Apr 13 05:39:04 2004 Author: lcrook New directory CVSROOT/examples added From lcrook at common-lisp.net Tue Apr 13 09:39:48 2004 From: lcrook at common-lisp.net (Luke J Crook) Date: Tue, 13 Apr 2004 05:39:48 -0400 Subject: [slime-cvs] CVS update: CVSROOT/engine/engine.lisp Message-ID: Update of /project/corman-sdl/cvsroot/CVSROOT/engine In directory common-lisp.net:/tmp/cvs-serv1201/engine Added Files: engine.lisp Log Message: Date: Tue Apr 13 05:39:47 2004 Author: lcrook From mbaringer at common-lisp.net Tue Apr 13 10:04:39 2004 From: mbaringer at common-lisp.net (Marco Baringer) Date: Tue, 13 Apr 2004 06:04:39 -0400 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-serv19013 Modified Files: ChangeLog slime.el Log Message: See ChangeLog entry 2004-04-13 Marco Baringer Date: Tue Apr 13 06:04:39 2004 Author: mbaringer Index: slime/ChangeLog diff -u slime/ChangeLog:1.331 slime/ChangeLog:1.332 --- slime/ChangeLog:1.331 Fri Apr 9 16:48:13 2004 +++ slime/ChangeLog Tue Apr 13 06:04:38 2004 @@ -1,3 +1,10 @@ +2004-04-13 Marco Baringer + + * slime.el (slime-handle-repl-shortcut, + slime-list-all-repl-shortcuts, slime-lookup-shortcut, + defslime-repl-shortcut): Refactor repl shortcut code to provide a + more leggible help. + 2004-04-09 Lawrence Mitchell * slime.el (slime-same-line-p): Use `line-end-position', rather Index: slime/slime.el diff -u slime/slime.el:1.259 slime/slime.el:1.260 --- slime/slime.el:1.259 Fri Apr 9 16:48:13 2004 +++ slime/slime.el Tue Apr 13 06:04:38 2004 @@ -5742,47 +5742,76 @@ (if (save-excursion (goto-char slime-repl-input-start-mark) (looking-at " *$")) - (let* ((command-name (completing-read "Command: " - slime-repl-shortcut-table + (let ((command-spec (slime-lookup-shortcut + (completing-read "Command: " + (slime-list-all-repl-shortcuts) nil t nil - 'slime-repl-shortcut-history)) - (command-spec (cdr (assoc command-name slime-repl-shortcut-table)))) + 'slime-repl-shortcut-history)))) (call-interactively (cdr (assoc :handler command-spec)))) (insert (string slime-repl-shortcut-dispatch-char)))) +(defun slime-list-all-repl-shortcuts () + (loop + for shortcut-spec in slime-repl-shortcut-table + append (car shortcut-spec))) + +(defun slime-lookup-shortcut (name) + (block lookup + (loop for shortcut-spec in slime-repl-shortcut-table + when (member name (car shortcut-spec)) + do (return-from lookup shortcut-spec)) + (return-from lookup nil))) + (defmacro defslime-repl-shortcut (elisp-name names &rest options) + "Define a new repl shortcut. ELISP-NAME is a symbol specifying + the name of the interactive function to create, or NIL if no + function whould be created. NAMES is a list of (full-name . + aliases). OPTIONS is an olist specifying the handler and the + help text." `(progn ,(when elisp-name `(defun ,elisp-name () (interactive) - (call-interactively ,(cdr (assoc :handler options))))) - ,@(loop - initially (setf options (mapcar (lambda (option) - `(cons ,(first option) ,(second option))) - options)) - for name in names - collect `(if (assoc ,name slime-repl-shortcut-table) - (setf (cdr (assoc ,name slime-repl-shortcut-table)) - (list ,name , at options)) - (push (list ,name , at options) slime-repl-shortcut-table))) + (call-interactively ,(second (assoc :handler options))))) + (let ((new-spec (list (list , at names) + ,@(loop + for op in options + collect (case (car op) + (:handler `(cons :handler ,(second op))) + (:one-liner `(cons :one-liner ,(second op))) + (t (error "Unknown repl shortcut option: %s" (car op))))))) + (existing-spec (slime-lookup-shortcut ,(car names)))) + (if existing-spec + ;; replace an existing spec "in place" + (setf (car existing-spec) (car new-spec) + (cdr existing-spec) (cdr new-spec)) + ;; need to create a new spec + (push new-spec slime-repl-shortcut-table))) ',elisp-name)) -(defslime-repl-shortcut slime-repl-shortcut-help ("?" "help") +(defslime-repl-shortcut slime-repl-shortcut-help ("help" "?") (:handler (lambda () (interactive) (slime-with-output-to-temp-buffer "*slime-repl-help*" - (dolist (repl-shortcut slime-repl-shortcut-table) - (insert (first repl-shortcut) "\n") - (insert " " (cdr (assoc :one-liner repl-shortcut)) "\n"))))) + (dolist (repl-shortcut (sort slime-repl-shortcut-table (lambda (a b) + (string< (caar a) (caar b))))) + (insert (caar repl-shortcut)) ;; first print the "full" name + (when (cdr (car repl-shortcut)) + ;; we also have aliases + (insert " (aka ") + (dolist (alias (butlast (cdr (car repl-shortcut)))) + (insert alias ", ")) + (insert (car (last (cdr (car repl-shortcut)))) ")")) + (insert "\n " (cdr (assoc :one-liner (cdr repl-shortcut))) "\n"))))) (:one-liner "Display the help.")) -(defslime-repl-shortcut nil ("!d" "change-directory") +(defslime-repl-shortcut nil ("change-directory" "!d") (:handler 'slime-set-default-directory) (:one-liner "Change the current directory.")) -(defslime-repl-shortcut slime-repl-push-directory ("+d" "push-directory") +(defslime-repl-shortcut slime-repl-push-directory ("push-directory" "+d") (:handler (lambda (directory) (interactive (list (expand-file-name (read-directory-name "Push directory: " (slime-eval '(cl:namestring @@ -5793,7 +5822,7 @@ (slime-set-default-directory directory))) (:one-liner "Push a new directory onto the directory stack.")) -(defslime-repl-shortcut slime-repl-pop-directory ("-d" "pop-directory") +(defslime-repl-shortcut slime-repl-pop-directory ("pop-directory" "-d") (:handler (lambda () (interactive) (unless (= 1 (length slime-repl-directory-stack)) @@ -5801,18 +5830,18 @@ (slime-set-default-directory (car slime-repl-directory-stack)))) (:one-liner "Pop the current directory.")) -(defslime-repl-shortcut nil ("!p" "change-package") +(defslime-repl-shortcut nil ("change-package" "!p") (:handler 'slime-repl-set-package) (:one-liner "Change the current package.")) -(defslime-repl-shortcut slime-repl-push-package ("+p" "push-package") +(defslime-repl-shortcut slime-repl-push-package ("push-package" "+p") (:handler (lambda (package) (interactive (list (slime-read-package-name "Package: "))) (push package slime-repl-package-stack) (slime-repl-set-package package))) (:one-liner "Push a package onto the package stack.")) -(defslime-repl-shortcut slime-repl-pop-package ("-p" "pop-package") +(defslime-repl-shortcut slime-repl-pop-package ("pop-package" "-p") (:handler (lambda () (interactive) (unless (= 1 (length slime-repl-package-stack)) @@ -5835,7 +5864,7 @@ (slime-kill-all-buffers))) (:one-liner "Quit the lisp and close all SLIME buffers.")) -(defslime-repl-shortcut slime-repl-defparameter ("!" "defparameter") +(defslime-repl-shortcut slime-repl-defparameter ("defparameter" "!") (:handler (lambda (name value) (interactive (list (slime-read-symbol-name "Name (symbol): " t) (slime-read-from-minibuffer "Value: " "nil"))) From trirewyr at thedoghousemail.com Tue Apr 13 12:57:26 2004 From: trirewyr at thedoghousemail.com (Ruthie Holden) Date: Tue, 13 Apr 2004 07:57:26 -0500 Subject: [slime-cvs] HealthCare Sector/Medical Technologies - AMTK Exclusive Contracts, Tue, 13 Apr 2004 07:57:26 -0500 Message-ID: Equity Spoltight - Tue, 13 Apr 2004 07:57:26 -0500 Symbol: AMTK - Austin Medical Technologies Sector: HealthCare/Medical Technologies AMTK - On the Cutting Edge of Medical Technologies AMTK is experiencing strong and sturdy growth due to the continued demand for its products and services utilized by surgeons throughout the world. The business is an annuity model with recurring revenue each month. Customers sign multi-year contracts, and AMTK maintains a track record of 95% contract renewal. AMTK delivers "DIRECT" from the manufacturer to the surgeon, the only technology-based "Single Source Supply Solution" serving the Ambulatory Surgery Center (ASC) market. Under the brand name eyeDirecti, AMTK is initially focused on surgeon-owned and operated ASCs which consist of 2,500 practices with 15,000 surgeons performing 4.4 million surgical procedures annually at a supply cost of 400 million dollars per year. HIGHLIGHTS 1) AMTK has exclusive contracts with leading HealthCare companies such as Baxter, Medtronic, Allergan, and OcuSoft. 2) AMTK is a manufacturer and distributor of several hundred medical and surgical products -- enough to fill 80 percent of a typical ASC's supply needs. 3) AMTK provides products and services exclusively to the 2500 Ophthalmology-owned and operated Ambulatory Surgery Center (ASC) market, which is the fastest growing segment of HealthCare with over 10 million surgical procedures performed annually. AMTK is focused on providing disposable surgical supplies and superior service to this outpatient HealthCare provider. 4) AMTK's founders have more than 100 years' experience in the ophthalmic surgical products and technology industries. AUSTIN MEDICAL TECHNOLOGIES, Inc. AMTK provides hundreds of products and technology-based services needed by ASC's. AMTK offers disposable surgical instruments, custom sterile procedure packs, intravenous solutions, patient care supplies, and technology to enhance efficiencies and eliminate cost to the customer. AMTK's in-depth knowledge concerning special interactions among ASC's and manufacturers has driven it to create the surgical eye care supply chain and e-commerce solution that dramatically simplifies the distinctive methods and processes used byits customers to manage their business. AMTK has exclusive contracts with leading HealthCare companies such as Baxter, Medtronic, Allergan, and OcuSoft for manufacturing and distribution of the products it markets. This is key: AMTK provides not just products but also a unique set of innovative, integrated cost-management services. These are extremely important in HealthCare today; they allow ASC's to save money and focus on patient care rather than supplies and logistics. Customer Requirements Every year 10 million surgical procedures are performed within the ophthalmic ASC market. Every day there are more than a million people making outpatient visits to medical centers across the country. The nation spends about a trillion dollars a year -- a sixth of its total economy -- on HealthCare. That amount continues to grow as the population ages and new medical capabilities develop. Globally, HealthCare is a large, vital, growing industry. How Austin Medical Technology Responds More than any other company in HealthCare, AMTK can help ophthalmic ASC's manage their costs and their resources. AMTK can address the 20-plus percent of an ASC budget that goes for supplies and the additional 20 percent or more that very often is devoted to managing those supplies. AMTK is a manufacturer and distributor of several hundred medical and surgical products -- enough to fill 80 percent of a typical ASC's supply needs. More important, AMTK integrates its total product-offering with unique services that have been proven to help control HealthCare costs. AMTK helps its customers purchase and use fewer supplies. AMTK helps them order and manage inventories more efficiently. Custom Procedure Trays (CPT's) aka "packs" incorporate 70-80% of disposable surgical supplies utilized on a procedure specific basis. CPT's is a 2 billion dollar industry HealthCare wide and $400 million within the ophthalmic ASC market. 95% of ophthalmologists utilize packs for Cataract, Retinal and Plastic procedures. LASIK packs are now being created for this new procedure. Stock Market Watcher is an independent research firm. This report is based on Stock Market Watcher's independent analysis but also relies on information supplied by sources believed to be reliable. This report may not be the opinion of CYPM management. Stock Market Watcher has also been retained to research and issue reports on CYPM. Stock Market Watcher may from time to time purchase or sell CYPM common shares in the open market without notice. The information contained in this report shall not constitute, an offer to sell or solicitation of any offer to purchase any security. It is intended for information only. Some statements may contain so-called "forward-looking statements". Many factors could cause actual results to differ. Investors should consult with their Investment Advisor concerning CYPM. Copyright 2004 ? Stock Market Watcher Ltd. SMS, Apartado 173-3006 Zona Franca MeoBarreal Heredia, Costa Rica. All Rights Reserved. This newsletter was distributed by MMS,Inc. MMS was paid four thousand dollars to distribute this report. MMS is not affiiated with Stock Market Watcher and is not responsible for newsletter content. No more ads, cheretaormina at inbox.lv citron cabal jug poet bellyfull elliptic hydride cardinal shipbuilding bullock impermeable confirmation rater contain declination lo aldebaran dixieland renal cardiod option gild blunder wipe skin controversial armchair create benedict evince splurge identify rood ravage allegra hypothetic declarator drop expend hickory fogarty gladiolus hacksaw symposium vhf traumatic colgate cleft exploration resort psychotherapeutic charity enter leg tot greenhouse accompany From dptwbut at hotmail.com Tue Apr 13 20:39:47 2004 From: dptwbut at hotmail.com (Lamar Garcia) Date: Wed, 14 Apr 2004 00:39:47 +0400 Subject: [slime-cvs] Fwd: this works Message-ID: An HTML attachment was scrubbed... URL: From afaweith at slattern.net Wed Apr 14 12:32:37 2004 From: afaweith at slattern.net (Leanne Reilly) Date: Wed, 14 Apr 2004 07:32:37 -0500 Subject: [slime-cvs] HealthCare Sector/Medical Technologies - AMTK Exclusive Contracts, Wed, 14 Apr 2004 07:32:37 -0500 Message-ID: Equity Spoltight - Wed, 14 Apr 2004 07:32:37 -0500 Symbol: AMTK - Austin Medical Technologies Sector: HealthCare/Medical Technologies AMTK - On the Cutting Edge of Medical Technologies AMTK is experiencing strong and sturdy growth due to the continued demand for its products and services utilized by surgeons throughout the world. The business is an annuity model with recurring revenue each month. Customers sign multi-year contracts, and AMTK maintains a track record of 95% contract renewal. AMTK delivers "DIRECT" from the manufacturer to the surgeon, the only technology-based "Single Source Supply Solution" serving the Ambulatory Surgery Center (ASC) market. Under the brand name eyeDirecti, AMTK is initially focused on surgeon-owned and operated ASCs which consist of 2,500 practices with 15,000 surgeons performing 4.4 million surgical procedures annually at a supply cost of 400 million dollars per year. HIGHLIGHTS 1) AMTK has exclusive contracts with leading HealthCare companies such as Baxter, Medtronic, Allergan, and OcuSoft. 2) AMTK is a manufacturer and distributor of several hundred medical and surgical products -- enough to fill 80 percent of a typical ASC's supply needs. 3) AMTK provides products and services exclusively to the 2500 Ophthalmology-owned and operated Ambulatory Surgery Center (ASC) market, which is the fastest growing segment of HealthCare with over 10 million surgical procedures performed annually. AMTK is focused on providing disposable surgical supplies and superior service to this outpatient HealthCare provider. 4) AMTK's founders have more than 100 years' experience in the ophthalmic surgical products and technology industries. AUSTIN MEDICAL TECHNOLOGIES, Inc. AMTK provides hundreds of products and technology-based services needed by ASC's. AMTK offers disposable surgical instruments, custom sterile procedure packs, intravenous solutions, patient care supplies, and technology to enhance efficiencies and eliminate cost to the customer. AMTK's in-depth knowledge concerning special interactions among ASC's and manufacturers has driven it to create the surgical eye care supply chain and e-commerce solution that dramatically simplifies the distinctive methods and processes used byits customers to manage their business. AMTK has exclusive contracts with leading HealthCare companies such as Baxter, Medtronic, Allergan, and OcuSoft for manufacturing and distribution of the products it markets. This is key: AMTK provides not just products but also a unique set of innovative, integrated cost-management services. These are extremely important in HealthCare today; they allow ASC's to save money and focus on patient care rather than supplies and logistics. Customer Requirements Every year 10 million surgical procedures are performed within the ophthalmic ASC market. Every day there are more than a million people making outpatient visits to medical centers across the country. The nation spends about a trillion dollars a year -- a sixth of its total economy -- on HealthCare. That amount continues to grow as the population ages and new medical capabilities develop. Globally, HealthCare is a large, vital, growing industry. How Austin Medical Technology Responds More than any other company in HealthCare, AMTK can help ophthalmic ASC's manage their costs and their resources. AMTK can address the 20-plus percent of an ASC budget that goes for supplies and the additional 20 percent or more that very often is devoted to managing those supplies. AMTK is a manufacturer and distributor of several hundred medical and surgical products -- enough to fill 80 percent of a typical ASC's supply needs. More important, AMTK integrates its total product-offering with unique services that have been proven to help control HealthCare costs. AMTK helps its customers purchase and use fewer supplies. AMTK helps them order and manage inventories more efficiently. Custom Procedure Trays (CPT's) aka "packs" incorporate 70-80% of disposable surgical supplies utilized on a procedure specific basis. CPT's is a 2 billion dollar industry HealthCare wide and $400 million within the ophthalmic ASC market. 95% of ophthalmologists utilize packs for Cataract, Retinal and Plastic procedures. LASIK packs are now being created for this new procedure. Stock Market Watcher is an independent research firm. This report is based on Stock Market Watcher's independent analysis but also relies on information supplied by sources believed to be reliable. This report may not be the opinion of AMTK management. Stock Market Watcher has also been retained to research and issue reports on AMTK. Stock Market Watcher may from time to time purchase or sell AMTK common shares in the open market without notice. The information contained in this report shall not constitute, an offer to sell or solicitation of any offer to purchase any security. It is intended for information only. Some statements may contain so-called "forward-looking statements". Many factors could cause actual results to differ. Investors should consult with their Investment Advisor concerning AMTK. Copyright 2004 ? Stock Market Watcher Ltd. SMS, Apartado 173-3006 Zona Franca MeoBarreal Heredia, Costa Rica. All Rights Reserved. This newsletter was distributed by MMS,Inc. MMS was paid four thousand dollars to distribute this report. MMS is not affiiated with Stock Market Watcher and is not responsible for newsletter content. No more ads, breetyrrell at poczta.onet.pl quadratic walk mettle sinclair subsistent parochial deanna antarctica inaccurate cloak lodowick airfoil mayoral cultivable flatland crosswalk ax caption eeoc chalice fafnir marijuana bergamot poison adulthood withstood directory valhalla inculcate accredit flown impolitic simplistic amass cafe perceptible besiege hathaway cry amarillo abject ok credo nugget bash boston pearlite disco thrive mandate treasury ashman collegian caution tallyho allemand coffey claudia From lgorrie at common-lisp.net Wed Apr 14 16:42:58 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 12:42:58 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29947 Modified Files: slime.el Log Message: (slime-repl-mode-map): Portability fix for definition of the REPL command character. (slime-maybe-rearrange-inferior-lisp): Bugfix for running multiple inferior lisps. Date: Wed Apr 14 12:42:58 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.260 slime/slime.el:1.261 --- slime/slime.el:1.260 Tue Apr 13 06:04:38 2004 +++ slime/slime.el Wed Apr 14 12:42:58 2004 @@ -1046,7 +1046,7 @@ "Offer to rename *inferior-lisp* so that another can be started." (when (y-or-n-p "Create an additional *inferior-lisp*? ") (with-current-buffer "*inferior-lisp*" - (rename-buffer bufname t)))) + (rename-buffer (buffer-name) t)))) (defun slime-maybe-start-lisp () "Start an inferior lisp unless one is already running." @@ -2389,8 +2389,10 @@ ("\C-c\C-p" 'slime-repl-previous-prompt) ("\M-\C-a" 'slime-repl-beginning-of-defun) ("\M-\C-e" 'slime-repl-end-of-defun) - ((string slime-repl-shortcut-dispatch-char) 'slime-handle-repl-shortcut) ) + +(define-key slime-repl-mode-map + (string slime-repl-shortcut-dispatch-char) 'slime-handle-repl-shortcut) (define-minor-mode slime-repl-read-mode "Mode the read input from Emacs From lgorrie at common-lisp.net Wed Apr 14 16:43:07 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 12:43:07 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30336 Modified Files: ChangeLog Log Message: Date: Wed Apr 14 12:43:07 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.332 slime/ChangeLog:1.333 --- slime/ChangeLog:1.332 Tue Apr 13 06:04:38 2004 +++ slime/ChangeLog Wed Apr 14 12:43:07 2004 @@ -1,3 +1,10 @@ +2004-04-14 Luke Gorrie + + * slime.el (slime-repl-mode-map): Portability fix for definition + of the REPL command character. + (slime-maybe-rearrange-inferior-lisp): Bugfix for running + multiple inferior lisps. + 2004-04-13 Marco Baringer * slime.el (slime-handle-repl-shortcut, From lgorrie at common-lisp.net Wed Apr 14 18:50:25 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 14:50:25 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv12107 Modified Files: swank.lisp Log Message: (operate-on-system-for-emacs): More generic interface to ASDF. Date: Wed Apr 14 14:50:25 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.166 slime/swank.lisp:1.167 --- slime/swank.lisp:1.166 Thu Apr 8 11:26:44 2004 +++ slime/swank.lisp Wed Apr 14 14:50:25 2004 @@ -1252,10 +1252,11 @@ (let ((*package* *buffer-package*)) (swank-compile-string string :buffer buffer :position position))))) -(defslimefun load-system-for-emacs (system) +(defslimefun operate-on-system-for-emacs (system-name operation &rest keywords) "Compile and load SYSTEM using ASDF. Record compiler notes signalled as `compiler-condition's." - (swank-compiler (lambda () (swank-compile-system system)))) + (swank-compiler (lambda () + (apply #'operate-on-system system-name operation keywords)))) ;;;; Macroexpansion From lgorrie at common-lisp.net Wed Apr 14 18:50:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 14:50:36 -0400 Subject: [slime-cvs] CVS update: slime/swank-backend.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv12178 Modified Files: swank-backend.lisp Log Message: Date: Wed Apr 14 14:50:36 2004 Author: lgorrie Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.42 slime/swank-backend.lisp:1.43 --- slime/swank-backend.lisp:1.42 Tue Apr 6 06:42:53 2004 +++ slime/swank-backend.lisp Wed Apr 14 14:50:36 2004 @@ -48,6 +48,7 @@ implementation. Backends implement these functions using DEFIMPLEMENTATION." + (check-type documentation string "a documentation string") (flet ((gen-default-impl () (let ((received-args (gensym "ARGS-"))) `(defmethod no-applicable-method ((#:method @@ -162,16 +163,19 @@ Additionally, if POSITION is supplied, it must be added to source positions reported in compiler conditions.") -(definterface swank-compile-system (system-name) - "Compile and load SYSTEM-NAME, During compilation compiler - conditions must be trapped and resignalled as - COMPILER-CONDITION ala compile-string-for-emacs." +(definterface operate-on-system (system-name operation-name &rest keyword-args) + "Perform OPERATION-NAME on SYSTEM-NAME using ASDF. +The KEYWORD-ARGS are passed on to the operation. +Example: +\(operate-on-system \"SWANK\" \"COMPILE-OP\" :force t)" + (unless (member :asdf *features*) + (error "ASDF is not loaded.")) (with-compilation-hooks () - (cond ((member :asdf *features*) - (let ((operate (find-symbol (string :operate) :asdf)) - (load-op (find-symbol (string :load-op) :asdf))) - (funcall operate load-op system-name))) - (t (error "ASDF not loaded"))))) + (let ((operate (find-symbol "OPERATE" :asdf)) + (operation (find-symbol operation-name :asdf))) + (when (null operation) + (error "Couldn't find ASDF operation ~S" operation-name)) + (apply operate operation system-name keyword-args)))) (definterface swank-compile-file (filename load-p) "Compile FILENAME signalling COMPILE-CONDITIONs. From lgorrie at common-lisp.net Wed Apr 14 18:50:54 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 14:50:54 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv12837 Modified Files: slime.el Log Message: * slime.el (slime-oos): Generic ASDF interface. (force-compile-system, compile-system, load-system, force-load-system): New REPL commands. Date: Wed Apr 14 14:50:54 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.261 slime/slime.el:1.262 --- slime/slime.el:1.261 Wed Apr 14 12:42:58 2004 +++ slime/slime.el Wed Apr 14 14:50:54 2004 @@ -2497,16 +2497,22 @@ Default system name is taken from first file matching *.asd in current buffer's working directory" - (interactive - (list (let ((d (slime-find-asd))) - (read-string (format "System: [%s] " d) nil nil d)))) + (interactive (list (slime-read-system-name))) + (slime-oos system-name "LOAD-OP")) + +(defun slime-read-system-name () + (let ((d (slime-find-asd))) + (read-string (format "System: [%s] " d) nil nil d))) + +(defun slime-oos (system-name operation &rest keyword-args) (save-some-buffers) (slime-display-output-buffer) + (message "Performing ASDF %S%s on system %S" + system-name (if keyword-args (format " %S" keyword-args) "") operation) (slime-eval-async - `(swank:load-system-for-emacs ,system-name) + `(swank:operate-on-system-for-emacs ,system-name ,operation , at keyword-args) nil - (slime-compilation-finished-continuation)) - (message "Compiling system %s.." system-name)) + (slime-compilation-finished-continuation))) (defun slime-compile-defun () "Compile the current toplevel form." @@ -5902,6 +5908,30 @@ (message "Loading %s.." lisp-file-name) (slime-eval-with-transcript `(swank:load-file ,lisp-file-name) nil)))))) (:one-liner "Compile (if neccessary) and load a lisp file.")) + +(defslime-repl-shortcut slime-repl-load/force-system ("force-load-system") + (:handler (lambda () + (interactive) + (slime-oos (slime-read-system-name) "LOAD-OP" :force t))) + (:one-liner "Recompile and load an ASDF system.")) + +(defslime-repl-shortcut slime-repl-load-system ("load-system") + (:handler (lambda () + (interactive) + (slime-oos (slime-read-system-name) "LOAD-OP"))) + (:one-liner "Compile (as needed) and load an ASDF system.")) + +(defslime-repl-shortcut slime-repl-compile-system ("compile-system") + (:handler (lambda () + (interactive) + (slime-oos (slime-read-system-name) "COMPILE-OP"))) + (:one-liner "Compile (but not load) an ASDF system.")) + +(defslime-repl-shortcut slime-repl-compile/force-system ("force-compile-system") + (:handler (lambda () + (interactive) + (slime-oos (slime-read-system-name) "COMPILE-OP" :force t))) + (:one-liner "Recompile (but not load) an ASDF system.")) ;;;; Cleanup after a quit From lgorrie at common-lisp.net Wed Apr 14 18:51:01 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 14:51:01 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13551 Modified Files: ChangeLog Log Message: Date: Wed Apr 14 14:51:01 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.333 slime/ChangeLog:1.334 --- slime/ChangeLog:1.333 Wed Apr 14 12:43:07 2004 +++ slime/ChangeLog Wed Apr 14 14:51:01 2004 @@ -1,5 +1,15 @@ 2004-04-14 Luke Gorrie + * slime.el (slime-oos): Generic ASDF interface. + (force-compile-system, compile-system, load-system, + force-load-system): New REPL commands. + + * swank-backend.lisp (operate-on-system): More generic interface + to ASDF. + + * swank.lisp (operate-on-system-for-emacs): More generic + interface to ASDF. + * slime.el (slime-repl-mode-map): Portability fix for definition of the REPL command character. (slime-maybe-rearrange-inferior-lisp): Bugfix for running From lgorrie at common-lisp.net Wed Apr 14 19:14:48 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 15:14:48 -0400 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-serv8965 Modified Files: slime.texi Log Message: (Shortcuts): Described REPL shortcuts. Date: Wed Apr 14 15:14:48 2004 Author: lgorrie Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.6 slime/doc/slime.texi:1.7 --- slime/doc/slime.texi:1.6 Mon Apr 5 02:19:23 2004 +++ slime/doc/slime.texi Wed Apr 14 15:14:48 2004 @@ -38,7 +38,7 @@ @end macro @set EDITION DRAFT - at set UPDATED @code{$Id: slime.texi,v 1.6 2004/04/05 06:19:23 lgorrie Exp $} + at set UPDATED @code{$Id: slime.texi,v 1.7 2004/04/14 19:14:48 lgorrie Exp $} @titlepage @title SLIME User Manual @@ -790,6 +790,18 @@ instead go directly to the beginning or the end, respectively. @end table + + at node Shortcuts + at section Shortcuts + +``Shortcuts'' are a special set of @REPL{} commands that are invoked +by name. To invoke a shortcut you first press @kbd{,} (comma) at the + at REPL{} prompt and then enter the shortcut's name when prompted. + +Shortcuts deal with things like switching between directories and +compiling and loading Lisp systems. The exact set of shortcuts is not +currently documented in this manual, but you can use the @code{help} +shortcut to list them interactively. @node Debugger, Extras, REPL, Top @chapter @SLDB{}: the @SLIME{} debugger From lgorrie at common-lisp.net Wed Apr 14 19:15:13 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 14 Apr 2004 15:15:13 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11115 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Wed Apr 14 15:15:13 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.334 slime/ChangeLog:1.335 --- slime/ChangeLog:1.334 Wed Apr 14 14:51:01 2004 +++ slime/ChangeLog Wed Apr 14 15:15:13 2004 @@ -1,5 +1,7 @@ 2004-04-14 Luke Gorrie + * doc/slime.texi (Shortcuts): Described REPL shortcuts. + * slime.el (slime-oos): Generic ASDF interface. (force-compile-system, compile-system, load-system, force-load-system): New REPL commands. From DYMMAQW at hotmail.com Thu Apr 15 05:23:27 2004 From: DYMMAQW at hotmail.com (Jean Inman) Date: Thu, 15 Apr 2004 01:23:27 -0400 Subject: [slime-cvs] Do you want a prosperous future? GET YOUR UNIVERSITY DIPLOMA!.. cloture bladdernut fritz bentley effectuate adolphus camille calcutta educable gang catkin chancel rome piddle barberry beckman propel decommission cady divisible easel chopin shako anita froth barbiturate lomb harm rollins holocene abutted truss Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Thu Apr 15 11:07:42 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 15 Apr 2004 07:07:42 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13473 Modified Files: slime.el Log Message: (slime-handle-repl-shortcut): Call `completing-read' with an alist as expected, using `slime-bogus-completion-alist'. Date: Thu Apr 15 07:07:42 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.262 slime/slime.el:1.263 --- slime/slime.el:1.262 Wed Apr 14 14:50:54 2004 +++ slime/slime.el Thu Apr 15 07:07:42 2004 @@ -5752,7 +5752,8 @@ (looking-at " *$")) (let ((command-spec (slime-lookup-shortcut (completing-read "Command: " - (slime-list-all-repl-shortcuts) + (slime-bogus-completion-alist + (slime-list-all-repl-shortcuts)) nil t nil From VDRVUXJUZXIL at yahoo.com Thu Apr 15 14:35:39 2004 From: VDRVUXJUZXIL at yahoo.com (Rachael Thornton) Date: Thu, 15 Apr 2004 15:35:39 +0100 Subject: [slime-cvs] Buy Soma at Unbelievable Prices Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Thu Apr 15 14:49:07 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Thu, 15 Apr 2004 10:49:07 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29599 Modified Files: ChangeLog Log Message: Date: Thu Apr 15 10:49:07 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.335 slime/ChangeLog:1.336 --- slime/ChangeLog:1.335 Wed Apr 14 15:15:13 2004 +++ slime/ChangeLog Thu Apr 15 10:49:07 2004 @@ -1,3 +1,8 @@ +2004-04-15 Ivan Boldyrev + + * slime.el (slime-handle-repl-shortcut): Call `completing-read' + with an alist as expected, using `slime-bogus-completion-alist'. + 2004-04-14 Luke Gorrie * doc/slime.texi (Shortcuts): Described REPL shortcuts. From shnzyaepkcrwvi at blackbox.net Thu Apr 15 16:50:34 2004 From: shnzyaepkcrwvi at blackbox.net (Tyrone Bautista) Date: Thu, 15 Apr 2004 22:50:34 +0600 Subject: [slime-cvs] Fwd: Your Best Source for Medicines Online Delivered Discreetly and Securely to You Message-ID: An HTML attachment was scrubbed... URL: From holliscovel at msgserver.com Thu Apr 15 19:03:45 2004 From: holliscovel at msgserver.com (Liz Michel) Date: Thu, 15 Apr 2004 14:03:45 -0500 Subject: [slime-cvs] BREAKING NEWS From the HealthCare Sector/Medical Technologies, Thu, 15 Apr 2004 14:03:45 -0500 Message-ID: Thu, 15 Apr 2004 14:03:45 -0500 BREAKING NEWS on AMTK - Austin Medical Technologies, Inc., (AMTK) Moves Forward With CYNACON/Ocusoft, Inc. to Strengthen Relationship, Forms Joint Venture "The Eyecentric Group." ST. PETERSBURG, Fla.---PRNewswire-FirstCall---AUSTIN MEDICAL TECHNOLOGIES, Inc. (AMTK), announces this exclusive venture with CYNACON/OCuSOFT and the launch of "The eyeCentric Group(TM)." Kurt Tarter, President & CEO, states "the CYNACON/OCuSOFT relationship is moving forward at breakneck speed--our estimate over the next 3 quarters, as this fully materializes, could represent up to $10 million in additional sales to the company. Under this relationship, we will be competing for multi-million dollar contracts. Our services and products are being sought after by some of the industries leading customers and manufactures. Partnerships like this help to drive strong increases in our customer base, which allow us to maintain our double digit growth quarter over quarter." Read the whole story on this groundbreaking company from the HealthCare/Medical Technologies Sector - http://biz.yahoo.com/prnews/040412/nym162_1.html burro craven pleistocene cryptanalytic strategy causate cashew defend compilation blister cellulose elute legion embroidery exclusive beep sludge distinguish bazaar rhenish annex barricade rabat psychosis communion boldface channel behold From ojszx at msn.com Fri Apr 16 03:02:47 2004 From: ojszx at msn.com (Micheal Sullivan) Date: Thu, 15 Apr 2004 23:02:47 -0400 Subject: [slime-cvs] Fw: 0rder confirmati0n #908746.. Message-ID: An HTML attachment was scrubbed... URL: From rubyen at faithmail.com Fri Apr 16 09:21:37 2004 From: rubyen at faithmail.com (Bart Chappell) Date: Fri, 16 Apr 2004 04:21:37 -0500 Subject: [slime-cvs] REDUCE Your Home Note Today, Fri, 16 Apr 2004 04:21:37 -0500 Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Fri Apr 16 11:54:04 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Apr 2004 07:54:04 -0400 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-serv6499 Modified Files: slime.texi Log Message: (Top): The Top node is now smaller, with details moved into Introduction. This makes the Info front page easier to navigate. (Patch from Richard M Kreuter.) Date: Fri Apr 16 07:54:04 2004 Author: lgorrie Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.7 slime/doc/slime.texi:1.8 --- slime/doc/slime.texi:1.7 Wed Apr 14 15:14:48 2004 +++ slime/doc/slime.texi Fri Apr 16 07:54:03 2004 @@ -38,7 +38,7 @@ @end macro @set EDITION DRAFT - at set UPDATED @code{$Id: slime.texi,v 1.7 2004/04/14 19:14:48 lgorrie Exp $} + at set UPDATED @code{$Id: slime.texi,v 1.8 2004/04/16 11:54:03 lgorrie Exp $} @titlepage @title SLIME User Manual @@ -51,58 +51,21 @@ @contents - at node Top, Getting started, (dir), (dir) + at node Top, Introduction, (dir), (dir) - at c @node Introduction, Getting started, Top, Top - at chapter Introduction + at ifinfo + at top SLIME @SLIME{} is the ``Superior Lisp Interaction Mode for Emacs.'' - at SLIME{} extends Emacs with new support interactive programming in -Common Lisp. The features are centred around @code{slime-mode}, an -Emacs minor-mode that compliments the standard @code{lisp-mode}. While - at code{lisp-mode} supports editing Lisp source files, @code{slime-mode} -adds support for interacting with a running Common Lisp process for -compilation, debugging, documentation lookup, and so on. - -The @code{slime-mode} programming environment follows the example of -Emacs's native Emacs Lisp environment. We have also included good -ideas from similar systems (such as @acronym{ILISP}) and some new -ideas of our own. - - at SLIME{} is constructed from two parts: a user-interface written in -Emacs Lisp, and a supporting server program written in Common -Lisp. The two sides are connected together with a socket and -communicate using an @acronym{RPC}-like protocol. - -The Lisp server is primarily written in portable Common Lisp. The -required implementation-specific functionality is specified by a -well-defined interface and implemented separately for each Lisp -implementation. This makes @SLIME{} readily portable. - - at c @node Status, , Introduction, Introduction - at section Status: under development +Like @SLIME{}, this manual is a work in progress. It documents an +unreleased version of @SLIME{}. - at SLIME{} is a program under development and has not yet been -``released.'' Unlike many other free software projects, we are not -making ``0.x'' releases, but instead evolving directly towards a -``1.0'' release. We find this continuous style of development very -comfortable, so rather than setting short-term milestones we've taken -to merrily hacking away as @SLIME{} progresses towards a ``final'' -shape at its own pace. - -We warmly invite Lisp hackerdom to join in the development in any way -you like. As frugal hospitality we offer access to the @CVS{} tree and -a cosy mailing list, but not yet such luxuries as supported tarballs, -a snazzy website, or guarantees of backward-compatibility. - -We hope that nowadays @SLIME{} is suitable for doing ``real work'' -with. To make support easy we do expect @SLIME{} users to keep fairly -up-to-date with the current code-base, so an adventurous nature is an -advantage. For people looking for something to just install and not -have to upgrade or muck about with, we ain't yet it. +For a list of hackers who've worked on @SLIME{}, @ref{Credits}. + at end ifinfo @menu +* Introduction:: * Getting started:: * slime-mode:: * REPL:: @@ -152,6 +115,7 @@ * REPL commands:: * Input Navigation:: +* Shortcuts:: @SLDB{}: the @SLIME{} debugger @@ -183,7 +147,56 @@ @end detailmenu @end menu - at node Getting started, slime-mode, Top, Top + at node Introduction, Getting started, Top, Top + at chapter Introduction + + at SLIME{} is the ``Superior Lisp Interaction Mode for Emacs.'' + + at SLIME{} extends Emacs with new support interactive programming in +Common Lisp. The features are centred around @code{slime-mode}, an +Emacs minor-mode that compliments the standard @code{lisp-mode}. While + at code{lisp-mode} supports editing Lisp source files, @code{slime-mode} +adds support for interacting with a running Common Lisp process for +compilation, debugging, documentation lookup, and so on. + +The @code{slime-mode} programming environment follows the example of +Emacs's native Emacs Lisp environment. We have also included good +ideas from similar systems (such as @acronym{ILISP}) and some new +ideas of our own. + + at SLIME{} is constructed from two parts: a user-interface written in +Emacs Lisp, and a supporting server program written in Common +Lisp. The two sides are connected together with a socket and +communicate using an @acronym{RPC}-like protocol. + +The Lisp server is primarily written in portable Common Lisp. The +required implementation-specific functionality is specified by a +well-defined interface and implemented separately for each Lisp +implementation. This makes @SLIME{} readily portable. + + at c @node Status, , Introduction, Introduction + at section Status: under development + + at SLIME{} is a program under development and has not yet been +``released.'' Unlike many other free software projects, we are not +making ``0.x'' releases, but instead evolving directly towards a +``1.0'' release. We find this continuous style of development very +comfortable, so rather than setting short-term milestones we've taken +to merrily hacking away as @SLIME{} progresses towards a ``final'' +shape at its own pace. + +We warmly invite Lisp hackerdom to join in the development in any way +you like. As frugal hospitality we offer access to the @CVS{} tree and +a cosy mailing list, but not yet such luxuries as supported tarballs, +a snazzy website, or guarantees of backward-compatibility. + +We hope that nowadays @SLIME{} is suitable for doing ``real work'' +with. To make support easy we do expect @SLIME{} users to keep fairly +up-to-date with the current code-base, so an adventurous nature is an +advantage. For people looking for something to just install and not +have to upgrade or muck about with, we ain't yet it. + + at node Getting started, slime-mode, Introduction, Top @chapter Getting started This chapter tells you how to get @SLIME{} up and running. @@ -727,6 +740,7 @@ @menu * REPL commands:: * Input Navigation:: +* Shortcuts:: @end menu @node REPL commands, Input Navigation, REPL, REPL @@ -761,7 +775,7 @@ @end table - at node Input Navigation, , REPL commands, REPL + at node Input Navigation, Shortcuts, REPL commands, REPL @section Input navigation @table @kbd @@ -791,7 +805,8 @@ @end table - at node Shortcuts + at comment node-name, next, previous, up + at node Shortcuts, , Input Navigation, REPL @section Shortcuts ``Shortcuts'' are a special set of @REPL{} commands that are invoked From lgorrie at common-lisp.net Fri Apr 16 11:54:55 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Apr 2004 07:54:55 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv26871 Modified Files: ChangeLog Log Message: Date: Fri Apr 16 07:54:55 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.336 slime/ChangeLog:1.337 --- slime/ChangeLog:1.336 Thu Apr 15 10:49:07 2004 +++ slime/ChangeLog Fri Apr 16 07:54:54 2004 @@ -1,3 +1,9 @@ +2004-04-16 Luke Gorrie + + * doc/slime.texi (Top): The Top node is now smaller, with details + moved into Introduction. This makes the Info front page easier to + navigate. (Patch from Richard M Kreuter.) + 2004-04-15 Ivan Boldyrev * slime.el (slime-handle-repl-shortcut): Call `completing-read' From lgorrie at common-lisp.net Fri Apr 16 19:30:44 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Apr 2004 15:30:44 -0400 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-serv10391/doc Modified Files: slime.texi Log Message: Date: Fri Apr 16 15:30:44 2004 Author: lgorrie Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.8 slime/doc/slime.texi:1.9 --- slime/doc/slime.texi:1.8 Fri Apr 16 07:54:03 2004 +++ slime/doc/slime.texi Fri Apr 16 15:30:43 2004 @@ -2,8 +2,16 @@ @c %**start of header @setfilename slime.info @settitle The Superior Lisp Interaction Mode for Emacs + at dircategory Emacs + at direntry +* SLIME: (slime). Superior Lisp Interaction Mode for Emacs. + at end direntry @c %**end of header + at c Written by Luke Gorrie. + at c + at c This file has been placed in the public domain. + @macro SLIME @acronym{SLIME} @end macro @@ -38,7 +46,7 @@ @end macro @set EDITION DRAFT - at set UPDATED @code{$Id: slime.texi,v 1.8 2004/04/16 11:54:03 lgorrie Exp $} + at set UPDATED @code{$Id: slime.texi,v 1.9 2004/04/16 19:30:43 lgorrie Exp $} @titlepage @title SLIME User Manual From lgorrie at common-lisp.net Fri Apr 16 19:31:11 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Apr 2004 15:31:11 -0400 Subject: [slime-cvs] CVS update: slime/doc/Makefile Message-ID: Update of /project/slime/cvsroot/slime/doc In directory common-lisp.net:/tmp/cvs-serv5572/doc Modified Files: Makefile Log Message: Added 'install' and 'uninstall' targets for the Info manual. It may be necessary to tweak `infodir' in the Makefile to suit the local system before installing. (Patch from from Richard M Kreuter.) Date: Fri Apr 16 15:31:11 2004 Author: lgorrie Index: slime/doc/Makefile diff -u slime/doc/Makefile:1.2 slime/doc/Makefile:1.3 --- slime/doc/Makefile:1.2 Fri Mar 26 09:39:55 2004 +++ slime/doc/Makefile Fri Apr 16 15:31:11 2004 @@ -1,5 +1,23 @@ +# Where to put the info file(s). NB: the GNU Coding Standards (GCS) +# and the Filesystem Hierarchy Standard (FHS) differ on where info +# files belong. The GCS says /usr/local/info; the FHS says +# /usr/local/share/info. Many distros obey the FHS, but people who +# installed their emacs from source probably have a GCS-ish file +# hierarchy. +infodir=/usr/local/info + +# What command to use to install info file(s) +INSTALL_CMD=install -m 644 + +# Info files generated here. +infofiles=slime.info + all: slime.ps slime.info +install: install-info + +uninstall: uninstall-info + slime.ps: slime.dvi dvips -o $@ $< @@ -34,3 +52,25 @@ .INTERMEDIATE: contributors.texi +# Debian's install-info wants a --section argument. +section := $(shell grep INFO-DIR-SECTION $(infofiles) | sed 's/INFO-DIR-SECTION //') +install-info: slime.info + mkdir -p $(infodir) + $(INSTALL_CMD) $(infofiles) $(infodir)/$(infofiles) + @if (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + echo "install-info --info-dir=$(infodir) $(infodir)/$(infofiles)";\ + install-info --info-dir="$(infodir)" "$(infodir)/$(infofiles)" || :;\ + else \ + echo "install-info --infodir=$(infodir) --section $(section) $(section) $(infodir)/$(infofiles)" && \ + install-info --infodir="$(infodir)" --section $(section) ${section} "$(infodir)/$(infofiles)" || :; fi + +uninstall-info: + @if (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + echo "install-info --info-dir=$(infodir) --remove $(infodir)/$(infofiles)";\ + install-info --info-dir="$(infodir)" --remove "$(infodir)/$(infofiles)" || :;\ + else \ + echo "install-info --infodir=$(infodir) --remove $(infodir)/$(infofiles)";\ + install-info --infodir="$(infodir)" --remove "$(infodir)/$(infofiles)" || :; fi + rm -f $(infodir)/$(infofiles) From lgorrie at common-lisp.net Fri Apr 16 19:33:56 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 16 Apr 2004 15:33:56 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv3584 Modified Files: ChangeLog Log Message: Date: Fri Apr 16 15:33:56 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.337 slime/ChangeLog:1.338 --- slime/ChangeLog:1.337 Fri Apr 16 07:54:54 2004 +++ slime/ChangeLog Fri Apr 16 15:33:56 2004 @@ -1,5 +1,10 @@ 2004-04-16 Luke Gorrie + * doc/Makefile: Added 'install' and 'uninstall' targets for the + Info manual. It may be necessary to tweak `infodir' in the + Makefile to suit the local system before installing. (Patch from + from Richard M Kreuter.) + * doc/slime.texi (Top): The Top node is now smaller, with details moved into Introduction. This makes the Info front page easier to navigate. (Patch from Richard M Kreuter.) From AnylahBilotta at japan.com Sat Apr 17 02:42:53 2004 From: AnylahBilotta at japan.com (Manolo Noblett) Date: Sat, 17 Apr 2004 00:42:53 -0200 Subject: [slime-cvs] Fw: Overdue Account Message-ID: An HTML attachment was scrubbed... URL: From LWSRI at hotmail.com Sat Apr 17 09:32:37 2004 From: LWSRI at hotmail.com (Erin Mcgraw) Date: Sat, 17 Apr 2004 06:32:37 -0300 Subject: [slime-cvs] Fw: meeting is on Monday.. Message-ID: An HTML attachment was scrubbed... URL: From heller at common-lisp.net Sat Apr 17 09:26:00 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sat, 17 Apr 2004 05:26:00 -0400 Subject: [slime-cvs] CVS update: slime/swank-cmucl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv23245 Modified Files: swank-cmucl.lisp Log Message: (source-location-tlf-number, source-location-form-number): New functions. (resolve-stream-source-location, resolve-file-source-location): Use them. Date: Sat Apr 17 05:25:58 2004 Author: heller Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.94 slime/swank-cmucl.lisp:1.95 --- slime/swank-cmucl.lisp:1.94 Tue Apr 6 06:42:53 2004 +++ slime/swank-cmucl.lisp Sat Apr 17 05:25:58 2004 @@ -712,19 +712,28 @@ `(:function-name ,string))) (t (list :error (princ-to-string c)))))) +(defun source-location-form-numbers (location) + (c::decode-form-numbers (c::form-numbers-form-numbers location))) + +(defun source-location-tlf-number (location) + (nth-value 0 (source-location-form-numbers location))) + +(defun source-location-form-number (location) + (nth-value 1 (source-location-form-numbers location))) + (defun resolve-file-source-location (location) (let ((filename (c::file-source-location-pathname location)) - (tlf-number (c::file-source-location-tlf-number location)) - (form-number (c::file-source-location-tlf-number location))) + (tlf-number (source-location-tlf-number location)) + (form-number (source-location-form-number location))) (with-open-file (s filename) (let ((pos (form-number-stream-position tlf-number form-number s))) (make-location `(:file ,(unix-truename filename)) `(:position ,(1+ pos))))))) -(defun resolve-source-location (location) - (let ((info (c::source-location-user-info location)) - (tlf-number (c::source-location-tlf-number location)) - (form-number (c::source-location-tlf-number location))) +(defun resolve-stream-source-location (location) + (let ((info (c::stream-source-location-user-info location)) + (tlf-number (source-location-tlf-number location)) + (form-number (source-location-form-number location))) ;; XXX duplication in frame-source-location (assert (info-from-emacs-buffer-p info)) (destructuring-bind (&key emacs-buffer emacs-buffer-string @@ -741,8 +750,8 @@ `(:error ,(format nil "No source info for: ~A" object))) (c::file-source-location (resolve-file-source-location source)) - (c::source-location - (resolve-source-location source)) + (c::stream-source-location + (resolve-stream-source-location source)) (pathname (make-name-in-file-location source name)) (cons From heller at common-lisp.net Sat Apr 17 09:34:11 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sat, 17 Apr 2004 05:34:11 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv26169 Modified Files: slime.el Log Message: (slime-merge-notes): Use mapconcat instead of of (concat (slime-intersperse (mapcar ....))) (slime-intersperse): Handle empty lists. Date: Sat Apr 17 05:34:10 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.263 slime/slime.el:1.264 --- slime/slime.el:1.263 Thu Apr 15 07:07:42 2004 +++ slime/slime.el Sat Apr 17 05:34:10 2004 @@ -1840,7 +1840,7 @@ (when (and (not (get-buffer-window (current-buffer) t)) (< start end)) (display-buffer (current-buffer)))) - + (defun slime-flush-output () (while (accept-process-output nil 0 20))) @@ -2640,9 +2640,9 @@ (defun slime-merge-notes (notes) "Merge NOTES together. Keep the highest severity, concatenate the messages." - (let* ((new-severity (reduce #'slime-most-severe notes :key #'slime-note.severity)) - (messages (mapcar #'slime-note.message notes)) - (new-message (apply #'concat (slime-intersperse "\n" messages)))) + (let* ((new-severity (reduce #'slime-most-severe notes + :key #'slime-note.severity)) + (new-message (mapconcat #'slime-note.message notes "\n"))) (let ((new-note (copy-list (car notes)))) (setf (getf new-note :message) new-message) (setf (getf new-note :severity) new-severity) @@ -2650,8 +2650,10 @@ (defun slime-intersperse (element list) "Intersperse ELEMENT between each element of LIST." - (cons (car list) - (mapcan (lambda (x) (list element x)) list))) + (if (null list) + '() + (cons (car list) + (mapcan (lambda (x) (list element x)) (cdr list))))) (defun slime-notes-in-same-location-p (a b) (equal (slime-note.location a) (slime-note.location b))) From heller at common-lisp.net Sat Apr 17 09:51:17 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sat, 17 Apr 2004 05:51:17 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9774 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Sat Apr 17 05:51:17 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.338 slime/ChangeLog:1.339 --- slime/ChangeLog:1.338 Fri Apr 16 15:33:56 2004 +++ slime/ChangeLog Sat Apr 17 05:51:17 2004 @@ -1,3 +1,17 @@ +2004-04-17 Raymond Toy + + * swank-cmucl.lisp (source-location-tlf-number) + (source-location-form-number): New functions to extract the + encoded form-numbers from source locations. + (resolve-stream-source-location, resolve-file-source-location): + Use them. + +2004-04-17 Helmut Eller + + * slime.el (slime-merge-notes): Use mapconcat instead of + (concat (slime-intersperse (mapcar ....))) + (slime-intersperse): Handle empty lists. + 2004-04-16 Luke Gorrie * doc/Makefile: Added 'install' and 'uninstall' targets for the From gqrjsnuobjmjyi at idealu.com Sat Apr 17 21:30:40 2004 From: gqrjsnuobjmjyi at idealu.com (Barney Fletcher) Date: Sat, 17 Apr 2004 17:30:40 -0400 Subject: [slime-cvs] Girls want it bigger! Message-ID: An HTML attachment was scrubbed... URL: From acucrm at yahoo.com Sun Apr 18 01:39:31 2004 From: acucrm at yahoo.com (Mario Ferguson) Date: Sun, 18 Apr 2004 03:39:31 +0200 Subject: [slime-cvs] Fw: are you m a r r i e d.. Message-ID: An HTML attachment was scrubbed... URL: From ibctskjjsbnr at myexcel.com Tue Apr 20 01:20:54 2004 From: ibctskjjsbnr at myexcel.com (Henry Rivers) Date: Tue, 20 Apr 2004 03:20:54 +0200 Subject: [slime-cvs] Fwd: Fwd: Good Message-ID: An HTML attachment was scrubbed... URL: From margarit at hksh.org Tue Apr 20 15:15:51 2004 From: margarit at hksh.org (Lon Lanier) Date: Tue, 20 Apr 2004 10:15:51 -0500 Subject: [slime-cvs] HealthCare Sector/Medical Technologies - AMTK Exclusive Contracts, Tue, 20 Apr 2004 10:15:51 -0500 Message-ID: Equity Spoltight - Tue, 20 Apr 2004 10:15:51 -0500 Symbol: AMTK - Austin Medical Technologies Sector: HealthCare/Medical Technologies AMTK - On the Cutting Edge of Medical Technologies AMTK is experiencing strong and sturdy growth due to the continued demand for its products and services utilized by surgeons throughout the world. The business is an annuity model with recurring revenue each month. Customers sign multi-year contracts, and AMTK maintains a track record of 95% contract renewal. AMTK delivers "DIRECT" from the manufacturer to the surgeon, the only technology-based "Single Source Supply Solution" serving the Ambulatory Surgery Center (ASC) market. Under the brand name eyeDirecti, AMTK is initially focused on surgeon-owned and operated ASCs which consist of 2,500 practices with 15,000 surgeons performing 4.4 million surgical procedures annually at a supply cost of 400 million dollars per year. HIGHLIGHTS 1) AMTK has exclusive contracts with leading HealthCare companies such as Baxter, Medtronic, Allergan, and OcuSoft. 2) AMTK is a manufacturer and distributor of several hundred medical and surgical products -- enough to fill 80 percent of a typical ASC's supply needs. 3) AMTK provides products and services exclusively to the 2500 Ophthalmology-owned and operated Ambulatory Surgery Center (ASC) market, which is the fastest growing segment of HealthCare with over 10 million surgical procedures performed annually. AMTK is focused on providing disposable surgical supplies and superior service to this outpatient HealthCare provider. 4) AMTK's founders have more than 100 years' experience in the ophthalmic surgical products and technology industries. AUSTIN MEDICAL TECHNOLOGIES, Inc. AMTK provides hundreds of products and technology-based services needed by ASC's. AMTK offers disposable surgical instruments, custom sterile procedure packs, intravenous solutions, patient care supplies, and technology to enhance efficiencies and eliminate cost to the customer. AMTK's in-depth knowledge concerning special interactions among ASC's and manufacturers has driven it to create the surgical eye care supply chain and e-commerce solution that dramatically simplifies the distinctive methods and processes used byits customers to manage their business. AMTK has exclusive contracts with leading HealthCare companies such as Baxter, Medtronic, Allergan, and OcuSoft for manufacturing and distribution of the products it markets. This is key: AMTK provides not just products but also a unique set of innovative, integrated cost-management services. These are extremely important in HealthCare today; they allow ASC's to save money and focus on patient care rather than supplies and logistics. Customer Requirements Every year 10 million surgical procedures are performed within the ophthalmic ASC market. Every day there are more than a million people making outpatient visits to medical centers across the country. The nation spends about a trillion dollars a year -- a sixth of its total economy -- on HealthCare. That amount continues to grow as the population ages and new medical capabilities develop. Globally, HealthCare is a large, vital, growing industry. How Austin Medical Technology Responds More than any other company in HealthCare, AMTK can help ophthalmic ASC's manage their costs and their resources. AMTK can address the 20-plus percent of an ASC budget that goes for supplies and the additional 20 percent or more that very often is devoted to managing those supplies. AMTK is a manufacturer and distributor of several hundred medical and surgical products -- enough to fill 80 percent of a typical ASC's supply needs. More important, AMTK integrates its total product-offering with unique services that have been proven to help control HealthCare costs. AMTK helps its customers purchase and use fewer supplies. AMTK helps them order and manage inventories more efficiently. Custom Procedure Trays (CPT's) aka "packs" incorporate 70-80% of disposable surgical supplies utilized on a procedure specific basis. CPT's is a 2 billion dollar industry HealthCare wide and $400 million within the ophthalmic ASC market. 95% of ophthalmologists utilize packs for Cataract, Retinal and Plastic procedures. LASIK packs are now being created for this new procedure. Stock Market Watcher is an independent research firm. This report is based on Stock Market Watcher's independent analysis but also relies on information supplied by sources believed to be reliable. This report may not be the opinion of AMTK management. Stock Market Watcher has also been retained to research and issue reports on AMTK. Stock Market Watcher may from time to time purchase or sell AMTK common shares in the open market without notice. The information contained in this report shall not constitute, an offer to sell or solicitation of any offer to purchase any security. It is intended for information only. Some statements may contain so-called "forward-looking statements". Many factors could cause actual results to differ. Investors should consult with their Investment Advisor concerning AMTK. Copyright 2004 ? Stock Market Watcher Ltd. SMS, Apartado 173-3006 Zona Franca MeoBarreal Heredia, Costa Rica. All Rights Reserved. This newsletter was distributed by MMS,Inc. MMS was paid four thousand dollars to distribute this report. MMS is not affiiated with Stock Market Watcher and is not responsible for newsletter content. No more ads, breetyrrell at poczta.onet.pl dickinson ponce treaty goldfinch eagle trammel hirsch ruination chevron cardiff socratic daddy electrolyte concision golly botany suggestive grave alloy battlefield marinade neckline gallstone exponentiate acrid yank shabby debutante sweaty mcnaughton sagacity puffin appreciable annunciate filter scrooge boorish kumquat sparkle diathermy upsurge flint antigone slosh restitution ferromagnetic abyss chaste telltale windbreak forceful breakaway affinity rheology ingestion descartes From heller at common-lisp.net Tue Apr 20 19:58:41 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 20 Apr 2004 15:58:41 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv5080 Modified Files: slime.el Log Message: (slime-close-buffer): New utility function. (slime-space): Use it to kill superfluous *Completions* buffers. Date: Tue Apr 20 15:58:41 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.264 slime/slime.el:1.265 --- slime/slime.el:1.264 Sat Apr 17 05:34:10 2004 +++ slime/slime.el Tue Apr 20 15:58:41 2004 @@ -995,6 +995,11 @@ (prin1 sexp (current-buffer)) (buffer-string)))) +(defun slime-close-buffer (buffer-name) + "Kills buffer BUFFER-NAME if it exists." + (when (buffer-live-p (get-buffer buffer-name)) + (kill-buffer buffer-name))) + ;;; Inferior CL Setup: compiling and connecting to Swank @@ -2675,8 +2680,7 @@ ;;;;; Compiler notes list (defun slime-maybe-show-xrefs-for-notes (&optional notes) - "Show the compiler notes NOTES in a xref buffer if they come from -more than one file." + "Show the compiler notes NOTES if they come from more than one file." (let* ((notes (or notes (slime-compiler-notes))) (xrefs (slime-xrefs-for-notes notes))) (when (> (length xrefs) 1) ; >1 file @@ -3224,6 +3228,7 @@ more than one space." (interactive "p") (self-insert-command n) + (slime-close-buffer "*Completions*") (when (and (slime-connected-p) (or (not (slime-busy-p)) ;; XXX should we enable this? From heller at common-lisp.net Tue Apr 20 19:59:18 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 20 Apr 2004 15:59:18 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14381 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Tue Apr 20 15:59:18 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.339 slime/ChangeLog:1.340 --- slime/ChangeLog:1.339 Sat Apr 17 05:51:17 2004 +++ slime/ChangeLog Tue Apr 20 15:59:18 2004 @@ -1,3 +1,8 @@ +2004-04-20 Tiago Maduro-Dias + + * slime.el (slime-close-buffer): New utility function. + (slime-space): Use it to kill superfluous *Completions* buffers. + 2004-04-17 Raymond Toy * swank-cmucl.lisp (source-location-tlf-number) From heller at common-lisp.net Tue Apr 20 22:29:44 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 20 Apr 2004 18:29:44 -0400 Subject: [slime-cvs] CVS update: slime/swank-cmucl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11486 Modified Files: swank-cmucl.lisp Log Message: (definition-source-location): Make it backward compatible with 18e. (class-definitions): Treat condition-classes like built-in classes (i.e. give up) until we find a better solution. Date: Tue Apr 20 18:29:43 2004 Author: heller Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.95 slime/swank-cmucl.lisp:1.96 --- slime/swank-cmucl.lisp:1.95 Sat Apr 17 05:25:58 2004 +++ slime/swank-cmucl.lisp Tue Apr 20 18:29:43 2004 @@ -743,14 +743,22 @@ (make-location `(:buffer ,emacs-buffer) `(:position ,(+ emacs-buffer-offset pos)))))))) +(defun file-source-location-p (object) + (when (fboundp 'c::file-source-location-p) + (c::file-source-location-p object))) + +(defun stream-source-location-p (object) + (when (fboundp 'c::stream-source-location-p) + (c::stream-source-location-p object))) + (defun definition-source-location (object name) (let ((source (pcl::definition-source object))) (etypecase source (null `(:error ,(format nil "No source info for: ~A" object))) - (c::file-source-location + ((satisfies file-source-location-p) (resolve-file-source-location source)) - (c::stream-source-location + ((satisfies stream-source-location-p) (resolve-stream-source-location source)) (pathname (make-name-in-file-location source name)) @@ -768,17 +776,17 @@ (null '()) (kernel::structure-class (list (list `(defstruct ,name) (dd-location (find-dd name))))) + #+(or) (conditions::condition-class (list (list `(define-condition ,name) (condition-class-location class)))) (kernel::standard-class (list (list `(defclass ,name) (class-location (find-class name))))) - (kernel::built-in-class + ((or kernel::built-in-class conditions::condition-class) (list (list `(kernel::define-type-class ,name) `(:error - ,(format nil "No source info for built-in-class: ~A" - name))))))))) + ,(format nil "No source info for ~A" name))))))))) (defun setf-definitions (name) (let ((function (or (ext:info :setf :inverse name) From heller at common-lisp.net Tue Apr 20 22:32:08 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 20 Apr 2004 18:32:08 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv18128 Modified Files: swank.lisp Log Message: (list-all-package-names): Optionally include nicknames in the result (From Edi Weitz). Date: Tue Apr 20 18:32:07 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.167 slime/swank.lisp:1.168 --- slime/swank.lisp:1.167 Wed Apr 14 14:50:25 2004 +++ slime/swank.lisp Tue Apr 20 18:32:05 2004 @@ -351,7 +351,7 @@ (defvar *thread-counter* 0) (defun remove-dead-threads () - (setq *active-threads* + (setq *active-threads* (remove-if-not #'thread-alive-p *active-threads*))) (defun add-thread (thread) @@ -1730,8 +1730,12 @@ ;;;; -(defslimefun list-all-package-names () - (mapcar #'package-name (list-all-packages))) +(defslimefun list-all-package-names (&optional include-nicknames) + "Return a list of all package names. +Include the nicknames if INCLUDE-NICKNAMES is true." + (loop for package in (list-all-packages) + collect (package-name package) + when include-nicknames append (package-nicknames package))) ;; Use eval for the sake of portability... (defun tracedp (fspec) From heller at common-lisp.net Tue Apr 20 22:38:40 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 20 Apr 2004 18:38:40 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11873 Modified Files: slime.el Log Message: (slime-read-package-name): Include nicknames in the completions set. (slime-repl-mode-map): Bind C-c : to slime-interactive-eval just like in most other SLIME buffers. (Proposed by Edi Weitz) (read-directory-name): Compatibilty function. Date: Tue Apr 20 18:38:39 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.265 slime/slime.el:1.266 --- slime/slime.el:1.265 Tue Apr 20 15:58:41 2004 +++ slime/slime.el Tue Apr 20 18:38:39 2004 @@ -697,7 +697,7 @@ (cond ((not prefix-arg) (slime-connection)) ((equal prefix-arg '(4)) - (slime-find-connection-by-type-name (slime-read-connection-name))) + (slime-find-connection-by-name (slime-read-connection-name))) (t (error "Invalid prefix argument: %S" prefix-arg)))) (defmacro slime-define-keys (keymap &rest key-command) @@ -734,7 +734,7 @@ (re-search-forward regexp nil t))) (goto-char (match-end 0)) (skip-chars-forward " \n\t\f\r#:") - (let ((pkg (condition-case nil (read (current-buffer)) (error nil )))) + (let ((pkg (ignore-errors (read (current-buffer))))) (cond ((stringp pkg) pkg) ((symbolp pkg) @@ -972,7 +972,7 @@ (let ((completion-ignore-case t)) (completing-read prompt (slime-bogus-completion-alist (slime-eval - `(swank:list-all-package-names))) + `(swank:list-all-package-names t))) nil nil initial-value))) (defmacro slime-propertize-region (props &rest body) @@ -1179,7 +1179,7 @@ (message "%s" message) (ding) (sleep-for 2) - (error message)))) + (error "%s" message)))) (defun slime-disconnect () "Disconnect all connections." @@ -2384,6 +2384,7 @@ ("\M-s" 'slime-repl-next-matching-input) ("\C-c\C-c" 'slime-interrupt) ("\C-c\C-g" 'slime-interrupt) + ("\C-c:" 'slime-interactive-eval) ;("\t" 'slime-complete-symbol) ("\t" 'slime-repl-indent-and-complete-symbol) (" " 'slime-space) @@ -5890,10 +5891,11 @@ (defslime-repl-shortcut slime-repl-compile-and-load ("compile-and-load") (:handler (lambda (file-name) - (interactive (list (expand-file-name (read-file-name "File: " - nil nil nil nil - (lambda (filename) - (string-match ".*\\.\\(lisp\\|cl\\)$" filename)))))) + (interactive (list + (expand-file-name + (read-file-name "File: " nil nil nil nil + (lambda (filename) + (string-match ".*\\.\\(lisp\\|cl\\)$" filename)))))) (lexical-let ((lisp-file-name (slime-to-lisp-filename file.lisp))) (if (slime-eval `(swank::requires-compile-p ,lisp-file-name)) (progn @@ -5935,8 +5937,7 @@ (slime-oos (slime-read-system-name) "COMPILE-OP"))) (:one-liner "Compile (but not load) an ASDF system.")) -(defslime-repl-shortcut slime-repl-compile/force-system ("force-compile-system") - (:handler (lambda () +(defslime-repl-shortcut slime-repl-compile/force-system ("force-compile-system") (:handler (lambda () (interactive) (slime-oos (slime-read-system-name) "COMPILE-OP" :force t))) (:one-liner "Recompile (but not load) an ASDF system.")) @@ -5947,7 +5948,7 @@ "Kill all the slime related buffers. This is only used by the repl command sayoonara." (dolist (buf (buffer-list)) - (when (or (member (buffer-name buf) (list "*inferior-lisp*" "*slime-events*")) + (when (or (member (buffer-name buf) '("*inferior-lisp*" "*slime-events*")) (string-match "\*slime-repl\[\d+\]\*" (buffer-name buf)) (string-match "\*sldb .*\*" (buffer-name buf))) (kill-buffer buf)))) @@ -6516,6 +6517,16 @@ (after-quote (error "After quote")) (t (error "Shouldn't happen: parsing state: %S" state)))))) + +(defun-if-undefined read-directory-name (prompt &optional dir default-dirname + mustmatch initial) + (unless dir + (setq dir default-directory)) + (unless default-dirname + (setq default-dirname + (if initial (concat dir initial) default-directory))) + (read-file-name prompt dir default-dirname mustmatch initial + 'file-directory-p)) (unless (boundp 'temporary-file-directory) (defvar temporary-file-directory From heller at common-lisp.net Tue Apr 20 22:38:59 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 20 Apr 2004 18:38:59 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv12513 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Tue Apr 20 18:38:59 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.340 slime/ChangeLog:1.341 --- slime/ChangeLog:1.340 Tue Apr 20 15:59:18 2004 +++ slime/ChangeLog Tue Apr 20 18:38:59 2004 @@ -1,3 +1,14 @@ +2004-04-21 Edi Weitz + + * swank.lisp (list-all-package-names): Optionally include + nicknames in the result. + + * slime.el (slime-read-package-name): Include nicknames in the + completions set. + (slime-repl-mode-map): Bind C-c : to slime-interactive-eval just + like in most other SLIME buffers. + (read-directory-name): Compatibilty defun. + 2004-04-20 Tiago Maduro-Dias * slime.el (slime-close-buffer): New utility function. From heller at common-lisp.net Tue Apr 20 22:42:05 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 20 Apr 2004 18:42:05 -0400 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-serv25931 Modified Files: slime.texi Log Message: (Compilation): slime-remove-notes is bound to C-c M-c not M-c. Noted by Edi Weitz. Date: Tue Apr 20 18:42:05 2004 Author: heller Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.9 slime/doc/slime.texi:1.10 --- slime/doc/slime.texi:1.9 Fri Apr 16 15:30:43 2004 +++ slime/doc/slime.texi Tue Apr 20 18:42:05 2004 @@ -46,7 +46,7 @@ @end macro @set EDITION DRAFT - at set UPDATED @code{$Id: slime.texi,v 1.9 2004/04/16 19:30:43 lgorrie Exp $} + at set UPDATED @code{$Id: slime.texi,v 1.10 2004/04/20 22:42:05 heller Exp $} @titlepage @title SLIME User Manual @@ -280,8 +280,8 @@ @example export CVSROOT=:pserver:anonymous@@common-lisp.net:/project/slime/cvsroot cvs login - at emph{(Just press return when prompted for a password.)} @end example + at emph{(The password is @code{anonymous})} The latest version can then be checked out with: @example @@ -458,7 +458,7 @@ @code{slime-next-note, slime-previous-note}@* These commands move the point between compiler notes and display the new note. - at kbditem{M-c, slime-remove-notes} + at kbditem{C-c M-c, slime-remove-notes} Remove all annotations from the buffer. @end table From dremawatterson at bigsecret.com Wed Apr 21 18:05:40 2004 From: dremawatterson at bigsecret.com (Elisa Crawford) Date: Wed, 21 Apr 2004 13:05:40 -0500 Subject: [slime-cvs] US STOCK-MARKET---M.D. Appointed to Board of Advisors, Wed, 21 Apr 2004 13:05:40 -0500 Message-ID: Wed, 21 Apr 2004 13:05:40 -0500 US STOCK-MArKET---BREAKING NEWS - M.D. Appointed to Board of Advisors Read the whole story on this groundbreaking company from the HealthCare/Medical Technologies Sector - http://biz.yahoo.com/prnews/040420/datu080_1.html bedevil aliquot giveth conspiratorial biometrika willful blatz bicycle cordon pledge mock invert bespectacled carthage arcana cook millard broccoli yeasty sophocles continental flabbergast squawk reverse intuitable split patrol maltose byte vaunt tolerate cartilaginous charlie reave ethereal constructible universal tristate euterpe depressor tight capillary siena billboard congeal From heller at common-lisp.net Wed Apr 21 18:55:24 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 14:55:24 -0400 Subject: [slime-cvs] CVS update: slime/nregex.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv5996 Added Files: nregex.lisp Log Message: imported Date: Wed Apr 21 14:55:24 2004 Author: heller From heller at common-lisp.net Wed Apr 21 18:56:43 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 14:56:43 -0400 Subject: [slime-cvs] CVS update: slime/slime.el slime/swank.lisp slime/swank-loader.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11471 Modified Files: slime.el swank.lisp swank-loader.lisp Log Message: Support for regexp based apropos. From Edi Weitz. Date: Wed Apr 21 14:56:43 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.266 slime/slime.el:1.267 --- slime/slime.el:1.266 Tue Apr 20 18:38:39 2004 +++ slime/slime.el Wed Apr 21 14:56:42 2004 @@ -4031,24 +4031,33 @@ (error "No symbol given")) (slime-eval-describe `(swank:describe-function ,symbol-name))) -(defun slime-apropos (string &optional only-external-p package) +(defun slime-apropos-summary (case-sensitive-p package only-external-p) + "Return a short description for the performed apropos search." + (concat (if case-sensitive-p "Case-sensitive " "") + "Apropos for " + (format "%S" string) + (if package (format " in package %S" package) "") + (if only-external-p " (external symbols only)" ""))) + +(defun slime-apropos (string &optional only-external-p package + case-sensitive-p) (interactive (if current-prefix-arg (list (read-string "SLIME Apropos: ") (y-or-n-p "External symbols only? ") (let ((pkg (slime-read-package-name "Package: "))) - (if (string= pkg "") nil pkg))) - (list (read-string "SLIME Apropos: ") t nil))) + (if (string= pkg "") nil pkg)) + (y-or-n-p "Case-sensitive? ")) + (list (read-string "SLIME Apropos: ") t nil nil))) (let ((buffer-package (or package (slime-buffer-package t)))) (slime-eval-async - `(swank:apropos-list-for-emacs ,string ,only-external-p ,package) + `(swank:apropos-list-for-emacs ,string ,only-external-p + ,case-sensitive-p ,package) buffer-package (lexical-let ((string string) (package (or package buffer-package)) - (summary (concat "Apropos for " - (format "%S" string) - (if package (format " in package %S" package) "") - (if only-external-p " (external symbols only)" "")))) + (summary (slime-apropos-summary case-sensitive-p package + only-external-p))) (lambda (r) (slime-show-apropos r string package summary)))))) (defun slime-apropos-all () Index: slime/swank.lisp diff -u slime/swank.lisp:1.168 slime/swank.lisp:1.169 --- slime/swank.lisp:1.168 Tue Apr 20 18:32:05 2004 +++ slime/swank.lisp Wed Apr 21 14:56:42 2004 @@ -1639,7 +1639,8 @@ ;;;; Documentation -(defslimefun apropos-list-for-emacs (name &optional external-only package) +(defslimefun apropos-list-for-emacs (name &optional external-only + case-sensitive package) "Make an apropos search for Emacs. The result is a list of property lists." (let ((package (if package @@ -1647,7 +1648,7 @@ (error "No such package: ~S" package))))) (mapcan (listify #'briefly-describe-symbol-for-emacs) (sort (remove-duplicates - (apropos-symbols name external-only package)) + (apropos-symbols name external-only case-sensitive package)) #'present-symbol-before-p)))) (defun briefly-describe-symbol-for-emacs (symbol) @@ -1693,12 +1694,33 @@ (string< (package-name (symbol-package a)) (package-name (symbol-package b))))))) -(defun apropos-symbols (string external-only package) - (remove-if (lambda (sym) - (or (keywordp sym) - (and external-only (not (symbol-external-p sym))) - (and package (not (eq (symbol-package sym) package))))) - (apropos-list string package))) +(let ((regex-hash (make-hash-table :test #'equal))) + (defun compiled-regex (regex-string) + (or (gethash regex-string regex-hash) + (setf (gethash regex-string regex-hash) + (compile nil (nregex:regex-compile regex-string)))))) + +(defun apropos-matcher (string case-sensitive package external-only) + (let* ((case-modifier (if case-sensitive #'string #'string-upcase)) + (regex (compiled-regex (funcall case-modifier string)))) + (lambda (symbol) + (and (not (keywordp symbol)) + (if package (eq (symbol-package symbol) package) t) + (if external-only (symbol-external-p symbol) t) + (funcall regex (funcall case-modifier symbol)))))) + +(defun apropos-symbols (string external-only case-sensitive package) + (let ((result '()) + (matchp (apropos-matcher string case-sensitive package external-only))) + (with-package-iterator (next (or package (list-all-packages)) + :external :internal) + (loop + (multiple-value-bind (morep symbol) (next) + (cond ((not morep) + (return)) + ((funcall matchp symbol) + (push symbol result)))))) + result)) (defun describe-to-string (object) (with-output-to-string (*standard-output*) Index: slime/swank-loader.lisp diff -u slime/swank-loader.lisp:1.20 slime/swank-loader.lisp:1.21 --- slime/swank-loader.lisp:1.20 Fri Mar 19 16:07:35 2004 +++ slime/swank-loader.lisp Wed Apr 21 14:56:42 2004 @@ -29,13 +29,15 @@ (defparameter *sysdep-pathnames* (mapcar #'make-swank-pathname - #+cmu '("swank-source-path-parser" "swank-cmucl") - #+sbcl '("swank-sbcl" "swank-source-path-parser" "swank-gray") - #+openmcl '("swank-openmcl" "swank-gray") - #+lispworks '("swank-lispworks" "swank-gray") - #+allegro '("swank-allegro" "swank-gray") - #+clisp '("xref" "metering" "swank-clisp" "swank-gray") - )) + (append + '("nregex") + #+cmu '("swank-source-path-parser" "swank-cmucl") + #+sbcl '("swank-sbcl" "swank-source-path-parser" "swank-gray") + #+openmcl '("swank-openmcl" "swank-gray") + #+lispworks '("swank-lispworks" "swank-gray") + #+allegro '("swank-allegro" "swank-gray") + #+clisp '("xref" "metering" "swank-clisp" "swank-gray") + ))) (defparameter *lisp-name* #+cmu "cmu" @@ -43,7 +45,8 @@ #+openmcl "openmcl" #+lispworks "lispworks" #+allegro "allegro" - #+clisp "clisp") + #+clisp "clisp" + ) (defparameter *swank-pathname* (make-swank-pathname "swank")) From heller at common-lisp.net Wed Apr 21 19:46:41 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 15:46:41 -0400 Subject: [slime-cvs] CVS update: slime/swank-cmucl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13024 Modified Files: swank-cmucl.lisp Log Message: (arglist): Return a list instead of the string. Date: Wed Apr 21 15:46:41 2004 Author: heller Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.96 slime/swank-cmucl.lisp:1.97 --- slime/swank-cmucl.lisp:1.96 Tue Apr 20 18:29:43 2004 +++ slime/swank-cmucl.lisp Wed Apr 21 15:46:40 2004 @@ -961,6 +961,18 @@ (values (debug-function-arglist (di::function-debug-function fn)) (kernel:%function-arglist (kernel:%function-self fn))))) +(defun read-arglist (fn) + "Parse the arglist-string of the function object FN." + (let ((string (kernel:%function-arglist + (kernel:%function-self fn))) + (package (find-package + (c::compiled-debug-info-package + (kernel:%code-debug-info + (vm::find-code-object fn)))))) + (with-standard-io-syntax + (let ((*package* (or package *package*))) + (read-from-string string))))) + (defimplementation arglist (symbol) (let* ((fun (or (macro-function symbol) (symbol-function symbol))) @@ -969,7 +981,8 @@ (eval:interpreted-function-arglist fun)) ((pcl::generic-function-p fun) (pcl:generic-function-lambda-list fun)) - ((kernel:%function-arglist (kernel:%function-self fun))) + ((kernel:%function-arglist (kernel:%function-self fun)) + (read-arglist fun)) ;; this should work both for ;; compiled-debug-function and for ;; interpreted-debug-function From heller at common-lisp.net Wed Apr 21 19:49:03 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 15:49:03 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv21920 Modified Files: slime.el Log Message: Suppress byte-compiler warnings by binding byte-compiler-warnings to nil. Date: Wed Apr 21 15:49:02 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.267 slime/slime.el:1.268 --- slime/slime.el:1.267 Wed Apr 21 14:56:42 2004 +++ slime/slime.el Wed Apr 21 15:49:02 2004 @@ -6567,7 +6567,7 @@ ;;; Finishing up -(save-window-excursion +(let ((byte-compile-warnings '())) (mapc #'byte-compile '(slime-log-event slime-events-buffer From heller at common-lisp.net Wed Apr 21 19:59:23 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 15:59:23 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv18112 Modified Files: slime.el Log Message: Require 'bytecomp. Date: Wed Apr 21 15:59:23 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.268 slime/slime.el:1.269 --- slime/slime.el:1.268 Wed Apr 21 15:49:02 2004 +++ slime/slime.el Wed Apr 21 15:59:22 2004 @@ -6567,6 +6567,7 @@ ;;; Finishing up +(require 'bytecomp) (let ((byte-compile-warnings '())) (mapc #'byte-compile '(slime-log-event From heller at common-lisp.net Wed Apr 21 21:50:49 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 17:50:49 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29178 Modified Files: slime.el Log Message: (slime-repl-shortcut): Use a structure instead of a list for the short cut info. Update the users accordingly. (slime-insert-arglist): New command - stolen from ILISP. I always thought this was quite useful. (slime-oos): Fix typo. Date: Wed Apr 21 17:50:49 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.269 slime/slime.el:1.270 --- slime/slime.el:1.269 Wed Apr 21 15:59:22 2004 +++ slime/slime.el Wed Apr 21 17:50:48 2004 @@ -463,6 +463,7 @@ ("\M-g" slime-quit :prefixed t :inferior t :sldb t) ;; Documentation (" " slime-space :inferior t) + ("\C-s" slime-insert-arglist :prefixed t :inferior t) ("\C-d" slime-describe-symbol :prefixed t :inferior t :sldb t) ("\C-f" slime-describe-function :prefixed t :inferior t :sldb t) ("\M-d" slime-disassemble-symbol :prefixed t :inferior t :sldb t) @@ -1172,13 +1173,14 @@ (defun slime-check-protocol-version (lisp-version) "Signal an error unless LISP-VERSION is equal to `slime-changelog-date'." - (unless (and lisp-version (equal lisp-version slime-changelog-date)) + (unless (or (and lisp-version (equal lisp-version slime-changelog-date))) + (message "Disconnecting ...") (slime-disconnect) (let ((message (format "Protocol mismatch: Lisp: %s ELisp: %s" lisp-version slime-changelog-date))) (message "%s" message) - (ding) (sleep-for 2) + (ding 2) (error "%s" message)))) (defun slime-disconnect () @@ -2514,7 +2516,8 @@ (save-some-buffers) (slime-display-output-buffer) (message "Performing ASDF %S%s on system %S" - system-name (if keyword-args (format " %S" keyword-args) "") operation) + operation (if keyword-args (format " %S" keyword-args) "") + system-name) (slime-eval-async `(swank:operate-on-system-for-emacs ,system-name ,operation , at keyword-args) nil @@ -3252,6 +3255,13 @@ (lambda (arglist) (message "%s" arglist)))) +(defun slime-insert-arglist (name) + "Insert the argument list for NAME behind the symbol point is +currently looking at." + (interactive (list (slime-read-symbol-name "Arglist of: "))) + (insert (slime-eval `(swank:arglist-for-echo-area (quote (,name)) t) + (slime-buffer-package)))) + (defun slime-get-arglist (symbol-name) "Return the argument list for SYMBOL-NAME." (slime-eval `(swank:arglist-for-echo-area (quote (,symbol-name))))) @@ -5760,35 +5770,35 @@ ;;;; REPL handlers -(defvar slime-repl-shortcut-table nil) +(defstruct (slime-repl-shortcut (:conc-name slime-repl-shortcut.)) + symbol names handler one-liner) + +(defvar slime-repl-shortcut-table nil + "A list of slime-repl-shortcuts") (defun slime-handle-repl-shortcut () (interactive) (if (save-excursion (goto-char slime-repl-input-start-mark) (looking-at " *$")) - (let ((command-spec (slime-lookup-shortcut - (completing-read "Command: " - (slime-bogus-completion-alist - (slime-list-all-repl-shortcuts)) - nil - t - nil - 'slime-repl-shortcut-history)))) - (call-interactively (cdr (assoc :handler command-spec)))) + (let ((shortcut (slime-lookup-shortcut + (completing-read "Command: " + (slime-bogus-completion-alist + (slime-list-all-repl-shortcuts)) + nil + t + nil + 'slime-repl-shortcut-history)))) + (call-interactively (slime-repl-shortcut.handler shortcut))) (insert (string slime-repl-shortcut-dispatch-char)))) (defun slime-list-all-repl-shortcuts () - (loop - for shortcut-spec in slime-repl-shortcut-table - append (car shortcut-spec))) + (loop for shortcut in slime-repl-shortcut-table + append (slime-repl-shortcut.names shortcut))) (defun slime-lookup-shortcut (name) - (block lookup - (loop for shortcut-spec in slime-repl-shortcut-table - when (member name (car shortcut-spec)) - do (return-from lookup shortcut-spec)) - (return-from lookup nil))) + (find-if (lambda (s) (member name (slime-repl-shortcut.names s))) + slime-repl-shortcut-table)) (defmacro defslime-repl-shortcut (elisp-name names &rest options) "Define a new repl shortcut. ELISP-NAME is a symbol specifying @@ -5801,49 +5811,56 @@ `(defun ,elisp-name () (interactive) (call-interactively ,(second (assoc :handler options))))) - (let ((new-spec (list (list , at names) - ,@(loop - for op in options - collect (case (car op) - (:handler `(cons :handler ,(second op))) - (:one-liner `(cons :one-liner ,(second op))) - (t (error "Unknown repl shortcut option: %s" (car op))))))) - (existing-spec (slime-lookup-shortcut ,(car names)))) - (if existing-spec - ;; replace an existing spec "in place" - (setf (car existing-spec) (car new-spec) - (cdr existing-spec) (cdr new-spec)) - ;; need to create a new spec - (push new-spec slime-repl-shortcut-table))) - ',elisp-name)) - + (let ((new-shortcut (make-slime-repl-shortcut + :symbol ',elisp-name + :names (list , at names) + ,@(apply #'append options)))) + (setq slime-repl-shortcut-table + (remove-if (lambda (s) + (member ',(car names) (slime-repl-shortcut.names s))) + slime-repl-shortcut-table)) + (push new-shortcut slime-repl-shortcut-table) + ',elisp-name))) + +(defun slime-list-repl-short-cuts () + (interactive) + (slime-with-output-to-temp-buffer "*slime-repl-help*" + (let ((table (sort* slime-repl-shortcut-table #'string< + :key (lambda (x) + (car (slime-repl-shortcut.names x)))))) + (dolist (shortcut table) + (let ((names (slime-repl-shortcut.names shortcut))) + (insert (pop names)) ;; first print the "full" name + (when names + ;; we also have aliases + (insert " (aka ") + (while (cdr names) + (insert (pop names) ", ")) + (insert (car names) ")")) + (insert "\n " (slime-repl-shortcut.one-liner shortcut) + "\n")))))) + (defslime-repl-shortcut slime-repl-shortcut-help ("help" "?") - (:handler (lambda () - (interactive) - (slime-with-output-to-temp-buffer "*slime-repl-help*" - (dolist (repl-shortcut (sort slime-repl-shortcut-table (lambda (a b) - (string< (caar a) (caar b))))) - (insert (caar repl-shortcut)) ;; first print the "full" name - (when (cdr (car repl-shortcut)) - ;; we also have aliases - (insert " (aka ") - (dolist (alias (butlast (cdr (car repl-shortcut)))) - (insert alias ", ")) - (insert (car (last (cdr (car repl-shortcut)))) ")")) - (insert "\n " (cdr (assoc :one-liner (cdr repl-shortcut))) "\n"))))) + (:handler 'slime-list-repl-short-cuts) (:one-liner "Display the help.")) -(defslime-repl-shortcut nil ("change-directory" "!d") +(defslime-repl-shortcut nil ("change-directory" "!d" "cd") (:handler 'slime-set-default-directory) (:one-liner "Change the current directory.")) -(defslime-repl-shortcut slime-repl-push-directory ("push-directory" "+d") +;;; XXX move more of this to lisp +(defslime-repl-shortcut slime-repl-push-directory ("push-directory" "+d" + "pushd") (:handler (lambda (directory) - (interactive (list (expand-file-name (read-directory-name "Push directory: " - (slime-eval '(cl:namestring - (cl:truename - cl:*default-pathname-defaults*))) - nil nil "")))) + (interactive + (list + (expand-file-name + (read-directory-name + "Push directory: " + (slime-eval '(cl:namestring + (cl:truename + cl:*default-pathname-defaults*))) + nil nil "")))) (push directory slime-repl-directory-stack) (slime-set-default-directory directory))) (:one-liner "Push a new directory onto the directory stack.")) @@ -5886,7 +5903,7 @@ (defslime-repl-shortcut slime-repl-sayoonara ("sayoonara") (:handler (lambda () (interactive) - (slime-eval-async '(swank-backend:quit-lisp) "SWANK-BACKEND" (lambda (_) nil)) + (slime-eval-async '(swank:quit-lisp) nil (lambda (_) nil)) (slime-kill-all-buffers))) (:one-liner "Quit the lisp and close all SLIME buffers.")) @@ -5894,15 +5911,18 @@ (:handler (lambda (name value) (interactive (list (slime-read-symbol-name "Name (symbol): " t) (slime-read-from-minibuffer "Value: " "nil"))) - (insert "(cl:defparameter " name " " value " \"REPL generated global variable.\")") + (insert "(cl:defparameter " name " " value + " \"REPL generated global variable.\")") (slime-repl-send-input))) (:one-liner "Define a new global, special, variable.")) +;;; XXX move more of this to lisp (defslime-repl-shortcut slime-repl-compile-and-load ("compile-and-load") (:handler (lambda (file-name) (interactive (list (expand-file-name - (read-file-name "File: " nil nil nil nil + (read-file-name "File: " + nil nil nil nil (lambda (filename) (string-match ".*\\.\\(lisp\\|cl\\)$" filename)))))) (lexical-let ((lisp-file-name (slime-to-lisp-filename file.lisp))) @@ -5946,7 +5966,9 @@ (slime-oos (slime-read-system-name) "COMPILE-OP"))) (:one-liner "Compile (but not load) an ASDF system.")) -(defslime-repl-shortcut slime-repl-compile/force-system ("force-compile-system") (:handler (lambda () +(defslime-repl-shortcut slime-repl-compile/force-system + ("force-compile-system") + (:handler (lambda () (interactive) (slime-oos (slime-read-system-name) "COMPILE-OP" :force t))) (:one-liner "Recompile (but not load) an ASDF system.")) @@ -6534,8 +6556,12 @@ (unless default-dirname (setq default-dirname (if initial (concat dir initial) default-directory))) - (read-file-name prompt dir default-dirname mustmatch initial - 'file-directory-p)) + (let ((file (read-file-name prompt dir default-dirname mustmatch initial))) + (setq file (expand-file-name file)) + (cond ((file-directory-p file) + file) + (t + (error "Not a directory: %s" file))))) (unless (boundp 'temporary-file-directory) (defvar temporary-file-directory From heller at common-lisp.net Wed Apr 21 21:51:23 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 17:51:23 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30272 Modified Files: swank.lisp Log Message: (arglist-for-echo-area): New argument to control if the operator name should be included. Date: Wed Apr 21 17:51:23 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.169 slime/swank.lisp:1.170 --- slime/swank.lisp:1.169 Wed Apr 21 14:56:42 2004 +++ slime/swank.lisp Wed Apr 21 17:51:23 2004 @@ -29,6 +29,7 @@ #:unprofile-all #:profile-package #:set-default-directory + #:quit-lisp )) (in-package :swank) @@ -779,7 +780,7 @@ (cond (package (values symbol package)) (t (error "Unknown symbol: ~S [in ~A]" string default-package))))) -(defslimefun arglist-for-echo-area (names) +(defslimefun arglist-for-echo-area (names &optional without-name) "Return the arglist for the first function, macro, or special-op in NAMES." (multiple-value-bind (symbol name) (loop for name in names @@ -788,14 +789,16 @@ (macro-function symbol) (special-operator-p symbol)) return (values symbol name)) - (cond (symbol (format-arglist-for-echo-area symbol name)) + (cond (symbol (format-arglist-for-echo-area symbol name without-name)) (t "")))) -(defun format-arglist-for-echo-area (symbol name) +(defun format-arglist-for-echo-area (symbol name without-name) (multiple-value-bind (arglist c) (ignore-errors (values (arglist symbol))) - (cond (c (format nil "(~A -- )" symbol)) + (cond ((and c without-name) " )") + (c (format nil "(~A -- )" symbol)) (t (let ((string (arglist-to-string arglist))) - (format nil "(~A~A~A)" + (format nil "~:[(~A~;~*~]~A~A)" + without-name name (if (= (length string) 2) "" " ") (subseq string 1 (1- (length string))))))))) From heller at common-lisp.net Wed Apr 21 21:51:50 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 17:51:50 -0400 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-serv908 Modified Files: slime.texi Log Message: Description for slime-insert-arglist. Date: Wed Apr 21 17:51:50 2004 Author: heller Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.10 slime/doc/slime.texi:1.11 --- slime/doc/slime.texi:1.10 Tue Apr 20 18:42:05 2004 +++ slime/doc/slime.texi Wed Apr 21 17:51:50 2004 @@ -46,7 +46,7 @@ @end macro @set EDITION DRAFT - at set UPDATED @code{$Id: slime.texi,v 1.10 2004/04/20 22:42:05 heller Exp $} + at set UPDATED @code{$Id: slime.texi,v 1.11 2004/04/21 21:51:50 heller Exp $} @titlepage @title SLIME User Manual @@ -552,6 +552,10 @@ @kbditem{SPC, slime-space} The space key inserts a space and also looks up and displays the argument list for the function at point, if there is one. + + at kbditem{C-c C-s, slime-insert-arglist} +Looks up and inserts into the current buffer the argument list for the +function at point, if there is one. @kbditem{C-c C-m, slime-macroexpand-1} Macroexpand the expression at point once. From heller at common-lisp.net Wed Apr 21 21:52:18 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 17:52:18 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv1856 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Wed Apr 21 17:52:18 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.341 slime/ChangeLog:1.342 --- slime/ChangeLog:1.341 Tue Apr 20 18:38:59 2004 +++ slime/ChangeLog Wed Apr 21 17:52:18 2004 @@ -1,3 +1,36 @@ +2004-04-21 Helmut Eller + + * slime.el: Suppress byte-compiler warnings by binding + byte-compiler-warnings to nil. + (slime-repl-shortcut): Use a structure instead of a list for the + short cut info. Update the users accordingly. + + * swank-cmucl.lisp (arglist): Return a list instead of the string. + +2004-04-21 Edi Weitz + + * slime.el (slime-apropos): Add support for regexp-based apropos. + We use nregex, so the regexp syntax is different from Emacs' + regexps and bit restricted (alternation '|' and optional groups + '(xy)?' are not implemented). + (slime-insert-arglist): New command - stolen from ILISP. I always + thought this was quite useful. + (slime-oos): Fix typo. + + * swank.lisp (apropos-symbols): Use regexp and support + case-sensitive matching. + (arglist-for-echo-area): New argument to control if the operator + name should be included. + + * nregex.lisp: New file. + + * swank-loader.lisp (*sysdep-pathnames*): Load it. + +2004-04-21 Helmut Eller + + * doc/slime.texi (Compilation): slime-remove-notes is bound to C-c + M-c not M-c. Noted by Edi Weitz. + 2004-04-21 Edi Weitz * swank.lisp (list-all-package-names): Optionally include From heller at common-lisp.net Wed Apr 21 22:58:35 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 18:58:35 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv15733 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Wed Apr 21 18:58:34 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.342 slime/ChangeLog:1.343 --- slime/ChangeLog:1.342 Wed Apr 21 17:52:18 2004 +++ slime/ChangeLog Wed Apr 21 18:58:34 2004 @@ -1,3 +1,9 @@ +2004-04-22 Tiago Maduro-Dias + + * slime.el (slime-space): Cleanup. + (slime-complete-restore-window-configuration): Use + slime-close-buffer instead of bury-buffer. + 2004-04-21 Helmut Eller * slime.el: Suppress byte-compiler warnings by binding From heller at common-lisp.net Wed Apr 21 22:59:04 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 21 Apr 2004 18:59:04 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv16664 Modified Files: slime.el Log Message: (slime-space): Cleanup. (slime-complete-restore-window-configuration): Use slime-close-buffer instead of bury-buffer. Date: Wed Apr 21 18:59:04 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.270 slime/slime.el:1.271 --- slime/slime.el:1.270 Wed Apr 21 17:50:48 2004 +++ slime/slime.el Wed Apr 21 18:59:04 2004 @@ -3232,7 +3232,7 @@ more than one space." (interactive "p") (self-insert-command n) - (slime-close-buffer "*Completions*") + (slime-close-buffer slime-completions-buffer-name) (when (and (slime-connected-p) (or (not (slime-busy-p)) ;; XXX should we enable this? @@ -3460,8 +3460,7 @@ (save-excursion (set-window-configuration slime-complete-saved-window-configuration)) (setq slime-complete-saved-window-configuration nil)) - (when (get-buffer slime-completions-buffer-name) - (bury-buffer slime-completions-buffer-name))) + (slime-close-buffer slime-completions-buffer-name)) (defun slime-complete-maybe-restore-window-confguration () "Restore the window configuration, if the following command From iyfhamu at havremt.net Thu Apr 22 03:26:42 2004 From: iyfhamu at havremt.net (Raymond Maynard) Date: Thu, 22 Apr 2004 00:26:42 -0300 Subject: [slime-cvs] Fwd: Get Your Prescription Drugs now online! With No Prescription. Discreet. Secure. Message-ID: An HTML attachment was scrubbed... URL: From news at cnn.com Thu Apr 22 13:49:06 2004 From: news at cnn.com (Jackie Skinner) Date: Thu, 22 Apr 2004 18:49:06 +0500 Subject: [slime-cvs] Osama Bin Laden Captured. Message-ID: An HTML attachment was scrubbed... URL: From llbudp at yahoo.com Thu Apr 22 18:28:29 2004 From: llbudp at yahoo.com (Pat Harrington) Date: Thu, 22 Apr 2004 11:28:29 -0700 Subject: [slime-cvs] don't miss out on that great job - get your university degree now! Message-ID: An HTML attachment was scrubbed... URL: From LJWHEH at yahoo.com Thu Apr 22 18:48:33 2004 From: LJWHEH at yahoo.com (Preston Napier) Date: Thu, 22 Apr 2004 13:48:33 -0500 Subject: [slime-cvs] Fw: it doesn't get any better.. Message-ID: An HTML attachment was scrubbed... URL: From heller at common-lisp.net Thu Apr 22 20:11:43 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 22 Apr 2004 16:11:43 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv23217 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Thu Apr 22 16:11:42 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.343 slime/ChangeLog:1.344 --- slime/ChangeLog:1.343 Wed Apr 21 18:58:34 2004 +++ slime/ChangeLog Thu Apr 22 16:11:42 2004 @@ -1,3 +1,10 @@ +2004-04-22 Helmut Eller + + * slime.el (slime-repl-update-banner): Add workaround to force the + proper behaivior of the the first command in the REPL buffer. + (slime-repl-shortcut-history): Define the variable to make XEmacs + happy. + 2004-04-22 Tiago Maduro-Dias * slime.el (slime-space): Cleanup. From heller at common-lisp.net Thu Apr 22 20:12:24 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 22 Apr 2004 16:12:24 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv24591 Modified Files: slime.el Log Message: (slime-repl-update-banner): Add workaround to force the proper behavior of the the first command in the REPL buffer. (slime-repl-shortcut-history): Define the variable to make XEmacs happy. Date: Thu Apr 22 16:12:24 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.271 slime/slime.el:1.272 --- slime/slime.el:1.271 Wed Apr 21 18:59:04 2004 +++ slime/slime.el Thu Apr 22 16:12:23 2004 @@ -1808,7 +1808,7 @@ (slime-lisp-implementation-type) (if (featurep 'xemacs) (process-id (slime-connection)) - (process-contact (slime-connection))) + (process-contact (slime-connection))) (slime-pid) (expand-file-name default-directory)))) ;; Emacs21 has the fancy persistent header-line. @@ -1823,13 +1823,22 @@ (slime-repl-insert-prompt "")) (t (slime-repl-insert-prompt (concat "; " banner)) - (pop-to-buffer (current-buffer)))))) + (pop-to-buffer (current-buffer)))) + ;; We are called from a timer function and for unkown reasons the + ;; first command after executing the timer function is looked up + ;; in the buffer in which the timer was started and not in the + ;; then current buffer. Add a dummy event as workaround. -- he + (unless (featurep 'xemacs) + (setq unread-command-events + (append (listify-key-sequence "\C-l") + unread-command-events))))) (defun slime-init-output-buffer (connection) (with-current-buffer (slime-output-buffer t) (set (make-local-variable 'slime-buffer-connection) connection) ;; set the directory stack - (setq slime-repl-directory-stack (list (expand-file-name default-directory))) + (setq slime-repl-directory-stack + (list (expand-file-name default-directory))) (slime-repl-update-banner))) (defvar slime-show-last-output-function @@ -5775,6 +5784,9 @@ (defvar slime-repl-shortcut-table nil "A list of slime-repl-shortcuts") +(defvar slime-repl-shortcut-history '() + "History list of shortcut command names.") + (defun slime-handle-repl-shortcut () (interactive) (if (save-excursion @@ -5784,9 +5796,7 @@ (completing-read "Command: " (slime-bogus-completion-alist (slime-list-all-repl-shortcuts)) - nil - t - nil + nil t nil 'slime-repl-shortcut-history)))) (call-interactively (slime-repl-shortcut.handler shortcut))) (insert (string slime-repl-shortcut-dispatch-char)))) From heller at common-lisp.net Thu Apr 22 21:37:51 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 22 Apr 2004 17:37:51 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv16512 Modified Files: swank.lisp Log Message: (list-all-systems-in-central-registry, asdf-central-registry): New functions. Date: Thu Apr 22 17:37:51 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.170 slime/swank.lisp:1.171 --- slime/swank.lisp:1.170 Wed Apr 21 17:51:23 2004 +++ slime/swank.lisp Thu Apr 22 17:37:50 2004 @@ -1258,9 +1258,25 @@ (defslimefun operate-on-system-for-emacs (system-name operation &rest keywords) "Compile and load SYSTEM using ASDF. Record compiler notes signalled as `compiler-condition's." - (swank-compiler (lambda () - (apply #'operate-on-system system-name operation keywords)))) + (swank-compiler + (lambda () + (apply #'operate-on-system system-name operation keywords)))) +(defun asdf-central-registry () + (when (find-package :asdf) + (symbol-value (find-symbol (string :*central-registry*) :asdf)))) + +(defslimefun list-all-systems-in-central-registry () + "Returns a list of all systems in ASDF's central registry." + (loop for dir in (asdf-central-registry) + for defaults = (eval dir) + when defaults + nconc (mapcar #'file-namestring + (directory + (make-pathname :defaults defaults + :version :newest + :type "asd" + :case :local))))) ;;;; Macroexpansion From heller at common-lisp.net Thu Apr 22 21:40:06 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 22 Apr 2004 17:40:06 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4683 Modified Files: slime.el Log Message: (slime-repl-update-banner): Find the event sequence for 'recenter' instead for C-l. (slime-read-system-name): Perform completion on all known asd filenames. Date: Thu Apr 22 17:40:05 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.272 slime/slime.el:1.273 --- slime/slime.el:1.272 Thu Apr 22 16:12:23 2004 +++ slime/slime.el Thu Apr 22 17:40:03 2004 @@ -1830,7 +1830,9 @@ ;; then current buffer. Add a dummy event as workaround. -- he (unless (featurep 'xemacs) (setq unread-command-events - (append (listify-key-sequence "\C-l") + (append (listify-key-sequence + (car (where-is-internal 'recenter + overriding-local-map nil nil))) unread-command-events))))) (defun slime-init-output-buffer (connection) @@ -2501,13 +2503,12 @@ (message "Compiling %s.." lisp-filename))) (defun slime-find-asd () - (if (buffer-file-name) - (let ((asdf-systems-in-directory (directory-files - (file-name-directory (buffer-file-name)) nil "\.asd$"))) - (if asdf-systems-in-directory - (file-name-sans-extension (car asdf-systems-in-directory)) - "")) - "")) + (let ((asdf-systems-in-directory + (directory-files (file-name-directory (or default-directory + (buffer-file-name))) + nil "\.asd$"))) + (and asdf-systems-in-directory + (file-name-sans-extension (car asdf-systems-in-directory))))) (defun slime-load-system (&optional system-name) "Compile and load an ASDF system. @@ -2517,9 +2518,16 @@ (interactive (list (slime-read-system-name))) (slime-oos system-name "LOAD-OP")) -(defun slime-read-system-name () - (let ((d (slime-find-asd))) - (read-string (format "System: [%s] " d) nil nil d))) +(defun slime-read-system-name (&optional prompt initial-value) + "Read a system name from the minibuffer, prompting with PROMPT." + (setq prompt (or prompt "System: ")) + (let ((completion-ignore-case nil) + (alist (slime-bogus-completion-alist + (mapcar #'file-name-sans-extension + (slime-eval + `(swank:list-all-systems-in-central-registry)))))) + (completing-read prompt alist nil nil + (or initial-value (slime-find-asd) "")))) (defun slime-oos (system-name operation &rest keyword-args) (save-some-buffers) From heller at common-lisp.net Thu Apr 22 21:43:35 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 22 Apr 2004 17:43:35 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17056 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Thu Apr 22 17:43:34 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.344 slime/ChangeLog:1.345 --- slime/ChangeLog:1.344 Thu Apr 22 16:11:42 2004 +++ slime/ChangeLog Thu Apr 22 17:43:34 2004 @@ -1,10 +1,17 @@ +2004-04-22 Edi Weitz + + * slime.el (slime-read-system-name): Perform completion on all + systems in the central registry. + + * swank.lisp (list-all-systems-in-central-registry): New function. + 2004-04-22 Helmut Eller * slime.el (slime-repl-update-banner): Add workaround to force the - proper behaivior of the the first command in the REPL buffer. + proper behavior of the the first command in the REPL buffer. (slime-repl-shortcut-history): Define the variable to make XEmacs happy. - + 2004-04-22 Tiago Maduro-Dias * slime.el (slime-space): Cleanup. From jeghz at msn.com Fri Apr 23 00:42:23 2004 From: jeghz at msn.com (Earle Elliot) Date: Thu, 22 Apr 2004 22:42:23 -0200 Subject: [slime-cvs] Fw: shed while you sleeep.. Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Fri Apr 23 10:07:42 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 23 Apr 2004 06:07:42 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv8926 Modified Files: slime.el Log Message: Updated top comments. Make SLIME faces inherit from their font-lock cousins properly. (slime-connect): Bind `slime-dispatching-connection' to avoid being confused by old buffer-local variables when initializing the connection. This fixes a bug where doing `M-x slime' from the REPL could give a "Not connected" error. Date: Fri Apr 23 06:07:41 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.273 slime/slime.el:1.274 --- slime/slime.el:1.273 Thu Apr 22 17:40:03 2004 +++ slime/slime.el Fri Apr 23 06:07:40 2004 @@ -2,6 +2,7 @@ ;; slime.el -- Superior Lisp Interaction Mode for Emacs ;;; License ;; Copyright (C) 2003 Eric Marsden, Luke Gorrie, Helmut Eller +;; Copyright (C) 2004 Luke Gorrie, Helmut Eller ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as @@ -21,33 +22,29 @@ ;;; Commentary -;; This minor mode extends Lisp-Mode with CMUCL-specific features. -;; The features can be summarised thusly: +;; This file contains extensions for programming in Common Lisp. The +;; main features are: ;; -;; Separate control channel for communication with CMUCL, similar to -;; Hemlock. This is used to implement other features, rather than -;; talking to the Lisp listener "in-band". +;; A socket-based communication/RPC interface between Emacs and +;; Lisp. ;; -;; Compiler notes and warnings are visually annotated in the source -;; buffer. Commands are provided for inspecting and navigating -;; between notes. +;; The `slime-mode' minor-mode complementing `lisp-mode'. This new +;; mode includes many commands for interacting with the Common Lisp +;; process. ;; -;; Comforts familiar from ILISP and Emacs Lisp: completion of -;; symbols, automatic display of arglists in function calls, -;; TAGS-like definition finding, Lisp evaluation, online -;; documentation, etc. +;; Common Lisp REPL (Read-Eval-Print Loop) written in Emacs Lisp, +;; similar to `ielm'. ;; -;; Common Lisp debugger interface. +;; Common Lisp debugger written in Emacs Lisp. The debugger pops up +;; an Emacs buffer similar to the Emacs/Elisp debugger. ;; -;; The goal is to make Emacs support CMU Common Lisp as well as it -;; supports Emacs Lisp. The strategy is to take maximum advantage of -;; all CMUCL features and hooks, portability be damned to hades. +;; Trapping compiler messages and creating annotations in the source +;; file on the appropriate forms. ;; -;; Compatibility with other Common Lisps is not an immediate -;; goal. SBCL support would be highly desirable in the future. -;; -;; SLIME is compatible with GNU Emacs 20 and 21, and XEmacs 21. -;; Development copies may have temporary have portability bugs. +;; SLIME is compatible with GNU Emacs 20 and 21 and XEmacs 21. In +;; order to run SLIME requires a supporting Lisp server called +;; Swank. Swank is distributed with slime.el and will automatically be +;; started in a normal installation. ;;; Dependencies, major global variables and constants @@ -131,11 +128,14 @@ :prefix "slime-" :group 'applications) -;; XEmacs wants underline to be a boolean. -(defun slime-underline-color (underline) - (cond ((featurep 'xemacs) (if underline t nil)) - (t underline))) - +(defun slime-underline-color (color) + "Return a legal value for the :underline face attribute based on COLOR." + ;; In XEmacs the :underline attribute can only be a boolean. + ;; In GNU it can be the name of a colour. + (if (featurep 'xemacs) + (if color t nil) + color)) + (defface slime-error-face `((((class color) (background light)) (:underline ,(slime-underline-color "red"))) @@ -173,27 +173,35 @@ :group 'slime) (defun slime-face-inheritance-possible-p () + "Return true if the :inherit face attribute is supported." (assq :inherit custom-face-attributes)) (defface slime-highlight-face - (cond ((slime-face-inheritance-possible-p) - '((t (:inherit highlight :underline nil)))) - (t - '((((class color) (background light)) - (:background "darkseagreen2")) - (((class color) (background dark)) - (:background "darkolivegreen")) - (t (:inverse-video t))))) + (if (slime-face-inheritance-possible-p) + '((t (:inherit highlight :underline nil))) + '((((class color) (background light)) + (:background "darkseagreen2")) + (((class color) (background dark)) + (:background "darkolivegreen")) + (t (:inverse-video t)))) "Face for compiler notes while selected." :group 'slime) (defface slime-repl-prompt-face - '((t (:inherit font-lock-keyword-face))) + (if (slime-face-inheritance-possible-p) + '((t (:inherit font-lock-keyword-face))) + '((((class color) (background light)) (:foreground "Purple")) + (((class color) (background dark)) (:foreground "Cyan")) + (t (:weight bold)))) "Face for the prompt in the SLIME REPL." :group 'slime) (defface slime-repl-output-face - '((t (:inherit font-lock-string-face))) + (if (slime-face-inheritance-possible-p) + '((t (:inherit font-lock-string-face))) + '((((class color) (background light)) (:foreground "RosyBrown")) + (((class color) (background dark)) (:foreground "LightSalmon")) + (t (:slant italic)))) "Face for Lisp output in the SLIME REPL." :group 'slime) @@ -1137,7 +1145,8 @@ (y-or-n-p "Close old connections first? ")))) (when kill-old-p (slime-disconnect)) (message "Connecting to Swank on port %S.." port) - (let ((process (slime-net-connect host port))) + (let* ((process (slime-net-connect host port)) + (slime-dispatching-connection process)) (slime-init-connection process) (when-let (buffer (get-buffer "*inferior-lisp*")) (delete-windows-on buffer) @@ -1837,7 +1846,7 @@ (defun slime-init-output-buffer (connection) (with-current-buffer (slime-output-buffer t) - (set (make-local-variable 'slime-buffer-connection) connection) + (setq slime-buffer-connection connection) ;; set the directory stack (setq slime-repl-directory-stack (list (expand-file-name default-directory))) From lgorrie at common-lisp.net Fri Apr 23 10:08:52 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 23 Apr 2004 06:08:52 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13569 Modified Files: ChangeLog Log Message: Date: Fri Apr 23 06:08:51 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.345 slime/ChangeLog:1.346 --- slime/ChangeLog:1.345 Thu Apr 22 17:43:34 2004 +++ slime/ChangeLog Fri Apr 23 06:08:51 2004 @@ -1,3 +1,12 @@ +2004-04-23 Luke Gorrie + + * slime.el: Updated top comments. + Make SLIME faces inherit from their font-lock cousins properly. + (slime-connect): Bind `slime-dispatching-connection' to avoid + being confused by old buffer-local variables when initializing + the connection. This fixes a bug where doing `M-x slime' from the + REPL could give a "Not connected" error. + 2004-04-22 Edi Weitz * slime.el (slime-read-system-name): Perform completion on all From QMXJPWZCJJXN at hotmail.com Fri Apr 23 11:09:18 2004 From: QMXJPWZCJJXN at hotmail.com (Thaddeus Oakes) Date: Fri, 23 Apr 2004 16:09:18 +0500 Subject: [slime-cvs] Buy Vicodin Online For Less Message-ID: An HTML attachment was scrubbed... URL: From cwqfkz at yahoo.com Fri Apr 23 12:55:52 2004 From: cwqfkz at yahoo.com (Conrad Barr) Date: Fri, 23 Apr 2004 10:55:52 -0200 Subject: [slime-cvs] FW: LooK and feel 20 years y0unger.. Message-ID: An HTML attachment was scrubbed... URL: From heller at common-lisp.net Fri Apr 23 22:09:12 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 23 Apr 2004 18:09:12 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv31854 Modified Files: slime.el Log Message: (slime-init-connection-state): Use an asynchronous RPC instead of slime-eval to reduce the amount of work we do in the timer function. So we can remove the workaround for the timer problem. (slime-connected-port): New function. Date: Fri Apr 23 18:09:12 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.274 slime/slime.el:1.275 --- slime/slime.el:1.274 Fri Apr 23 06:07:40 2004 +++ slime/slime.el Fri Apr 23 18:09:11 2004 @@ -1150,11 +1150,7 @@ (slime-init-connection process) (when-let (buffer (get-buffer "*inferior-lisp*")) (delete-windows-on buffer) - (bury-buffer buffer)) - (slime-init-output-buffer process) - (run-hooks 'slime-connected-hook) - (message "Connected on port %S. %s" - port (slime-random-words-of-encouragement)))) + (bury-buffer buffer)))) (defun slime-changelog-date () "Return the datestring of the latest entry in the ChangeLog file. @@ -1609,6 +1605,13 @@ :key #'slime-connection-name :test #'equal) finally (return name))) +(defun slime-connection-port (connection) + "Return the remote port number of CONNECTION." + (cond ((featurep 'xemacs) + (car (process-id connection))) + (t + (cadr (process-contact connection))))) + (defun slime-init-connection-state (proc) ;; To make life simpler for the user: if this is the only open ;; connection then reset the connection counter. @@ -1616,17 +1619,28 @@ (setq slime-connection-counter 0)) (slime-with-connection-buffer () (setq slime-connection-number (incf slime-connection-counter))) - (destructuring-bind (version pid type name features) - (slime-eval '(swank:connection-info)) + (with-lexical-bindings (proc) + (slime-eval-async '(swank:connection-info) nil + (lambda (info) + (slime-set-connection-info proc info))))) + +(defun slime-set-connection-info (connection info) + "Initialize CONNECTION with INFO received from Lisp." + (destructuring-bind (version pid type name features) info (slime-check-protocol-version version) (setf (slime-pid) pid (slime-lisp-implementation-type) type (slime-lisp-implementation-type-name) name (slime-connection-name) (slime-generate-connection-name name) (slime-lisp-features) features)) + (slime-init-output-buffer process) (setq slime-state-name "") (when slime-global-debugger-hook - (slime-eval '(swank:install-global-debugger-hook) "COMMON-LISP-USER"))) + (slime-eval '(swank:install-global-debugger-hook))) + (message "Connected on port %S. %s" + (slime-connection-port connection) + (slime-random-words-of-encouragement)) + (run-hooks 'slime-connected-hook)) (defun slime-busy-p () slime-rex-continuations) @@ -1832,17 +1846,7 @@ (slime-repl-insert-prompt "")) (t (slime-repl-insert-prompt (concat "; " banner)) - (pop-to-buffer (current-buffer)))) - ;; We are called from a timer function and for unkown reasons the - ;; first command after executing the timer function is looked up - ;; in the buffer in which the timer was started and not in the - ;; then current buffer. Add a dummy event as workaround. -- he - (unless (featurep 'xemacs) - (setq unread-command-events - (append (listify-key-sequence - (car (where-is-internal 'recenter - overriding-local-map nil nil))) - unread-command-events))))) + (pop-to-buffer (current-buffer)))))) (defun slime-init-output-buffer (connection) (with-current-buffer (slime-output-buffer t) From heller at common-lisp.net Fri Apr 23 22:13:09 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 23 Apr 2004 18:13:09 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9744 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Fri Apr 23 18:13:09 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.346 slime/ChangeLog:1.347 --- slime/ChangeLog:1.346 Fri Apr 23 06:08:51 2004 +++ slime/ChangeLog Fri Apr 23 18:13:08 2004 @@ -1,3 +1,10 @@ +2004-04-24 Helmut Eller + + * slime.el (slime-init-connection-state): Use an asynchronous RPC + instead of slime-eval to reduce the amount of work we do in the + timer function. We can remove the workaround for the timer + problem. + 2004-04-23 Luke Gorrie * slime.el: Updated top comments. From ennalroths at chinahtc.every1.net Sat Apr 24 08:48:19 2004 From: ennalroths at chinahtc.every1.net (Betty Kerr) Date: Sat, 24 Apr 2004 03:48:19 -0500 Subject: [slime-cvs] University Certificates, No Classes Needed, Sat, 24 Apr 2004 03:48:19 -0500 Message-ID: Sat, 24 Apr 2004 03:48:19 -0500 Academic-Qualifications from NON?ACCR. Universities. No exams. No classes. No books. Call to register and get yours in days - 1-203 286 2403. No more ads: elizslifer at poczta.onet.pl genotype grove madeleine animadvert wastage eater wept joystick midshipmen detain waterbury americium incalculable paramount thrust dramatic chariot longitudinal beet chat fateful vagabond larceny treason besetting certainty apace basal nosebag naval apostle cordon wherewithal araby astrology cruelty reptile age agglomerate howsomever jeffrey chummy From ECEMZM at hotmail.com Sat Apr 24 15:49:13 2004 From: ECEMZM at hotmail.com (Gena Crosby) Date: Sat, 24 Apr 2004 18:49:13 +0300 Subject: [slime-cvs] Fw: Sh0cking health revealati0ns.. Message-ID: An HTML attachment was scrubbed... URL: From heller at common-lisp.net Sun Apr 25 06:32:21 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sun, 25 Apr 2004 02:32:21 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14983 Modified Files: slime.el Log Message: (slime-set-connection-info): Hide the *inferior-lisp* buffer here, so that we have all the buffer rearrangement in one place. (slime-insert-arglist): Use swank:arglist-for-insertion. Date: Sun Apr 25 02:32:20 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.275 slime/slime.el:1.276 --- slime/slime.el:1.275 Fri Apr 23 18:09:11 2004 +++ slime/slime.el Sun Apr 25 02:32:20 2004 @@ -1147,10 +1147,7 @@ (message "Connecting to Swank on port %S.." port) (let* ((process (slime-net-connect host port)) (slime-dispatching-connection process)) - (slime-init-connection process) - (when-let (buffer (get-buffer "*inferior-lisp*")) - (delete-windows-on buffer) - (bury-buffer buffer)))) + (slime-init-connection process))) (defun slime-changelog-date () "Return the datestring of the latest entry in the ChangeLog file. @@ -1633,10 +1630,13 @@ (slime-lisp-implementation-type-name) name (slime-connection-name) (slime-generate-connection-name name) (slime-lisp-features) features)) - (slime-init-output-buffer process) (setq slime-state-name "") (when slime-global-debugger-hook (slime-eval '(swank:install-global-debugger-hook))) + (when-let (buffer (get-buffer "*inferior-lisp*")) + (delete-windows-on buffer) + (bury-buffer buffer)) + (slime-init-output-buffer process) (message "Connected on port %S. %s" (slime-connection-port connection) (slime-random-words-of-encouragement)) @@ -3289,7 +3289,7 @@ "Insert the argument list for NAME behind the symbol point is currently looking at." (interactive (list (slime-read-symbol-name "Arglist of: "))) - (insert (slime-eval `(swank:arglist-for-echo-area (quote (,name)) t) + (insert (slime-eval `(swank:arglist-for-insertion ',name) (slime-buffer-package)))) (defun slime-get-arglist (symbol-name) From heller at common-lisp.net Sun Apr 25 06:35:29 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sun, 25 Apr 2004 02:35:29 -0400 Subject: [slime-cvs] CVS update: slime/swank-backend.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv321 Modified Files: swank-backend.lisp Log Message: (arglist): Return a list or :not-available. Don't return strings or raise exceptions. Date: Sun Apr 25 02:35:29 2004 Author: heller Index: slime/swank-backend.lisp diff -u slime/swank-backend.lisp:1.43 slime/swank-backend.lisp:1.44 --- slime/swank-backend.lisp:1.43 Wed Apr 14 14:50:36 2004 +++ slime/swank-backend.lisp Sun Apr 25 02:35:29 2004 @@ -206,8 +206,6 @@ (location :initarg :location :accessor location))) - - ;;;; Streams @@ -228,9 +226,8 @@ (definterface arglist (name) "Return the lambda list for the symbol NAME. -The result can be a list or a (READable) string. - -An error should be signaled if the lambda-list cannot be found.") +The result can be a list or the :not-available if the arglist cannot +be determined.") (definterface macroexpand-all (form) "Recursively expand all macros in FORM. From heller at common-lisp.net Sun Apr 25 06:37:05 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sun, 25 Apr 2004 02:37:05 -0400 Subject: [slime-cvs] CVS update: slime/swank-cmucl.lisp slime/swank-lispworks.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv2156 Modified Files: swank-cmucl.lisp swank-lispworks.lisp Log Message: (arglist): Return :not-available if the arglist cannot be determined. Date: Sun Apr 25 02:37:05 2004 Author: heller Index: slime/swank-cmucl.lisp diff -u slime/swank-cmucl.lisp:1.97 slime/swank-cmucl.lisp:1.98 --- slime/swank-cmucl.lisp:1.97 Wed Apr 21 15:46:40 2004 +++ slime/swank-cmucl.lisp Sun Apr 25 02:37:05 2004 @@ -986,11 +986,11 @@ ;; this should work both for ;; compiled-debug-function and for ;; interpreted-debug-function - (t (let ((df (di::function-debug-function fun))) - (if df - (debug-function-arglist df) - "()")))))) - (check-type arglist (or list string)) + (t + (handler-case (debug-function-arglist + (di::function-debug-function fun)) + (di:unhandled-condition () :not-available)))))) + (check-type arglist (or list (member :not-available))) arglist)) Index: slime/swank-lispworks.lisp diff -u slime/swank-lispworks.lisp:1.38 slime/swank-lispworks.lisp:1.39 --- slime/swank-lispworks.lisp:1.38 Sat Mar 27 16:17:36 2004 +++ slime/swank-lispworks.lisp Sun Apr 25 02:37:05 2004 @@ -100,9 +100,10 @@ (defimplementation arglist (symbol) (let ((arglist (lw:function-lambda-list symbol))) (etypecase arglist - ((member :dont-know) - (error "")) - (list arglist)))) + ((member :dont-know) + :not-available) + (list + arglist)))) (defimplementation macroexpand-all (form) (walker:walk-form form)) From heller at common-lisp.net Sun Apr 25 06:41:21 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sun, 25 Apr 2004 02:41:21 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv24041 Modified Files: swank.lisp Log Message: (arglist-for-echo-area): Simplified and adapted for the new semantic of ARGLIST. (arglist-for-insertion): New separate function. (read-arglist): Deleted. No longer needed. Date: Sun Apr 25 02:41:21 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.171 slime/swank.lisp:1.172 --- slime/swank.lisp:1.171 Thu Apr 22 17:37:50 2004 +++ slime/swank.lisp Sun Apr 25 02:41:21 2004 @@ -780,65 +780,62 @@ (cond (package (values symbol package)) (t (error "Unknown symbol: ~S [in ~A]" string default-package))))) -(defslimefun arglist-for-echo-area (names &optional without-name) - "Return the arglist for the first function, macro, or special-op in NAMES." - (multiple-value-bind (symbol name) - (loop for name in names - for symbol = (find-symbol-designator name) - when (or (fboundp symbol) - (macro-function symbol) - (special-operator-p symbol)) - return (values symbol name)) - (cond (symbol (format-arglist-for-echo-area symbol name without-name)) - (t "")))) - -(defun format-arglist-for-echo-area (symbol name without-name) - (multiple-value-bind (arglist c) (ignore-errors (values (arglist symbol))) - (cond ((and c without-name) " )") - (c (format nil "(~A -- )" symbol)) - (t (let ((string (arglist-to-string arglist))) - (format nil "~:[(~A~;~*~]~A~A)" - without-name - name - (if (= (length string) 2) "" " ") - (subseq string 1 (1- (length string))))))))) +(defun valid-operator-name-p (string) + "Test if STRING names a function, macro, or special-operator." + (let ((symbol (find-symbol-designator string))) + (or (fboundp symbol) + (macro-function symbol) + (special-operator-p symbol)))) -(defun arglist-to-string (arglist) - (etypecase arglist - (string arglist) - (null "()") - (cons (print-arglist-to-string arglist)))) - -(defun print-arglist-to-string (arglist) - (with-output-to-string (*standard-output*) - (print-arglist arglist))) +(defslimefun arglist-for-echo-area (names) + "Return the arglist for the first function, macro, or special-op in NAMES." + (let ((name (find-if #'valid-operator-name-p names))) + (if name + (format-arglist-for-echo-area (find-symbol-designator name) name) + ""))) + +(defun format-arglist-for-echo-area (symbol name) + "Return SYMBOL's arglist as string for display in the echo area. +Use the string NAME as operator name." + (let ((arglist (arglist symbol))) + (etypecase arglist + ((member :not-available) + (format nil "(~A -- )" name)) + (list + (arglist-to-string (cons name arglist) + (symbol-package symbol)))))) -(defun print-arglist (arglist) +(defun arglist-to-string (arglist package) "Print the list ARGLIST for display in the echo area. The argument name are printed without package qualifiers and pretty printing of (function foo) as #'foo is suppressed." - (with-standard-io-syntax - (let ((*print-case* :downcase) - (*print-pretty* t) - (*print-circle* nil) - (*print-level* 10) - (*print-length* 20)) - (pprint-logical-block (nil nil :prefix "(" :suffix ")") - (loop - (let ((arg (pop arglist))) - (etypecase arg - (symbol (princ arg)) - (string (princ arg)) - (cons (pprint-logical-block (nil nil :prefix "(" :suffix ")") - (princ (car arg)) - (write-char #\space) - (pprint-fill *standard-output* (cdr arg) nil)))) - (when (null arglist) (return)) - (write-char #\space) - (pprint-newline :fill))))))) + (etypecase arglist + (null "()") + (cons + (with-output-to-string (*standard-output*) + (with-standard-io-syntax + (let ((*package* package) + (*print-case* :downcase) + (*print-pretty* t) + (*print-circle* nil) + (*print-level* 10) + (*print-length* 20)) + (pprint-logical-block (nil nil :prefix "(" :suffix ")") + (loop + (let ((arg (pop arglist))) + (etypecase arg + (symbol (princ arg)) + (string (princ arg)) + (cons (pprint-logical-block (nil nil :prefix "(" :suffix ")") + (princ (car arg)) + (write-char #\space) + (pprint-fill *standard-output* (cdr arg) nil)))) + (when (null arglist) (return)) + (write-char #\space) + (pprint-newline :fill)))))))))) (defun test-print-arglist (list string) - (string= (print-arglist-to-string list) string)) + (string= (arglist-to-string list (find-package :swank)) string)) ;; Should work: (assert (test-print-arglist '(function cons) "(function cons)")) @@ -847,6 +844,17 @@ ;; Expected failure: ;; (assert (test-print-arglist '(&key ((function f))) "(&key ((function f)))")) +(defslimefun arglist-for-insertion (name) + (cond ((valid-operator-name-p name) + (let ((arglist (arglist (find-symbol-designator name)))) + (etypecase arglist + ((member :not-available) + " ") + (list + (format nil "~(~<~{~^ ~A~}~@:>~))" (list arglist)))))) + (t + " "))) + ;;;; Debugger @@ -1608,21 +1616,18 @@ The form is to be used as the `common-lisp-indent-function' property in Emacs." (if (macro-function symbol) - (macro-indentation (ignore-errors (read-arglist (arglist symbol)))) + (let ((arglist (arglist symbol))) + (etypecase arglist + ((member :not-available) + nil) + (list + (macro-indentation arglist)))) nil)) (defun macro-indentation (arglist) (if (well-formed-list-p arglist) (position '&body (remove '&whole arglist)) nil)) - -(defun read-arglist (args) - (etypecase args - (cons args) - (null args) - (string - (with-temp-package *package* - (read-from-string args))))) (defun well-formed-list-p (list) "Is LIST a proper list terminated by NIL?" From heller at common-lisp.net Sun Apr 25 06:44:16 2004 From: heller at common-lisp.net (Helmut Eller) Date: Sun, 25 Apr 2004 02:44:16 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv5816 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Sun Apr 25 02:44:16 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.347 slime/ChangeLog:1.348 --- slime/ChangeLog:1.347 Fri Apr 23 18:13:08 2004 +++ slime/ChangeLog Sun Apr 25 02:44:15 2004 @@ -1,3 +1,21 @@ +2004-04-25 Helmut Eller + + * swank-backend.lisp (arglist): Return a list or :not-available. + Don't return strings or raise exceptions. + + * swank.lisp (arglist-for-echo-area): Simplified and adapted for + the new semantic of ARGLIST. + (arglist-for-insertion): Now a separate function. + (read-arglist): Deleted. No longer needed. + + * swank-cmucl.lisp, swank-lispworks.lisp (arglist): Return + :not-available if the arglist cannot be determined. + + * slime.el (slime-set-connection-info): Hide the *inferior-lisp* + buffer here, so that we have all the buffer rearrangement in one + place. + (slime-insert-arglist): Use swank:arglist-for-insertion. + 2004-04-24 Helmut Eller * slime.el (slime-init-connection-state): Use an asynchronous RPC From XHKLX at msn.com Sun Apr 25 15:41:28 2004 From: XHKLX at msn.com (Carmen Eubanks) Date: Sun, 25 Apr 2004 08:41:28 -0700 Subject: [slime-cvs] FW: LooK and feel 20 years y0unger.. Message-ID: An HTML attachment was scrubbed... URL: From robertogaddy at sahid.every1.net Mon Apr 26 04:29:55 2004 From: robertogaddy at sahid.every1.net (Scott Drummond) Date: Sun, 25 Apr 2004 23:29:55 -0500 Subject: [slime-cvs] Rx: CIALUS, Levitra, and more at the Online Rx, Sun, 25 Apr 2004 23:29:55 -0500 Message-ID: Sun, 25 Apr 2004 23:29:55 -0500 Wholesale Rx Take A Step Into The Future And Join The Millions Of People Already Using Rx Meds Online. Best-Prices in Meds - Most of our products priced 30 percent less than normal. No Prior Rx Required - Shipped-Direct to Your Door - U.S. Licensed Doctors. Come On In: http://www.metro-savings.com/jw Men's Health Cialis Levitra Propecia Viaegra Allergies Allegra Clarinex Flonase Nasonex Zyrtec Birth Control Allese Ortho Tri-Cyclen Yasmin Cholesterol Lipitor Depression Generic Prozac Paxil Wellbutrin Zoloft Heartburn Nexium Prevacid Prilosec Pain Relief Celebrex Fioricet Tramadol Ultracet Ultram Vioxx Muscle Relaxers Soma Come On In: http://www.metro-savings.com/jw No thanks: http://www.metro-savings.com/postmark.html mynheer skyhook virtuosity lachesis catch illustrious karp atlanta birdbath dead carabao groupoid lusaka splat expelled jingle extendible schultz haugen taos condescension entry synopses indispose eaten pulsar deacon avarice peregrine cambridge upriver bijective tortuous electrician shear exception mongoose bearish brillouin giveth autocrat chromatic curve ironic wheat triangle clique doge erudition buckskin demurred burton instrumentation renegotiable bess dalhousie wronskian nanosecond pompous consternate eye hart rutledge vanguard athenian From xqvpci at msn.com Mon Apr 26 07:43:45 2004 From: xqvpci at msn.com (Parker Rowe) Date: Mon, 26 Apr 2004 12:43:45 +0500 Subject: [slime-cvs] Fw: seize the m0mment.. Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Mon Apr 26 12:30:19 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 08:30:19 -0400 Subject: [slime-cvs] CVS update: slime/nregex.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13318 Modified Files: nregex.lisp Log Message: Typo fix (thanks Barry Fishman). Date: Mon Apr 26 08:30:19 2004 Author: lgorrie Index: slime/nregex.lisp diff -u slime/nregex.lisp:1.1 slime/nregex.lisp:1.2 --- slime/nregex.lisp:1.1 Wed Apr 21 14:55:24 2004 +++ slime/nregex.lisp Mon Apr 26 08:30:18 2004 @@ -256,7 +256,7 @@ ;; ;; If this is the last character of the expression then ;; anchor the end of the expression, otherwise let it slide -u ;; as a standard character (even though it should be quoted). + ;; as a standard character (even though it should be quoted). ;; (if (= eindex (1- (length source))) (add-exp '((if (not (= index length)) From lgorrie at common-lisp.net Mon Apr 26 13:20:13 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 09:20:13 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv15629 Modified Files: swank.lisp Log Message: (ed-in-emacs): Avoid mutating the argument. (spawn-repl-thread): Add a new thread for evaluating REPL expressions. This same thread is used for all REPL evaluation. This fixes some issues with variables like * and ** in at least SBCL. Date: Mon Apr 26 09:20:13 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.172 slime/swank.lisp:1.173 --- slime/swank.lisp:1.172 Sun Apr 25 02:41:21 2004 +++ slime/swank.lisp Mon Apr 26 09:20:13 2004 @@ -95,6 +95,10 @@ ;; control-thread reader-thread + ;; The REPL thread loops receiving functions to apply. + ;; REPL expressions are sent to this thread for evaluation so that + ;; they always run in the same thread. + repl-thread (read (missing-arg) :type function) (send (missing-arg) :type function) (serve-requests (missing-arg) :type function) @@ -402,7 +406,7 @@ (*active-threads* '()) (*thread-counter* 0) (*lookup-counter* 50)) - (loop (with-simple-restart (abort "Retstart dispatch loop.") + (loop (with-simple-restart (abort "Restart dispatch loop.") (loop (dispatch-event (receive) socket-io)))))) (defun simple-break () @@ -461,8 +465,14 @@ connection)) :name "reader-thread"))) (setf (connection.reader-thread connection) reader-thread) + (setf (connection.repl-thread connection) + (spawn (lambda () (repl-loop connection)))) connection)))) +(defun repl-loop (connection) + (with-connection (connection) + (loop do (funcall (receive))))) + (defun initialize-streams-for-connection (connection) (multiple-value-bind (dedicated in out io) (open-streams connection) (setf (connection.dedicated-output connection) dedicated @@ -1180,6 +1190,30 @@ (list (package-name p) (shortest-package-nickname p)))) (defslimefun listener-eval (string) + (if (connection.repl-thread *emacs-connection*) + (repl-thread-eval string) + (repl-eval string))) + +(defun repl-thread-eval (string) + "Evaluate STRING using REPL-EVAL in the REPL thread." + ;; XXX Perhaps we should somehow formalize the set of "important" + ;; specials which are here being passed to the other thread? -luke (26/Apr/2004) + (let ((self (current-thread)) + (connection *emacs-connection*) + (package *package*) + (buffer-package *buffer-package*)) + (send (connection.repl-thread connection) + (lambda () + (with-connection (connection) + (let ((*buffer-package* buffer-package) + (*package* package)) + (restart-case (send self (repl-eval string)) + (abort () + :report "Abort REPL evaluation" + (send self "; Aborted"))))))) + (receive))) + +(defun repl-eval (string) (clear-user-input) (multiple-value-bind (values last-form) (eval-region string t) (setq +++ ++ ++ + + last-form @@ -1198,11 +1232,14 @@ A list (FILENAME LINE [COLUMN]), A function name (symbol), nil." - (if (and (listp what) (pathnamep (first what))) - (setf (car what) (canonicalize-filename (car what)))) - (send-oob-to-emacs `(:ed ,(if (pathnamep what) - (canonicalize-filename what) - what)))) + (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. @@ -2061,12 +2098,22 @@ (defun lookup-thread-by-id (id) (nth id *thread-list*)) -(defun debug-thread (thread-id) +(defslimefun debug-thread-by-id (thread-id) (let ((connection *emacs-connection*)) (interrupt-thread (lookup-thread-by-id thread-id) (lambda () (with-connection (connection) (simple-break)))))) + +(defslimefun start-swank-server-in-thread (id port-file-name) + "Interrupt a thread by ID and make it start a swank server. +The server port is written to PORT-FILE-NAME." + (interrupt-thread (lookup-thread-by-id id) + (lambda () + (start-server port-file-name nil)))) + +(defslimefun kill-thread-by-id (id) + (kill-thread (lookup-thread-by-id id))) ;;; Local Variables: ;;; eval: (font-lock-add-keywords 'lisp-mode '(("(\\(defslimefun\\)\\s +\\(\\(\\w\\|\\s_\\)+\\)" (1 font-lock-keyword-face) (2 font-lock-function-name-face)))) From lgorrie at common-lisp.net Mon Apr 26 13:20:26 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 09:20:26 -0400 Subject: [slime-cvs] CVS update: slime/swank-loader.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17088 Modified Files: swank-loader.lisp Log Message: (*lisp-name*): Include a short version number in the Lisp name to separate FASL files for different versions. Only implemented for CMUCL and SBCL sofar. Date: Mon Apr 26 09:20:26 2004 Author: lgorrie Index: slime/swank-loader.lisp diff -u slime/swank-loader.lisp:1.21 slime/swank-loader.lisp:1.22 --- slime/swank-loader.lisp:1.21 Wed Apr 21 14:56:42 2004 +++ slime/swank-loader.lisp Mon Apr 26 09:20:26 2004 @@ -40,12 +40,12 @@ ))) (defparameter *lisp-name* - #+cmu "cmu" - #+sbcl "sbcl" - #+openmcl "openmcl" + #+cmu (format nil "cmu-~A" (lisp-implementation-version)) + #+sbcl (format nil "sbcl-~A" (lisp-implementation-version)) + #+openmcl "openmcl" #+lispworks "lispworks" - #+allegro "allegro" - #+clisp "clisp" + #+allegro "allegro" + #+clisp "clisp" ) (defparameter *swank-pathname* (make-swank-pathname "swank")) From lgorrie at common-lisp.net Mon Apr 26 13:21:43 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 09:21:43 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv19649 Modified Files: slime.el Log Message: Moved snippets of Common Lisp code into swank.lisp from the thread control panel. (Remember, no CL code in slime.el!) (slime-events-buffer): Don't use hideshow-mode in XEmacs for the *slime-events* buffer. It causes obscure problems for some users. Still used in GNU Emacs. Date: Mon Apr 26 09:21:43 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.276 slime/slime.el:1.277 --- slime/slime.el:1.276 Sun Apr 25 02:32:20 2004 +++ slime/slime.el Mon Apr 26 09:21:43 2004 @@ -1060,7 +1060,8 @@ "Offer to rename *inferior-lisp* so that another can be started." (when (y-or-n-p "Create an additional *inferior-lisp*? ") (with-current-buffer "*inferior-lisp*" - (rename-buffer (buffer-name) t)))) + (rename-buffer (buffer-name) t) + t))) (defun slime-maybe-start-lisp () "Start an inferior lisp unless one is already running." @@ -1672,12 +1673,16 @@ (defun slime-events-buffer () (or (get-buffer "*slime-events*") (let ((buffer (get-buffer-create "*slime-events*"))) - (with-current-buffer buffer - (set (make-local-variable 'hs-block-start-regexp) "^(") - (set (make-local-variable 'comment-start) ";") - (set (make-local-variable 'comment-end) "") - (hs-minor-mode) - (current-buffer))))) + ;; Using hideshow mode in XEmacs has caused obscure problems + ;; for some users. -luke (24/Apr/2004) + (unless (featurep 'xemacs) + (with-current-buffer buffer + (set (make-local-variable 'hs-block-start-regexp) "^(") + (set (make-local-variable 'comment-start) ";") + (set (make-local-variable 'comment-end) "") + (unless (featurep 'xemacs) + (hs-minor-mode)))) + buffer))) ;;;;; Utilities @@ -5152,25 +5157,25 @@ (defun slime-thread-kill () (interactive) - (slime-eval `(swank::kill-thread (swank::lookup-thread-by-id ,(get-text-property (point) 'thread-id)))) + (let ((id (get-text-property (point) 'thread-id))) + (slime-eval `(swank:kill-thread-by-id ,id))) (call-interactively 'slime-list-threads)) (defun slime-thread-attach () (interactive) - (slime-eval-async `(swank::interrupt-thread - (swank::lookup-thread-by-id ,(get-text-property (point) 'thread-id)) - (cl:lambda () - (swank::start-server ,(slime-swank-port-file) nil))) - (slime-buffer-package) - (lambda (v) - nil)) + (let ((id (get-text-property (point) 'thread-id)) + (file (slime-swank-port-file))) + (slime-eval-async `(swank:start-swank-server-in-thread ,id ,file) + (slime-buffer-package) + (lambda (v) nil))) (slime-read-port-and-connect-to-running-swank nil)) (defun slime-thread-debug () (interactive) - (slime-eval-async `(swank::debug-thread ,(get-text-property (point) 'thread-id)) - (slime-buffer-package) - (lambda (v) nil))) + (let ((id (get-text-property (point) 'thread-id))) + (slime-eval-async `(swank::debug-thread-by-id ,id) + (slime-buffer-package) + (lambda (v) nil)))) ;;;;; Connection listing From lgorrie at common-lisp.net Mon Apr 26 13:24:02 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 09:24:02 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv23226 Modified Files: ChangeLog Log Message: Date: Mon Apr 26 09:24:01 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.348 slime/ChangeLog:1.349 --- slime/ChangeLog:1.348 Sun Apr 25 02:44:15 2004 +++ slime/ChangeLog Mon Apr 26 09:24:00 2004 @@ -1,3 +1,24 @@ +2004-04-26 Luke Gorrie + + * slime.el: Moved snippets of Common Lisp code into swank.lisp + from the thread control panel. (Remember, no CL code in slime.el!) + + * swank-loader.lisp (*lisp-name*): Include a short version number + in the Lisp name to separate FASL files for different + versions. Only implemented for CMUCL and SBCL sofar. + + * swank.lisp (ed-in-emacs): Avoid mutating the argument. + (spawn-repl-thread): Add a new thread for evaluating REPL + expressions. This same thread is used for all REPL + evaluation. This fixes some issues with variables like * and ** + in at least SBCL. + + * nregex.lisp: Typo fix (thanks Barry Fishman). + + * slime.el (slime-events-buffer): Don't use hideshow-mode in + XEmacs for the *slime-events* buffer. It causes obscure problems + for some users. Still used in GNU Emacs. + 2004-04-25 Helmut Eller * swank-backend.lisp (arglist): Return a list or :not-available. From AHSTMGPWARTM at public.hy.js.cn Mon Apr 26 17:57:43 2004 From: AHSTMGPWARTM at public.hy.js.cn (Andrea Leary) Date: Mon, 26 Apr 2004 15:57:43 -0200 Subject: [slime-cvs] get the job you deserve with a university degree - no need to go to school Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Mon Apr 26 17:11:36 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 13:11:36 -0400 Subject: [slime-cvs] CVS update: slime/swank-allegro.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29847 Modified Files: swank-allegro.lisp Log Message: (arglist): Return :not-available if arglist lookup fails with an error. Date: Mon Apr 26 13:11:36 2004 Author: lgorrie Index: slime/swank-allegro.lisp diff -u slime/swank-allegro.lisp:1.29 slime/swank-allegro.lisp:1.30 --- slime/swank-allegro.lisp:1.29 Wed Apr 7 12:35:20 2004 +++ slime/swank-allegro.lisp Mon Apr 26 13:11:36 2004 @@ -68,7 +68,8 @@ ;;;; Misc (defimplementation arglist (symbol) - (excl:arglist symbol)) + (handler-case (excl:arglist symbol) + (simple-error () :not-available))) (defimplementation macroexpand-all (form) (excl::walk form)) From lgorrie at common-lisp.net Mon Apr 26 17:11:47 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 13:11:47 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30579 Modified Files: ChangeLog Log Message: Date: Mon Apr 26 13:11:47 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.349 slime/ChangeLog:1.350 --- slime/ChangeLog:1.349 Mon Apr 26 09:24:00 2004 +++ slime/ChangeLog Mon Apr 26 13:11:46 2004 @@ -1,5 +1,8 @@ 2004-04-26 Luke Gorrie + * swank-allegro.lisp (arglist): Return :not-available if arglist + lookup fails with an error. + * slime.el: Moved snippets of Common Lisp code into swank.lisp from the thread control panel. (Remember, no CL code in slime.el!) From lgorrie at common-lisp.net Mon Apr 26 18:16:18 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 14:16:18 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv15601 Modified Files: slime.el Log Message: (sldb-insert-frames): Handle empty backtrace (I got one in CLISP). Date: Mon Apr 26 14:16:18 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.277 slime/slime.el:1.278 --- slime/slime.el:1.277 Mon Apr 26 09:21:43 2004 +++ slime/slime.el Mon Apr 26 14:16:18 2004 @@ -4744,19 +4744,20 @@ (defun sldb-insert-frames (frames maximum-length) "Insert FRAMES into buffer. MAXIMUM-LENGTH is the total number of frames in the Lisp stack." - (when maximum-length - (assert (<= (length frames) maximum-length))) - (save-excursion - (mapc #'sldb-insert-frame frames) - (let ((number (sldb-previous-frame-number))) - (cond ((and maximum-length (< (length frames) maximum-length))) - (t - (slime-insert-propertized - `(sldb-default-action - sldb-fetch-more-frames - point-entered sldb-fetch-more-frames - sldb-previous-frame-number ,number) - (in-sldb-face section " --more--\n"))))))) + (unless (null frames) + (when maximum-length + (assert (<= (length frames) maximum-length))) + (save-excursion + (mapc #'sldb-insert-frame frames) + (let ((number (sldb-previous-frame-number))) + (cond ((and maximum-length (< (length frames) maximum-length))) + (t + (slime-insert-propertized + `(sldb-default-action + sldb-fetch-more-frames + point-entered sldb-fetch-more-frames + sldb-previous-frame-number ,number) + (in-sldb-face section " --more--\n")))))))) (defun sldb-fetch-more-frames (&rest ignore) "Fetch more backtrace frames. From lgorrie at common-lisp.net Mon Apr 26 18:38:39 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 14:38:39 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4168 Modified Files: swank.lisp Log Message: Move definition of `with-io-redirection' above `with-connection' to avoid a CLISP error. This is really weird. Date: Mon Apr 26 14:38:39 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.173 slime/swank.lisp:1.174 --- slime/swank.lisp:1.173 Mon Apr 26 09:20:13 2004 +++ slime/swank.lisp Mon Apr 26 14:38:39 2004 @@ -145,6 +145,13 @@ ;;;; Helper macros +(defmacro with-io-redirection ((connection) &body body) + "Execute BODY with I/O redirection to CONNECTION. +If *REDIRECT-IO* is true, all standard I/O streams are redirected." + `(if *redirect-io* + (call-with-redirected-io ,connection (lambda () , at body)) + (progn , at body))) + (defmacro with-connection ((connection) &body body) "Execute BODY in the context of CONNECTION." `(let ((*emacs-connection* ,connection)) @@ -152,13 +159,6 @@ (with-io-redirection (*emacs-connection*) (let ((*debugger-hook* #'swank-debugger-hook)) , at body))))) - -(defmacro with-io-redirection ((connection) &body body) - "Execute BODY with I/O redirection to CONNECTION. -If *REDIRECT-IO* is true, all standard I/O streams are redirected." - `(if *redirect-io* - (call-with-redirected-io ,connection (lambda () , at body)) - (progn , at body))) (defmacro without-interrupts (&body body) `(call-without-interrupts (lambda () , at body))) From lgorrie at common-lisp.net Mon Apr 26 18:39:17 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 14:39:17 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv7375 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Mon Apr 26 14:39:17 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.350 slime/ChangeLog:1.351 --- slime/ChangeLog:1.350 Mon Apr 26 13:11:46 2004 +++ slime/ChangeLog Mon Apr 26 14:39:17 2004 @@ -1,5 +1,11 @@ 2004-04-26 Luke Gorrie + * swank.lisp: Move definition of `with-io-redirection' above + `with-connection' to avoid a CLISP error. This is really weird. + + * slime.el (sldb-insert-frames): Handle empty backtrace (I got one + in CLISP). + * swank-allegro.lisp (arglist): Return :not-available if arglist lookup fails with an error. From gertrudetownes at oceaniacom.net.ru Mon Apr 26 22:34:53 2004 From: gertrudetownes at oceaniacom.net.ru (Stanley Brandon) Date: Mon, 26 Apr 2004 17:34:53 -0500 Subject: [slime-cvs] CIGARETTE Warehouse - We're Practically Giving Them Away, Mon, 26 Apr 2004 17:34:53 -0500 Message-ID: Mon, 26 Apr 2004 17:34:53 -0500 Cigarette Warehouse - http://www.metro-savings.com/refjw.html BIG MONEY off HUNDREDS or even THOUSANDS of dollars over the course of a year when purchasing cigarettes through Cigarette Warehouse. We stock only the freshest cigarettes of the highest quality: Marlboro, Camel, Winston, Benson & Hedges, Salem, Kool, ALL the premium brands including Dunhill, Barclay, Virginia Slims, and so many more. Our products are fresh and genuine. Get your smokes now: http://www.www.metro-savings.com/refjw.html No thanks: http://www.metro-savings.com/postmark.html capacitor macho avarice sideline spat earthmove emil diehard birdie citizenry alibi corrugate schedule morpheme combination logjam novitiate behalf dunlop innards innumerable bonanza colony crabapple aiken grease backwater chef chloroplatinate adriatic egregious approve dogging supervene entranceway alvin budd dreary marten lioness scornful fluorite hurray flowchart melange beauty bisexual egotist illegible constitute plankton lapidary pink minuend defuse From lgorrie at common-lisp.net Mon Apr 26 21:59:26 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 17:59:26 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv8729 Modified Files: swank.lisp Log Message: (interactive-eval): Bind *package* to *buffer-package*, so that `C-x C-e' and related commands evaluate in the expected package. Date: Mon Apr 26 17:59:26 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.174 slime/swank.lisp:1.175 --- slime/swank.lisp:1.174 Mon Apr 26 14:38:39 2004 +++ slime/swank.lisp Mon Apr 26 17:59:25 2004 @@ -1098,7 +1098,9 @@ (t "; No value")))) (defslimefun interactive-eval (string) - (let ((values (multiple-value-list (eval (from-string string))))) + (let ((values (multiple-value-list + (let ((*package* *buffer-package*)) + (eval (from-string string)))))) (fresh-line) (force-output) (format-values-for-echo-area values))) From lgorrie at common-lisp.net Mon Apr 26 21:59:39 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Mon, 26 Apr 2004 17:59:39 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9147 Modified Files: ChangeLog Log Message: Date: Mon Apr 26 17:59:39 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.351 slime/ChangeLog:1.352 --- slime/ChangeLog:1.351 Mon Apr 26 14:39:17 2004 +++ slime/ChangeLog Mon Apr 26 17:59:39 2004 @@ -2,6 +2,8 @@ * swank.lisp: Move definition of `with-io-redirection' above `with-connection' to avoid a CLISP error. This is really weird. + (interactive-eval): Bind *package* to *buffer-package*, so that + `C-x C-e' and related commands evaluate in the expected package. * slime.el (sldb-insert-frames): Handle empty backtrace (I got one in CLISP). From phiphend at llangollen.com Tue Apr 27 11:45:25 2004 From: phiphend at llangollen.com (Nestor Hanson) Date: Tue, 27 Apr 2004 06:45:25 -0500 Subject: [slime-cvs] MICRO-ELECTRONICS Sector Spotlight - Clients: IBM, VISA, Maytag, Bank of America, USA Today, Tue, 27 Apr 2004 06:45:25 -0500 Message-ID: Tue, 27 Apr 2004 06:45:25 -0500 US Stock-Market - Stock Profile of the Week Symbol: QIIIF Market: NASDAQ/OTC.BB Sector: MICRO-ELECTRONICS QIIIF already has an impressive array of clients, including some of the world's leading corporations like IBM, Bank of America, USA Today, VISA Intl., Chase Manhattan Bank, Mastercard intl., and more. Before we begin our profile we have very exciting, breaking news... RICHMOND, British Columbia---PRNewswire-FirstCall---QI Systems Inc. (QIIIF), the industry leader in smart card solutions, announces that the company has launched a new sales and marketing effort, both domestically and internationally. The company is promoting its memory card technology utilizing informational programs, direct sales contact and an enhanced market presence. QIIIF is preparing for a renewed presence in high level trade associations, such as ACT Canada and Card Tech / Secure Tech, and is planning to attend several major technical meetings during the coming year. In addition, the company plans to seek promotional opportunities in key trade journals and publications. STOCK PROFILE OF THE WEEK QIIIF's focus is the design, development and marketing of payment terminals for smart cards. The primary applications are unattended point of sale (UPOS) systems such as soft-drink vending machines, snack vending machines, laundry machines (washers and dryers), pay-and-display parking systems, newspaper boxes, photocopiers, etc. INTRODUCTION TO SMART CARDS A Smart card consists of a microelectronic chip embedded in a plastic card with a contact pad on the card's surface and/or an embedded antenna for "contactless" communication. As a payment device a smart card is a much enhanced and more versatile version of a magneticc stripe card or debit card. Value loaded to a smart card's purse is prepaid and resembles cash. Smart cards can be used for secure purchase of goods via a payment terminal interfaced to a soft drink vending machine, snack vending machine, laundry unit (washer or dryer), newspaper vending box, pay-and-display parking terminal, transit gate, photocopier or other Unattended Point-Of-Sale (UPOS) device. There is no need for exact change or for any change at all. Smart cards can be used as well for payment in attended Point Of Sale (POS) applications, and can also be used to confirm identity, to access buildings or to carry data such as personal health records, driver's license details, and biometric data including finger prints or voice prints. Biometrics can be used to further authenticate identity for high security applications. SMART-VEND SOLUTION SmartVend solution is made for your vending needs. Already the SmartKit has been adapted for a variety of applications including Drinks/Snacks, Newspaper, Parking, Copier/Vending, Laundry and Water vending. SmartVend for Printers and Copiers: SKC supports existing OEM photocopiers by Xerox and Kodak and printers by Hewlett Packard and Epson. Interfaces for other OEM equipment can be rapidly developed. Depending on host machine support, SKC can be installed at cost-cutting without its console housing in existing payment cabinets. The SKC design makes installation simple, both in the field and on the factory floor. Machine sales and vend data upload and exception log handling are accessed by a handheld device or merchant accumulator card. SKC may be bundled with either, pre-paid disposable, or reloadable cash cards for use with our card dispenser and reload stations. All system components support electronic audit. THE FUTURE OF SMART CARDS The applications for smart cards in the future is limitless. We would like to focus on one in particular. As the debate over a national personal identification system intensifies, the smart card industry is gearing up a campaign to make sure its chip-based technology is the leading contender for such a system. The Smart Card Alliance, the industry's trade association, released a white paper Jan. 30 that argues for the advantages of smart cards against other technologies that could be candidates for a personal ID card. The alliance will use it to initiate a concerted pitch to policymakers in the public and private sectors. Alliance members have been encouraged by what they see as the leading role of the federal government in the recent growth of smart card use. "Once the Common Access Card [CAC] for the Defense Department has been issued, we expect other agencies will begin to pick up on the use of smart cards," said Bob Merkert, director of strategic accounts, and PC and network security for SCM Microsystems. DOD has committed to issuing the CAC to 4 million military and civilian employees, he said, and distribution could be extended to more than 13 million people when retired personnel, family members and others are taken into account. The State Department also is implementing a smart ID card for automated access control of its buildings, the Veterans Administration is looking to pilot smart cards for issuing benefits, and the FDIC is using a smart card-based PKI for remote access of databases by bank auditors. All of this, along with the adoption of smart cards by financial institutions, debit and other type card companies and other organizations, means "we are seeing the rebirth of the smart card industry, and its expansion past the level of the initial adopter," Merkert said. With the emphasis on protecting the privacy of the cardholder, the alliance claims that smart cards reveal only as much information as is needed for any particular transaction. CLIENTS QIIIF already has an impressive array of clients, including some of the world's leading corporations: Bank of America Chase Manhattan Bank First Union Bank IBM Corp. Lexis Systems Mastercard International Maytag Royal Bank of Canada USA Today USA Treasury Department (Veterans Administration) VISA International MANAGEMENT President and CEO Steven R. Garman Mr. Garman brings the Company over 35 years of business experience in the international corporate environment and brings to the company a diversified management background including senior executive positions in varied industries such as health care services, high tech medical devices, computer products, OEM manufacturing, and sports and recreation. Mr. Garman has held multi-million dollar P & L responsibility with an international market leader and served as CEO and President of a pre-IPO start-up. He has been named a member of the Board of Directors of multiple start-up corporations and has served as Managing General Partner for a private investment firm. Please note that HTDS had absolutely nothing to do with this report and is not a participant in any way. No more advertisements: christiareiff at netmail.kg Micro-Electronic Ticker is an independent research firm. This report is based on Micro-Electronic Ticker's independent analysis but also relies on information supplied by sources believed to be reliable. This report may not be the opinion of QIIIF management. Micro-Electronic Ticker has also been retained to research and issue reports on QIIIF. Micro Electronic Ticker may from time to time purchase or sell QIIIF common shares in the open market without notice. The information contained in this report shall not constitute, an offer to sell or solicitation of any offer to purchase any security. It is intended for information only. Some statements may contain so-called "forward-looking statements". Many factors could cause actual results to differ. Investors should consult with their Investment Advisor concerning QIIIF. Copyright 2004 ? Micro Electronic Ticker Ltd. Nors S.A., Apartado 0832-0588, Calle 53 Marbella, Panama City, Panama. All Rights Reserved. Micro-Electronic Ticker was paid four thousand dollars to distribute this report. bangui precept worthy serology urinary pile bender impend tangerine been debar tiptoe rehabilitate mommy transact caper mesquite dobson rejecter shameful noxious burden angie orinoco depress taft inquire educable hamlet mannequin dietician ambrosial kodiak rafferty bourgeois widespread notoriety chad catholic hygroscopic algol agnomen epistolatory clientele delouse enter aphasia cursive bodleian cytosine bruckner badinage gerundive acerbity bull consent bates stallion greenwich eyewitness mid enunciable celtic locomotion bluegill boylston credo From RHMSQOS at hotmail.com Tue Apr 27 14:53:41 2004 From: RHMSQOS at hotmail.com (Lavern Salgado) Date: Tue, 27 Apr 2004 18:53:41 +0400 Subject: [slime-cvs] FW: Smart way to l0se the 1bs.. Message-ID: An HTML attachment was scrubbed... URL: From lgorrie at common-lisp.net Tue Apr 27 17:40:16 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 27 Apr 2004 13:40:16 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv18883 Modified Files: slime.el Log Message: (slime-log-event): Better bug-avoidance with hs-minor-mode. Hopefully XEmacs users can rest safely now. (slime-prin1-to-string): Bind `print-escape-newlines' to nil. Date: Tue Apr 27 13:40:14 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.278 slime/slime.el:1.279 --- slime/slime.el:1.278 Mon Apr 26 14:16:18 2004 +++ slime/slime.el Tue Apr 27 13:40:08 2004 @@ -1000,7 +1000,8 @@ "Like `prin1-to-string' but don't octal-escape non-ascii characters. This is more compatible with the CL reader." (with-temp-buffer - (let ((print-escape-nonascii nil)) + (let ((print-escape-nonascii nil) + (print-escape-newlines nil)) (prin1 sexp (current-buffer)) (buffer-string)))) @@ -1667,7 +1668,8 @@ (goto-char (point-max)) (save-excursion (pp event (current-buffer))) - (hs-hide-block-at-point) + (when hs-minor-mode + (hs-hide-block-at-point)) (goto-char (point-max))))) (defun slime-events-buffer () From lgorrie at common-lisp.net Tue Apr 27 17:47:09 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 27 Apr 2004 13:47:09 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv12985 Modified Files: swank.lisp Log Message: (oneway-eval-string): Bind *package* to *buffer-package*. Date: Tue Apr 27 13:47:09 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.175 slime/swank.lisp:1.176 --- slime/swank.lisp:1.175 Mon Apr 26 17:59:25 2004 +++ slime/swank.lisp Tue Apr 27 13:47:09 2004 @@ -1087,9 +1087,9 @@ (defslimefun oneway-eval-string (string buffer-package) "Evaluate STRING in BUFFER-PACKAGE, without sending a reply. The debugger hook is inhibited during the evaluation." - (let ((*buffer-package* (guess-package-from-string buffer-package)) - (*package* *buffer-package*) - (*debugger-hook* nil)) + (let* ((*buffer-package* (guess-package-from-string buffer-package)) + (*package* *buffer-package*) + (*debugger-hook* nil)) (eval (read-form string)))) (defun format-values-for-echo-area (values) From lgorrie at common-lisp.net Tue Apr 27 17:57:55 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 27 Apr 2004 13:57:55 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32448 Modified Files: ChangeLog Log Message: Date: Tue Apr 27 13:57:54 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.352 slime/ChangeLog:1.353 --- slime/ChangeLog:1.352 Mon Apr 26 17:59:39 2004 +++ slime/ChangeLog Tue Apr 27 13:57:54 2004 @@ -1,3 +1,12 @@ +2004-04-27 Luke Gorrie + + * slime.el (slime-log-event): Better bug-avoidance with + hs-minor-mode. Hopefully XEmacs users can rest safely now. + (slime-prin1-to-string): Bind `print-escape-newlines' to nil. + + * swank.lisp (oneway-eval-string): Bind *package* to + *buffer-package*. + 2004-04-26 Luke Gorrie * swank.lisp: Move definition of `with-io-redirection' above From FJRSGXH at yahoo.com Wed Apr 28 10:00:55 2004 From: FJRSGXH at yahoo.com (Maggie Ramos) Date: Wed, 28 Apr 2004 03:00:55 -0700 Subject: [slime-cvs] Hey! My girlfriend N.U.D.E on internet Message-ID: Hey Guys Do you want see my GirlFriend Nude ? She has really nice big tits and the beutiful ass i know Here her website http://www.mygirlfriend.fluo.net From lgorrie at common-lisp.net Tue Apr 27 21:22:52 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 27 Apr 2004 17:22:52 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv29665 Modified Files: slime.el Log Message: (slime-prin1-to-string): Bind `print-escape-newlines' to nil. (slime-set-connection-info): Commented out call to `slime-check-protocol-version'. Let's see how we do without it. (slime-oneway-eval): Removed unused function. Date: Tue Apr 27 17:22:52 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.279 slime/slime.el:1.280 --- slime/slime.el:1.279 Tue Apr 27 13:40:08 2004 +++ slime/slime.el Tue Apr 27 17:22:52 2004 @@ -102,12 +102,6 @@ This applies to buffers that present lines as rows of data, such as debugger backtraces and apropos listings.") -(defvar slime-global-debugger-hook nil - "* When true, install the SLIME debugger hook globally in Lisp. - -This means the SLIME debugger will be used for all errors occuring in -Lisp, not just those occuring during RPCs.") - (defvar slime-multiprocessing nil "* When true, enable multiprocessing in Lisp.") @@ -1564,8 +1558,6 @@ (slime-handle-indentation-update info)) ((:open-dedicated-output-stream port) (slime-open-stream-to-lisp port)) - ((:check-protocol-version version) - (slime-check-protocol-version version)) ((:use-sigint-for-interrupt) (setf (slime-use-sigint-for-interrupt) t)) ((:%apply fn args) @@ -1626,15 +1618,13 @@ (defun slime-set-connection-info (connection info) "Initialize CONNECTION with INFO received from Lisp." (destructuring-bind (version pid type name features) info - (slime-check-protocol-version version) +;; (slime-check-protocol-version version) (setf (slime-pid) pid (slime-lisp-implementation-type) type (slime-lisp-implementation-type-name) name (slime-connection-name) (slime-generate-connection-name name) (slime-lisp-features) features)) (setq slime-state-name "") - (when slime-global-debugger-hook - (slime-eval '(swank:install-global-debugger-hook))) (when-let (buffer (get-buffer "*inferior-lisp*")) (delete-windows-on buffer) (bury-buffer buffer)) @@ -1689,10 +1679,6 @@ ;;;;; Utilities -(defun slime-output-oneway-evaluate-request (form-string package-name) - "Like `slime-output-oneway-evaluate-request' but without expecting a result." - (slime-send `(swank:oneway-eval-string ,form-string ,package-name))) - (defun slime-check-connected () (unless (slime-connected-p) (error "Not connected. Use `%s' to start a Lisp." @@ -1779,12 +1765,6 @@ (funcall cont result)) ((:abort) (message "Evaluation aborted.")))) - -(defun slime-oneway-eval (sexp &optional package) - "Evaluate SEXP \"one-way\" - without receiving a return value." - (slime-check-connected) - (slime-dispatch-event - `(:emacs-evaluate-oneway ,(slime-prin1-to-string sexp) ,package))) (defun slime-send (sexp) (slime-net-send sexp (slime-connection))) From lgorrie at common-lisp.net Tue Apr 27 21:24:14 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 27 Apr 2004 17:24:14 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv7856 Modified Files: swank.lisp Log Message: (oneway-eval-string): Removed unused function. Date: Tue Apr 27 17:24:14 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.176 slime/swank.lisp:1.177 --- slime/swank.lisp:1.176 Tue Apr 27 13:47:09 2004 +++ slime/swank.lisp Tue Apr 27 17:24:14 2004 @@ -14,6 +14,7 @@ #:create-swank-server #:ed-in-emacs #:print-indentation-lossage + #:swank-debugger-hook ;; configurables #:*sldb-pprint-frames* #:*communication-style* @@ -883,7 +884,7 @@ "The list of currenlty active restarts.") (defun swank-debugger-hook (condition hook) - "Debugger entry point, called from *DEBUGGER-HOOK*. + "Debugger function for binding *DEBUGGER-HOOK*. Sends a message to Emacs declaring that the debugger has been entered, then waits to handle further requests from Emacs. Eventually returns after Emacs causes a restart to be invoked." @@ -1083,14 +1084,6 @@ (send-to-emacs `(:return ,(current-thread) ,(if ok `(:ok ,result) '(:abort)) ,id)))))) - -(defslimefun oneway-eval-string (string buffer-package) - "Evaluate STRING in BUFFER-PACKAGE, without sending a reply. -The debugger hook is inhibited during the evaluation." - (let* ((*buffer-package* (guess-package-from-string buffer-package)) - (*package* *buffer-package*) - (*debugger-hook* nil)) - (eval (read-form string)))) (defun format-values-for-echo-area (values) (let ((*package* *buffer-package*)) From lgorrie at common-lisp.net Tue Apr 27 21:24:28 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 27 Apr 2004 17:24:28 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9889 Modified Files: ChangeLog Log Message: Date: Tue Apr 27 17:24:28 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.353 slime/ChangeLog:1.354 --- slime/ChangeLog:1.353 Tue Apr 27 13:57:54 2004 +++ slime/ChangeLog Tue Apr 27 17:24:28 2004 @@ -1,12 +1,17 @@ 2004-04-27 Luke Gorrie + * doc/slime.texi (Other configurables): Updated instructions on + globally installing SLDB on *debugger-hook*. + * slime.el (slime-log-event): Better bug-avoidance with hs-minor-mode. Hopefully XEmacs users can rest safely now. (slime-prin1-to-string): Bind `print-escape-newlines' to nil. + (slime-set-connection-info): Commented out call to + `slime-check-protocol-version'. Let's see how we do without it. + (slime-oneway-eval): Removed unused function. - * swank.lisp (oneway-eval-string): Bind *package* to - *buffer-package*. - + * swank.lisp (oneway-eval-string): Removed unused function. + 2004-04-26 Luke Gorrie * swank.lisp: Move definition of `with-io-redirection' above From lgorrie at common-lisp.net Tue Apr 27 21:25:00 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Tue, 27 Apr 2004 17:25:00 -0400 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-serv11818/doc Modified Files: slime.texi Log Message: (Other configurables): Updated instructions on globally installing SLDB on *debugger-hook*. Date: Tue Apr 27 17:25:00 2004 Author: lgorrie Index: slime/doc/slime.texi diff -u slime/doc/slime.texi:1.11 slime/doc/slime.texi:1.12 --- slime/doc/slime.texi:1.11 Wed Apr 21 17:51:50 2004 +++ slime/doc/slime.texi Tue Apr 27 17:25:00 2004 @@ -46,7 +46,7 @@ @end macro @set EDITION DRAFT - at set UPDATED @code{$Id: slime.texi,v 1.11 2004/04/21 21:51:50 heller Exp $} + at set UPDATED @code{$Id: slime.texi,v 1.12 2004/04/27 21:25:00 lgorrie Exp $} @titlepage @title SLIME User Manual @@ -1133,12 +1133,6 @@ (threads) in your Lisp system. It causes any necessary initialization to be performed during Lisp server startup. - at item slime-global-debugger-hook -Setting this variable to @code{t} causes the @SLDB{} - at code{*DEBUGGER-HOOK*} to be set globally. This means that @SLDB{} -will be used for all debugging in the Lisp system. Otherwise it is -used only when evaluating code via Emacs commands. - @item slime-translate-to-lisp-filename-function @itemx slime-translate-from-lisp-filename-function These functions can be used to translate filenames between Emacs and @@ -1240,6 +1234,15 @@ @node Other configurables, , Communication style, Lisp-side @subsection Other configurables + +To use the @SLDB{} debugger globally for all debugging in the Lisp +system you can add this line to your init file: + + at example +(setq *debugger-hook* #'swank:swank-debugger-hook) + at end example + +You can also modify these Swank variables: @table @code From yysqgh at bak.rr.com Tue Apr 27 22:43:40 2004 From: yysqgh at bak.rr.com (Levi Eldridge) Date: Tue, 27 Apr 2004 15:43:40 -0700 Subject: [slime-cvs] Ignore "Viagra", "Cialis" is the BEST! Message-ID: An HTML attachment was scrubbed... URL: From heller at common-lisp.net Tue Apr 27 22:27:28 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 27 Apr 2004 18:27:28 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv18496 Modified Files: swank.lisp Log Message: (create-server): New keyword based variant to start the server in background. (setup-server): Add support to keep the socket open for single-threaded Lisps. Date: Tue Apr 27 18:27:28 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.177 slime/swank.lisp:1.178 --- slime/swank.lisp:1.177 Tue Apr 27 17:24:14 2004 +++ slime/swank.lisp Tue Apr 27 18:27:27 2004 @@ -12,6 +12,7 @@ (:export #:startup-multiprocessing #:start-server #:create-swank-server + #:create-server #:ed-in-emacs #:print-indentation-lossage #:swank-debugger-hook @@ -208,16 +209,22 @@ (defvar *communication-style* (preferred-communication-style)) (defvar *log-events* nil) -(defun start-server (port-file &optional (background *communication-style*) +(defun start-server (port-file &optional (style *communication-style*) dont-close) (setup-server 0 (lambda (port) (announce-server-port port-file port)) - background dont-close)) - + style dont-close)) + +(defun create-server (&key (port +server-port+) + (style *communication-style*) + dont-close) + "Start a SWANK server on PORT." + (setup-server port #'simple-announce-function style dont-close)) + (defun create-swank-server (&optional (port +server-port+) - (background *communication-style*) + (style *communication-style*) (announce-fn #'simple-announce-function) dont-close) - (setup-server port announce-fn background dont-close)) + (setup-server port announce-fn style dont-close)) (defparameter *loopback-interface* "127.0.0.1") @@ -226,12 +233,21 @@ (let* ((socket (create-socket *loopback-interface* port)) (port (local-port socket))) (funcall announce-fn port) - (cond ((eq style :spawn) - (spawn (lambda () - (loop do (serve-connection socket :spawn dont-close) - while dont-close)) - :name "Swank")) - (t (serve-connection socket style nil))) + (case style + (:spawn + (spawn (lambda () + (loop do (serve-connection socket :spawn dont-close) + while dont-close)) + :name "Swank")) + ((:fd-handler :sigio) + (add-fd-handler socket + (lambda () + (serve-connection socket style dont-close)))) + ((nil) + (unwind-protect + (loop do (serve-connection socket style dont-close) + while dont-close) + (close-socket socket)))) port)) (defun serve-connection (socket style dont-close) From heller at common-lisp.net Tue Apr 27 22:35:24 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 27 Apr 2004 18:35:24 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17809 Modified Files: slime.el Log Message: (slime-net-connect): Bind inhibit-quit to nil, so that we have a chance to interrupt Emacs if open-network-stream blocks. (slime-complete-maybe-restore-window-configuration): Keep trying for slime-repl-indent-and-complete-symbol. (slime-space): Don't close the completion buffer. We don't know the window-config before the completion, so leave the buffer open. Date: Tue Apr 27 18:35:24 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.280 slime/slime.el:1.281 --- slime/slime.el:1.280 Tue Apr 27 17:22:52 2004 +++ slime/slime.el Tue Apr 27 18:35:24 2004 @@ -1143,6 +1143,7 @@ (message "Connecting to Swank on port %S.." port) (let* ((process (slime-net-connect host port)) (slime-dispatching-connection process)) + (message "Initial handshake..." port) (slime-init-connection process))) (defun slime-changelog-date () @@ -1232,7 +1233,8 @@ (defun slime-net-connect (host port) "Establish a connection with a CL." - (let* ((proc (open-network-stream "SLIME Lisp" nil host port)) + (let* ((inhibit-quit nil) + (proc (open-network-stream "SLIME Lisp" nil host port)) (buffer (slime-make-net-buffer " *cl-connection*"))) (push proc slime-net-processes) (set-process-buffer proc buffer) @@ -3249,7 +3251,6 @@ more than one space." (interactive "p") (self-insert-command n) - (slime-close-buffer slime-completions-buffer-name) (when (and (slime-connected-p) (or (not (slime-busy-p)) ;; XXX should we enable this? @@ -3452,7 +3453,12 @@ (defvar slime-complete-saved-window-configuration nil "Window configuration before we show the *Completions* buffer. -This is buffer local in the buffer where the complition is +This is buffer local in the buffer where the completion is +performed.") + +(defvar slime-complete-modified-window-configuration nil + "Window configuration after we showing the *Completions* buffer. +This is buffer local in the buffer where the completion is performed.") (defun slime-complete-maybe-save-window-configuration () @@ -3464,7 +3470,7 @@ (defun slime-complete-delay-restoration () (make-local-hook 'pre-command-hook) (add-hook 'pre-command-hook - 'slime-complete-maybe-restore-window-confguration)) + 'slime-complete-maybe-restore-window-configuration)) (defun slime-complete-forget-window-configuration () (setq slime-complete-saved-window-configuration nil)) @@ -3472,26 +3478,27 @@ (defun slime-complete-restore-window-configuration () "Restore the window config if available." (remove-hook 'pre-command-hook - 'slime-complete-maybe-restore-window-confguration) + 'slime-complete-maybe-restore-window-configuration) (when slime-complete-saved-window-configuration (save-excursion (set-window-configuration slime-complete-saved-window-configuration)) - (setq slime-complete-saved-window-configuration nil)) - (slime-close-buffer slime-completions-buffer-name)) + (setq slime-complete-saved-window-configuration nil) + (slime-close-buffer slime-completions-buffer-name))) -(defun slime-complete-maybe-restore-window-confguration () +(defun slime-complete-maybe-restore-window-configuration () "Restore the window configuration, if the following command terminates a current completion." (remove-hook 'pre-command-hook - 'slime-complete-maybe-restore-window-confguration) + 'slime-complete-maybe-restore-window-configuration) (condition-case err (cond ((find last-command-char "()\"'`,# \r\n:") (slime-complete-restore-window-configuration)) ((memq this-command '(self-insert-command slime-complete-symbol + slime-repl-indent-and-complete-symbol backward-delete-char-untabify - backward-delete-char - scroll-other-window)) + backward-delete-char + scroll-other-window)) (slime-complete-delay-restoration)) (t (slime-complete-forget-window-configuration))) @@ -3499,6 +3506,12 @@ ;; Because this is called on the pre-command-hook, we mustn't let ;; errors propagate. (message "Error in slime-complete-forget-window-configuration: %S" err)))) + +(defun slime-display-completion-list (completion-list) + (with-output-to-temp-buffer "*Completions*" + (display-completion-list completion-set) + (with-current-buffer standard-output + (set-syntax-table lisp-mode-syntax-table)))) (defun slime-complete-symbol () "Complete the symbol at point. @@ -3544,12 +3557,6 @@ (slime-complete-maybe-save-window-configuration) (slime-display-completion-list completion-set) (slime-complete-delay-restoration))))))) - -(defun slime-display-completion-list (completion-list) - (with-output-to-temp-buffer "*Completions*" - (display-completion-list completion-set) - (with-current-buffer standard-output - (set-syntax-table lisp-mode-syntax-table)))) (defun* slime-simple-complete-symbol () "Complete the symbol at point. From heller at common-lisp.net Tue Apr 27 22:49:45 2004 From: heller at common-lisp.net (Helmut Eller) Date: Tue, 27 Apr 2004 18:49:45 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv11840 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Tue Apr 27 18:49:45 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.354 slime/ChangeLog:1.355 --- slime/ChangeLog:1.354 Tue Apr 27 17:24:28 2004 +++ slime/ChangeLog Tue Apr 27 18:49:45 2004 @@ -1,3 +1,17 @@ +2004-04-28 Helmut Eller + + * slime.el (slime-net-connect): Bind inhibit-quit to nil, so that + we have a chance to interrupt Emacs if open-network-stream blocks. + (slime-complete-maybe-restore-window-configuration): Keep trying + after slime-repl-indent-and-complete-symbol. + (slime-space): Don't close the completion buffer. We don't know + the window-config before the completion, so leave the buffer open. + + * swank.lisp (create-server): New keyword based variant to start + the server in background. + (setup-server): Add support to keep the socket open for + single-threaded Lisps. + 2004-04-27 Luke Gorrie * doc/slime.texi (Other configurables): Updated instructions on From woeshton at inbox.com.pk Wed Apr 28 09:46:20 2004 From: woeshton at inbox.com.pk (Kasey Redmond) Date: Wed, 28 Apr 2004 04:46:20 -0500 Subject: [slime-cvs] Your EQUITY NEWS UPDATE For Wed, 28 Apr 2004 04:46:20 -0500 Message-ID: Subscriber 494866 Here is your EQUITY NEWS UPDATE - http://biz.yahoo.com/bw/040427/275287_1.html Any questions, call me--Kasey Redmond If you got this by mistake, please inform us at celenamattoon at runbox.com From gjcpnycxogtw at yahoo.com Wed Apr 28 12:45:13 2004 From: gjcpnycxogtw at yahoo.com (Bradford Thompson) Date: Wed, 28 Apr 2004 05:45:13 -0700 Subject: [slime-cvs] Ambien Sleeping Pills - U.S. Pharmacy Message-ID: An HTML attachment was scrubbed... URL: From shiorir at loveforlostcats.com Wed Apr 28 17:10:10 2004 From: shiorir at loveforlostcats.com (Kirk Blackman) Date: Wed, 28 Apr 2004 12:10:10 -0500 Subject: [slime-cvs] Here's that Stock Tech Analysis site I told you about - Very Bullish - Wed, 28 Apr 2004 12:10:10 -0500 Message-ID: Wed, 28 Apr 2004 12:10:10 -0500 Hey man, Here is that Stock Technical Analysis site. http://www.stockta.com/cgi-bin/analysis.pl?symb=QIIIF&num1=567&cobrand=&mode=stock Overall--Bullish Short--Bullish Intermediate--Bullish Long--Bullish Recent CandleStick Analysis---Very Bullish Let me know how you do--Kirk Blackman From lgorrie at common-lisp.net Wed Apr 28 16:45:04 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 28 Apr 2004 12:45:04 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv27629 Modified Files: slime.el Log Message: (slime-log-event): Use outline-minor-mode in *slime-events* instead of hideshow-mode. It's more reliable. (Patch from Lawrence Mitchell.) Date: Wed Apr 28 12:45:02 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.281 slime/slime.el:1.282 --- slime/slime.el:1.281 Tue Apr 27 18:35:24 2004 +++ slime/slime.el Wed Apr 28 12:45:01 2004 @@ -1660,22 +1660,18 @@ (goto-char (point-max)) (save-excursion (pp event (current-buffer))) - (when hs-minor-mode - (hs-hide-block-at-point)) + (when outline-minor-mode + (hide-entry)) (goto-char (point-max))))) (defun slime-events-buffer () (or (get-buffer "*slime-events*") (let ((buffer (get-buffer-create "*slime-events*"))) - ;; Using hideshow mode in XEmacs has caused obscure problems - ;; for some users. -luke (24/Apr/2004) - (unless (featurep 'xemacs) - (with-current-buffer buffer - (set (make-local-variable 'hs-block-start-regexp) "^(") - (set (make-local-variable 'comment-start) ";") - (set (make-local-variable 'comment-end) "") - (unless (featurep 'xemacs) - (hs-minor-mode)))) + (with-current-buffer buffer + (set (make-local-variable 'outline-regexp) "^(") + (set (make-local-variable 'comment-start) ";") + (set (make-local-variable 'comment-end) "") + (outline-minor-mode)) buffer))) From lgorrie at common-lisp.net Wed Apr 28 16:46:26 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 28 Apr 2004 12:46:26 -0400 Subject: [slime-cvs] CVS update: slime/NEWS Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv2977 Added Files: NEWS Log Message: Date: Wed Apr 28 12:46:26 2004 Author: lgorrie From lgorrie at common-lisp.net Wed Apr 28 17:07:27 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Wed, 28 Apr 2004 13:07:27 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv4803 Modified Files: ChangeLog Log Message: Date: Wed Apr 28 13:07:27 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.355 slime/ChangeLog:1.356 --- slime/ChangeLog:1.355 Tue Apr 27 18:49:45 2004 +++ slime/ChangeLog Wed Apr 28 13:07:27 2004 @@ -1,3 +1,12 @@ +2004-04-28 Luke Gorrie + + * NEWS: Created a NEWS file for recording changes that we want + users to read about. + + * slime.el (slime-log-event): Use outline-minor-mode in + *slime-events* instead of hideshow-mode. It's more + reliable. (Patch from Lawrence Mitchell.) + 2004-04-28 Helmut Eller * slime.el (slime-net-connect): Bind inhibit-quit to nil, so that @@ -25,7 +34,7 @@ (slime-oneway-eval): Removed unused function. * swank.lisp (oneway-eval-string): Removed unused function. - + 2004-04-26 Luke Gorrie * swank.lisp: Move definition of `with-io-redirection' above From heller at common-lisp.net Wed Apr 28 22:18:07 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Apr 2004 18:18:07 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv7775 Modified Files: swank.lisp Log Message: (arglist-for-insertion): Don't use ~< ..~:@>. CLISP's pretty printer can't handle it. Date: Wed Apr 28 18:18:07 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.178 slime/swank.lisp:1.179 --- slime/swank.lisp:1.178 Tue Apr 27 18:27:27 2004 +++ slime/swank.lisp Wed Apr 28 18:18:06 2004 @@ -233,7 +233,7 @@ (let* ((socket (create-socket *loopback-interface* port)) (port (local-port socket))) (funcall announce-fn port) - (case style + (ecase style (:spawn (spawn (lambda () (loop do (serve-connection socket :spawn dont-close) @@ -878,7 +878,7 @@ ((member :not-available) " ") (list - (format nil "~(~<~{~^ ~A~}~@:>~))" (list arglist)))))) + (format nil "~{~^ ~A~})" (list arglist)))))) (t " "))) From heller at common-lisp.net Wed Apr 28 22:19:14 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Apr 2004 18:19:14 -0400 Subject: [slime-cvs] CVS update: slime/swank-clisp.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv17536 Modified Files: swank-clisp.lisp Log Message: (arglist): Trap exceptions and :not-available in that case. Date: Wed Apr 28 18:19:14 2004 Author: heller Index: slime/swank-clisp.lisp diff -u slime/swank-clisp.lisp:1.29 slime/swank-clisp.lisp:1.30 --- slime/swank-clisp.lisp:1.29 Tue Apr 6 06:42:53 2004 +++ slime/swank-clisp.lisp Wed Apr 28 18:19:14 2004 @@ -90,7 +90,9 @@ ;;; Swank functions (defimplementation arglist (fname) - (ext:arglist fname)) + (block nil + (or (ignore-errors (return (ext:arglist fname))) + :not-available))) (defimplementation macroexpand-all (form) (ext:expand-form form)) @@ -148,35 +150,34 @@ (defvar *sldb-source*) (defvar *sldb-debugmode* 4) +(defun frame-down (frame) + (sys::frame-down-1 frame sys::*debug-mode*)) + +(defun frame-up (frame) + (sys::frame-up-1 frame sys::*debug-mode*)) + (defimplementation call-with-debugging-environment (debugger-loop-fn) (let* ((sys::*break-count* (1+ sys::*break-count*)) (sys::*driver* debugger-loop-fn) (sys::*fasoutput-stream* nil) -;;; (sys::*frame-limit1* (sys::frame-limit1 43)) (sys::*frame-limit1* (sys::frame-limit1 0)) -;;; (sys::*frame-limit2* (sys::frame-limit2)) + (sys::*frame-limit2* (sys::frame-limit2)) (sys::*debug-mode* *sldb-debugmode*) - (*sldb-topframe* - (sys::frame-down-1 - (sys::frame-up-1 sys::*frame-limit1* sys::*debug-mode*) - sys::*debug-mode*)) - (*sldb-botframe* (sys::frame-up *sldb-topframe* sys::*debug-mode*))) + (*sldb-topframe* sys::*frame-limit1*)) (funcall debugger-loop-fn))) (defun nth-frame (index) - (loop for frame = *sldb-topframe* then (sys::frame-up-1 frame - sys::*debug-mode*) + (loop for frame = *sldb-topframe* then (frame-up frame) repeat index - never (eq frame *sldb-botframe*) finally (return frame))) (defimplementation compute-backtrace (start end) (let ((end (or end most-positive-fixnum))) - (loop for f = (nth-frame start) - then (sys::frame-up-1 f sys::*debug-mode*) + (loop for last = nil then frame + for frame = (nth-frame start) then (frame-up frame) for i from start below end - until (eq f *sldb-botframe*) - collect f))) + until (or (eq frame last) (system::driver-frame-p frame)) + collect frame))) (defimplementation print-frame (frame stream) (write-string (string-left-trim '(#\Newline) From heller at common-lisp.net Wed Apr 28 22:21:10 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Apr 2004 18:21:10 -0400 Subject: [slime-cvs] CVS update: slime/swank-loader.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv27396 Modified Files: swank-loader.lisp Log Message: (*lisp-name*): Add versioning support for CLISP. Date: Wed Apr 28 18:21:10 2004 Author: heller Index: slime/swank-loader.lisp diff -u slime/swank-loader.lisp:1.22 slime/swank-loader.lisp:1.23 --- slime/swank-loader.lisp:1.22 Mon Apr 26 09:20:26 2004 +++ slime/swank-loader.lisp Wed Apr 28 18:21:10 2004 @@ -45,7 +45,8 @@ #+openmcl "openmcl" #+lispworks "lispworks" #+allegro "allegro" - #+clisp "clisp" + #+clisp (format nil "clisp-~A" (let ((s (lisp-implementation-version))) + (subseq s 0 (position #\space s)))) ) (defparameter *swank-pathname* (make-swank-pathname "swank")) From heller at common-lisp.net Wed Apr 28 22:25:06 2004 From: heller at common-lisp.net (Helmut Eller) Date: Wed, 28 Apr 2004 18:25:06 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv14240 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Wed Apr 28 18:25:06 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.356 slime/ChangeLog:1.357 --- slime/ChangeLog:1.356 Wed Apr 28 13:07:27 2004 +++ slime/ChangeLog Wed Apr 28 18:25:05 2004 @@ -1,3 +1,14 @@ +2004-04-28 Helmut Eller + + * swank-loader.lisp (*lisp-name*): Add versioning support for + CLISP. + + * swank-clisp.lisp (arglist): Trap exceptions and return + :not-available in that case. + + * swank.lisp (arglist-for-insertion): Don't use ~< ..~:@>. + CLISP's pretty printer can't handle it. + 2004-04-28 Luke Gorrie * NEWS: Created a NEWS file for recording changes that we want From tonydurso at pokemates.com Thu Apr 29 15:49:56 2004 From: tonydurso at pokemates.com (Eloy Barlow) Date: Thu, 29 Apr 2004 10:49:56 -0500 Subject: [slime-cvs] Here's that Stock Tech Analysis site I told you about - Very Bullish - Thu, 29 Apr 2004 10:49:56 -0500 Message-ID: Thu, 29 Apr 2004 10:49:56 -0500 Here is that Stock-Market Technical Analysis site we discussed about that Smart Card Stock. http://www.stockta.com/cgi-bin/analysis.pl?symb=QIIIF&num1=567&cobrand=&mode=stock According to them, it reads BULLISH for the long term, and the candlestick reads VERY BULLISH, a Homing Pigeon. They are usually right on the mark. Also, here is the interview with their CEO. http://www.macreport.net/ram_meta_files/QIIIF.asx Let me know how you do--Eloy Barlow P.S. Here are some good links with info on Smart Card Technology: 1) Here is a good article on Smart Cards by Prof. Simon Rogerson - http://www.ccsr.cse.dmu.ac.uk/resources/general/ethicol/Ecv8no1.print.html 2) The Department of Defense and Smart Cards: http://www.fcw.com/fcw/articles/2004/0405/pol-cac-04-05-04.asp 3) New developments in Smart Card Technology: http://www.hammersmithresearch.com/specialty/article.asp?Specialty=Primary&art_id=142 4) Smart Card Technology: http://www.austlii.edu.au/au/other/CyberLRes/1995/smart/2.html 5) CardTechnology.com - http://www.cardtechnology.com From heller at common-lisp.net Thu Apr 29 19:05:29 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 29 Apr 2004 15:05:29 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv15584 Modified Files: swank.lisp Log Message: (thread-for-evaluation, dispatch-event): Accept :repl-thread as thread specifier and dispatch evaluation and interrupt request properly. (repl-thread-eval, repl-eval): Deleted. We do the special casing in thread-for-evaluation. Date: Thu Apr 29 15:05:29 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.179 slime/swank.lisp:1.180 --- slime/swank.lisp:1.179 Wed Apr 28 18:18:06 2004 +++ slime/swank.lisp Thu Apr 29 15:05:28 2004 @@ -365,6 +365,15 @@ `(handler-case (progn , at body) (slime-read-error (e) (close-connection ,connection e)))) +(defun simple-break () + (with-simple-restart (continue "Continue from interrupt.") + (let ((*debugger-hook* #'swank-debugger-hook)) + (invoke-debugger + (make-condition 'simple-error + :format-control "Interrupt from Emacs"))))) + +;;;;;; Thread based communication + (defun read-loop (control-thread input-stream connection) (with-reader-error-handler (connection) (loop (send control-thread (decode-message input-stream))))) @@ -426,29 +435,32 @@ (loop (with-simple-restart (abort "Restart dispatch loop.") (loop (dispatch-event (receive) socket-io)))))) -(defun simple-break () - (with-simple-restart (continue "Continue from interrupt.") - (let ((*debugger-hook* #'swank-debugger-hook)) - (invoke-debugger - (make-condition 'simple-error - :format-control "Interrupt from Emacs"))))) - (defun interrupt-worker-thread (thread) (let ((thread (etypecase thread - ((member t) (cdr (car *active-threads*))) - (fixnum (lookup-thread-id thread))))) + ((member t) + (cdr (car *active-threads*))) + ((member :repl-thread) + (connection.repl-thread *emacs-connection*)) + (fixnum + (lookup-thread-id thread))))) (interrupt-thread thread #'simple-break))) +(defun thread-for-evaluation (thread) + "Find or create a thread to evaluate the next request." + (let ((c *emacs-connection*)) + (etypecase thread + ((member t) + (spawn (lambda () (handle-request c)) :name "worker")) + ((member :repl-thread) + (connection.repl-thread c)) + (fixnum + (lookup-thread-id thread))))) + (defun dispatch-event (event socket-io) (log-event "DISPATCHING: ~S~%" event) (destructure-case event ((:emacs-rex form package thread id) - (let ((thread (etypecase thread - ((member t) - (let ((c *emacs-connection*)) - (spawn (lambda () (handle-request c)) - :name "worker"))) - (fixnum (lookup-thread-id thread))))) + (let ((thread (thread-for-evaluation thread))) (send thread `(eval-for-emacs ,form ,package ,id)) (add-thread thread))) ((:emacs-interrupt thread) @@ -472,57 +484,24 @@ (encode-message event socket-io)))) (defun spawn-threads-for-connection (connection) - (let ((socket-io (connection.socket-io connection))) - (let ((control-thread (spawn (lambda () - (dispatch-loop socket-io connection)) - :name "control-thread"))) - (setf (connection.control-thread connection) control-thread) - (let ((reader-thread (spawn (lambda () - (read-loop control-thread socket-io - connection)) - :name "reader-thread"))) - (setf (connection.reader-thread connection) reader-thread) - (setf (connection.repl-thread connection) - (spawn (lambda () (repl-loop connection)))) - connection)))) + (let* ((socket-io (connection.socket-io connection)) + (control-thread (spawn (lambda () + (dispatch-loop socket-io connection)) + :name "control-thread"))) + (setf (connection.control-thread connection) control-thread) + (let ((reader-thread (spawn (lambda () + (read-loop control-thread socket-io + connection)) + :name "reader-thread")) + (repl-thread (spawn (lambda () (repl-loop connection)) + :name "repl-thread"))) + (setf (connection.reader-thread connection) reader-thread) + (setf (connection.repl-thread connection) repl-thread) + connection))) (defun repl-loop (connection) (with-connection (connection) - (loop do (funcall (receive))))) - -(defun initialize-streams-for-connection (connection) - (multiple-value-bind (dedicated in out io) (open-streams connection) - (setf (connection.dedicated-output connection) dedicated - (connection.user-io connection) io - (connection.user-output connection) out - (connection.user-input connection) in) - connection)) - -(defun create-connection (socket-io style) - (initialize-streams-for-connection - (ecase style - (:spawn - (make-connection :socket-io socket-io - :read #'read-from-control-thread - :send #'send-to-control-thread - :serve-requests #'spawn-threads-for-connection)) - (:sigio - (make-connection :socket-io socket-io - :read #'read-from-socket-io - :send #'send-to-socket-io - :serve-requests #'install-sigio-handler - :cleanup #'deinstall-sigio-handler)) - (:fd-handler - (make-connection :socket-io socket-io - :read #'read-from-socket-io - :send #'send-to-socket-io - :serve-requests #'install-fd-handler - :cleanup #'deinstall-fd-handler)) - ((nil) - (make-connection :socket-io socket-io - :read #'read-from-socket-io - :send #'send-to-socket-io - :serve-requests #'simple-serve-requests))))) + (loop (handle-request connection)))) (defun process-available-input (stream fn) (loop while (and (open-stream-p stream) @@ -611,6 +590,40 @@ (declare (ignore _)) (send event))))) +(defun initialize-streams-for-connection (connection) + (multiple-value-bind (dedicated in out io) (open-streams connection) + (setf (connection.dedicated-output connection) dedicated + (connection.user-io connection) io + (connection.user-output connection) out + (connection.user-input connection) in) + connection)) + +(defun create-connection (socket-io style) + (initialize-streams-for-connection + (ecase style + (:spawn + (make-connection :socket-io socket-io + :read #'read-from-control-thread + :send #'send-to-control-thread + :serve-requests #'spawn-threads-for-connection)) + (:sigio + (make-connection :socket-io socket-io + :read #'read-from-socket-io + :send #'send-to-socket-io + :serve-requests #'install-sigio-handler + :cleanup #'deinstall-sigio-handler)) + (:fd-handler + (make-connection :socket-io socket-io + :read #'read-from-socket-io + :send #'send-to-socket-io + :serve-requests #'install-fd-handler + :cleanup #'deinstall-fd-handler)) + ((nil) + (make-connection :socket-io socket-io + :read #'read-from-socket-io + :send #'send-to-socket-io + :serve-requests #'simple-serve-requests))))) + ;;;; IO to Emacs ;;; @@ -1201,30 +1214,6 @@ (list (package-name p) (shortest-package-nickname p)))) (defslimefun listener-eval (string) - (if (connection.repl-thread *emacs-connection*) - (repl-thread-eval string) - (repl-eval string))) - -(defun repl-thread-eval (string) - "Evaluate STRING using REPL-EVAL in the REPL thread." - ;; XXX Perhaps we should somehow formalize the set of "important" - ;; specials which are here being passed to the other thread? -luke (26/Apr/2004) - (let ((self (current-thread)) - (connection *emacs-connection*) - (package *package*) - (buffer-package *buffer-package*)) - (send (connection.repl-thread connection) - (lambda () - (with-connection (connection) - (let ((*buffer-package* buffer-package) - (*package* package)) - (restart-case (send self (repl-eval string)) - (abort () - :report "Abort REPL evaluation" - (send self "; Aborted"))))))) - (receive))) - -(defun repl-eval (string) (clear-user-input) (multiple-value-bind (values last-form) (eval-region string t) (setq +++ ++ ++ + + last-form From heller at common-lisp.net Thu Apr 29 19:07:43 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 29 Apr 2004 15:07:43 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv32448 Modified Files: slime.el Log Message: (slime-repl-mode): Set slime-current-thread to :repl-thread. Date: Thu Apr 29 15:07:43 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.282 slime/slime.el:1.283 --- slime/slime.el:1.282 Wed Apr 28 12:45:01 2004 +++ slime/slime.el Thu Apr 29 15:07:42 2004 @@ -1514,7 +1514,10 @@ (make-variable-buffer-local (defvar slime-current-thread t - "The id of the current thread on the Lisp side. t don't care.")) + "The id of the current thread on the Lisp side. +t means the \"current\" thread +:repl-thread the thread to execute repl requests +fixnum a specific thread.")) (defun slime-dispatch-event (event &optional process) (let ((slime-dispatching-connection (or process (slime-connection)))) @@ -2018,6 +2021,7 @@ 'common-lisp-indent-function) (setq font-lock-defaults nil) (setq mode-name "REPL") + (setq slime-current-thread :repl-thread) ;;(set (make-local-variable 'scroll-conservatively) 20) ;;(set (make-local-variable 'scroll-margin) 0) (slime-setup-command-hooks) From heller at common-lisp.net Thu Apr 29 19:16:04 2004 From: heller at common-lisp.net (Helmut Eller) Date: Thu, 29 Apr 2004 15:16:04 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv13540 Modified Files: slime.el Log Message: Patch from Lars Magne Ingebrigtsen: (slime-event-buffer-name): New variable. (slime-events-buffer): Use it. (slime-space-information-p): Ditto. (slime-space): Use it. (slime-reply-update-banner-p): Ditto. (slime-repl-update-banner): Use it. Date: Thu Apr 29 15:16:04 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.283 slime/slime.el:1.284 --- slime/slime.el:1.283 Thu Apr 29 15:07:42 2004 +++ slime/slime.el Thu Apr 29 15:16:04 2004 @@ -114,6 +114,15 @@ "Function to use for translating Lisp filenames to Emacs filenames. See also `slime-translate-to-lisp-filename-function'.") +(defvar slime-event-buffer-name "*slime-events*" + "The name of the Slime event buffer.") + +(defvar slime-space-information-p t + "Whether the SPC key should offer information or not.") + +(defvar slime-reply-update-banner-p t + "Whether Slime should keep a repl banner updated or not.") + ;;; Customize group @@ -1668,8 +1677,8 @@ (goto-char (point-max))))) (defun slime-events-buffer () - (or (get-buffer "*slime-events*") - (let ((buffer (get-buffer-create "*slime-events*"))) + (or (get-buffer slime-event-buffer-name) + (let ((buffer (get-buffer-create slime-event-buffer-name))) (with-current-buffer buffer (set (make-local-variable 'outline-regexp) "^(") (set (make-local-variable 'comment-start) ";") @@ -1824,7 +1833,8 @@ (expand-file-name default-directory)))) ;; Emacs21 has the fancy persistent header-line. (cond ((boundp 'header-line-format) - (setq header-line-format banner) + (when slime-reply-update-banner-p + (setq header-line-format banner)) (pop-to-buffer (current-buffer)) (when (fboundp 'animate-string) ;; and dancing text @@ -1833,7 +1843,10 @@ 0 0))) (slime-repl-insert-prompt "")) (t - (slime-repl-insert-prompt (concat "; " banner)) + (slime-repl-insert-prompt + (if slime-reply-update-banner-p + (concat "; " banner) + "")) (pop-to-buffer (current-buffer)))))) (defun slime-init-output-buffer (connection) @@ -3251,7 +3264,8 @@ more than one space." (interactive "p") (self-insert-command n) - (when (and (slime-connected-p) + (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)) @@ -5413,7 +5427,7 @@ (def-slime-selector-method ?v "the *slime-events* buffer." - "*slime-events*") + slime-event-buffer-name) (def-slime-selector-method ?l "the most recently visited lisp-mode buffer." @@ -6004,7 +6018,8 @@ "Kill all the slime related buffers. This is only used by the repl command sayoonara." (dolist (buf (buffer-list)) - (when (or (member (buffer-name buf) '("*inferior-lisp*" "*slime-events*")) + (when (or (member (buffer-name buf) '("*inferior-lisp*" + slime-event-buffer-name)) (string-match "\*slime-repl\[\d+\]\*" (buffer-name buf)) (string-match "\*sldb .*\*" (buffer-name buf))) (kill-buffer buf)))) From charlasytsma at fourstarmary.co.uk Fri Apr 30 07:27:14 2004 From: charlasytsma at fourstarmary.co.uk (Harold Witherspoon) Date: Fri, 30 Apr 2004 02:27:14 -0500 Subject: [slime-cvs] VOLUME SPIKE - Technology-Stock trading 460% above 52-week low, Fri, 30 Apr 2004 02:27:14 -0500 Message-ID: Fri, 30 Apr 2004 02:27:14 -0500 QIIIF: Volume Spike; 78% > 20-adsv, Stock +5.00% This is the 1st VOLUME alert for QIIIF in the past 7 calendar days. QIIIF is currently trading 460.00% above its 52-week low of 0.075 from June 12, 2003. Trading for QI Systems Inc (OTCBB: QIIIF) has been heavier than usual. By 13:55 ET, the stock had already traded 86,100 shares via 29 trades. The cumulative volume is 78.04% above its 20-day average of 48,359. Normally the stock experiences around 9 individual trades per session. So far, today's volume surge has caused a net rise in QIIIF's stock price. At the time of this alert, the stock was trading at 0.420, up 0.020 (+5.00%). One year ago, the Company's shares closed at 0.240. The price has gained more than 75 percent since then. Over the last 10 trading session QIIIF has traded in a range between 0.330 and 0.480 and is currently trading 16.00% below its 52-week high of 0.500 set on September 26, 2003 and 460.00% above its 52-week low of 0.075 from June 12, 2003. More info on QIIIF - http://otcbb.com/asp/quotes.asp?Quotes=qiiif No more advertisements: olivestasik at modomail.com StockTrend Update is an independent research firm. This report is based on StockTrend Update's independent analysis but also relies on information supplied by sources believed to be reliable. This report may not be the opinion of QIIIF management. StockTrend Update has also been retained to research and issue reports on QIIIF. Micro Electronic Ticker may from time to time purchase or sell QIIIF common shares in the open market without notice. The information contained in this report shall not constitute, an offer to sell or solicitation of any offer to purchase any security. It is intended for information only. Some statements may contain so-called "forward-looking statements". Many factors could cause actual results to differ. Investors should consult with their Investment Advisor concerning QIIIF. Copyright 2004 ? StockTrend Update Ltd. Nors S.A., Apartado 0832-0588, Calle 53 Marbella, Panama City, Panama. All Rights Reserved. StockTrend Update was paid two thousand dollars to distribute this report. homage poach tyburn bumble cardiology avowal weary butyric atavistic byroad lars comatose appropriable briar irrational quint bed crock ride avocado daphne sweeney agricola caracas sunken midshipman loiter nina quantity amherst babysitter catchup absent anticipate courtroom plaster bespoke baton recipe podge november erratum gatlinburg control clogging fantastic abstruse gusty cyril agree tacitus compassionate octal donovan teresa arachne teal xerox method upstart cannon usurpation slater soldiery virile From heller at common-lisp.net Fri Apr 30 06:32:24 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Apr 2004 02:32:24 -0400 Subject: [slime-cvs] CVS update: slime/swank-lispworks.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv22432 Modified Files: swank-lispworks.lisp Log Message: (emacs-connected): Add methods to stream-soft-force-output for socket-streams and slime-output-streams. Date: Fri Apr 30 02:32:24 2004 Author: heller Index: slime/swank-lispworks.lisp diff -u slime/swank-lispworks.lisp:1.39 slime/swank-lispworks.lisp:1.40 --- slime/swank-lispworks.lisp:1.39 Sun Apr 25 02:37:05 2004 +++ slime/swank-lispworks.lisp Fri Apr 30 02:32:24 2004 @@ -67,12 +67,16 @@ (defimplementation emacs-connected () (set-sigint-handler) (let ((lw:*handle-warn-on-redefinition* :warn)) + (defmethod stream:stream-soft-force-output ((o comm:socket-stream)) + (force-output o)) + (defmethod stream:stream-soft-force-output ((o slime-output-stream)) + (force-output o)) (defmethod env-internals:environment-display-notifier (env &key restarts condition) + (declare (ignore restarts)) (funcall (find-symbol (string :swank-debugger-hook) :swank) condition *debugger-hook*)))) - ;;; Unix signals (defun sigint-handler () @@ -96,6 +100,8 @@ (defimplementation set-default-directory (directory) (namestring (hcl:change-directory directory))) + +;;;; Documentation (defimplementation arglist (symbol) (let ((arglist (lw:function-lambda-list symbol))) From heller at common-lisp.net Fri Apr 30 06:34:04 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Apr 2004 02:34:04 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv3392 Modified Files: swank.lisp Log Message: (symbol-indentation): Don't infer indentation for symbols starting with 'def' or 'with-' it's wrong most of the time and Emacs' defaults are better. Date: Fri Apr 30 02:34:04 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.180 slime/swank.lisp:1.181 --- slime/swank.lisp:1.180 Thu Apr 29 15:05:28 2004 +++ slime/swank.lisp Fri Apr 30 02:34:03 2004 @@ -1652,7 +1652,10 @@ "Return a form describing the indentation of SYMBOL. The form is to be used as the `common-lisp-indent-function' property in Emacs." - (if (macro-function symbol) + (if (and (macro-function symbol) + (let ((s (symbol-name 'defmethod))) + (not (or (search "DEF" s :end2 (min (length s) 3)) + (search "WITH-" s :end2 (min (length s) 5)))))) (let ((arglist (arglist symbol))) (etypecase arglist ((member :not-available) From heller at common-lisp.net Fri Apr 30 06:37:09 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Apr 2004 02:37:09 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv3392 Modified Files: slime.el Log Message: (slime-repl-update-banner): Don't print the working directory. It rarely fits in a line and was only Emacs' default-directory. M-x pwd is convenient enough. Date: Fri Apr 30 02:37:08 2004 Author: heller Index: slime/slime.el diff -u slime/slime.el:1.284 slime/slime.el:1.285 --- slime/slime.el:1.284 Thu Apr 29 15:16:04 2004 +++ slime/slime.el Fri Apr 30 02:37:08 2004 @@ -1824,13 +1824,12 @@ (current-buffer))))) (defun slime-repl-update-banner () - (let ((banner (format "%s Port: %s Pid: %s Pwd: %s" + (let ((banner (format "%s Port: %s Pid: %s" (slime-lisp-implementation-type) (if (featurep 'xemacs) (process-id (slime-connection)) (process-contact (slime-connection))) - (slime-pid) - (expand-file-name default-directory)))) + (slime-pid)))) ;; Emacs21 has the fancy persistent header-line. (cond ((boundp 'header-line-format) (when slime-reply-update-banner-p From heller at common-lisp.net Fri Apr 30 06:40:17 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Apr 2004 02:40:17 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv30086 Modified Files: ChangeLog Log Message: *** empty log message *** Date: Fri Apr 30 02:40:17 2004 Author: heller Index: slime/ChangeLog diff -u slime/ChangeLog:1.357 slime/ChangeLog:1.358 --- slime/ChangeLog:1.357 Wed Apr 28 18:25:05 2004 +++ slime/ChangeLog Fri Apr 30 02:40:17 2004 @@ -1,3 +1,38 @@ +2004-04-30 Helmut Eller + + * slime.el (slime-repl-update-banner): Don't print the working + directory. It rarely fits in a line and was only Emacs' + default-directory. M-x pwd is convenient enough. + + * swank.lisp (symbol-indentation): Don't infer indentation for + symbols starting with 'def' or 'with-'. It was wrong most of the + time and Emacs' defaults are better. + + * swank-lispworks.lisp (emacs-connected): Add methods to + stream-soft-force-output for socket-streams and + slime-output-streams. This flushes those streams automatically + (i assume it gets called when Lisp is idle). + +2004-04-29 Helmut Eller + + * slime.el (slime-repl-mode): Set slime-current-thread to + :repl-thread. + + * swank.lisp (thread-for-evaluation, dispatch-event): Accept + :repl-thread as thread specifier and dispatch evaluation and + interrupt request properly. + (repl-thread-eval, repl-eval): Deleted. We do the special casing in + thread-for-evaluation. + +2004-04-29 Lars Magne Ingebrigtsen + + * slime.el (slime-event-buffer-name): New variable. + (slime-events-buffer): Use it. + (slime-space-information-p): Ditto. + (slime-space): Use it. + (slime-reply-update-banner-p): Ditto. + (slime-repl-update-banner): Use it. + 2004-04-28 Helmut Eller * swank-loader.lisp (*lisp-name*): Add versioning support for From heller at common-lisp.net Fri Apr 30 07:28:23 2004 From: heller at common-lisp.net (Helmut Eller) Date: Fri, 30 Apr 2004 03:28:23 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv28459 Modified Files: swank.lisp Log Message: (symbol-indentation): Oops. Consider symbols other then 'defmethod' and use prefix-match-p. Date: Fri Apr 30 03:28:23 2004 Author: heller Index: slime/swank.lisp diff -u slime/swank.lisp:1.181 slime/swank.lisp:1.182 --- slime/swank.lisp:1.181 Fri Apr 30 02:34:03 2004 +++ slime/swank.lisp Fri Apr 30 03:28:23 2004 @@ -1653,9 +1653,9 @@ The form is to be used as the `common-lisp-indent-function' property in Emacs." (if (and (macro-function symbol) - (let ((s (symbol-name 'defmethod))) - (not (or (search "DEF" s :end2 (min (length s) 3)) - (search "WITH-" s :end2 (min (length s) 5)))))) + (let ((name (symbol-name symbol))) + (not (or (prefix-match-p "DEF" name) + (prefix-match-p "WITH-" name))))) (let ((arglist (arglist symbol))) (etypecase arglist ((member :not-available) From lgorrie at common-lisp.net Fri Apr 30 23:16:29 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 30 Apr 2004 19:16:29 -0400 Subject: [slime-cvs] CVS update: slime/swank-openmcl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv27673 Modified Files: swank-openmcl.lisp Log Message: Removed obsolete `swank-compile-system'. Date: Fri Apr 30 19:16:29 2004 Author: lgorrie Index: slime/swank-openmcl.lisp diff -u slime/swank-openmcl.lisp:1.72 slime/swank-openmcl.lisp:1.73 --- slime/swank-openmcl.lisp:1.72 Tue Apr 6 06:42:53 2004 +++ slime/swank-openmcl.lisp Fri Apr 30 19:16:28 2004 @@ -202,16 +202,6 @@ (*buffer-offset* nil)) (compile-file filename :load load-p)))) -(defimplementation swank-compile-system (system-name) - (with-compilation-hooks () - (let ((*buffer-name* nil) - (*buffer-offset* nil)) - (let ((oos (find-symbol (string :oos) :asdf)) - (load-op (find-symbol (string :load-op) :asdf))) - (cond ((and oos load-op) - (funcall oos load-op system-name)) - (t (error "ASDF not loaded"))))))) - (defimplementation swank-compile-string (string &key buffer position) (with-compilation-hooks () (let ((*buffer-name* buffer) From lgorrie at common-lisp.net Fri Apr 30 23:19:50 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 30 Apr 2004 19:19:50 -0400 Subject: [slime-cvs] CVS update: slime/swank-sbcl.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv20026 Modified Files: swank-sbcl.lisp Log Message: Removed obsolete `swank-compile-system'. Removed some stale comments about supported features. Date: Fri Apr 30 19:19:50 2004 Author: lgorrie Index: slime/swank-sbcl.lisp diff -u slime/swank-sbcl.lisp:1.83 slime/swank-sbcl.lisp:1.84 --- slime/swank-sbcl.lisp:1.83 Tue Apr 6 06:42:53 2004 +++ slime/swank-sbcl.lisp Fri Apr 30 19:19:50 2004 @@ -10,29 +10,6 @@ ;;; This is a Slime backend for SBCL. Requires SBCL 0.8.5 or later ;;; for the SB-INTROSPECT contrib -;;; Cursory testing has found that the following appear to work -;;; -;;; * Symbol completion. -;;; * Evaluation of forms with C-M-x -;;; * Apropos -;;; * Compilation of defuns with C-c C-c -;;; * File compilation with C-c C-k, apparently including error parsing -;;; * Disassembling the symbol at point with C-c M-d -;;; * Describing symbol at point with C-c C-d -;;; * Macroexpanding with C-c RET -;;; * find-definition, using sb-introspect -;;; * Basic debugger stuff: restarts, backtrace, toggle details -;;; * Can now interrupt a busy sbcl with C-c C-g -;;; * Most of the tests -;;; -;;; Things that aren't done/don't work yet: -;;; -;;; * Cross-referencing (nor is it likely, absent XREF port to SBCL) -;;; * testsuite can't find LOOP, reports bogus failure on some arglist lookups -;;; * eval-in-frame -;;; * A slime command to load an asdf system. Note that this might involve -;;; compiling/loading files that Emacs has no buffers for -;;; * Dealing with multiple threads ;;; Administrivia @@ -279,10 +256,6 @@ (let ((fasl-file (compile-file filename))) (when (and load-p fasl-file) (load fasl-file))))) - -(defimplementation swank-compile-system (system-name) - (with-compilation-hooks () - (asdf:operate 'asdf:load-op system-name))) (defimplementation swank-compile-string (string &key buffer position) (with-compilation-hooks () From lgorrie at common-lisp.net Fri Apr 30 23:20:08 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 30 Apr 2004 19:20:08 -0400 Subject: [slime-cvs] CVS update: slime/swank.lisp Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv9984 Modified Files: swank.lisp Log Message: (list-all-systems-in-central-registry): Use explicit :wild in pathname for matching (needed in at least SBCL). Date: Fri Apr 30 19:20:06 2004 Author: lgorrie Index: slime/swank.lisp diff -u slime/swank.lisp:1.182 slime/swank.lisp:1.183 --- slime/swank.lisp:1.182 Fri Apr 30 03:28:23 2004 +++ slime/swank.lisp Fri Apr 30 19:20:05 2004 @@ -1321,6 +1321,7 @@ (make-pathname :defaults defaults :version :newest :type "asd" + :name :wild :case :local))))) ;;;; Macroexpansion From lgorrie at common-lisp.net Fri Apr 30 23:40:40 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 30 Apr 2004 19:40:40 -0400 Subject: [slime-cvs] CVS update: slime/slime.el Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv27650 Modified Files: slime.el Log Message: (sldb-abort): Print a message if the Emacs RPC returns. It shouldn't, if ABORT manages to unwind the stack, but it currently does in OpenMCL due to some bug. Date: Fri Apr 30 19:40:40 2004 Author: lgorrie Index: slime/slime.el diff -u slime/slime.el:1.285 slime/slime.el:1.286 --- slime/slime.el:1.285 Fri Apr 30 02:37:08 2004 +++ slime/slime.el Fri Apr 30 19:40:39 2004 @@ -5037,7 +5037,9 @@ (defun sldb-abort () "Invoke the \"abort\" restart." (interactive) - (slime-eval-async '(swank:sldb-abort) nil (lambda ()))) + (slime-eval-async '(swank:sldb-abort) + nil + (lambda (v) (message "Restart returned: %S" v)))) (defun sldb-invoke-restart (&optional number) "Invoke a restart. From lgorrie at common-lisp.net Fri Apr 30 23:43:24 2004 From: lgorrie at common-lisp.net (Luke Gorrie) Date: Fri, 30 Apr 2004 19:43:24 -0400 Subject: [slime-cvs] CVS update: slime/ChangeLog Message-ID: Update of /project/slime/cvsroot/slime In directory common-lisp.net:/tmp/cvs-serv8962 Modified Files: ChangeLog Log Message: Date: Fri Apr 30 19:43:24 2004 Author: lgorrie Index: slime/ChangeLog diff -u slime/ChangeLog:1.358 slime/ChangeLog:1.359 --- slime/ChangeLog:1.358 Fri Apr 30 02:40:17 2004 +++ slime/ChangeLog Fri Apr 30 19:43:23 2004 @@ -1,3 +1,17 @@ +2004-05-01 Luke Gorrie + + * slime.el (sldb-abort): Print a message if the Emacs RPC + returns. It shouldn't, if ABORT manages to unwind the stack, but + it currently does in OpenMCL due to some bug. + + * swank.lisp (list-all-systems-in-central-registry): Use explicit + :wild in pathname for matching (needed in at least SBCL). + + * swank-openmcl.lisp: Removed obsolete `swank-compile-system'. + + * swank-sbcl.lisp: Removed obsolete `swank-compile-system'. + Removed some stale comments about supported features. + 2004-04-30 Helmut Eller * slime.el (slime-repl-update-banner): Don't print the working