Commit Graph

281 Commits

Author SHA1 Message Date
Paul Stemmet da1f6a8529
merge: develop <--- fix/nvim-late-config
* HEAD
| \
| * fde2348 <github@luxolus.com> nvim/plug: promote nvim-lua/plenary.nvim@master
| * 715d71e <github@luxolus.com> nvim/plugins: wait for plugins to load before running user config
| /
| develop

Signed-off-by: Bazaah <github@luxolus.com>
2022-08-03 16:48:27 +00:00
Paul Stemmet fde23482d9
nvim/plug: promote nvim-lua/plenary.nvim@master
Its been required by other plugins, but we now introduce it as a direct
dependency due to the usage in psoxizsh.plugins
2022-08-03 15:26:19 +00:00
Paul Stemmet 715d71e537
nvim/plugins: wait for plugins to load before running user config
This commit properly defers running of 'post' and 'late' user callbacks,
by spawning a coroutine that waits until '_G.packer_plugins' exists.

This only happens after packer's compiled config is executed, thereby
correctly delaying the callbacks.

Unfortunately, there's no easy way to do async in lua, so we _do_ take
on a dependency to plenary.nvim, however this shouldn't affect bootstrap
runs, as there we were already waiting for the 'PackerCompileDone'
autocmd, which is only emitted after the compiled config is sourced.
2022-08-03 15:13:07 +00:00
Paul Stemmet 2c8ed58cfe init.lua: entry point for neovim lua config
Adds psoxizsh/nvim to the runtimepath, and runs the main init script
2022-07-24 17:25:42 +01:00
Paul Stemmet 574f7641cc psoxizsh/init: use global statusline where possible
This is relatively recent feature, only available in neovim 0.7 or
higher
2022-07-24 17:25:42 +01:00
Paul Stemmet e00c378ac3 psoxizsh/init: port static configuration from vimrc
Using the hooks provided by psoxizsh.plugins, we recreate our
vimrc configuration, minus a lot of the vim<->nvim compat logic.

A lot of the remaining configuration has also been split out into
plugin specific modules that are managed directly by packer (and thus
loaded on demand without conditionals on our part)
2022-07-24 17:25:42 +01:00
Paul Stemmet 2a309d6e4f nvim/plug: port coc.nvim + config 2022-07-24 17:25:42 +01:00
Paul Stemmet 61d3ef5b6c nvim/plug: port vim-tmux-navigator + config 2022-07-24 17:25:42 +01:00
Paul Stemmet 8d0bc13e7e nvim/plug: nvim-lualine/lualine.nvim@master
Replacing airline, lualine seems to be a super customizable
statusline plugin.

I yoinked the base config file from the net and modified it to suit my
needs.
2022-07-24 17:25:42 +01:00
Paul Stemmet 4fe3d09d65 nvim/plug: akinsho/bufferline.nvim@v1.*
This commit adds replacement to airline's bufferline. It provides a
fast, flexible bufferline with a couple big improvements over airline:

1. Fast
2. Sidebar aware (e.x for NERDTree)
3. Buffer management, including grouping (via directory), movement and go-to-buffer
4. A lot of options to customize
5. Optional icon integration

It loses the powerline look, but I'm pretty sure I can get it back if
desired in the future.
2022-07-24 17:25:42 +01:00
Paul Stemmet 4ffaae034c nvim/plug: lewis6991/gitsigns.nvim@release
Replacing gitgutter, gitsigns appears to be the standard neovim git
integration plugin.

It is _significantly_ faster in responding to file deltas, and plays
really nicely with a lot of other tooling in the neovim ecosystem. It
also appears very customizable.
2022-07-24 17:25:42 +01:00
Paul Stemmet cc4a95f70d nvim/plug: nvim-neo-tree/neo-tree.nvim@v2.x
This plugin replaces the functionality of nerdtree, providing a much
smoother experience.

It also comes with a bunch new features:

- Floating window support
- Vastly more configurable
- Icon support
- Intelligent file grouping / hiding
- Faster responses to filesystem events
2022-07-24 17:25:42 +01:00
Paul Stemmet 330f5c0312 nvim/plug: port plugins from vimrc
Minus a lot of old of the old conditional code around vim/neovim
differences.

This commit also removes some of the default plugin list. Replacements
will be added in the following commits.

