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.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/roff/troff/env.cc b/src/roff/troff/env.cc
index 56f357c9..ca4881c2 100644
--- a/src/roff/troff/env.cc
+++ b/src/roff/troff/env.cc
@@ -2135,7 +2135,7 @@ void environment::add_html_tag_tabs()
}
}
-void environment::do_break()
+void environment::do_break(int spread)
{
if (curdiv == topdiv && topdiv->before_first_page) {
topdiv->begin_page();
@@ -2146,7 +2146,7 @@ void environment::do_break()
if (line) {
line = new space_node(H0, line); // this is so that hyphenation works
space_total++;
- possibly_break_line();
+ possibly_break_line(0, spread);
}
while (line != 0 && line->discardable()) {
width_total -= line->width();
@@ -2185,17 +2185,27 @@ int environment::is_empty()
return !current_tab && line == 0 && pending_lines == 0;
}
-void break_request()
+void do_break_request(int spread)
{
while (!tok.newline() && !tok.eof())
tok.next();
if (break_flag) {
- curenv->do_break();
+ curenv->do_break(spread);
curenv->add_html_tag(".br");
}
tok.next();
}
+void break_request()
+{
+ do_break_request(0);
+}
+
+void break_spread_request()
+{
+ do_break_request(1);
+}
+
void title()
{
if (curdiv == topdiv && topdiv->before_first_page) {
@@ -3014,6 +3024,7 @@ void init_env_requests()
init_request("cc", control_char);
init_request("c2", no_break_control_char);
init_request("br", break_request);
+ init_request("brp", break_spread_request);
init_request("tl", title);
init_request("ta", set_tabs);
init_request("linetabs", line_tabs_request);