ex-html-mode エスケープ文字やリストなどの入力機能追加
ちなみに lisp ファイルのリンク先は Subversion なので、どの記事のリンクでも最新版へのリンクとなってます。
- リンク貼り付けでの C-u の動作変更
- エスケープ文字、空白の挿入
- 自動改行の考慮
- リンク、テーブルの挿入
リンク貼り付けの動作変更
C-c i C-y でクリップボードの文字列をリンクとして貼り付ける機能を付けていました。また、 C-u の後では新規ウィンドウでのリンクにしていたのですが、新規ウィンドウでのリンクの方をよく使っていたので、逆にしました。つまり C-u C-c i C-y で新規ウィンドウで開かないリンクとなります。
エスケープ文字と空白の入力
<, >, & の HTML で使えない文字と空白を入力するためのキーワードの入力機能を付けましたキー | 挿入文字 |
---|---|
C-c & | & |
C-c < | < |
C-c > | > |
C-c [SPC] | |
自動改行の考慮
ブログでは改行を自動的に <br /> にするモードとそのまま html とするモードがあります。 これを考慮するようにしました。ex-html-target-mode-auto-newline の変数を nil に設定すると [Enter] で改行する時に<br /> を入力してから改行するようになります。
タグを入力せずに改行したい場合には C-j で改行してください。
リンク、タグの挿入
html の各リンク、テーブルを挿入する機能を付けました。- C-c i u
- リスト(番号なし)
- C-c i o
- 番号付きリスト
- C-c i d
- 定義リスト(今書いているのに使っているリスト)
- C-c i t
- テーブル
番号あり、なしのリストの場合、リスト項目が順次聞かれます。リスト項目に何も入力しないと終了します。
定義リストの場合には、定義名と定義の説明が聞かれます。 定義名を聞かれた時に何も入力しないと終了です。定義の説明には何も入力したくない時があるので、 何も入力しなかった場合は何も入力しないだけにしています。
テーブルは先頭行はヘッダで決め打ちにしています。 最初にヘッダのカラムを入力していき、空入力でヘッダの入力を終わります。 その後、各カラムの内容を聞かれます。先頭カラムで何も入力しないと終了します。
前節の自動改行用のモードが non-nil の場合、改行が入らないようにつなげて入力されます。
html モードのタグ挿入(C-c C-t) のように領域選択で動作を変えようかなともちょっと思いました。 しかし、 ul, ol はいいのですが、 定義リストやテーブルでできません。
: や, を置換してもいいかなとも思ったのですが、やりすぎると rdoc のようなフォーマットで書いて変換した方が早い気がしてやめてしまいました。
![]() | やさしいEmacs‐Lisp講座 (2011/06) 広瀬 雄二 商品詳細を見る |
yafm.el - コンパイル、grep を使いやすくする emacs-lisp
追記 2012-10-23
Emacs 24 に対応しました。旧版はこちら。機能
コンパイルや grep を行うとバッファにエラー(検索が見つかった)箇所が表示されると思います。このバッファで n, p キーを押すとエラー箇所を移動して、その該当箇所を別バッファに表示します。これでエラー、検索結果を軽快に見ていくことができるようになります。

キーバインディング
キー | 機能 |
---|---|
p | 前のエラー |
n | 次のエラー |
o | 隣のバッファに移動 |
q | バッファを閉じる |
対象機能
- コンパイル、grep
- diff
- バッファ内検索(occur)
occur はあまり有名ではないかもしれませんが、 バッファ内の grep のような機能です。 キーは特に割り当てらていないので、 M-x occur で実行します。
インストール
使用する場合には yaml.el をパスの通ったところにおき、 以下のコードを .emacs.el に記述します。(autoload 'yafm-mode "yafm" "follow mode for compilation/occur buffers" t) (add-hook 'compilation-mode-hook 'yafm-mode) (add-hook 'diff-mode-hook 'yafm-mode) (add-hook 'occur-mode-hook 'yafm-mode)
Emacs の貼り付けをちょっと便利にするテクニック
あまり知られていないかもしれませんが、 M-y には yank-pop というコマンドが割り当てられています。 張り付けの後、このキーを続けて押すことで、クリップボードの履歴を順にたどって張り付けを行うことができます。
yank-pop はこのまま使っても十分便利なのですが、 C-y を連続して押すことで、履歴をたどってくれたら、もっと便利なんじゃないかな と思いました。 そこでそういう lisp を書いてみました。
次のコードを .emacs.el に加えてみてください。 C-y で履歴をたどれるようになります。
(defun yel-yank () "yank to cycle kill ring" (interactive "*") (if (or (eq last-command 'yank-pop) (eq last-command 'yank)) (yank-pop 1) (yank 1))) (global-set-key "\C-y" 'yel-yank)