[movitz-cvs] CVS movitz/ide
ffjeld
ffjeld at common-lisp.net
Thu Mar 1 17:52:58 UTC 2007
Update of /project/movitz/cvsroot/movitz/ide
In directory clnet:/tmp/cvs-serv21819
Modified Files:
ide.lisp
Log Message:
Update the slime-based IDE somewhat. At least the basics work now,
such as compile-defun (M-C-x) and disassemble-defun (C-c C-v).
--- /project/movitz/cvsroot/movitz/ide/ide.lisp 2007/02/26 21:32:55 1.3
+++ /project/movitz/cvsroot/movitz/ide/ide.lisp 2007/03/01 17:52:57 1.4
@@ -10,7 +10,7 @@
(defpackage #:movitz.ide
(:use #:cl)
(:export #:compile-movitz-file #:compile-defun #:dump-image
- #:disassemble-fdefinition #:movitz-disassemble))
+ #:movitz-disassemble #:movitz-disassemble-method))
(in-package #:movitz.ide)
@@ -18,25 +18,29 @@
"Compile FILENAME as Movitz source."
(movitz:movitz-compile-file filename))
-(defun compile-defun (source)
+(defun compile-defun (source package-printname)
"Compile the string SOURCE as Movitz source."
(with-input-from-string (stream source)
- (movitz:movitz-compile-stream stream :path "movitz-ide-toplevel")))
+ (movitz:movitz-compile-stream stream :path "movitz-ide-toplevel"
+ :package (get-package package-printname))))
(defun dump-image (filename)
"Dump the current image into FILENAME."
(movitz:dump-image :path filename))
;;; slime-friendly entry point.
-(defun movitz-disassemble (symbol-printname package-printname)
+(defun movitz-disassemble (printname package-printname)
"Return the disassembly of SYMBOL-NAME's function as a string."
- (disassemble-fdefinition (get-symbol symbol-printname
- (get-package package-printname))))
-
-(defun disassemble-fdefinition (symbol)
- "Return the disassembly SYMBOL's fdefinition as a string."
(with-output-to-string (*standard-output*)
- (movitz:movitz-disassemble symbol)))
+ (movitz:movitz-disassemble (get-sexpr printname
+ (get-package package-printname)))))
+
+(defun movitz-disassemble-method (gf-name lambda-list qualifiers package-name)
+ (let ((package (get-package package-name)))
+ (with-output-to-string (*standard-output*)
+ (movitz:movitz-disassemble-method (get-sexpr gf-name package)
+ (get-sexpr lambda-list package)
+ (mapcar #'read-from-string qualifiers)))))
;;;; Utilities.
@@ -50,6 +54,10 @@
(or (find-symbol (readname printname) package)
(error "Can't find \"~A\" as a symbol in ~S" printname package)))
+(defun get-sexpr (printname &optional (package *package*))
+ (let ((*package* package))
+ (read-from-string printname)))
+
(defun get-package (printname)
"Return the package with PRINTNAME.
Signal an error if there is no such package."
More information about the Movitz-cvs
mailing list