Sponsored Content
Top Forums Shell Programming and Scripting zsh, prompt, variable expansion, ANSI color sequences Post 302632839 by galanom on Tuesday 1st of May 2012 01:09:02 AM
Old 05-01-2012
zsh, prompt, variable expansion, ANSI color sequences

Hi!

I am using latest ZSH and I have setopt prompt_subst

I have a global hash array variable which contains some color definitions with color names as keys and 256-color ANSI codes (with %{ and %}) as values, eg %{\e[38;5;51m%}

If at function precmd() I set prompt as

Code:
PS1="$FG[red5] Hello World (%M) > "

or
Code:
PS1=$'$FG[red5] Hello World (%M) > '

then it becomes
Code:
\e[38;5;196m Hello World (localhost) >

As you see %{ and %} were removed, but ANSI code remained.

If I set
Code:
PS1=$(print -P "$FG[red5] Hello World (%M) > ")

then prompt appears as expected, but zsh does not calculate it's length correctly (it thinks that it's length is as if control sequences were printable), and tab completion transfers the command way further.

I think that a possible solution would be that the array did not include the %{ and %} and using something like %{$FG[red5]%} to set the color, but it's ugly.

I know there is built-in support for colors but it's only 16 color.

Any help please?
 

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to change prompt color when changing path

Hi all, Can you tell me how to change the prompt color (only the path part) when I chnange directory with "cd"? I use the sequence below in ".bashrc" (Solaris 8) to change my prompt colors and I'd like to modify it to change the path color when I cange directory. PSC() { echo -ne "\"; }... (0 Replies)
Discussion started by: majormark
0 Replies

2. Shell Programming and Scripting

tcsh/csh: set prompt in production to color red

Hi folks This is our prompt at the moment oracle@pinkipinki:/opt/oracle> grep 'set prompt' .cshrc set prompt = "$user@`uname -n`:$cwd> " We wish to have in production the same prompt, but red. Howto do that? I tried a lot a internet manuals, but it doesn't work. (1 Reply)
Discussion started by: slashdotweenie
1 Replies

3. Programming

why the implementatoin of Bakery algorithm in ANSI C does not work in ANSI C

I follow the description of wiki (Lamport's bakery algorithm - Wikipedia, the free encyclopedia), then implement that algorithm in C, but it doesn't work, Starving is still here, is the implementation worry? Only print out: Thread ID: 0 START! Thread ID: 0 END! Thread ID: 0 START!... (2 Replies)
Discussion started by: sehang
2 Replies

4. Shell Programming and Scripting

how to find the value of a variable in zsh?

I have a zsh script written by someone else, I am trying to modify it to work on slightly different data -problem is I know nothing about shell scripting. I am trying to muddle through this myself since I need to learn but can someone tell me how to debug a script? ie. I want to display the value... (6 Replies)
Discussion started by: cmp260
6 Replies

5. Programming

Does ansi c support variable-length array?

I successfully compiled code like below. #include<stdio.h> #include<string.h> int main() { int co = 9; char a; strcpy(a, "hahahah"); printf("co=%d\n", co); printf("a=%s\n", a); return 0; } (7 Replies)
Discussion started by: vistastar
7 Replies

6. Programming

Using ANSI color codes in gcc compiled program

I have put some yellow color codes and works well. I call the funstion using print_usage(stderr, 0); I would like to know if there is any way, to store the ansi color codes in variables and then call them inside fprintf. Or have a format followed by the strings I want to output. ... (5 Replies)
Discussion started by: kristinu
5 Replies

7. Shell Programming and Scripting

Color prompt with file numbers does not work anymore

I have used this color prompt on my servers for long time, in file ~\.bashrc Black="\" Dark="\" Blue="\" LBlue="\" Green="\" LGreen="\" Cyan="\" LCyan="\" Red="\" LRed="\" Purple="\" LPurple="\" Brown="\" Yellow="\" LGray="\" White="\" Reset="\" PS1="$Yellow\u@\h $LBlue\w... (4 Replies)
Discussion started by: Jotne
4 Replies
DMENU(1)						      General Commands Manual							  DMENU(1)

NAME
dmenu - dynamic menu SYNOPSIS
dmenu [-b] [-i] [-l lines] [-m monitor] [-p prompt] [-fn font] [-nb color] [-nf color] [-sb color] [-sf color] [-v] dmenu_run ... dmenu_path DESCRIPTION
dmenu is a dynamic menu for X, originally designed for dwm(1). It manages huge numbers of user-defined menu items efficiently. dmenu reads a list of newline-separated items from standard input and creates a menu. When the user selects an item or enters any text and presses Return, their choice is printed to standard output and dmenu terminates. dmenu_run is a dmenu script used by dwm which lists programs in the user's PATH and executes the selected item. dmenu_path is a program used by dmenu_run to find and cache a list of executables. OPTIONS
-b dmenu appears at the bottom of the screen. -i dmenu matches menu items case insensitively. -l lines dmenu lists items vertically, with the given number of lines. -m monitor dmenu appears on the given Xinerama screen. -p prompt defines the prompt to be displayed to the left of the input field. -fn font defines the font or font set used. -nb color defines the normal background color. #RGB, #RRGGBB, and color names are supported. -nf color defines the normal foreground color. -sb color defines the selected background color. -sf color defines the selected foreground color. -v prints version information to standard output, then exits. USAGE
dmenu is completely controlled by the keyboard. Besides standard Unix line editing and item selection (Up/Down/Left/Right, PageUp/Page- Down, Home/End), the following keys are recognized: Tab (Control-i) Copy the selected item to the input field. Return (Control-j) Confirm selection. Prints the selected item to standard output and exits, returning success. Shift-Return (Control-Shift-j) Confirm input. Prints the input text to standard output and exits, returning success. Escape (Control-c) Exit without selecting an item, returning failure. Control-y Paste the current X selection into the input field. SEE ALSO
dwm(1) dmenu-4.2.1 DMENU(1)
All times are GMT -4. The time now is 10:46 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy