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 |

2011-01-15

McCLIMのインスペクタとデバッガ

| 15:19 | McCLIMのインスペクタとデバッガ - わだばLisperになる を含むブックマーク はてなブックマーク - McCLIMのインスペクタとデバッガ - わだばLisperになる

Climacsやclim-listenerで遊んでいるとちょくちょくデバッガに落ちてしまいます。

SLIMEから起動の場合は、SLIMEに落ちるのですが、SLIME経由で起動していない場合は、デフォルトのどこかに落ちてしまい厄介なのですが、McCLIMのディレクトリを眺めていたらデバッガがあるようなので試してみました。

このデバッガは同じくCLIMのインスペクタに依存していたりするのですが、asdファイルがないのでとりあえず手動でロードすることにしました。

(ignore-errors
  (progn
    (let ((*default-pathname-defaults*
           (merge-pathnames "dists/quicklisp/software/mcclim-20101006-cvs/Apps/Inspector/"
                            ql:*quicklisp-home*)))
      (load "package")
      (load "disassembly")
      (load "inspector"))

    (let ((*default-pathname-defaults*
           (merge-pathnames "dists/quicklisp/software/mcclim-20101006-cvs/Apps/Debugger/"
                            ql:*quicklisp-home*)))
      (load "clim-debugger")))
  #+sbcl (setf (symbol-global-value '*debugger-hook*)
               #'clim-debugger:debugger)
  )

使用例では、

(let ((*debugger-hook* #'clim-debugger:debugger))
  (clim-listener:run-listener :new-process t))

のようにLETで束縛すればOKと書いてありますが、どうも別スレッドにすると違うデバッガが登録されてしまったりするようです。

しょうがなく(setf (symbol-global-value '*debugger-hook*) #'clim-debugger:debugger)して場当たり的な対処(SBCLの場合)

単体の実行ファイルを作成してそこから起動したり、StumpWMから起動する場合は落ちる場所がまちまちになるので*debugger-hook*にclim-debuggerを登録してから起動すると便利かなと思います。

clim-listener素晴らしい!

| 10:44 | clim-listener素晴らしい! - わだばLisperになる を含むブックマーク はてなブックマーク - clim-listener素晴らしい! - わだばLisperになる

すっかりCLIMづいている年始ですが、quicklispで、(QL-DIST:SYSTEM-APROPOS "clim")してみるとclim-listenerというのがあるので試してみました。

(ql:quickload :mcclim-uim) ;uimで日本語入力したい場合
(ql:quickload :clim-listener)

(clim-listener:run-listener :new-process 'T)

位で起動できると思います。

動作としては、CLのREPLとシェル的な機能が一緒になった感じで、LispマシンのListerの様な感じです、例えば、

,Show Directory

というコマンドでディレクトリの一覧を見ることができ、しかもファイルはクリッカブルだったりします。

コマンドを拡張したり、色々遊べそうです。