From 7b9f9c3b7ff0821657b0b8b0b31000c42f993ed8 Mon Sep 17 00:00:00 2001 From: Jethro Kuan Date: Wed, 3 Jul 2019 11:26:04 +0800 Subject: [PATCH 1/2] Add inner mode for latex environments --- poly-org.el | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/poly-org.el b/poly-org.el index eb45738..598477c 100644 --- a/poly-org.el +++ b/poly-org.el @@ -41,7 +41,7 @@ (define-obsolete-variable-alias 'pm-host/org 'poly-org-hostmode "v0.2") (define-obsolete-variable-alias 'pm-inner/org 'poly-org-innermode "v0.2") -(defun poly-org-mode-matcher () +(defun poly-org-mode-src-matcher () (when (re-search-forward "#\\+begin_src +\\([^ \t\n]+\\)" (point-at-eol) t) (let ((lang (match-string-no-properties 1))) (or (cdr (assoc lang org-src-lang-modes)) @@ -66,22 +66,30 @@ Used in :switch-buffer-functions slot." :protect-syntax nil :protect-font-lock nil) -(define-auto-innermode poly-org-innermode +(define-auto-innermode poly-org-src-innermode :fallback-mode 'host :head-mode 'host :tail-mode 'host :head-matcher "^[ \t]*#\\+begin_src .*\n" :tail-matcher "^[ \t]*#\\+end_src" - :mode-matcher #'poly-org-mode-matcher + :mode-matcher #'poly-org-mode-src-matcher :head-adjust-face nil :switch-buffer-functions '(poly-org-convey-src-block-params-to-inner-modes) :body-indent-offset 'org-edit-src-content-indentation :indent-offset 'org-edit-src-content-indentation) +(define-innermode poly-org-latex-innermode + :fallback-mode 'host + :head-mode 'host + :tail-mode 'host + :mode 'latex-mode + :head-matcher "^[ \t]*\\\\begin{.*}\n" + :tail-matcher "^[ \t]*\\\\end{.*}\n") + ;;;###autoload (autoload 'poly-org-mode "poly-org") (define-polymode poly-org-mode :hostmode 'poly-org-hostmode - :innermodes '(poly-org-innermode) + :innermodes '(poly-org-src-innermode poly-org-latex-innermode) (setq-local org-src-fontify-natively nil) (make-local-variable 'polymode-move-these-minor-modes-from-old-buffer) (push 'org-indent-mode polymode-move-these-minor-modes-from-old-buffer)) From 98369e2f1e53c5b5ce152d761ffdcae435f210c3 Mon Sep 17 00:00:00 2001 From: Jethro Kuan Date: Sun, 7 Jul 2019 10:49:12 +0800 Subject: [PATCH 2/2] Define and use poly-orgroot-innermode --- poly-org.el | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/poly-org.el b/poly-org.el index 598477c..b5893d8 100644 --- a/poly-org.el +++ b/poly-org.el @@ -66,10 +66,13 @@ Used in :switch-buffer-functions slot." :protect-syntax nil :protect-font-lock nil) -(define-auto-innermode poly-org-src-innermode +(define-innermode poly-org-root-innermode + :mode nil :fallback-mode 'host :head-mode 'host - :tail-mode 'host + :tail-mode 'host) + +(define-auto-innermode poly-org-src-innermode poly-org-root-innermode :head-matcher "^[ \t]*#\\+begin_src .*\n" :tail-matcher "^[ \t]*#\\+end_src" :mode-matcher #'poly-org-mode-src-matcher @@ -78,10 +81,7 @@ Used in :switch-buffer-functions slot." :body-indent-offset 'org-edit-src-content-indentation :indent-offset 'org-edit-src-content-indentation) -(define-innermode poly-org-latex-innermode - :fallback-mode 'host - :head-mode 'host - :tail-mode 'host +(define-innermode poly-org-latex-innermode poly-org-root-innermode :mode 'latex-mode :head-matcher "^[ \t]*\\\\begin{.*}\n" :tail-matcher "^[ \t]*\\\\end{.*}\n")