diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-10-11 20:41:28 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-10-11 20:41:28 -0700 |
commit | 5df51b54116d4287df161c42ca0edb16fb1f79a5 (patch) | |
tree | 6f6046d624fafa24843ddefd46522871e7104bed | |
parent | 423366b14fec676bcd13f04659f91ad7b6512724 (diff) | |
download | txr-5df51b54116d4287df161c42ca0edb16fb1f79a5.tar.gz txr-5df51b54116d4287df161c42ca0edb16fb1f79a5.tar.bz2 txr-5df51b54116d4287df161c42ca0edb16fb1f79a5.zip |
streams: new function inc-indent-abs.
* stream.c (inc_indent_abs): New function.
(stream_init): inc-init-abs intrinsic registered.
* stream.h (inc_indent_abs): Declared.
* txr.1: Documented.
* stdlib/doc-syms.tl: Updated.
-rw-r--r-- | stdlib/doc-syms.tl | 7 | ||||
-rw-r--r-- | stream.c | 13 | ||||
-rw-r--r-- | stream.h | 1 | ||||
-rw-r--r-- | txr.1 | 13 |
4 files changed, 30 insertions, 4 deletions
diff --git a/stdlib/doc-syms.tl b/stdlib/doc-syms.tl index 59535d41..e214011c 100644 --- a/stdlib/doc-syms.tl +++ b/stdlib/doc-syms.tl @@ -864,7 +864,7 @@ ("get-fd" "N-011D42AB") ("get-frames" "N-010405DA") ("get-hash-userdata" "N-030B41A7") - ("get-indent" "N-024E9FD8") + ("get-indent" "N-00F72290") ("get-indent-mode" "N-03F3170C") ("get-json" "N-014295FE") ("get-jsons" "N-0124D378") @@ -998,7 +998,8 @@ ("inaddr-loopback" "N-026A2C3B") ("inaddr-str" "N-02456270") ("inc" "N-03A0AABD") - ("inc-indent" "N-024E9FD8") + ("inc-indent" "N-00F72290") + ("inc-indent-abs" "N-00F72290") ("include" "N-01A2ECA0") ("indent-code" "N-00512FDD") ("indent-data" "N-00512FDD") @@ -1703,7 +1704,7 @@ ("set-cflags" "N-02061924") ("set-hash-userdata" "N-030B40A7") ("set-iflags" "N-02061924") - ("set-indent" "N-024E9FD8") + ("set-indent" "N-00F72290") ("set-indent-mode" "N-03F3170C") ("set-key" "N-033F7D05") ("set-left" "N-033F7D05") @@ -4104,6 +4104,18 @@ val inc_indent(val stream, val delta) return oldval; } +val inc_indent_abs(val stream, val delta) +{ + val self = lit("inc-indent-abs"); + struct strm_base *s = coerce(struct strm_base *, + cobj_handle(self, stream, stream_cls)); + val oldval = num(s->indent_chars); + s->indent_chars = c_num(plus(delta, oldval), self); + if (s->indent_chars < 0) + s->indent_chars = 0; + return oldval; +} + val width_check(val stream, val alt) { val self = lit("width-check"); @@ -5553,6 +5565,7 @@ void stream_init(void) reg_fun(intern(lit("get-indent"), user_package), func_n1(get_indent)); reg_fun(intern(lit("set-indent"), user_package), func_n2(set_indent)); reg_fun(intern(lit("inc-indent"), user_package), func_n2(inc_indent)); + reg_fun(intern(lit("inc-indent-abs"), user_package), func_n2(inc_indent_abs)); reg_fun(intern(lit("width-check"), user_package), func_n2(width_check)); reg_fun(intern(lit("force-break"), user_package), func_n1(force_break)); reg_fun(intern(lit("set-max-length"), user_package), func_n2(set_max_length)); @@ -236,6 +236,7 @@ val set_indent_mode(val stream, val mode); val get_indent(val stream); val set_indent(val stream, val indent); val inc_indent(val stream, val delta); +val inc_indent_abs(val stream, val delta); val width_check(val stream, val alt); val force_break(val stream); val set_max_length(val stream, val length); @@ -62570,11 +62570,12 @@ if and only if the current mode is equal to .metn compare-mode . -.coNP Functions @, get-indent @ set-indent and @ inc-indent +.coNP Functions @, get-indent @, set-indent @ inc-indent and @ inc-indent-abs .synb .mets (get-indent << stream ) .mets (set-indent < stream << new-indent ) .mets (inc-indent < stream << indent-delta ) +.mets (inc-indent-abs < stream << indent-delta ) .syne .desc These functions manipulate the indentation value of the stream. @@ -62605,6 +62606,16 @@ The indentation is calculated by adding to the current column position. If a negative indentation results, it is clamped to zero. +The +.code inc-indent-abs +function sets +.metn stream 's +indentation relative to the current indentation value. +The indentation is calculated by adding +.meta indent-delta +to the current indentation amount. +If a negative indentation results, it is clamped to zero. + .coNP Function @ width-check .synb .mets (width-check < stream << alt-char ) |