Major cleanup and restructuring

- remove custom module loader, use zplug for own plugins
- move config parts from modules to files
- move other module parts to separate zsh plugins
This commit is contained in:
crater2150 2019-07-10 15:36:41 +02:00
parent 98a86e6b70
commit d0598c2838
21 changed files with 38 additions and 774 deletions

View file

@ -4,45 +4,9 @@ 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`.
From the checked out repo:
```
ln -s $PWD/zshenv $HOME/.zshenv
```
The zshenv file sets the location to the rest of the config (`$ZDOTDIR`)
automatically, based on the link target.