xyzzy から pydoc を利用する
1. はじめに
python 2.4 をインストールすると、
python document を HTML または text 形式で生成する
pydoc というスクリプトが付いてきます。
このスクリプトは大変よく出来ていて、ソースコードに含まれるドキュメントから、
インタープリターのオンラインヘルプ、
や HTML 形式のマニュアルを自動で生成します。
(詳しい説明は pydoc を使って生成した
pydoc のマニュアルを見てください。)
ここでは、マニュアルを表示するローカルホストを起動させ、
それをブラウザで表示する方法について述べます。
また、これらのことを行う xyzzy スクリプトも書いてみました。
2. ローカルホストの起動とブラウザでの表示
2.1. ローカルホストの起動
DOS プロンプトから、
python c:\python24\lib\pydoc.pyc -p 50001
と打ち込むとローカルホストが起動します。"50001" はポート番号で、
50000 台の番号を選ぶのが安全でしょう。
2.2. ブラウザを使った表示
ブラウザの URL エントリーに
http://localhost:50001/
と打ち込むとコンテンツが表示されます。
関数、メソッド、定数が色分けされていて、とても見やすい構成になっています。
これがあればポケットレファレンスの類は必要ないでしょう。
3. ドキュメントを表示する xyzzy スクリプト
ドキュメントを表示する xyzzy スクリプトを示します。
このスクリプトは、ローカルホストを起動するバッチファイル(pydoc.bat)、
xyzzy スクリプト(add2py.l) と.xyzzy へ記述する部分の3つからなっています。
3.1. ローカルホストを起動するバッチファイル
1行だけのバッチファイルを作成します。次の行を "pydoc.bat" という名前のバッチファイル
に書きます。
python c:\python24\lib\pydoc.pyc -p 50001
3.2. *py-mode-hook* で呼び出す xyzzy スクリプト
以下のコードを add2py.l というファイルに書きます。add2py.l は xyzzy/site-lisp においておきます。
;;; add2py.l
(provide "add2py")
;;; The contents of pydoc.bat is just one line
;python c:\python24\lib\pydoc.pyc -p 50001
(defvar *pydoc-server* "C:\\bin\\pydoc.bat")
(defvar *pydoc-browser* "C:\\Program Files\\Mozilla Firefox\\firefox.exe")
(defvar *pydoc-url* "http://localhost:50001/")
(let (server-on)
(defun call-pydoc ()
(interactive)
(unless server-on
(call-process *pydoc-server* :show :hide)
(setq server-on t)
(sleep-for 2))
(let ((cmd (concat *pydoc-browser* " " *pydoc-url*)))
(call-process cmd)))
(defun server-off ()
(interactive)
(setq server-on nil)))
(eval-when (:load-toplevel :execute)
(define-key ed::*py-mode-map* #\C-h 'call-pydoc))
ここではブラウザは Fire Fox を使っていますが、ふだん使っているブラウザに変更してください。
3.2. ".xyzzy" に追加するスクリプト
.xyzzy に以下のスクリプトを追加してください。
(add-hook 'ed::*py-mode-hook* #'(lambda () (require "add2py")))
これで、xyzzy を用いた編集作業中に Ctrl+h をタイプすると pydoc が立ち上がります。
4. その他
pydoc はよく出来たスクリプトですが、wx
などの大きなモジュールを表示させると
ものすごく時間がかかります。
この場合はそのモジュールのドキュメントを個別に書き出すほうが良いでしょう。
DOS 窓を開いて次のように入力します。
- doc を保存するディレクトリを作り、そのディレクトリに行って python を起動する。
mkdir wx_doc
cd wx_doc
python
- pydoc をインポートし、writedocs を走らせる。パッケージの大きさにもよるが、
数10分で出来上がる。
import pydoc
pydoc.writedocs("C:/Python24/Lib/site-packages/wx-2.5.3-msw-unicode")