gbranden pushed a commit to branch master in repository groff. commit b1d9fc5a30020483c718fbfe04039b3a59eb7882 Author: G. Branden Robinson <g.branden.robin...@gmail.com> AuthorDate: Fri May 30 20:25:15 2025 -0500
[troff]: Trivially refactor. ...continuing reform of functions that are troff request handlers such that their names end with `_request`. * src/roff/troff/env.cpp (tab_character): Rename this... (tab_character_request): ...to this. (leader_character): Rename this... (leader_character_request): ...to this. (hyphen_char): Rename this... (hyphenation_character_request): ...to this. (field_characters): Rename this... (field_characters_request): ...to this. Also mark it `static` because the `environment` class has no need for `friend` access to it, unlike the foregoing. (init_env_requests): Wire up request names to new handler function names. * src/roff/troff/input.cpp (set_page_character): Rename this... (page_character_request): ...to this. Also mark it `static` because the `environment` class has no need for `friend` access to it. (init_input_requests): Wire up request name to new handler function name. * src/roff/troff/node.cpp (set_soft_hyphen_character): Rename this... (soft_hyphen_character_request): ...to this. (init_node_requests): Wire up request name to new handler function name. Also annotate open questions and potential future directions. --- ChangeLog | 32 ++++++++++++++++++++++++++++++++ src/roff/troff/env.cpp | 30 +++++++++++++++++++++--------- src/roff/troff/env.h | 4 ++-- src/roff/troff/input.cpp | 11 +++++++++-- src/roff/troff/node.cpp | 10 ++++++++-- 5 files changed, 72 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index a22a2e967..0084aeee2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,35 @@ +2025-05-30 G. Branden Robinson <g.branden.robin...@gmail.com> + + [troff]: Trivially refactor, continuing reform of functions that + are troff request handlers such that their names end with + `_request`. + + * src/roff/troff/env.cpp + (tab_character): Rename this... + (tab_character_request): ...to this. + (leader_character): Rename this... + (leader_character_request): ...to this. + (hyphen_char): Rename this... + (hyphenation_character_request): ...to this. + (field_characters): Rename this... + (field_characters_request): ...to this. Also mark it `static` + because the `environment` class has no need for `friend` access + to it, unlike the foregoing. + (init_env_requests): Wire up request names to new handler + function names. + * src/roff/troff/input.cpp + (set_page_character): Rename this... + (page_character_request): ...to this. Also mark it `static` + because the `environment` class has no need for `friend` access + to it. + (init_input_requests): Wire up request name to new handler + function name. + * src/roff/troff/node.cpp + (set_soft_hyphen_character): Rename this... + (soft_hyphen_character_request): ...to this. + (init_node_requests): Wire up request name to new handler + function name. + 2025-05-30 G. Branden Robinson <g.branden.robin...@gmail.com> * src/roff/troff/input.cpp (read_title_parts): Fix code style diff --git a/src/roff/troff/env.cpp b/src/roff/troff/env.cpp index 90bb92a08..529f79968 100644 --- a/src/roff/troff/env.cpp +++ b/src/roff/troff/env.cpp @@ -309,7 +309,6 @@ int font_size::to_units() // we can't do this in a static constructor because various dictionaries // have to get initialized first - static symbol default_environment_name("0"); void init_environments() @@ -318,13 +317,21 @@ void init_environments() (void) env_dictionary.lookup(default_environment_name, curenv); } -void tab_character() +// Set tab character, used to fill out the remainder of a tab stop where +// a tab (TAB, U+0009) occurs in the input. If a null pointer, +// horizontal motion "fills" the tab stop. +void tab_character_request() { curenv->tab_char = read_character(); skip_line(); } -void leader_character() +// Set leader character, used to fill out the remainder of a tab stop +// where a leader (SOH, U+0001) occurs in the input. If a null pointer, +// horizontal motion "fills" the tab stop. Used when the behavior of a +// null pointer tab character is also desired on the same output line +// (or more generally). +void leader_character_request() { curenv->leader_char = read_character(); skip_line(); @@ -1793,9 +1800,13 @@ void set_hyphenation_mode_default() skip_line(); } -void hyphen_char() +// Set hyphenation character, which the input uses to mark the position +// of a discretionary break ("dbreak") in a word. +void hyphenation_character_request() { curenv->hyphen_indicator_char = read_character(); + // TODO?: If null pointer, set to ESCAPE_PERCENT, eliminating test(s) + // while processing output line? skip_line(); } @@ -3017,7 +3028,8 @@ tab_type environment::distance_to_next_tab(hunits *distance, hunits *leftpos) leftpos); } -void field_characters() +// XXX: Field characters are global; shouldn't they be environmental? +static void field_characters_request() { field_delimiter_char = read_character(); if (field_delimiter_char) @@ -4270,12 +4282,12 @@ void init_env_requests() init_request("ev", environment_switch); init_request("evc", environment_copy); init_request("fam", family_change); - init_request("fc", field_characters); + init_request("fc", field_characters_request); init_request("fi", fill); init_request("fcolor", fill_color_change); init_request("ft", select_font); init_request("gcolor", stroke_color_change); - init_request("hc", hyphen_char); + init_request("hc", hyphenation_character_request); init_request("hla", select_hyphenation_language); init_request("hlm", hyphen_line_max_request); init_request("hy", hyphenate_request); @@ -4285,7 +4297,7 @@ void init_env_requests() init_request("in", indent); init_request("it", input_trap); init_request("itc", input_trap_continued); - init_request("lc", leader_character); + init_request("lc", leader_character_request); init_request("linetabs", line_tabs_request); init_request("ll", line_length); init_request("ls", line_spacing); @@ -4305,7 +4317,7 @@ void init_env_requests() init_request("ss", space_size); init_request("ta", set_tabs); init_request("ti", temporary_indent); - init_request("tc", tab_character); + init_request("tc", tab_character_request); init_request("tl", title); init_request("ul", underline); init_request("vs", vertical_spacing); diff --git a/src/roff/troff/env.h b/src/roff/troff/env.h index 95a2c2739..aea185561 100644 --- a/src/roff/troff/env.h +++ b/src/roff/troff/env.h @@ -398,8 +398,8 @@ public: friend void margin_character(); friend void no_number(); friend void number_lines(); - friend void leader_character(); - friend void tab_character(); + friend void leader_character_request(); + friend void tab_character_request(); friend void hyphenate_request(); friend void set_hyphenation_mode_default(); friend void no_hyphenate(); diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp index 57e573416..1c56c40a3 100644 --- a/src/roff/troff/input.cpp +++ b/src/roff/troff/input.cpp @@ -5964,9 +5964,16 @@ static void do_width() // \w charinfo *page_character; -void set_page_character() +// XXX: The page character is global; shouldn't it be environmental? +// Its idiomatic use is in `tl` requests when formatting titles (headers +// or footers), which full-service macro packages typically put in their +// own environment anyway to ensure that a consistent typeface is used +// there regardless of how body text is styled. +static void page_character_request() { page_character = read_character(); + // TODO?: If null pointer, set to `percent_symbol` (see below), + // eliminating test in `read_title_parts()` (also below)? skip_line(); } @@ -9589,7 +9596,7 @@ void init_input_requests() init_request("open", open_request); init_request("opena", opena_request); init_request("output", output_request); - init_request("pc", set_page_character); + init_request("pc", page_character_request); init_request("pchar", report_character_request); init_request("pcolor", report_color); init_request("pcomposite", report_composite_characters); diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp index 7c0f8af40..5681829a7 100644 --- a/src/roff/troff/node.cpp +++ b/src/roff/troff/node.cpp @@ -7314,7 +7314,13 @@ static void set_kerning_mode() skip_line(); } -static void set_soft_hyphen_character() +// Set (soft) hyphenation character, used to mark where a discretionary +// break ("dbreak") has occurred in formatted output, conventionally +// within a word at a syllable boundary. +// +// XXX: The soft hyphen character is global; shouldn't it be +// environmental? +static void soft_hyphen_character_request() { soft_hyphen_char = read_character(); if (0 /* nullptr */ == soft_hyphen_char) @@ -7368,7 +7374,7 @@ void init_node_requests() init_request("lg", set_ligature_mode); init_request("pftr", dump_font_translations); init_request("rfschar", remove_font_specific_character); - init_request("shc", set_soft_hyphen_character); + init_request("shc", soft_hyphen_character_request); init_request("special", set_special_fonts); init_request("sty", associate_style_with_font_position); init_request("tkf", configure_track_kerning); _______________________________________________ groff-commit mailing list groff-commit@gnu.org https://lists.gnu.org/mailman/listinfo/groff-commit