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"