diff --git a/init.fish b/init.fish index 2ca476b..832f8b6 100644 --- a/init.fish +++ b/init.fish @@ -8,7 +8,9 @@ test -f $OMF_CONFIG/before.init.fish and source $OMF_CONFIG/before.init.fish ^/dev/null emit perf:timer:start "Oh My Fish initialisation" # Read current theme -read -l theme < $OMF_CONFIG/theme +test -f $OMF_CONFIG/theme + and read -l theme < $OMF_CONFIG/theme + or set -l theme default # Prepare Oh My Fish paths set -l core_function_path $OMF_PATH/lib{,/git} set -l theme_function_path {$OMF_CONFIG,$OMF_PATH}/themes*/$theme{,/functions} @@ -27,7 +29,9 @@ functions -q fish_user_key_bindings and functions -c fish_user_key_bindings __original_fish_user_key_bindings # Override key bindings, calling original if existent function fish_user_key_bindings - read -l theme < $OMF_CONFIG/theme + test -f $OMF_CONFIG/theme + and read -l theme < $OMF_CONFIG/theme + or set -l theme default # Prepare packages key bindings paths set -l key_bindings $OMF_CONFIG/key_binding?.fish \ {$OMF_CONFIG,$OMF_PATH}/pkg/*/key_bindings.fish \ diff --git a/pkg/omf/functions/cli/omf.cli.themes.list.fish b/pkg/omf/functions/cli/omf.cli.themes.list.fish index 5c5d828..c10c05c 100644 --- a/pkg/omf/functions/cli/omf.cli.themes.list.fish +++ b/pkg/omf/functions/cli/omf.cli.themes.list.fish @@ -1,5 +1,8 @@ function omf.cli.themes.list - set -l theme (cat $OMF_CONFIG/theme) + test -f $OMF_CONFIG/theme + and read -l theme < $OMF_CONFIG/theme + or set -l theme default + set -l regex_current "(^|[[:space:]])($theme)([[:space:]]|\$)" set -l highlight_current s/"$regex_current"/"\1"(omf::em)"\2"(omf::off)"\3"/g diff --git a/pkg/omf/functions/themes/omf.theme.set.fish b/pkg/omf/functions/themes/omf.theme.set.fish index d0ea2c5..f5e69cc 100644 --- a/pkg/omf/functions/themes/omf.theme.set.fish +++ b/pkg/omf/functions/themes/omf.theme.set.fish @@ -5,8 +5,10 @@ function omf.theme.set -a target_theme return $OMF_INVALID_ARG end - read -l current_theme < $OMF_CONFIG/theme - test "$target_theme" = "$current_theme"; and return 0 + if test -f $OMF_CONFIG/theme + read current_theme < $OMF_CONFIG/theme + test "$target_theme" = "$current_theme"; and return 0 + end set -l prompt_filename "fish_prompt.fish" set -l user_functions_path (omf.xdg.config_home)/fish/functions @@ -20,7 +22,8 @@ function omf.theme.set -a target_theme end # Replace autoload paths of current theme with the target one - autoload -e {$OMF_CONFIG,$OMF_PATH}/themes/$current_theme{,/functions} + set -q current_theme + and autoload -e {$OMF_CONFIG,$OMF_PATH}/themes/$current_theme{,/functions} set -l theme_path {$OMF_CONFIG,$OMF_PATH}/themes*/$target_theme{,/functions} autoload $theme_path