summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorwlemb <wlemb>2004-06-29 07:11:00 +0000
committerwlemb <wlemb>2004-06-29 07:11:00 +0000
commit6e5ac034c3358b9519d887aa71233ddba406d1f9 (patch)
tree3918c663d3516e959782086e1512e89a0e0029e7 /src
parent76b6e459a0510b71d682115440719cc60336ac54 (diff)
downloadgroff-6e5ac034c3358b9519d887aa71233ddba406d1f9.tar.gz
Implement new string-valued register `.sty' to return the current
style name. * env.cpp (environment::get_style_name_string): New function. (init_env_requests): Add `.sty' register. * env.h (environment): Updated. * node.cpp (font_info): Make `get_style_name' a friend. (get_style_name): New function. * node.h: Updated. * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo: Updated.
Diffstat (limited to 'src')
-rw-r--r--src/roff/troff/env.cpp7
-rw-r--r--src/roff/troff/env.h1
-rw-r--r--src/roff/troff/node.cpp9
-rw-r--r--src/roff/troff/node.h1
4 files changed, 18 insertions, 0 deletions
diff --git a/src/roff/troff/env.cpp b/src/roff/troff/env.cpp
index b0234065..f002a28b 100644
--- a/src/roff/troff/env.cpp
+++ b/src/roff/troff/env.cpp
@@ -3109,6 +3109,12 @@ const char *environment::get_font_name_string()
return f.contents();
}
+const char *environment::get_style_name_string()
+{
+ symbol f = get_style_name(fontno);
+ return f.contents();
+}
+
const char *environment::get_name_string()
{
return name.contents();
@@ -3271,6 +3277,7 @@ void init_env_requests()
init_int_env_reg(".ss", get_space_size);
init_int_env_reg(".sss", get_sentence_space_size);
init_string_env_reg(".sr", get_requested_point_size_string);
+ init_string_env_reg(".sty", get_style_name_string);
init_string_env_reg(".tabs", get_tabs);
init_int_env_reg(".u", get_fill);
init_vunits_env_reg(".v", get_vertical_spacing);
diff --git a/src/roff/troff/env.h b/src/roff/troff/env.h
index ab71222f..6fb9cbdf 100644
--- a/src/roff/troff/env.h
+++ b/src/roff/troff/env.h
@@ -309,6 +309,7 @@ public:
const char *get_fill_color_string();
const char *get_font_family_string();
const char *get_font_name_string();
+ const char *get_style_name_string();
const char *get_name_string();
const char *get_point_size_string();
const char *get_requested_point_size_string();
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index e3d4d86d..02624a3a 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -151,6 +151,7 @@ public:
int is_special();
int is_style();
friend symbol get_font_name(int, environment *);
+ friend symbol get_style_name(int);
};
class tfont_spec {
@@ -399,6 +400,14 @@ symbol get_font_name(int fontno, environment *env)
return f;
}
+symbol get_style_name(int fontno)
+{
+ if (font_table[fontno]->is_style())
+ return font_table[fontno]->get_name();
+ else
+ return EMPTY_SYMBOL;
+}
+
hunits font_info::get_space_width(font_size fs, int space_sz)
{
if (is_constant_spaced == CONSTANT_SPACE_NONE)
diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h
index 8da5671b..7baef298 100644
--- a/src/roff/troff/node.h
+++ b/src/roff/troff/node.h
@@ -596,4 +596,5 @@ public:
font_family *lookup_family(symbol);
symbol get_font_name(int, environment *);
+symbol get_style_name(int);
extern search_path include_search_path;