From 8b0d89230c60a843886d36f392755e169b29a114 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Mon, 2 Nov 2009 12:14:00 +0100 Subject: [PATCH] Allow lambda expression to be indented. --- pret-lam.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pret-lam.lua b/pret-lam.lua index 68db577..6935043 100644 --- a/pret-lam.lua +++ b/pret-lam.lua @@ -43,6 +43,10 @@ local submatches = {} local bases = {} -- Store the last line for each indent level local indentlines = {} +-- The amount of indent of the first line, which we will strip of all +-- subsequent lines. This allows the entire block to be indented as normal in +-- the tex source code. +local first_indent -- See if str starts with a symbol, and return the remaining string and that -- symbol. If no symbol from the table is matched, just returns the first @@ -129,6 +133,17 @@ end -- line4, and line is no longer in scope since it is replaced by line4. local function do_indent(line) newind, rest = utf.match(line, '^(%s*)(.*)') + + -- Store the first line's indent + if not first_indent then + first_indent = utf.len(newind) + end + + -- Strip the indent of the first line from this line's indent. + newind = utf.sub(newind, first_indent + 1) + -- Rebuild line, so we can still use it below + line = newind .. rest + prev = -1 -- Loop all the previous lines for indent, unused in pairs(indentlines) do @@ -199,6 +214,7 @@ function vis.begin_of_display() bases = {} end indentlines = {} + first_indent = nil end -- 2.30.2