Org writer: preserve line-numbering for example and code blocks.
This commit is contained in:
parent
053c683d35
commit
c998b937c1
2 changed files with 50 additions and 3 deletions
|
@ -188,13 +188,19 @@ blockToOrg (Header level attr inlines) = do
|
|||
then empty
|
||||
else cr <> nest (level + 1) (propertiesDrawer attr)
|
||||
return $ headerStr <> " " <> contents <> drawerStr <> blankline
|
||||
blockToOrg (CodeBlock (_,classes,_) str) = do
|
||||
blockToOrg (CodeBlock (_,classes,kvs) str) = do
|
||||
opts <- gets stOptions
|
||||
let tabstop = writerTabStop opts
|
||||
let startnum = maybe "" (\x -> ' ' : trimr x) $ lookup "startFrom" kvs
|
||||
let numberlines = if "numberLines" `elem` classes
|
||||
then if "continuedSourceBlock" `elem` classes
|
||||
then " +n" ++ startnum
|
||||
else " -n" ++ startnum
|
||||
else ""
|
||||
let at = map pandocLangToOrg classes `intersect` orgLangIdentifiers
|
||||
let (beg, end) = case at of
|
||||
[] -> ("#+BEGIN_EXAMPLE", "#+END_EXAMPLE")
|
||||
(x:_) -> ("#+BEGIN_SRC " ++ x, "#+END_SRC")
|
||||
[] -> ("#+BEGIN_EXAMPLE" ++ numberlines, "#+END_EXAMPLE")
|
||||
(x:_) -> ("#+BEGIN_SRC " ++ x ++ numberlines, "#+END_SRC")
|
||||
return $ text beg $$ nest tabstop (text str) $$ text end $$ blankline
|
||||
blockToOrg (BlockQuote blocks) = do
|
||||
contents <- blockListToOrg blocks
|
||||
|
|
41
test/command/5178.md
Normal file
41
test/command/5178.md
Normal file
|
@ -0,0 +1,41 @@
|
|||
```
|
||||
% pandoc -f rst -t org
|
||||
.. code:: haskell
|
||||
:number-lines: 42
|
||||
|
||||
main = putStrLn "Hello World!"
|
||||
unsafePerformIO main
|
||||
^D
|
||||
#+BEGIN_SRC haskell -n 42
|
||||
main = putStrLn "Hello World!"
|
||||
unsafePerformIO main
|
||||
#+END_SRC
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f org -t native
|
||||
#+BEGIN_SRC lisp -n 20
|
||||
(+ 1 1)
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC lisp +n 10
|
||||
(+ 2 2)
|
||||
#+END_SRC
|
||||
^D
|
||||
[CodeBlock ("",["commonlisp","numberLines"],[("org-language","lisp"),("startFrom","20")]) "(+ 1 1)\n"
|
||||
,CodeBlock ("",["commonlisp","numberLines","continuedSourceBlock"],[("org-language","lisp"),("startFrom","10")]) "(+ 2 2)\n"]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f native -t org
|
||||
[CodeBlock ("",["commonlisp","numberLines"],[("org-language","lisp"),("startFrom","20")]) "(+ 1 1)\n"
|
||||
,CodeBlock ("",["commonlisp","numberLines","continuedSourceBlock"],[("org-language","lisp"),("startFrom","10")]) "(+ 2 2)\n"]
|
||||
^D
|
||||
#+BEGIN_SRC lisp -n 20
|
||||
(+ 1 1)
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC lisp +n 10
|
||||
(+ 2 2)
|
||||
#+END_SRC
|
||||
```
|
Loading…
Add table
Reference in a new issue