2013年6月24日月曜日

xyzzyではてな記法の見出しを実装してみる(改)

xyzzyではてな記法の見出しを実装してみる - つかさのほえほえ日記

  • 行頭に"*"か"**"を挿入するキーバインドを設定
  • 行頭が"**"か"***"ならその行だけ色を変える

ということをしていた。
そのときは.xyzzyに直接記述するという仕方だったが、拡張Lispにしてrequireする方がすっきりしていいのではないかとおもい、書き直してみる。

hatena-kihou.l
; -*- Mode: Lisp -*-
;
;;  はてな記法の見出しの実装(色づけとキーバインド)
;;
;;  行頭が"**"か"***"ならばその行に色をつける
;;
;;  キーバインド
;;      C-:     行頭に**を付ける
;;      C-]     行頭に*を付ける
;;
;;  Installation:
;;
;;      ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加
;;
;;              (require "hatena-kihou")


(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)

(defvar *text-mode-formats*
  (compile-regexp-keyword-list
   '(
  ("^[=].*" t (:color 14 7 :line :bold ))
     ("^[*][*][^*].*" t (:color 7 4 :line ))
     ("^[*][*][*][^*].*" t (:color 7 14 :line ))
  )
   )
  ) 

(defun my-color-text-mode ()
  (make-local-variable 'regexp-keyword-list)
  (setq regexp-keyword-list *text-mode-formats*)
  )

(setq regexp-keyword-list *text-mode-formats*)
(add-hook 'text-mode-hook 'my-color-text-mode)

これをsite-lispフォルダに保存。
あとは.xyzzyかsite-lisp.lに

(require "hatena-kihou")

をコピペすればいいです。

前の記事から細かいところは多少変えたけれど、基本はだいたい同じ。

キーバインドは、

  • C-: → 行頭に**を付ける
  • C-] → 行頭に*を付ける
です。

色はデフォルトだと次のようになる。


0 件のコメント:

コメントを投稿