javascriptのreferenceをF1でみたい

コメントでamefuraさんから教えてもらったchmのヘルプが良さそうだったので、ダウンロード。ついでにxyzzyからF1で呼び出すようにしてみた。

■具体的にすること
javascript-modeでF1するとキャレット位置の単語でJavascriptのreferenceを検索して開く。

■適当な使い方

  1. javascriptchmを好きなやつを用意する。
  2. .xyzzyとかに下の方のlispを適当にコピペ
  3. javascriptのファイルを開いて調べたい単語の上でF1、chmのパスを入力
  4. 以後はF1押すとカーソル位置の単語をchmを検索して開く。
  5. chmのパスを変えたい時は M-x set-javascript-help-path

アンインストールする時は

(unregister-history-variable '(*javascript-help-path*))

これを*scratch*に貼り付けて行末でC-jを実行。

■少し気になる所
 jscript-mode使ってない人はキーマップをjscriptのに変えないと上手く動かない。javascript-modeが入っているか自動で判断とかさせると多少良くなるかもしれないけど、面倒なのでやめ。あと、消す時に変数をunregister-history-variableしないと消えない。それとDOM関係はreferenceにないようなので、別で検索する必要がある。

;;;javascriptのヘルプ表示
(defvar *javascript-help-path* nil)
(register-history-variable '(*javascript-help-path*))
;アンインストールする時にはunregister-history-variableで*javascript-help-path*を消した方がいい
;ex : (unregister-history-variable '(*javascript-help-path*))

(defun set-javascript-help-path()
  "javascriptのhtml helpを設定する"
  (interactive)
  (let ((dir (read-file-name "set directory : ")))
	(when (yes-or-no-p "~Aを設定して良いですか?" dir)
	  (setq *javascript-help-path* dir))))

(defun show-javascript-help ()
  "javascriptのhelpを表示"
  (interactive)
  (html-help *javascript-help-path* (ed::get-winhelp-topic)))

(defun javascript-help()
  (interactive)
  (if *javascript-help-path*
	  (show-javascript-help)
	(set-javascript-help-path)))

(define-key ed::*javascript-mode-map* #\F1 'javascript-help)