web-dev-qa-db-ja.com

Emacs:ダッシュとドットのあるモードローカルマクロ

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

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

略語には、現在のバッファーの構文テーブルで指定されているWord構文と見なされる文字のみを含めることができます。 「。」を作ったらおよび「-」単語文字の場合、それらを略語で使用できます。

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

欠点があります。\wを使用して正規表現検索を行う場合は、-と。変更された構文テーブルを使用して、すべてのバッファで照合されます。これらのバッファ内のカーソルモーションコマンドも影響を受けます。例えばforward-Wordはこれらの文字の前で停止しなくなりました。同様にkill-Wordは以前より多くのテキストを削除します。この振る舞いは、プログラミングモードのバッファでは非常に驚くべき不快なものになると思いますが、HTMLのようなテキストモードでは、それほど悲しむことはないと思います。

1
Kyle Jones