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 |

2010-10-05

SLIMEばつ牛ン (2) slime-apropos

| 13:00 | SLIMEばつ牛ン (2) slime-apropos - わだばLisperになる を含むブックマーク はてなブックマーク - SLIMEばつ牛ン (2) slime-apropos - わだばLisperになる

SLIMEのコマンドを確認していくシリーズ、今回は、 slime-apropos です。

キーバインド

デフォルトのキーバインドは、c-c c-d c-aもしくは、c-c c-d c-z

最後のc-aと、c-zの違いですが、aの方は、EXPORTされているシンボルのみで、zの方は、すべてのシンボルを対象にします。

使い方

M-x slime-apropos

を実行すると、探したいシンボルの名前を訊かれますので、入力します。(名前の一部でもOKです)

SLIME Apropos: foo
CL-MARKDOWN:FOOTNOTE
  Function: (not documented)
CL-MARKDOWN:FOOTNOTES
  Function: (not documented)
COM.INFORMATIMAGO.COMMON-LISP.HTML:TFOOT
  Macro: (not documented)
COM.INFORMATIMAGO.COMMON-LISP.HTML:TFOOT*
  Function: (not documented)
COM.INFORMATIMAGO.COMMON-LISP.HTRANS:GENERATE-HTML-FOOTER
  Generic Function: A hook allowing the hprogram to display a footer.

という風に候補がでます。

自分はこのslime-aproposで使えそうな関数を探すために可能な限りのパッケージ詰め込んだコアを作成して使っていたりします。

定義は、

(defun slime-apropos (string &optional only-external-p package 
                             case-sensitive-p)
  "Show all bound symbols whose names match STRING. With prefix
arg, you're interactively asked for parameters of the search."
  (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))
             (y-or-n-p "Case-sensitive? "))
     (list (read-string "SLIME Apropos: ") t nil nil)))
  (let ((buffer-package (or package (slime-current-package))))
    (slime-eval-async
     `(swank:apropos-list-for-emacs ,string ,only-external-p
                                    ,case-sensitive-p ',package)
     (slime-rcurry #'slime-show-apropos string buffer-package
                   (slime-apropos-summary string case-sensitive-p
                                          package only-external-p)))))

となっています。

定義を眺めていて知ったのですが、数引数を付けるとオプションを全部対話的に処理することができるようです。

指定できるオプションは、

  • 外部シンボルのみかどうか
  • 指定したパッケージ内部で探す
  • 大文字小文字を区別するかどうか

自分は、c-c c-d c-zを知らなかったので、ちょっと不便だなと思っていたのですが、ちゃんと用意されていたんですね。

ゲスト



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