Common LispのHyperspecをewwで見る(の微修正)
いままで調べるときはWebブラウザに移動して検索していたが、ふと気になったのでEmacsのewwでCommonLispのHyperSpecをHack!(2015年)を参考に設定を変更したときのメモ。
ちょっと検索してみるとどうやらこのページの記述は若干古いらしく、新しい方の書き方と思われるコードに変更(古いだけで問題なく動きはする。)。 基本的には上記のページの内容に沿っているので違うところのみを以下メモ。 また、ここのコードは動きはしますが実際のところ正しいのかはよくわかっておりません。
修正する設置ファイルの位置
使っているslime
のHyperspecに関わる設定ファイルhyperspec.el
を編集する。
roswell
を使っているときは~/.roswell/lisp/slime/2020.07.15/lib/
にあるhyperspec.el
が読み込まれる(バージョンによってはslime
直下のディレクトリ名は違うと思われる。)。
roswell
を使っていないときは~/.emacs.d/elpa/
以下に同じようなディレクトリがあるはずなので、そこを修正すれば反映されると思われる。
ここではその設定ファイルを直接編集するので、念の為ファイル内で既存のコードはコメントアウトして編集するか、別途バックアップファイルを作っておくかしておく。
defadvice
からdefun
+advice-add
へ
どうやら参考にしたページにあるdefadvice
を使うコードは古いらしく、以下のようにdefun
とadvice-add
とのコードに変更した。
(defun common-lisp-hyperspec-around (orig-func &rest args)
(let ((buf (current-buffer)))
(apply orig-func args)
(switch-to-buffer buf)
(pop-to-buffer "*eww*")))
(advice-add 'common-lisp-hyperspec :around 'common-lisp-hyperspec-around)
(defun common-lisp-hyperspec-lookup-reader-macro-around (oring-func &rest args)
(let ((buf (current-buffer)))
(apply oring-func args)
(switch-to-buffer buf)
(pop-to-buffer "*eww*")))
(advice-add 'common-lisp-hyperspec-lookup-reader-macro :around 'common-lisp-hyperspec-lookup-reader-macro-around)
(defun common-lisp-hyperspec-format-around (orig-func &rest args)
(let ((buf (current-buffer)))
(apply orig-func args)
(switch-to-buffer buf)
(pop-to-buffer "*eww*")))
(advice-add 'common-lisp-hyperspec-format :around 'common-lisp-hyperspec-format-around)
:around
の場合だけなので、defadvice
を元の函数とその引数とを引数に持つdefun
に書き換え、ad-do-it
の部分を(apply orig-func args)
に書き換えた。
これでCommon LispのHyperspecを見るときは外部のWebブラウザを立ち上げずにemacsのewwが呼びだされるようになった。
参考にしたページ: