Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2009-01-01

describeが面倒臭い

| 21:57 | describeが面倒臭い - わだばLisperになる を含むブックマーク はてなブックマーク - describeが面倒臭い - わだばLisperになる

最近インスタンスの中身を確認したいことが多いのですが、describeの結果を確認するためにd.e.s.c.r.i.b.eといちいちタイプするのが面倒なのでslimeの中の関数を参考にしてelispを書いてみました。

;; EMACS Lisp
(progn
  (defun slime-describe-form ()
    "(Describe) the form at point."
    (interactive)
    (slime-eval-and-describe
     `(swank:eval-and-grab-output
       ,(format "(describe %s)" (slime-defun-at-point)))))

  (defun slime-eval-and-describe (form)
    "Describe FORM in Lisp and display the result in a new buffer."
    (slime-eval-async form (slime-rcurry #'slime-show-describe
                                         (slime-current-package))))

  (defun slime-show-describe (string package)
    (slime-with-popup-buffer ("*SLIME Describe*" package)
      (princ string)
      (goto-char (point-min))))

  ;; control-shift-d
  (define-key slime-mode-map
    [(control shift ?d)] 'slime-describe-form))

使い方

(make-instance 'mime:text-mime :content "あけましておめでとう")

等のトップレベルのフォームの上で実行すると

(#<CL-MIME:TEXT-MIME {100C4FE321}>
is an instance of class #<STANDARD-CLASS CL-MIME:TEXT-MIME>.
The following slots have :INSTANCE allocation:
 CONTENT-TYPE                   "text"
 CONTENT-SUBTYPE                "plain"
 CONTENT-TYPE-PARAMETERS        NIL
 CONTENT-ID                     NIL
 CONTENT-DESCRIPTION            NIL
 CONTENT-TRANSFER-ENCODING      :7BIT
 CONTENT-ENCODING               :7BIT
 CONTENT-DISPOSITION            NIL
 CONTENT-DISPOSITION-PARAMETERS   NIL
 CONTENT                        "あけましておめでとう"
 MIME-VERSION                   "1.0"
 CHARSET                        "us-ascii"
 )

のような画面が別枠で開き、qで閉じます。

既に存在しているような気がしてならないのですが、slime-describe-symbolはあっても(describe ...)の結果を表示するものは探してもみつけられませんでした。

ということで作ってみたのですが、SLIMEでdescribeをフォームにかける方法をご存知の方は教えて下さい!

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20090101