html-helper-mode, js2-mode のMeadow3への導入

Javascriptを勉強しています。
勉強する物ではない,とかいうつっこみは勘弁してください。
なので,ぼちぼち環境を整えようと思います。


Meadow3 に導入した際のメモ。
まずは簡単な方から。

js2-mode

ref: http://d.hatena.ne.jp/m-hiyama/20080627/1214549228
ここを参考にするのがいいです。
http://code.google.com/p/js2-mode/ からダウンロード。
導入方法もファイルの中身を見れば書いてありますね。

;; for js2-mode
(autoload 'js2-mode "js2" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
(add-hook 'js2-mode-hook
          '(lambda ()
             (setq js2-basic-offset 4)
             (setq tab-width 4)
             (setq indent-tabs-mode nil)          ; タブを無効に
             (setq js2-enter-indents-newline nil) ; C-mでインデントしないように
             (setq js2-mirror-mode nil)           ; (, { とかを入力した際,対応する括弧とかを自動的に挿入しない。
             (make-variable-buffer-local 'skeleton-pair) ; 対応する括弧の挿入は,skeletonにおまかせしておく。
             (make-variable-buffer-local 'skeleton-pair-on-word)
             (make-variable-buffer-local 'skeleton-pair-alist)
             (setq skeleton-pair-on-word t)
             (setq skeleton-pair t)
             (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "{") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "`") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe)))

これでおしまい,チャンチャンというわけにはいかなかったのです。
Javascriptのファイルを開いてもJavascriptモードになってしまうです。
原因は,Meadowのインストールディレクトリ/packages/pkginfo/javascript/auto-autoloads.el。
このファイルの中身を下記のようにコメントアウトや!!

;(add-to-list 'auto-mode-alist (cons  "\\.\\(js\\|as\\|json\\|jsn\\)\\'" 'javascript-mode))


うす。以上です。

html-helper-mode

コレが大変だったアルよ。

準備

まず,最初から入っている html-helper-mode に冬眠してもらう。
Meadow3のインストールディレクトリ/packages/pkginfo/html-helper-mode/auto-autoloads.el
の中身を全てコメントアウト

参考ページ

http://www.emacswiki.org/emacs/HtmlHelperMode


こっからダウンロードしてくるアルよ。
http://ftp.twaren.net/Unix/NonGNU/baol-hth/
ワタシは"html-helper-mode_3-0-4jolly.tar.gz"にしたアルね。
あと,色付けするために,
http://www.nbi.dk/TOOLS/emacs/lisp/html-font.el
をダウンロードするヨ。


以下を.emacsに追記するネ。

;; for html-helper-mode
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(add-to-list 'auto-mode-alist '("\\.html$" . html-helper-mode))
(add-hook 'html-helper-mode-hook '(lambda () (font-lock-mode 1)))


色付け表示させるために,はまったとです。
以下,html-font.el から抜粋して,whitypigさんのコメントを追加。

;; Installation, currently:
;;   1) Put html-font.el in your load-path and `M-x byte-compile-file' it.
;;   2) Add this to your ~/.emacs (without the ";;" in front):
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; はじめ↓を試したけど,だめだったっす。
(add-hook 'html-helper-load-hook '(lambda () (require 'html-font)))
;; Customize font-lock as you would do for any other major mode.
;;   For XEmacs and Emacs 19.29, default colours are set up automatically.
;;   For earlier Emacsen, you have to write a lot yourself (or get it from
;;   somewhere else, e.g. Simon Marshall's face-lock.el in the LCD; see also
;;   http://www.nbi.dk/~dickow/emacs/), for example:
;;   3) To have a colourful display with font lock in any supported major mode,
;;      you can add something like this to your ~/.emacs:
;;        (copy-face             'bold 'font-lock-keyword-face) ; or italic/...
;;        (set-face-foreground         'font-lock-keyword-face "ForestGreen")
;;        (setq font-lock-keyword-face 'font-lock-keyword-face)
;;      and similary for `font-lock-string-face' etc. (see font-lock.el).
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ほいで,↓を試したら,おっけー牧場だったわけです。
;;   4) To have font-lock turned on every time html-helper-mode is entered do
;;   (訳) html-helper-mode になる度に,font-lock をオンにしたいなら,↓のようにしな!
(add-hook 'html-helper-mode-hook '(lambda () (font-lock-mode 1)))


これで,色付け表示の問題はクリアー!
が,こっからが長かったんですわ。
でも,試行錯誤した過程は,カット!
エコエコエコですわ。


ほんとは,html-helper-mode 中に,Javascriptを編集する際は,
js2-modeになって欲しくて,ごにょごにょしたけど,
scriptタグを認識してくれなかったり,インデントがずれたり,
色が付かなかったりしたので,却下。
で,java-mode に落ち着きました。
ちなみに,html-helper-mode.el の2327行目あたりの
関数?に変更を加えれば,そのやり方の是非はどうかしらんが,
一応,js2-modeになります。

(defun html-script-narrow-to-javascript ()
  "Narrows to a JavaScript script and setups java mode"
  (interactive)
  (search-backward-regexp "<SCRIPT[ \t]+\\(LANGUAGE=\"JavaScript\"\\|TYPE=\"text/javascript\"\\)[ \t]*>")
  (let ((beg (point)))
    (search-forward "</SCRIPT>" nil t)
    (narrow-to-region beg (point)))
  (cond (html-helper-mode-uses-JDE (jde-mode))
;        (t (java-mode)))
        (t (js2-mode))) ;; こうすれば,js2-mode に成ってくれるっす。
  (goto-char 0))
使い方のTips

Javascriptの編集に入りたかったら,scriptタグの中で,
M-x html-script-toggle-narrow
これで,ナローイングされます。
ほいで,編集終わって widen して,html-helper-mode に戻る場合は,
M-x html-script-release-region
すれば,ナローイングが解除されます。
・・・。
なーんつって。
この上記2つのコマンドは,F4 に割り当てられています。
なので,F4 で余裕です。
ナローイングの方だけは,「C-c C-z j」に割り当てられてまつ。
F4つかいましょ,F4。ホームポジションから動くので,
ポリシーに反しますが。割り当てるとしたら,
C-c C-s t, C-c C-s r あたり?


ま,さらっと書いてますけど,最初は,
M-x html-script-narrow-to-javascript
なんてことしてました。
ほいで,M-x widen ですよ。
ソースみてて気づきましたよ。。。(汗)
泣きたくなったよ。

まとめ!!

  • ナローイング(narrow-to-region)を覚えた!!(以前に書いた気がするが,記憶がふっとんでいた。)
  • ナローイング解除を覚えた!!(M-x widen, C-x n w)
  • M-x customize group [RET] somename を覚えた!!
  • <script ...> と小文字でも html-helper-mode たんは,認識してくれる!
    • search-backward-regexp って,case-insensitiveなの?? ドキュメント読んでもわからんかたよ。
  • 毎度のことですが,すばらしい物を創ってくれている人たちに感謝!