From f42095b7b72fc3419a661c65d17f46ba3cbc8d62 Mon Sep 17 00:00:00 2001
From: John MacFarlane <fiddlosopher@gmail.com>
Date: Sat, 13 Jul 2013 13:48:50 -0700
Subject: [PATCH] Docx writer:  Make `--no-highlight` work properly.

---
 src/Text/Pandoc/Writers/Docx.hs | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs
index e899200f6..d579d4fa6 100644
--- a/src/Text/Pandoc/Writers/Docx.hs
+++ b/src/Text/Pandoc/Writers/Docx.hs
@@ -214,7 +214,8 @@ writeDocx opts doc@(Pandoc meta _) = do
   let newstyles = styleToOpenXml $ writerHighlightStyle opts
   let stylepath = "word/styles.xml"
   styledoc <- parseXml refArchive stylepath
-  let styledoc' = styledoc{ elContent = elContent styledoc ++ map Elem newstyles }
+  let styledoc' = styledoc{ elContent = elContent styledoc ++
+                  [Elem x | x <- newstyles, writerHighlight opts] }
   let styleEntry = toEntry stylepath epochtime $ renderXml styledoc'
 
   -- construct word/numbering.xml
@@ -665,13 +666,16 @@ inlineToOpenXML opts (Math mathType str) = do
         Right r -> return [r]
         Left  _ -> inlinesToOpenXML opts (readTeXMath str)
 inlineToOpenXML opts (Cite _ lst) = inlinesToOpenXML opts lst
-inlineToOpenXML _ (Code attrs str) =
+inlineToOpenXML opts (Code attrs str) =
   withTextProp (rStyle "VerbatimChar")
-  $ case highlight formatOpenXML attrs str of
-         Nothing  -> intercalate [br]
-                     `fmap` (mapM formattedString $ lines str)
-         Just h   -> return h
-     where formatOpenXML _fmtOpts = intercalate [br] . map (map toHlTok)
+  $ if writerHighlight opts
+       then case highlight formatOpenXML attrs str of
+             Nothing  -> unhighlighted
+             Just h   -> return h
+       else unhighlighted
+     where unhighlighted = intercalate [br] `fmap`
+                             (mapM formattedString $ lines str)
+           formatOpenXML _fmtOpts = intercalate [br] . map (map toHlTok)
            toHlTok (toktype,tok) = mknode "w:r" []
                                      [ mknode "w:rPr" []
                                        [ rStyle $ show toktype ]