summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/special_vars.txt6
-rw-r--r--src/core/special-vars.c17
-rw-r--r--src/fe-text/gui-windows.c2
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;