From e0967a8388d8c6c96f7e30dba990cb77b293acfb Mon Sep 17 00:00:00 2001 From: rootiest Date: Sun, 3 May 2026 14:57:02 -0400 Subject: [PATCH] feat(config): maintain comment alignment in set_config Updated set_config to dynamically adjust leading whitespace of trailing comments when toggling between true/false (or any values of different lengths). This ensures that inline comments in config.toml remain vertically aligned after programmatic updates. --- color-tool | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/color-tool b/color-tool index 8c7db5a..a74cbd4 100755 --- a/color-tool +++ b/color-tool @@ -194,7 +194,33 @@ set_config() { if [[ -n "$new_val" ]]; then if [[ "$original_line" =~ ^([[:space:]]*[A-Za-z_]+[[:space:]]*=[[:space:]]*)([^[:space:]#]+)(.*)$ ]]; then - echo "${BASH_REMATCH[1]}$new_val${BASH_REMATCH[3]}" >> "$temp_file" + local prefix="${BASH_REMATCH[1]}" + local old_val="${BASH_REMATCH[2]}" + local suffix="${BASH_REMATCH[3]}" + + # Adjust whitespace to keep comments aligned if the value length changed + if [[ "$key" != "output" ]]; then + local old_len=${#old_val} + local new_len=${#new_val} + local diff=$((old_len - new_len)) + + if [[ $diff -gt 0 ]]; then + # new value is shorter, add spaces to suffix + local spaces="" + for ((i=0; i> "$temp_file" continue elif [[ "$original_line" =~ ^([[:space:]]*[A-Za-z_]+[[:space:]]*=[[:space:]]*)(.*)$ ]]; then echo "${BASH_REMATCH[1]}$new_val" >> "$temp_file"