Prettyprint comments in italic.
authorMatthijs Kooijman <matthijs@stdin.nl>
Sun, 6 Dec 2009 16:18:42 +0000 (17:18 +0100)
committerMatthijs Kooijman <matthijs@stdin.nl>
Sun, 6 Dec 2009 16:18:42 +0000 (17:18 +0100)
pret-haskell.lua
pret-lam.lua

index 4ce8d3e524670d51077b56b4f3967553cb93e6c0..ca3a1651d520ae2c13f99426f45af90f2498c4cc 100644 (file)
@@ -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))
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)