[slime-cvs] CVS slime
CVS User heller
heller at common-lisp.net
Thu Jul 2 14:14:26 UTC 2009
Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv8510
Modified Files:
ChangeLog slime.el swank.lisp
Log Message:
* swank.lisp (ed-in-emacs): Handle symbols/function-names better.
* slime.el (slime-ed): Updated accordingly.
--- /project/slime/cvsroot/slime/ChangeLog 2009/07/02 14:14:16 1.1803
+++ /project/slime/cvsroot/slime/ChangeLog 2009/07/02 14:14:26 1.1804
@@ -1,5 +1,10 @@
2009-07-02 Helmut Eller <heller at common-lisp.net>
+ * swank.lisp (ed-in-emacs): Handle symbols/function-names better.
+ * slime.el (slime-ed): Updated accordingly.
+
+2009-07-02 Helmut Eller <heller at common-lisp.net>
+
* swank.lisp (operator-arglist): Don't use pprint-fill
for people with wide screens.
--- /project/slime/cvsroot/slime/slime.el 2009/07/02 04:13:10 1.1194
+++ /project/slime/cvsroot/slime/slime.el 2009/07/02 14:14:26 1.1195
@@ -4055,40 +4055,24 @@
WHAT can be:
A filename (string),
- A list (FILENAME LINE [COLUMN]),
- A list (FILENAME :charpos CHARPOS),
- A function name (symbol or cons),
+ A list (:filename FILENAME &key LINE COLUMN POSITION),
+ A function name (:function-name STRING)
nil.
This is for use in the implementation of COMMON-LISP:ED."
- ;; Without `save-excursion' very strange things happen if you call
- ;; (swank:ed-in-emacs X) from the REPL. -luke (18/Jan/2004)
- (save-excursion
- (when slime-ed-use-dedicated-frame
- (unless (and slime-ed-frame (frame-live-p slime-ed-frame))
- (setq slime-ed-frame (make-frame)))
- (select-frame slime-ed-frame))
- (cond ((stringp what)
- (find-file (slime-from-lisp-filename what)))
- ((and (consp what) (stringp (first what)))
- (find-file (first (slime-from-lisp-filename what)))
- (cond
- ((eql (second what) :charpos)
- (goto-char (third what)))
- (t
- (goto-line (second what))
- ;; Find the correct column, without going past the end of
- ;; the line.
- (let ((col (third what)))
- (while (and col
- (< (point) (point-at-eol))
- (/= (decf col) -1))
- (forward-char 1))))))
- ((and what (symbolp what))
- (slime-edit-definition (symbol-name what)))
- ((consp what)
- (slime-edit-definition (prin1-to-string what)))
- (t nil)))) ; nothing in particular
+ (when slime-ed-use-dedicated-frame
+ (unless (and slime-ed-frame (frame-live-p slime-ed-frame))
+ (setq slime-ed-frame (make-frame)))
+ (select-frame slime-ed-frame))
+ (when what
+ (destructure-case what
+ ((:filename file &key line column position)
+ (find-file (slime-from-lisp-filename file))
+ (when line (goto-line line))
+ (when column (move-to-column column))
+ (when position (goto-char position)))
+ ((:function-name name)
+ (slime-edit-definition name)))))
(defun slime-y-or-n-p (thread tag question)
(slime-dispatch-event `(:emacs-return ,thread ,tag ,(y-or-n-p question))))
--- /project/slime/cvsroot/slime/swank.lisp 2009/07/02 14:14:16 1.653
+++ /project/slime/cvsroot/slime/swank.lisp 2009/07/02 14:14:26 1.654
@@ -2359,29 +2359,25 @@
WHAT can be:
A pathname or a string,
- A list (PATHNAME-OR-STRING LINE [COLUMN]),
+ A list (PATHNAME-OR-STRING &key LINE COLUMN POSITION),
A function name (symbol or cons),
- NIL.
-
-Returns true if it actually called emacs, or NIL if not."
- (flet ((pathname-or-string-p (thing)
- (or (pathnamep thing) (typep thing 'string)))
- (canonicalize-filename (filename)
+ NIL. "
+ (flet ((canonicalize-filename (filename)
(pathname-to-filename (or (probe-file filename) filename))))
- (let ((target
- (cond ((and (listp what) (pathname-or-string-p (first what)))
- (cons (canonicalize-filename (car what)) (cdr what)))
- ((pathname-or-string-p what)
- (canonicalize-filename what))
- ((symbolp what) what)
- ((consp what) what)
- (t (return-from ed-in-emacs nil)))))
- (cond
- (*emacs-connection* (send-oob-to-emacs `(:ed ,target)))
- ((default-connection)
- (with-connection ((default-connection))
- (send-oob-to-emacs `(:ed ,target))))
- (t nil)))))
+ (let ((target
+ (etypecase what
+ (null nil)
+ ((or string pathname)
+ `(:filename ,(canonicalize-filename what)))
+ ((cons (or string pathname) *)
+ `(:filename ,(canonicalize-filename (car what)) ,@(cdr what)))
+ ((or symbol cons)
+ `(:function-name ,(prin1-to-string-for-emacs what))))))
+ (cond (*emacs-connection* (send-oob-to-emacs `(:ed ,target)))
+ ((default-connection)
+ (with-connection ((default-connection))
+ (send-oob-to-emacs `(:ed ,target))))
+ (t (error "No connection"))))))
(defslimefun inspect-in-emacs (what &key wait)
"Inspect WHAT in Emacs. If WAIT is true (default NIL) blocks until the
More information about the slime-cvs
mailing list