README file (and some fixes)

This commit is contained in:
Alexander Gehrke (crater2150) 2013-03-18 13:25:38 +01:00
parent 6023ed42bf
commit 1375ee2f3c
4 changed files with 56 additions and 8 deletions

48
README.md Normal file
View file

@ -0,0 +1,48 @@
crater's zsh config
===================
Installation:
-------------
*system-wide config*: Put repository contents in `/etc/zsh`.
*user config*: copy `env_template` to $HOME/.zshenv. Change value of `$ZDOTDIR` in
that file to the path, where the repository resides.
Note that this file is read before any other config files, so if any variables
you set in there have wrong values, they are probably overwritten in another
file.
modules:
--------
This zsh configuration is modular. A module consists of a folder in the modules/
directory, containing a script file named `init` and an optional `depend` file.
More files may be included in the folder, they will be ignored by the module
loader. The name of the module is the name of its directory.
The `init` file is executed, when a module is loaded. When and if a module is
loaded is determined by its `depend` file and the environment variables
`$ZMODLOAD_ONLY` and `$ZMODLOAD_BLACKLIST`.
`$ZMODLOAD_BLACKLIST` is a list of modules, that will not be loaded.
`$ZMODLOAD_ONLY` works as a whitelist. If it is set, only modules in this list
and modules required by them will be loaded.
A `depend` file contains the requirements for loading a module. It should
contain lines of the form `<type> <module>`. There are 3 types for
dependencies:
- `depend <module>`: `<module>` will be loaded before the depending
module (the module whose `depend` file contains this rule), regardless
of `$ZMODLOAD_ONLY`. If the module is blacklisted, it and the depending
module are not loaded. Note that already queued dependencies of the depending
module will be loaded anyways.
- `after <module>`: `<module>` will be loaded before the depending
module, if it would be loaded anyways. If it is either blacklisted or
`$ZMODLOAD_ONLY` is non-empty but does not contain `<module>`, it is not
loaded. This does not affect loading of the depending module.
- `block <module>`: abort loading of the depending module, if `<module>`
is already loaded or contained in `$ZMODLOAD_ONLY`.

View file

@ -1,7 +1,5 @@
export ZDOTDIR="$HOME/.zsh" export ZDOTDIR="$HOME/.zsh"
PROMPT_UNICODE=yes PROMPT_UNICODE=yes
LANG=en_US.UTF-8
export LANG
zcpath="$ZDOTDIR" zcpath="$ZDOTDIR"
# on foreign server I don't want to accidentaly alarm admins # on foreign server I don't want to accidentaly alarm admins

View file

@ -76,6 +76,7 @@ mod_deps() {
while read relation dep; do while read relation dep; do
mod_check_dep $modpath $relation $dep mod_check_dep $modpath $relation $dep
[ $? -gt 0 ] && return $?;
done < "$modpath/depend" done < "$modpath/depend"
return 0; return 0;
} }
@ -103,8 +104,9 @@ mod_check_dep() {
fi fi
;; ;;
"after") "after")
if [ -z "$ZMODLOAD_ONLY" ] \ if ([ -z "$ZMODLOAD_ONLY" ] \
|| in_array "$dep" "${(@)ZMODLOAD_ONLY}"; then || in_array "$dep" "${(@)ZMODLOAD_ONLY}")
&& ! in_array "$dep" "${(@)ZMODLOAD_BLACKLIST}"; then
mod_queue "$dep" is_dep ${modpath}; mod_queue "$dep" is_dep ${modpath};
fi ;; fi ;;
"block") "block")

View file

@ -3,6 +3,10 @@ if [ -e /etc/profile.env ] ; then
. /etc/profile.env . /etc/profile.env
fi fi
for sh in /etc/profile.d/*.sh ; do
[ -r "$sh" ] && . "$sh"
done
if [ -e "$HOME/.profile" ]; then if [ -e "$HOME/.profile" ]; then
. "$HOME/.profile" . "$HOME/.profile"
fi fi
@ -24,10 +28,6 @@ unset ROOTPATH
shopts=$- shopts=$-
setopt nullglob setopt nullglob
#more gentoo specific stuff
for sh in /etc/profile.d/*.sh ; do
[ -r "$sh" ] && . "$sh"
done
unsetopt nullglob unsetopt nullglob
set -$shopts set -$shopts