定义

一个 polymode 的组成部分:

  1. hostmode
  2. innermode

步骤:

  1. 创建 hostmode
  2. 创建 innermode
  3. 组装成 polymode

innermode

  1. 分类

    • 普通 innermode

      • 固定死了,就是使用给定的 mode 显示相应代码块
      • 类似 hugo markdown

        1
        2
        3
        4
        
        ---
        metatadata: 1
        time: 2012-12-12
        ---
    • auto-innermode

      • 类似 markdown/org-mode 的中的代码块,可以声明 mode 类型来显示

        • 类似 markdown 中的语法: ``` python 来显示 python 代码块

define-innermode(普通 innermode 定义)

1
2
3
4
5
6
(define-innermode poly-markdown-yaml-metadata-innermode
  :mode 'yaml-mode                      ;; 高亮显示使用的 major-mode
  :head-matcher "\`[ \t\n]*---\n"       ;; 开头的匹配格式,eg: ---,\n---, \t\n---
  :tail-matcher "^---\n"                ;; 结尾的匹配格式,eg: ---
  :head-mode 'host                      ;; 开头之前的部分显示,使用host-mode
  :tail-mode 'host)                     ;; 结尾之后的部分显示,使用host-mode

define-auto-innermode(auto innermode 定义)