summaryrefslogtreecommitdiff
path: root/src/roff/troff/node.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/roff/troff/node.cc')
-rw-r--r--src/roff/troff/node.cc36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/roff/troff/node.cc b/src/roff/troff/node.cc
index 458ed484..4e9706fa 100644
--- a/src/roff/troff/node.cc
+++ b/src/roff/troff/node.cc
@@ -750,8 +750,8 @@ public:
void right(hunits);
void down(vunits);
void moveto(hunits, vunits);
- void start_special(tfont *tf);
- void start_special();
+ void start_special(tfont *tf, int no_init_string = 0);
+ void start_special(int no_init_string = 0);
void special_char(unsigned char c);
void end_special();
void word_marker();
@@ -794,7 +794,7 @@ inline void troff_output_file::put(int i)
put_string(i_to_a(i), fp);
}
-void troff_output_file::start_special(tfont *tf)
+void troff_output_file::start_special(tfont *tf, int no_init_string)
{
flush_tbuf();
@@ -807,14 +807,16 @@ void troff_output_file::start_special(tfont *tf)
set_font(tf);
}
do_motion();
- put("x X ");
+ if (!no_init_string)
+ put("x X ");
}
-void troff_output_file::start_special()
+void troff_output_file::start_special(int no_init_string)
{
flush_tbuf();
do_motion();
- put("x X ");
+ if (!no_init_string)
+ put("x X ");
}
void troff_output_file::special_char(unsigned char c)
@@ -3305,8 +3307,8 @@ int node::interpret(macro *)
return 0;
}
-special_node::special_node(const macro &m)
-: mac(m)
+special_node::special_node(const macro &m, int n)
+: mac(m), no_init_string(n)
{
font_size fs = curenv->get_font_size();
int char_height = curenv->get_char_height();
@@ -3318,15 +3320,16 @@ special_node::special_node(const macro &m)
tf = tf->get_plain();
}
-special_node::special_node(const macro &m, tfont *t)
-: mac(m), tf(t)
+special_node::special_node(const macro &m, tfont *t, int n)
+: mac(m), tf(t), no_init_string(n)
{
}
int special_node::same(node *n)
{
- return ((mac == ((special_node *)n)->mac) &&
- (tf == ((special_node *)n)->tf));
+ return ((mac == ((special_node *)n)->mac)
+ && (tf == ((special_node *)n)->tf)
+ && (no_init_string == ((special_node *)n)->no_init_string));
}
const char *special_node::type()
@@ -3334,6 +3337,11 @@ const char *special_node::type()
return "special_node";
}
+int special_node::ends_sentence()
+{
+ return 2;
+}
+
int special_node::force_tprint()
{
return 0;
@@ -3341,12 +3349,12 @@ int special_node::force_tprint()
node *special_node::copy()
{
- return new special_node(mac, tf);
+ return new special_node(mac, tf, no_init_string);
}
void special_node::tprint_start(troff_output_file *out)
{
- out->start_special(get_tfont());
+ out->start_special(get_tfont(), no_init_string);
}
void special_node::tprint_char(troff_output_file *out, unsigned char c)