summaryrefslogtreecommitdiff
path: root/src/roff/troff/env.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/roff/troff/env.cc')
-rw-r--r--src/roff/troff/env.cc23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/roff/troff/env.cc b/src/roff/troff/env.cc
index a7330ad1..1bd12cb6 100644
--- a/src/roff/troff/env.cc
+++ b/src/roff/troff/env.cc
@@ -601,6 +601,7 @@ environment::environment(symbol nm)
underline_lines(0),
underline_spaces(0),
input_trap_count(0),
+ continued_input_trap(0),
line(0),
prev_text_length(0),
width_total(0),
@@ -690,6 +691,7 @@ environment::environment(const environment *e)
underline_lines(0),
underline_spaces(0),
input_trap_count(0),
+ continued_input_trap(0),
line(0),
prev_text_length(e->prev_text_length),
width_total(0),
@@ -767,6 +769,7 @@ void environment::copy(const environment *e)
underline_lines = 0;
underline_spaces = 0;
input_trap_count = 0;
+ continued_input_trap = 0;
prev_text_length = e->prev_text_length;
width_total = 0;
space_total = 0;
@@ -1632,8 +1635,9 @@ void environment::newline()
hyphen_line_count = 0;
}
if (input_trap_count > 0) {
- if (--input_trap_count == 0)
- spring_trap(input_trap);
+ if (!(continued_input_trap && prev_line_interrupted))
+ if (--input_trap_count == 0)
+ spring_trap(input_trap);
}
}
@@ -2337,9 +2341,11 @@ void no_adjust()
skip_line();
}
-void input_trap()
+void do_input_trap(int continued)
{
curenv->input_trap_count = 0;
+ if (continued)
+ curenv->continued_input_trap = 1;
int n;
if (has_arg() && get_integer(&n)) {
if (n <= 0)
@@ -2356,6 +2362,16 @@ void input_trap()
skip_line();
}
+void input_trap()
+{
+ do_input_trap(0);
+}
+
+void input_trap_continued()
+{
+ do_input_trap(1);
+}
+
/* tabs */
// must not be R or C or L or a legitimate part of a number expression
@@ -3042,6 +3058,7 @@ const char *environment::get_requested_point_size_string()
void init_env_requests()
{
init_request("it", input_trap);
+ init_request("itc", input_trap_continued);
init_request("ad", adjust);
init_request("na", no_adjust);
init_request("ev", environment_switch);