JSPモード

multi-modeを使って, yahtml+Javaモードで作成.
あまり使い勝手は良く無いけど, ないよりまし.


multi-mode.elをネット上からとってきて, ロードパスの通った所に置く.
そんでもって, こんなものを.emacsあたりに記述.

;; JSPモード

;; multi-modeを使用
(defun jsp-mode () (interactive)
  (multi-mode 1
              'yahtml-mode
              '("<%--" indented-text-mode)
              '("<%@" indented-text-mode)
              '("<%=" yahtml-mode)
              '("<%" java-mode)
              '("%>" yahtml-mode)
              '("<script" java-mode)
              '("</script" yahtml-mode)))
(setq auto-mode-alist (append '(("\\.jsp$" . jsp-mode)) auto-mode-alist))

(add-hook 'yahtml-mode-hook
          '(lambda()
             (progn
               ;; { で{}を書く
               (define-key yahtml-mode-map "{" 'insert-braces)
               ;; ( で()を書く
               (define-key yahtml-mode-map "(" 'insert-parens)
               ;; " で""を書く
               (define-key yahtml-mode-map "\"" 'insert-double-quotation)
               ;; [ で[]を書く
               (define-key yahtml-mode-map "[" 'insert-brackets)
               ;; Ctrl+c }でregionを{}で囲む
               (define-key yahtml-mode-map "\C-c}" 'insert-braces-region)
               ;; Ctrl+c )でregionを()で囲む
               (define-key yahtml-mode-map "\C-c)" 'insert-parens-region)
               ;; Ctrl+c ]でregionを[]で囲む
               (define-key yahtml-mode-map "\C-c]" 'insert-brackets-region)
               ;; Ctrl+c "でregionを""で囲む
               (define-key yahtml-mode-map "\C-c\"" 'insert-double-quotation-region)
               )))

yahtml上における, 括弧の自動挿入なんかは, brackets.elを使用している.
これで一応は望みどおりに動いてくれる.
本当は, mmm-mode使った方がいいんだろうけど,
何か上手く動かなかったので, 調べるのも面倒だからmulti-modeで済ませてしまった.
昔学校で設定したときはちゃんと動いたのになあ.
それでも, 大して便利さは変わらなかったような記憶があるからこのままでもいいかな.
また, たしか当時は, yahtmlじゃなくて, html-helper-modeのjspを編集するモードってのを使ってたし.
(それでも色分けが綺麗なぐらいと, javaの部分の編集にちょっとだけ便利なナローイングが使えただけだったような気がする. )
あんまいいのないなあ.