- scrooloose/vim-statline
  | 12 years old doesn't seem to have an effect
- vim-airline/vim-airline-themes
  vim-airline/vim-airline
  | Throwing all sorts of errors when loaded by packer. Not sure what is
    wrong, but I think it's just incompatible.
- airblade/vim-gitgutter
  | Nothing wrong with gitgutter, but it appears that a lot of the nvim
    world uses (and more importantly, integrates with) gitsigns. It's also
    a lot faster.
- scrooloose/nerdtree
  Xuyuanp/nerdtree-git-plugin
  | Again, nothing really wrong with nerdtree, but there are better
    options in neovim land (neo-tree.nvim)
2022-07-24 17:25:42 +01:00
Paul Stemmet 892e3dea02 nvim/plug: svermeulen/vimpeccable@master as 'vimp'
Nice utility for defining key mappings, as neovim doesn't have first
class support for it yet
2022-07-24 17:25:42 +01:00
Paul Stemmet 5117eb57ff nvim/autocmd: add lib for easy use of autocmds in lua
I couldn't find any nice, easy to use library or package for interacting
with autocmds from lua, and neovim has only in a very recent version
(0.7) added support for them through the vim.api object.

This commit adds a small module that provides an ergonomic api for
interacting with them in lua.

First import the module

  local au = 'psoxizsh.autocmd'

Then you can create grouped autocmds in a variety of ways, several of
which are shown below.

```lua
-- Invoke the group, and add { events, patterns, command } triples
au.Example1 {
  -- String commands are interpreted as vimscript to be executed
  { 'FileType', 'lua', 'echo "Hello from a lua file!"' }
  -- Or you can provide a lua function instead
  { 'FileType', { 'yaml', 'yml' }, function() print('hello from a yaml file!') end }

}
```

```lua
-- Or pass a function that takes the group as an arg
au.Example2(function(grp)
  -- And add the { patterns, command } tuple for each cmd
  grp.FileType { '*.md', 'MarkdownTidy' }
  grp.User { 'LSPError', 'messages' }
end)
```
2022-07-24 17:25:42 +01:00
Paul Stemmet 028f81f950 nvim/plug: wbthomason/packer.nvim@master
This commit adds packer to it's list of managed plugins, taking over
from the bootstrap install.

Notably, we ensure that it knows where to find itself (opt = true), and
take care to ensure that it will be loaded on require or command.
2022-07-24 17:25:42 +01:00
Paul Stemmet 1ce92532bd nvim/plug: add empty default plugin set
This commit adds an empty plugin set, along with functionality to
extend it via a list of extra plugin specs.

No attempt is made to deduplicate items in this list, though packer may
handle this itself.
2022-07-24 17:25:42 +01:00
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
Paul Stemmet 0ff9ecdba3 nvim/plugins/bootstrap: install package manager if fresh system
This module bootstraps our plugin manager

It can (and should) be called before any plugins are initialized,
containing only a dependency on system git, for cloning the package
manager locally.

The 'install_path' variable was taken from packer.nvim's documentation
and installs packer as an optional (opt) plugin. This is important for
when we have packer manage itself, as we'll need to:

1. Ensure it's loaded during bootstrap via `packadd packer`
2. Install load hooks on it's various commands + module
2022-07-24 17:25:42 +01:00
Paul Stemmet 94facbcce9 nvim/util: add mreload/1, mconfig/2, try_* variants
These functions are primarily designed for reloading lua modules, and
specifically, lua modules returning some sort of local config object or
function.
2022-07-24 17:25:42 +01:00
Paul Stemmet 36fcf67bd6 zshrc: add experimental flag for testing lua based neovim config
This commit adds an env var, PSOXIZSH_EXPERIMENTAL_NEOVIM_LUA, that can
be set to opt into using an 'init.lua' based configuration.

