Hi, I found `ox-md` exporter drop src-block language information. My patch fixes the behavior; to embed src-block language information using markdown src block grammar.
1. Open some buffer 2. Tnsert below code 3. Turn on `org-mode` 4. `C-c C-e m M` (export as markdown in temp buffer) ## org source ```org #+begin_src python print(1 + 2) #+end_src #+begin_src emacs-lisp (print "hello") #+end_src #+begin_src something source code #+end_src ``` ## before ```markdown # Table of Contents print(1 + 2) (print "hello") something source code ``` ## after ```markdown # Table of Contents ```python print(1 + 2) ``` ```emacs-lisp (print "hello") ``` ``` something source code ``` ```
From 0ffa1f8f6dede26b7f1e8ce4afc1fbcd2f45755b Mon Sep 17 00:00:00 2001 From: conao3 <conao3@gmail.com> Date: Thu, 27 Aug 2020 13:52:50 +0900 Subject: [PATCH] Add org-md-src-block for src-block formater * lisp/ox-md.el (org-md-src-block): Add new formater for src block * lisp/ox-md.el (org-export-define-derived-backend 'md): use it --- lisp/ox-md.el | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lisp/ox-md.el b/lisp/ox-md.el index 1d20c04f4..59db0c765 100644 --- a/lisp/ox-md.el +++ b/lisp/ox-md.el @@ -110,7 +110,7 @@ The %s will be replaced by the footnote reference itself." (quote-block . org-md-quote-block) (section . org-md-section) (special-block . org-md--convert-to-html) - (src-block . org-md-example-block) + (src-block . org-md-src-block) (table . org-md--convert-to-html) (template . org-md-template) (verbatim . org-md-verbatim)) @@ -331,6 +331,18 @@ channel." (org-remove-indentation (org-export-format-code-default example-block info)))) +(defun org-md-src-block (src-block _contents info) + "Transcode SRC-BLOCK element into Markdown format. +CONTENTS is nil. INFO is a plist used as a communication +channel." + (let ((lang (pcase (plist-get info :parse-tree) + (`(org-data ,_ (section ,_ (src-block (:language ,l . ,_)))) l)))) + (format + "```%s\n%s```" + (or lang "") + (org-remove-indentation + (org-export-format-code-default src-block info))))) + (defun org-md-export-block (export-block contents info) "Transcode a EXPORT-BLOCK element from Org to Markdown. CONTENTS is nil. INFO is a plist holding contextual information." -- 2.28.0