Hi All, I do some probably "unusual" things with fish shell scripts, some of these have broken in fish 3.0, i'm going to start by describing the problem because i'm interested in any solution even if its significantly different to what I was doing before.
For my prompt / greeting etc I prefer to use terminal escape sequences rather then fish's set_color methods, this is because it properly follows changes to my terminals palette which I do regularly depending on which machine the terminal session is in. To make this process more sane I store each escape sequence in an environment variable, and to make that less painful each environment variable is loaded from a file, some sample lines are below but you can see the full file here https://github.com/simotek/tackle/blob/simotek-theme/themes/simotek/simotek_theme_colors.en (note I also load a bunch of other env vars from other files) smtk_clr_black=\e[0;30m# Black smtk_clr_red=\e[0;31m# Red smtk_clr_green=\e[0;32m# Green smtk_clr_yellow=\e[0;33m# Yellow To make this more fun I sometimes also load environment variables that contain environment variables that need to be expanded such as PATH=$PATH $HOME/.local/bin $HOME/src/Scripts /sbin /usr/sbin # Fun test Enlightenment exports the variable PANTS as ON SHIRT=$PANTS# Inline comment test Taken from https://github.com/simotek/tackle/blob/simotek-theme/default.env The code to load such variables used to look like this (note PATH is handled as a special case differently) # need to expand $split[2] twice so that any vars stored in the file get expanded set -l TMP "echo -e \"$split[2]\"" printf "%s" (eval $TMP) | read -gx $split[1] Taken from line 118 of https://github.com/simotek/tacklebox/blob/feature-env-loader-theme/tacklebox.fish the echo -e substitutes in the terminal escape characters and the printf expands the environment variables. This now fails with the following eval $TMP ^ in command substitution called on line 223 of file ~/src/config/tacklebox/tacklebox.fish in function “__tacklebox_load_env_file” called on line 334 of file ~/src/config/tacklebox/tacklebox.fish in function “__tacklebox_load_env_files_in_dir” called on line 100 of file ~/src/config/tacklebox/tacklebox.fish in function “__tacklebox_load_theme” called on line 209 of file ~/src/config/tacklebox/tacklebox.fish with parameter list “simotek” from sourcing file ~/src/config/tacklebox/tacklebox.fish called on line 9 of file ~/.config/fish/config.fish from sourcing file ~/.config/fish/config.fish called during startup Removing the eval so I have printf "%s ($TMP)" gives the following echo -e "\e[0;40m": command not found ~/src/config/tacklebox/tacklebox.fish (line 1): $TMP ^ in command substitution called on line 223 of file ~/src/config/tacklebox/tacklebox.fish in function “__tacklebox_load_env_file” called on line 12 of file ~/src/config/tackle/themes/simotek/fish_right_prompt.fish in function “fish_right_prompt” called on standard input in command substitution called on standard input Thanks for any suggestions that you may have. -- Simon Lees (Simotek) http://simotek.net Emergency Update Team keybase.io/simotek SUSE Linux Adelaide Australia, UTC+10:30 GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B _______________________________________________ Fish-users mailing list Fish-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fish-users