\lcont and \quote were being confused by whitespace (in particular,
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 30 Mar 2004 20:22:00 +0000 (20:22 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 30 Mar 2004 20:22:00 +0000 (20:22 +0000)
a single newline) immediately after their opening brace; this was
causing a normal paragraph to be started, thus making it fiddly and
annoying to arrange the first paragraph of a \lcont to be a code
para or anything else special. Now fixed.

git-svn-id: svn://svn.tartarus.org/sgt/halibut@4005 cda61777-01e9-0310-a592-d414129be87e

input.c
inputs/test.but

diff --git a/input.c b/input.c
index 4c3b10d..429b4d5 100644 (file)
--- a/input.c
+++ b/input.c
@@ -592,14 +592,17 @@ static void read_file(paragraph ***ret, input *in, indexdata *idx) {
                     */
                    dtor(t), t = get_token(in);
                }
-               if (t.type == tok_eop || t.type == tok_eof)
+               if (t.type == tok_eop || t.type == tok_eof ||
+                   t.type == tok_rbrace) { /* might be } terminating \lcont */
+                   if (t.type == tok_rbrace)
+                       already = TRUE;
                    break;
-               else if (t.type == tok_cmd && t.cmd == c_c)
+               } else if (t.type == tok_cmd && t.cmd == c_c) {
                    wtype = word_WeakCode;
-               else if (t.type == tok_cmd && t.cmd == c_e &&
-                        wtype == word_WeakCode)
+               else if (t.type == tok_cmd && t.cmd == c_e &&
+                          wtype == word_WeakCode) {
                    wtype = word_Emph;
-               else {
+               else {
                    error(err_brokencodepara, &t.pos);
                    prev_para_type = par.type;
                    addpara(par, ret);
@@ -633,6 +636,16 @@ static void read_file(paragraph ***ret, input *in, indexdata *idx) {
                continue;
            }
 
+           /*
+            * Also expect, and swallow, any whitespace after that
+            * (a newline before a code paragraph wouldn't be
+            * surprising).
+            */
+           do {
+               dtor(t), t = get_token(in);
+           } while (t.type == tok_white);
+           already = TRUE;
+
            if (cmd == c_lcont) {
                /*
                 * \lcont causes a continuation of a list item into
index 1fc007e..0331535 100644 (file)
@@ -29,7 +29,7 @@ a bit]
 
 \define{eur} \u20AC{EUR }
 
-\versionid $Id: test.but,v 1.24 2004/03/30 19:40:56 simon Exp $
+\versionid $Id: test.but,v 1.25 2004/03/30 20:22:00 simon Exp $
 
 \C{ch\\ap} First chapter title; for similar wrapping reasons this
 chapter title will be ludicrously long. I wonder how much more
@@ -97,6 +97,11 @@ And here's a sublist. Numbered, just for variety.
 
 \n 1b.
 
+\lcont{
+\c Code
+\c Paragraph
+}
+
 \n 1c.
 
 \lcont{This is an even sillier one: a continuation of a list item in