ex-html-mode エスケープ文字やリストなどの入力機能追加

以前作成したブログの記述用に html-mode を拡張する lisp を更新しました。
ちなみに lisp ファイルのリンク先は Subversion なので、どの記事のリンクでも最新版へのリンクとなってます。
  • リンク貼り付けでの C-u の動作変更
  • エスケープ文字、空白の挿入
  • 自動改行の考慮
  • リンク、テーブルの挿入

リンク貼り付けの動作変更

C-c i C-y でクリップボードの文字列をリンクとして貼り付ける機能を付けていました。また、 C-u の後では新規ウィンドウでのリンクにしていたのですが、新規ウィンドウでのリンクの方をよく使っていたので、逆にしました。
つまり C-u C-c i C-y で新規ウィンドウで開かないリンクとなります。

エスケープ文字と空白の入力

<, >, & の HTML で使えない文字と空白を入力するためのキーワードの入力機能を付けました
キー挿入文字
C-c & &amp;
C-c < &lt;
C-c > &gt;
C-c [SPC] &nbsp;

自動改行の考慮

ブログでは改行を自動的に <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講座やさしいEmacs‐Lisp講座
(2011/06)
広瀬 雄二

商品詳細を見る
 

yafm.el - コンパイル、grep を使いやすくする emacs-lisp

Emacs でコンパイルや grep を使いやすくする emacs-lisp を公開しました。 実際にはかなり昔に作ったものです。 名前の由来は、当時アイデアはいいけど、ちょっと使いづらいなという emacs-lisp があって、 それが fm という名前だったので、 yafm にしました。
追記 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 の貼り付けをちょっと便利にするテクニック

Emacs で張り付け(yank) を行う場合、 C-y キーを押します。 この張り付けをちょっと便利にするテクニックを紹介します。

あまり知られていないかもしれませんが、 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)
 
このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
31位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
5位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

08月 | 2023年09月 | 10月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。