Emacsでデフォルトよりは楽にJSPを書きたい。


背景

EmacsでJSP(JavaServer Pages)を書くことになったけれどコード整形の設定がなかった。

環境

CentOS 6
GNU Emacs 23.1.1

方法

STEP 1

ここのDownloadからファイルをダウンロードする。
(僕はGithubからダウンロードしました。)

STEP 2

unzipコマンドやツールを使って、ダウンロードしたファイルを解凍する。

STEP 3

ホームディレクトリ(好きなところで大丈夫)に1つディレクトリを作る。

mkdir ~/load

今回はloadディレクトリを作った。

STEP 4

~/load内に解凍したファイルにあるweb-mode.elを入れる。

STEP 5

さっきのファイルを読み込めるようにpathを通す。

emacs ~/.emacs

.emacsを開けたら下記のコードを入れる。
(同時にweb-mode時用のルールも入力している。今回は他の方の設定を拝借)

~/.emacs
; パスを通す(require できるようになる。)
; 自分が作ったディレクトリへのパスを入れる。
(add-to-list 'load-path "~/load")

; web-modeの設定
(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
; .jsp用 実際これだけでも良いとは思う。
(add-to-list 'auto-mode-alist '("\\.jsp\\'" . web-mode))

(defun my-web-mode-hook ()
  "Hooks for Web mode."
  (setq web-mode-attr-indent-offset nil)
  (setq web-mode-markup-indent-offset 2)
  (setq web-mode-css-indent-offset 2)
  (setq web-mode-code-indent-offset 2)
  (setq web-mode-sql-indent-offset 2)
  (setq indent-tabs-mode nil)
  (setq tab-width 2))
(add-hook 'web-mode-hook 'my-web-mode-hook)

STEP 6

は無いです。終わり。
Ctrl-c Ctrl-iでインデント綺麗にしてくれる。
他にもショートカットキーあるみたい。

おわりに

permitの問題から、もともとload-pathが通ってたところにファイルが置けないのでこうなりました。それとよくわからないけれどpackage-installも使えなかった。
設定を作り込めばVScodeを超えれるのでは...?(やらないけど。)

参考