From 1698500f8094e7e885b92371f23045cc827bfad6 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 12 Jan 2001 17:05:05 +0000 Subject: [PATCH] $[.10]var truncates the var to 10 chars, but doesn't pad if var is shorter than 10 chars git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1105 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- docs/special_vars.txt | 6 ++++-- src/core/special-vars.c | 17 +++++++++++------ src/fe-text/gui-windows.c | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/docs/special_vars.txt b/docs/special_vars.txt index 81e30a78..a5e376f0 100644 --- a/docs/special_vars.txt +++ b/docs/special_vars.txt @@ -7,7 +7,7 @@ referred to as expandos. They are special in that the client is constantly updating their values automatically. There are also numerous variable modifiers available. - Modifier Description + Modifier Description $variable A normal variable, expanding to the first match of: | 1) an internal SET variable | 2) an environment variable @@ -16,7 +16,9 @@ numerous variable modifiers available. | The value is padded to meet the width with the | character given after number (default is space). | The value is truncated to specified width unless - | '!' character precedes the number. + | '!' character precedes the number. If '.' character + | precedes the number the value isn't padded, just + | truncated. $#variable Expands to the number of words in $variable. If $variable | is omitted, it assumes $* $@variable Expands to the number of characters in $variable. if diff --git a/src/core/special-vars.c b/src/core/special-vars.c index 7d4deb78..62202a20 100644 --- a/src/core/special-vars.c +++ b/src/core/special-vars.c @@ -27,6 +27,7 @@ #define ALIGN_RIGHT 0x01 #define ALIGN_CUT 0x02 +#define ALIGN_PAD 0x04 #define isvarchar(c) \ (isalnum(c) || (c) == '_') @@ -273,7 +274,7 @@ static int get_alignment_args(char **data, int *align, int *flags, char *pad) char *str; *align = 0; - *flags = ALIGN_CUT; + *flags = ALIGN_CUT|ALIGN_PAD; *pad = ' '; /* '!' = don't cut, '-' = right padding */ @@ -283,6 +284,8 @@ static int get_alignment_args(char **data, int *align, int *flags, char *pad) *flags &= ~ALIGN_CUT; else if (*str == '-') *flags |= ALIGN_RIGHT; + else if (*str == '.') + *flags &= ~ALIGN_PAD; str++; } if (!isdigit(*str)) @@ -321,11 +324,13 @@ static char *get_alignment(const char *text, int align, int flags, char pad) g_string_truncate(str, align); /* add pad characters */ - while (str->len < align) { - if (flags & ALIGN_RIGHT) - g_string_prepend_c(str, pad); - else - g_string_append_c(str, pad); + if (flags & ALIGN_PAD) { + while (str->len < align) { + if (flags & ALIGN_RIGHT) + g_string_prepend_c(str, pad); + else + g_string_append_c(str, pad); + } } ret = str->str; diff --git a/src/fe-text/gui-windows.c b/src/fe-text/gui-windows.c index 7152a55a..268d0d74 100644 --- a/src/fe-text/gui-windows.c +++ b/src/fe-text/gui-windows.c @@ -1119,7 +1119,7 @@ static void read_settings(void) void gui_windows_init(void) { settings_add_int("lookandfeel", "indent", 10); - settings_add_str("lookandfeel", "prompt", "[$T] "); + settings_add_str("lookandfeel", "prompt", "[$[.15]T] "); settings_add_str("lookandfeel", "prompt_window", "[$winname] "); prompt = NULL; prompt_window = NULL;