emacsのバッファの一部分だけ別モードを適用

長年困ってました。

そこそこ大きいファイルで上の部分を読みつつ下の部分を編集する

何が問題かというとHTMLファイルでJavaScriptを書くとき。
.jsを作るには微妙って場合はscriptタグに書きますから、HTMLのinputタグを表示しつつ、scriptタグ内を編集するわけです。

もちろんC-x 2で分割すればいいんですが、単にこれだけだとhtml-modeかjs2-modeの2択になりエライ不便。

解決策

M-x clone-indirect-buffer
(分割先に移動して別モードにしたい箇所を選択)
C-x n n (narrow-to-region)
(好みのモード選択)

clone-indirect-buffer だけでもいいんだが別モード適用時にずれたりして困るからnarrowingして合わせる。

悶絶するほど幸せになりました。