xyzzyではてな記法の見出しを実装してみる
表示をはてな記法に
エディタに、つらつら文章を書いていくと次のような感じになる。文の長さが短いのならいいが、ある程度の文字数になると、内容が把握しにくくなる。そのとき、はてな記法を利用しています。
はてな記法といっても、利用しているのは"**"で小見だしと"***"で小々見出しのみ。
こんな感じですね。
このようにする方法を今回は紹介します。
行頭に**をつける
はてな記法では、行頭に**がついているものは小見出し。***とついているのは小々見出しになります。
ですが、一々文章を書いているとき、行頭までカーソルを移動して**をつけ、また元の箇所に戻るというのは面倒。そこで、スクリプトを用い、カーソルを移動させないまま行頭に**がつくようにします。
.xyzzyに、次をコピペ。
;;行頭に見出しマーク (defun hateda-heading () (interactive "*") (save-excursion (goto-bol) (insert "**") (fix-selection-point))) (global-set-key #\C-: 'hateda-heading) (defun hateda-headingsec () (interactive "*") (save-excursion (goto-bol) (insert "*") (fix-selection-point))) (global-set-key #\C-] 'hateda-headingsec)
これで、Ctrl+:を押したときには、行頭に"**"が。Ctrl+]を押したときには、行頭に"*"がつくようになりました。
見出しに色を付ける
見やすいように、見出しのある行は色が付くように設定します。
.xyzzy
以下を.xyzzyにコピペ。
;;テキストの色を変更する (defvar *text-mode-formats* (compile-regexp-keyword-list '( ("^[=].*" t (:color 7 13 :line :bold )) ("^[*][*][^*].*" t (:color 10 15 :line )) ("^[*][*][*][^*].*" t (:color 9 12 :line )) ) ) ) ; ; (setq regexp-keyword-list *text-mode-formats*) (add-hook 'text-mode-hook 'my-color-text-mode) (defun my-color-text-mode () (make-local-variable 'regexp-keyword-list) (setq regexp-keyword-list *text-mode-formats*) )
これで、行頭に"**"がある行と、"***"がある行の背景に色が付くように設定しました。また、タイトル行(行頭に"="がある行)の文字にも色が付くよう設定してます。
("^[=].*" t (:color 7 13 :line :bold )) ("^[*][*][^*].*" t (:color 10 15 :line )) ("^[*][*][*][^*].*" t (:color 9 12 :line ))
の箇所で、どの形式の文字列を、何色にするか、の設定をしています。("^[*][*][^*].*" t (:color 10 15 :line ))だったら、「行頭が**の行を」「文字色10、背景色15に色づけして、下線を引く」ということです。