Another possibility might be to store the code in a function instead of a
variable:
Instead of
set -l TMP "echo -e \"$split[2]\""
printf "%s" (eval $TMP) | read -gx $split[1]
You would
alias TMP "echo -e \"$split[2]\""
printf "%s" (TMP) | read -gx $split[1]
# and tidy up afterward
functions -e TMP
On Wed, Jan 9, 2019 at 9:45 PM Simon Lees <[email protected]> wrote:
> I'm going to resend this with slightly better formatting, some days I
> hate plain text
>
> 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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/fish-users
>
>
> --
>
> 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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/fish-users
>
--
*Glenn Jackman*
Senior Software Developer
*Pythian - Love your data*
[email protected]
Tel: +1 613 565 8696 Ext. 1478
Mobile: +1 613 808 4984
www.pythian.com
--
--
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users