my ZSH config
Find a file
Paul Stemmet cb591260b8 nvim/plugins: Plugins, a hookable wrapper around packer.nvim
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
2022-07-24 17:25:42 +01:00
.vim Update to reflect latest changes and add some more documentation 2022-04-01 15:18:29 +01:00
.vscode rename .stemmet to .psoxizsh 2017-12-18 15:20:27 +00:00
etc Pstemmet/nvim tmux changes (#1) 2020-06-09 21:41:11 +01:00
fonts Added fira code fonts 2017-12-18 14:35:55 +00:00
nvim/lua/psoxizsh nvim/plugins: Plugins, a hookable wrapper around packer.nvim 2022-07-24 17:25:42 +01:00
oh-my-zsh@1448d234d6 ff all submodules 2021-11-11 19:50:07 +00:00
tmux ff submodules 2021-11-11 19:34:26 +00:00
vim/autoload Upgrade plug 2019-10-18 13:23:01 +00:00
zsh-custom ff all submodules 2021-11-11 19:50:07 +00:00
.gitignore Updated .gitignore 2018-08-09 19:22:57 +00:00
.gitmodules Pstemmet/nvim tmux changes (#1) 2020-06-09 21:41:11 +01:00
fresh-system Update to reflect latest changes and add some more documentation 2022-04-01 15:18:29 +01:00
README.md Update to reflect latest changes and add some more documentation 2022-04-01 15:18:29 +01:00
starship.toml consolodate with develop 2021-11-04 15:12:41 +00:00
vimrc consolodate with psox/arch 2021-11-04 15:11:37 +00:00
zshrc zshrc: add experimental flag for testing lua based neovim config 2022-07-24 17:25:42 +01:00

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