]> arthur.barton.de Git - ax-zsh.git/blobdiff - ax.zsh
Strip ".zsh" extension from foreign plugin names
[ax-zsh.git] / ax.zsh
diff --git a/ax.zsh b/ax.zsh
index ee376eac5e45cea319e9678ad9bf3b924baeba1d..25d2ef2b3f27a70adc80541b98d60a148631a609 100644 (file)
--- a/ax.zsh
+++ b/ax.zsh
@@ -1,23 +1,25 @@
 # AX-ZSH: Alex' Modular ZSH Configuration
-# Copyright (c) 2015 Alexander Barton <alex@barton.de>
+# Copyright (c) 2015-2016 Alexander Barton <alex@barton.de>
 
-script_name="$(basename -- "${(%):-%N}")"
+script_name="${${(%):-%N}:t}"
 script_type="$script_name[2,-1]"
 
-[[ -f "$HOME/.axzsh.debug" ]] && echo "» $script_name:"
-
 # Load plugin code of a given type.
 # - $1: plugin name
 # - $2: plugin type (optional; defaults to "zshrc")
 function axzsh_load_plugin {
-       dname="$(readlink "$1")" || dname="$1"
-       plugin="$(basename "$dname")"
+       dname="$1:A"
+       plugin="$dname:t"
        [[ -z "$2" ]] && type="zshrc" || type="$2"
        fname="$dname/$plugin.$type"
 
+       [[ "$plugin" =~ "#" ]] && plugin=$(echo $plugin | cut -d'#' -f2-)
+
+       plugin_short=${plugin%.zsh}
+
        if [[ ! -d "$dname" ]]; then
                # Plugin not found!
-               if [[ -f "$HOME/.axzsh.debug" ]]; then
+               if [[ -n "$AXZSH_DEBUG" ]]; then
                        # Show error message for all stages in "debug mode":
                        echo "AX-ZSH plugin \"$plugin\" not found (type \"$type\")!" >&2
                elif [[ "$type" == "zshrc" ]]; then
@@ -28,14 +30,19 @@ function axzsh_load_plugin {
        fi
 
        if [[ ! -r "$fname" && "$type" == "zshrc" ]]; then
-               if [[ -r "$dname/$plugin.plugin.zsh" ]]; then
+               if [[ -r "$dname/$plugin.zprofile" || -r "$dname/$plugin.zlogout" ]]; then
+                       # Native AX-ZSH plugin, but for different stage. Skip it!
+                       :
+               elif [[ -r "$dname/${plugin_short}.plugin.zsh" ]]; then
                        # Oh My ZSH plugin
                        type="plugin.zsh"
-                       fname="$dname/$plugin.plugin.zsh"
+                       fname="$dname/${plugin_short}.plugin.zsh"
                elif [[ -r "$dname/init.zsh" ]]; then
                        # Prezto module
                        type="init.zsh"
                        fname="$dname/init.zsh"
+               else
+                       echo "AX-ZSH plugin type of \"$plugin\" unknown, skipped!" >&2
                fi
        fi
 
@@ -45,7 +52,7 @@ function axzsh_load_plugin {
        fi
 
        if [[ -r "$fname" ]]; then
-               [[ -f "$HOME/.axzsh.debug" ]] \
+               [[ -n "$AXZSH_DEBUG" ]] \
                        && echo "   - $plugin ($type) ..."
                source "$fname"
        fi
@@ -59,11 +66,15 @@ function axzsh_load_plugin {
 if [[ -z "$AXZSH" ]]; then
        export AXZSH="$HOME/.axzsh"
        if [[ -f "$HOME/.axzsh.debug" ]]; then
+               export AXZSH_DEBUG=1
                echo "AXZSH=$AXZSH"
+               echo "AXZSH_DEBUG=$AXZSH_DEBUG"
                echo "AXZSH_PLUGIN_D=$AXZSH_PLUGIN_D"
        fi
 fi
 
+[[ -n "$AXZSH_DEBUG" ]] && echo "» $script_name:"
+
 # Setup list of plugins to load:
 typeset -U plugin_list
 plugin_list=(