Emacs:ダッシュとドットを持つパターンローカルマクロ

Emacs:ダッシュとドットを持つパターンローカルマクロ

EmacsでHTMLモードに合ったマクロを作成し、ダッシュとドットを使用するにはどうすればよいですか?以下のElispを見てください。

(define-abbrev-table 'html-mode-abbrev-table
   '(("..." "…")   ; won't work
     ("---" "—")    ; won't work
     ("aaa" "…")   ; works
     ("bbb" "—") )) ; works

答え1

略語には、現在のバッファ構文テーブルで指定されている単語構文と見なされる文字のみを含めることができます。 「。」と「-」という単語文字を使用すると、略語として使用できます。

(require 'sgml-mode)
(modify-syntax-entry ?- "w" html-mode-syntax-table)
(modify-syntax-entry ?. "w" html-mode-syntax-table)

しかし、欠点もあります。正規表現検索に \w を使用する場合 - と 。これで、変更された構文テーブルを使用してすべてのバッファで一致が行われます。これらのバッファのカーソル移動コマンドも影響を受けます。たとえば、将来の単語は、これらの文字の前で停止しなくなります。同様に、kill-word は以前よりも多くのテキストを削除します。プログラミングモードのバッファでは、この動作は非常に驚くほど不快になると思いますが、HTMLなどのテキストモードでは大きな問題は発生しないと思います。

関連情報