Paul Stemmet
cb591260b8
This commit adds a wrapper api around packer.nvim, allowing callers to provide hooks into packer's plugin initialization lifecycle. There are 4 recognized hooks: 'early', 'pre', 'post' and 'late'. 'early' and 'pre' run before any plugins are loaded, with 'early' running before *any* work has been done, while 'pre' runs just before calling into packer. 'post' and 'late' are more interesting, as they are guaranteed to run after all plugins (and their private configs) have fully loaded. Furthermore, both hooks are provided the active Plugins object as their first arg, allowing them access to the entire list of plugins and the api suite of Plugins itself. This behavior is very similar to vim-plug's plug#begin .. plug#end fences, but improves on the pattern by: - Properly handling bootstrap situations (our old setup would require a restart before everything loaded correctly) - Async, does not block user activity while loading leading to a smoother experience Special care has been taken to detect and handle bootstrap situations, where if found, we completely defer a lot of activity (and the hooks 'post', 'late') until packer indicates that the entire install workflow has completed. -- Usage The expected usage of this api set si via requiring the module, setting up your hooks and initializing the module: ```lua local htable = { early = early_hook, ... } local plugs = require('psoxizsh.plugins'):setup({ hooks = htable }):init() ``` As a convenience, you may directly call the module with your hooks, rather than writing out the above: ``` require 'psoxizsh.plugins' { hooks = ... } ``` Plugins also provides several other interesting methods: - :reload/0 | completely reload plugin configuration, including rerunning any hooks - :list/0 | get the list of raw plugin specs that were passed to packer - :do_hook/1 | request Plugins run @hook 'early' | 'pre' | 'post' | 'late' - :get/1 | get the spec object for the provided plugin id - :has/1 | check if the spec contains the provided plugin id |
||
---|---|---|
.vim | ||
.vscode | ||
etc | ||
fonts | ||
nvim/lua/psoxizsh | ||
oh-my-zsh@1448d234d6 | ||
tmux | ||
vim/autoload | ||
zsh-custom | ||
.gitignore | ||
.gitmodules | ||
fresh-system | ||
README.md | ||
starship.toml | ||
vimrc | ||
zshrc |
pSoxIzsh
About this
Over the years I have collect various bits from various locations. I often share what I have done with work colleagues and finally made this repository so people can pull the latest.
This is optimized by default for dark terminals, and contains configurations for use with
- zsh >= v5.8
- neovim >= v0.6
- tmux >= 3.2
All of these have standard setting but can be customized by using optional include files. Please read the following configs
vimrc
zshrc
tmux/tmux.conf
and look at the include files to check for overrides.
Looks
For the best appearance I have tested the latest versions of
- Konsole
- Microsoft Terminal
- WezTerm
- Kitty (the Linux version, not the on based of putty)
- Alacritty (Windows and Linux)
I have previously used this on iTerm2 on MacOS but not recently.
I also use the Iosevka Term Curly font on both Linux and Windows with ligatures enabled where possible.
Updates
If you already have an installation cd to the ~/.psoxizsh
or /etc/psoxizsh
as root directory and make sure you have not make any changes. If you have stash
them and then run the following commands.
(
git pull --recurse-submodules=yes
git submodule foreach git fetch --all --prune
git submodule foreach git checkout master
git submodule foreach git pull
git pull --recurse-submodules=yes
)
src
Install
User
git clone --recurse-submodules --recursive https://github.com/psox/psoxizsh.git ~/.psoxizsh
# This should work on Linux. It is not tested on MacOS or Windows
~/.psoxizsh/fresh-system
Root - System Wide
# Make sure you are root
git clone --recurse-submodules --recursive https://github.com/psox/psoxizsh.git /etc/psoxizsh
# This should work on Linux. It is not tested on MacOS or Windows
# for each user that wants to use this as the user run this command
/etc/psoxizsh/fresh-system
Configure NeoVim
Make sure you have neovim (tested on v0.6.1) installed and after starting zsh check that the following variable are set by typing
You will need to install neovim
, nodejs
and npm
to get the full use of vim
Just start neovim (nvim
) and wait for it to finish. After that quit and it
should be ready to use.
echo $VIMINIT
echo $MYVIMRC
echo $VIMHOME
Enjoy