SICPやるときに色々とアプリケーション切り替えるのがめんどくさい。emacsだけで全部終わればいいのに。

schemeをemacsで使うときに便利なquack.el。 これ使うとマニュアルへのリンクがメニューにできて、クリックするとブラウザが開いて表示される。 マニュアル類は自分で追加や削除ができる。

emacsには24.4以降eww というWEBブラウザが入っている。これemacs内のデフォルトブラウザに指定すればquackのマニュアル類はemacs上で見ることができるようになる。

まずewwの設定。emacs内でのデフォルトブラウザをewwにする。

1
(setq browse-url-browser-function 'eww-browse-url)

Emacs24.4組み込みブラウザewwで目の疲れを1/10にする方法の設定を追加。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
(defvar eww-disable-colorize t)
(defun shr-colorize-region--disable (orig start end fg &optional bg &rest _)
  (unless eww-disable-colorize
    (funcall orig start end fg)))
(advice-add 'shr-colorize-region :around 'shr-colorize-region--disable)
(advice-add 'eww-colorize-region :around 'shr-colorize-region--disable)
(defun eww-disable-color ()
  "eww で文字色を反映させない"
  (interactive)
  (setq-local eww-disable-colorize t)
  (eww-reload))
(defun eww-enable-color ()
  "eww で文字色を反映させる"
  (interactive)
  (setq-local eww-disable-colorize nil)
  (eww-reload))

quackの設定関係は、M-x customizeで入れていった。関係ありそうなところを抜き出すとこんな感じ。 quackそのままだとリンク切れのマニュアルとかあるし、使わないのが大量に入ってる。 日本語版SICPとかgaucheのマニュアルは日本語のやつにしたりした。

1
2
3
4
5
6
7
8
9
;; M-x customizes
(custom-set-variables
 '(quack-manuals
   (quote
	((r6rs "R6RS" "http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-2.html#node_toc_start" nil)
	 (gauche "Gauche Reference Manual" "http://practical-scheme.net/gauche/man/gauche-refj.html" nil)
	 (tspl "Scheme Programming Language (Dybvig)" "http://www.scheme.com/tspl/" nil)
	 (sicp "Structure and Interpretation of Computer Programs(JP)" "http://sicp.iijlab.net/fulltext/xcont.html" nil))))
)

これでとりあえず別のソフトを立ち上げないでSICPできる環境ができた。