Я использую библиотеку python3 pweave (http://mpastell.com/pweave/usage.html) для грамотного программирования .
В качестве текстового режима используется pweave markdown , как режим кода python3 , и можно использовать noweb (https://en.wikipedia.org/wiki/Noweb) синтаксис буквального программирования.
Для правильной подсветки синтаксиса в emacs Я намеревался использовать библиотеку polymode (https://polymode.github.io/ и https://github.com/polymode).
Я использую emacs version26.1. И я смог установить polymode из melpa.
К сожалению, ранее не существовало многорежимного режима для режима хоста: markdown, inner-mode: python3, синтаксис: noweb, поэтому я попытался, основываясь на документации и существующем коде, написать свой poly-pweave-mode , добавив следующий код lisp в мой файл .emacs .
(require 'polymode-classes)
(defcustom pm-host/pweave-text
(pm-host-chunkmode :name "pweave-text"
:mode 'markdown-mode)
"markdown host chunkmode"
:group 'poly-hostmodes
:type 'object)
(defcustom pm-inner/pweave-code
(pm-inner-chunkmode :name "pweave-code"
:head-matcher "^[ \t]*<<\\(.*\\)>>="
:tail-matcher "^[ \t]*@.*$"
:mode 'python-mode)
"noweb static python3 inner chunkmode."
:group 'poly-innermodes
:type 'object)
(define-polymode poly-pweave-mode
:hostmode 'pm-host/pweave-text
:innermode 'pm-inner/pweave-code)
(add-to-list 'auto-mode-alist '("\\.pymd" . poly-pweave-mode))
Но почему-то emacs это не ест.Когда я открываю emacs, я получаю следующую ошибку:
Warning (initialization): An error occurred while loading `/Users/abc/.emacs':
Symbol's function definition is void: pm-host-chunkmode
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the `--debug-init' option to view a complete error backtrace.
Что я не так делаю? Как я могу запустить желаемый полимод?