This setting only makes sense to use with neovim, and thus even if we do
decide to switch to lua, we'll need to keep the old vimrc config around
for a long time yet, to ensure backwards compatibility
2022-07-24 17:25:42 +01:00
Sandeep Sen 9abd292329 Updated plugin from osx to macos
Fix for the warning
```
The `osx` plugin is deprecated and has been renamed to `macos`.
Please update your .zshrc to use the `macos` plugin instead.
```
2022-04-01 17:24:21 +01:00
psox 6914904823 Update to reflect latest changes and add some more documentation 2022-04-01 15:18:29 +01:00
André Stemmet a5156ed435
Updated to lasted comments 2022-04-01 14:49:16 +01:00
Paul Stemmet f93cdf9fc6 README: remove TLS skip, tidy code blocks 2021-12-05 11:45:38 +00:00
Paul Stemmet b2a684c579 ff all submodules 2021-11-11 19:50:07 +00:00
Paul Stemmet 2b6095933a ff submodules 2021-11-11 19:34:26 +00:00
psox 4af2ea3027 consolodate with develop 2021-11-04 15:12:41 +00:00
psox 1575eff1a4 consolodate with psox/arch 2021-11-04 15:11:37 +00:00
Paul Stemmet fb196e31c5 zshrc: refactor tmux integrations
We now require that a user's local tmux path is ~/.config/tmux.
This is due to failings in how TPM parses tmux config files, namely
that it doesn't expand variables and only looks one level deep for
source-file declarations.

By default we symlink $PSOXIZSH/tmux/tmux.conf to ~/.tmux.conf. Again,
because both TPM and tmux itself have strong (unconfigurable) opinions
about where config files live we'll just have to live with it.

On the upside, this allows us to seperate out different tmux config
'fragments' into files which a user can then include.

By default we symlink in fragment/plugins.conf, but all others are
optional.
2021-08-29 20:03:40 +01:00
Paul Stemmet a91b05a0f0 tmux/fragment: add plugins, vim-movement 2021-08-29 20:03:40 +01:00
Paul Stemmet d16b5c69ca tmux/tmux: refactor to use source files
- plugins -> $PSOXIZSH/tmux/plugins.conf
- vim integration -> $PSOXIZSH/tmux/fragment/vim-movement.conf

We also allow the user to include personal settings via ~/.config/tmux/{early,late}.conf
which can include any of the fragments we collect!

C
2021-08-29 20:03:40 +01:00
Paul Stemmet fbf825aef8 vimrc: fix coc.nvim goto bindings 2021-08-16 08:18:42 +01:00
Paul Stemmet a45652fd2e
Feature/fzf commands (#4)
* vimrc: fix signcolumn, prune quickfix,netrw buffers from list

* vimrc: add FZF shortcuts, overrides

* vimrc: improvements to coc.nvim, check for node
2021-08-08 20:22:07 +01:00
psox 05e3ef0cc1 fix problem with xhost 2021-07-08 16:42:47 +01:00
Paul Stemmet 7ae5a26fad bugfix: <leader>. now selects the current word 2021-04-26 10:44:22 +00:00
Paul Stemmet 74f10eac12
Merge pull request #3 from psox/feature/fix-coc-nvim
remove archived coc.actions, fix tab buffers
2021-04-22 16:28:48 +01:00
Paul Stemmet 818ead9770 remove archived coc.actions, fix tab buffers 2021-04-22 14:58:44 +00:00
psox a67e9cf359 remove unwanted aliases 2020-10-29 10:26:36 +00:00
Paul Stemmet 6b6ae7fb9c
Merge pull request #2 from psox/pstemmet/neomake
Add neomake
2020-10-03 17:35:12 +01:00
Paul Stemmet 1c56259ad3 fix type 2020-10-03 16:02:30 +00:00
Paul Stemmet 94354e9286 make starship happy 2020-10-03 15:50:54 +00:00
Paul Stemmet 4d1daa5552 add go autocmds 2020-10-03 15:34:22 +00:00
Paul Stemmet 1fe573ad4f fixes to qf/loc closing, add pear-tree 2020-10-03 14:48:05 +00:00
Paul Stemmet d4803b6c31 initial integration with neomake 2020-10-01 13:23:04 +00:00
André Stemmet f92bf0daa9
Update Unicode symbols to be more readable 2020-08-05 14:01:02 +01:00
André Stemmet 159227f63f
Use unicode escape characters for `listchars`
Make cut and pasted easier in multi-system environments
2020-08-05 12:31:25 +01:00
pSox a0beef204a Added better buffer handling to vimrc 2020-08-03 16:56:05 +01:00
pSox f78d3a1a6b not all themes have airline support 2020-07-16 14:51:43 +00:00
pSox fc26bf48f3 changed mapping for localsearch 2020-07-16 14:43:30 +00:00