From: Matthijs Kooijman <matthijs@stdin.nl>
Date: Sun, 6 Dec 2009 16:18:42 +0000 (+0100)
Subject: Prettyprint comments in italic.
X-Git-Tag: final-thesis~85
X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=03068992fa44475f901eb34cec49f2a2304b473f;p=matthijs%2Fmaster-project%2Freport.git

Prettyprint comments in italic.
---

diff --git a/pret-haskell.lua b/pret-haskell.lua
index 4ce8d3e..ca3a165 100644
--- a/pret-haskell.lua
+++ b/pret-haskell.lua
@@ -40,6 +40,13 @@ function visualizer.flush_line(str,nested)
                 ctxsprint('}')
                 -- Eat the processed characters
                 str = rest
+            elseif utf.match(str, "^%-%-") then
+                ctxsprint('{\\italic{--')
+                -- Recursively call ourselves to handle spaces gracefully.
+                visualizer.flush_line(utf.sub(str, 3))
+                ctxsprint('}}')
+                -- Done with this line
+                str = ''
             else
                 -- Write the first character
                 texwrite(utf.sub(str, 1, 1))
diff --git a/pret-lam.lua b/pret-lam.lua
index f8ddb67..41ffbc7 100644
--- a/pret-lam.lua
+++ b/pret-lam.lua
@@ -175,6 +175,7 @@ local function do_indent(line)
         copyind = utf.sub(indentlines[prev], 1, #newind)
         setwidth = "\\setwidthof{" .. copyind .. "}\\to\\pretlamalignwidth"
         hskip = "\\hskip\\pretlamalignwidth"
+        print("{" .. setwidth .. hskip .. "}" .. rest)
         return "{" .. setwidth .. hskip .. "}" .. rest
     end
         -- No previous line? Just return the unmodified line then
@@ -221,12 +222,16 @@ vis.begin_of_inline = vis.begin_of_display
 vis.end_of_inline = vis.end_of_display
 
 function vis.flush_line(str,nested)
-    buffers.flush_result(vis.do_line(str), nested)   
+    buffers.flush_result(vis.do_line(str, false), nested)   
 end
 
-function vis.do_line(str)
+function vis.do_line(str, no_indent)
     result = {}
-    str = do_indent(str)
+    if not no_indent then
+        -- Allow ignore of the indentation stuff when we're calling ourselves
+        -- for a partial line.
+        str = do_indent(str)
+    end
     while str ~= "" do
         local found = false
         local word, symbol
@@ -234,10 +239,17 @@ function vis.do_line(str)
         if text then
             table.insert(result, '\\strikethrough{')
             -- Recursively call ourselves to handle spaces gracefully.
-            result = array_concat(result, vis.do_line(text))
+            result = array_concat(result, vis.do_line(text, true))
             table.insert(result, '}')
             -- Eat the processed characters
             str = rest
+        elseif utf.match(str, "^%-%-") then
+            table.insert(result, '{\\italic{--')
+            -- Recursively call ourselves to handle spaces gracefully.
+            result = array_concat(result, vis.do_line(utf.sub(str, 3), true))
+            table.insert(result, '}}')
+            -- Done with this line
+            str = ''
         else
             -- See if the next token is a word
             word, str = take_word(str)