LoginSignup
4
7

More than 5 years have passed since last update.

markdown-mode でコードをシンタックスハイライトする

Last updated at Posted at 2017-01-12

mmm-mode を使用する。
web-mode が登場してもう mmm-mode のお世話になることはないだろうと思っていた。
けれど markdown-mode の登場で再度お世話になることになった。

mmm-mode で定義を追加するには一般的には (mmm-add-classes) でmmm-classを作っておいて markdown-mode(mmm-add-mode-ext-class) する。
そうすれば markdown-modemmm-mode をして parse させればシンタックスハイライトされる。

しかしMarkdownで書きたいコードの種類は無数にあるし、パターンが決まっているので楽に定義したい。
ということで下記を設定した。

https://github.com/magnars/dash.el は必須

必要に応じて2行目にメジャーモードの名前を追加する。

(with-eval-after-load "mmm-mode"
  (-each '("sh" "plantuml" "dos" "css" "js2" "web" "emacs-lisp") ;; 引数にメジャーモードの関数 -mode を抜いた文字列のリストを渡す
    '(lambda (mode-name)
       (let ((md-class (intern (concat "markdown-" mode-name))))
         (mmm-add-classes
          (list (list md-class
                      :submode (intern (concat mode-name "-mode"))
                      :face 'mmm-declaration-submode-face
                      :front (concat "^```" mode-name "[\n
]+")
                      :back "^```$")))
         (mmm-add-mode-ext-class 'markdown-mode nil md-class)))))

markdown-mode で下記のように記述すると、コードブロック内のみ該当のメジャーモードで記述できる。

2017-01-12_12h57_16.png

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7