Handle missing theme setting more gracefully

This commit is contained in:
Stephen M. Coakley 2017-03-03 09:06:13 -06:00
parent 6c5f3ba17a
commit 8aef0b2d33
No known key found for this signature in database
GPG Key ID: 91B59C18494C4FC0
3 changed files with 16 additions and 6 deletions

View File

@ -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 \

View File

@ -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

View File

@ -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