2018年11月13日火曜日

xyzzyでMarkdownの見出しを実装

howmで見出しを実装する際、以前ははてな記法を使ってた。それをMarkdown記法に変えてみる。
以前は「行頭に**を付ける」「行頭に*を付ける」を2つのキーに割り振り、見出し、小見出しの調整を自力でやっていた。今回は、行頭にある文字を判断して行頭に見出しを付けたり、戻したりできるようにした。
Ctrl+:を押すたびに、見出し(## )→小見出し(### )→解除 の順番で切り替わる。

markdown-kihou.l

; -*- Mode: Lisp -*-
;
;;  MarkDown記法の見出しの実装(色づけとキーバインド)
;;
;;  行頭が"##"か"###"ならばその行に色をつける
;;
;;  キーバインド
;;      C-:     行頭に見出しを付けたり、戻したりする
;;              見出し(## )→小見出し(### )→解除 の順番
;;
;;  Installation:
;;
;;      ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加
;;
;;              (require "markdown-kihou")


(defun markdown-heading ()
  (interactive "*")
  (save-excursion
    (save-restriction
      (narrow-to-region
       (progn (beginning-of-line) (point))
       (progn (end-of-line) (point)))
      (beginning-of-line)
      (cond
       ((scan-buffer "^[ \t]*### ?" :regexp t) (replace-match ""))
       ((scan-buffer "^[ \t]*## ?" :regexp t) (insert "#"))
       (t (insert "## "))))))

(global-set-key #\C-: 'markdown-heading)

(defvar *text-mode-formats*
  (compile-regexp-keyword-list
   '(
  ("^[=].*" t (:color 14 7 :line :bold ))
     ("^[#][#][#][^*].*" t (:color 7 14 :line ))
     ("^[#][#][^*].*" t (:color 7 4 :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)


参考


xyzzyで現在行をコメントアウトしたり戻したりする設定 - phithonの日記

0 件のコメント:

コメントを投稿