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 <[email protected]>
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