Prettyprint comments in italic.
[matthijs/master-project/report.git] / pret-lam.lua
index f8ddb676088a7870fd94a979276d3283aa7b7dd6..41ffbc7f779b28f28e188a38669dd0c3ecad8c4a 100644 (file)
@@ -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)