Some options need to be set for both vim.bo (for the current buffer) and
vim.o (for newly opened buffers). This is required till the below PR
gets merged.
https://github.com/neovim/neovim/pull/13479
With nvim-bqf when opening the quickfix list, it jumps around the opened
buffers. For example, when calling LSP reference on a variable in buffer
one, it jumps to buffer three after the quickfix list opens. This is
annoying, so dump it. The preview feature has not been that helpful
anyways.
We use galaxyline for the status line and it already provides
LSP diagnostics info. So drop lsp-status. While the progress
message during the loading in status line is nice, may be will
incorporate it later by picking only the required pieces.
While at it, expose all diagnostics via statusline using galaxyline
components.
With most of our operations now being done through fzf + git command
line or lazygit, we primarily only require the log & blame facilities.
The blame interface in Gina is confusing.
This time however, we include some nice helper functions of our own.
vim-signify recently fixed the below issue which was a problem earlier.
https://github.com/mhinz/vim-signify/issues/345
Considering that gitsigns exhibits a problem where the complete sign
column is marked while in the middle of a rebase, switch back to using
signify.
This improves the highlighting for files written in pandoc markdown.
It seems having the rainbow parentheses plugin active, results in
overwriting the syntax highlighting for URLs.
With this we can invoke git commit and not have a nested neovim
instance. This also makes 'C' option in lazygit to work properly
when lazygit is being used from the floating terminal with floaterm.
We want information messages to have orange color and warning messages
to have pink color.
Also fix the syntax highlighting for LspDiagnostics. While migrating
away from diagnostic-nvim, we did not specify the syntax highlight for
virtual text correctly, which resulted in them having just plain white
text on black background.
- TSStructure was deprecated
- TSVariable/TSVariableBuiltin/TSNamespace/TSComment seem to be newly
introduced
- Use a different color for functions and identifiers
- Reorder alphabetically. Easier to compare against upstream doc
Not sure what changed in recent releases for either nvim, packer or
lspconfig plugins, but, our custom LSP configuration file seems to
not be loaded or have any effect when specified via packer's config
directive. So load it manually in init.
While we dropped diffconflicts earlier and switch to vanilla vimdiff,
two way merges are definitely better than three way merges. 3 way merge
as in gina or vimdiff is extremely confusing except for may be the
simplest of merge conflicts.
conflict-marker and diffconflicts should let us handle all cases.
We added edita to be able to do interactive rebase inside neovim
terminal which Gina does not support by default.
See issue
https://github.com/lambdalisue/gina.vim/issues/276
Mostly haven't been using this, just relying on spawning a separate pane
in tmux or kitty window to do the rebase. So drop this.
With this commit upstream
a68b21be60
packer can handle finding default branches by itself and does not error
out like earlier for anything named other than master.
We can move between conflict markers using functionality from the
conflict markers plugin and we also have gina. If required just
introduce the command mapping later.
Currently there is an observable bug where this doesn't play well with
gina buffers. Perhaps it should be disabled for any gina buffers or
something similar.
The undo hunk feature is complete garbage at the moment. Also it seems
whenever we have changes and thus signs in gutter, sometimes there is
an observable sluggishness.
Since PaqClean cleans up anything in packages directory that are not in
configuration, including itself, it is necessary to include paq itself
in the packages list.
The only purposes we have been using fugitive for is status and commit
which should be equally comfortable with gina. Gina log is really
instantaneous even on big repositories like Linux while fugitive just
freezes vim. For handling hunks, merge and rebase conflicts we anyways
rely on the other plugins.
We use edita so that applications which use $EDITOR internally can work
inside neovim terminal without opening another instance which does not
work with the already running instance. This is required for things like
interactive rebase. See below issue.
https://github.com/lambdalisue/gina.vim/issues/276
We drop fzf-checkout as it isn't that useful anymore since gina allows
easy checkouts for branch or tags easily.
This plugin provides support for Quickfix and Location list along with
previews. Also, does not do fuzzy match on file names which is useful.
Move some of the commands from fzf to fzf-preview as it provides
previews for those as well.
Using pedit for previews for quickfix list wasn't super comfortable.
Drop it, now that we have quickfix preview with fzf-preview.
The conflict markers plugin is what we have been using all the time and
is useful even without resorting to merge tool. Drop the DiffConflicts
plugin and use vimdiff as the merge tool if at all we need to resort to
a full 3 way merge view.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
All the added highlight groups in this commit are not defined upstream
in nvim-highlite. We may change this later.
While at it, remove all 'link' usages.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
fzf checkout plugin introduced some new functionality. Taking advantage
of that update existing and introduce some new key bindings.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This does not work anymore. Probably because we dropped python and it
also does not list a source for completion-nvim. However, we can copy
anything from tmux using tmux extracto plugin to the clipboard, so
that is also a solution.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Commit f977b8a while dropping all python dependencies also dropped
floaterm. However it has a dependency on python based neovim-remote
only if integration with git or floaterm is required from command line
which we do not. So add it back. Using the previous toggle bindings
with this gives a nice floating terminal which can be easily hidden.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Commit c70ec87 dropped floating window for fzf due to golden ratio not
playing well with it. Now that we do not use golden ratio mode anymore
enable it back.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
We assume these are installed via nix and available globally. hasktags
and haskdogs do not build with stack on ghc8.8 and hence this switch.
With nix, haskdogs gives an issue due to locale like is also observed
when stack is installed via nix. codex does not seem to generate tags
which work.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Revert 13cea58905. This does not play well with defined color scheme and
overrides it which is annoying. The VimEnter approach mentioned did not
work, so just drop it and use preview windows as earlier.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Use this color scheme template to have a proper custom monokai color
scheme variant.
https://github.com/Iron-E/nvim-highlite
We will call it yolokai. YOLO monokai. While at it, drop all earlier
ones.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This plugin results in the odd grey high lighting seen in floating
windows when using hover with nvim-lsp. See the below issue.
https://github.com/neovim/neovim/issues/12543
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Love this plugin but it completely messes up the quickfix window. If it
did not touch the quickfix window every thing would be fine.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
n will tell ctags add a line number filed in each tag record
and S means including function signatures.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
git messenger does not size it's floating window correctly and cursor
gets all messed up while trying to jump in the floating window with
golden-ratio mode being active. May be related to the issue
https://github.com/rhysd/git-messenger.vim/issues/38
Based on the below issue
https://github.com/tpope/vim-fugitive/issues/1387
We can already use fugitive's git blame interface for seeing the last
commit on the line.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Also use vim-searchlight for search highlighting the word under cursor.
Add custom highlight color to make the word being searched under cursor
stand out for our color schemes and better key mappings to shift through
searches in command line.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Do not start haskell-language-server unless a hie.yaml file is present
for proper multi-component support.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This is not available in upstream nvim_lsp repository but works with a
simple lua config addition for the same.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
nvim-gdb relies on Python and we disabled Python completely sometime
back so this has not really been functional. If we feel we require it
really for some C work we will enable Python and this package again.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This does not perform any better than purs ide and psc-ide-vim could not
jump to definitions in other components which is the same case here.
But, at least we now need one less package and additional bindings for
psc-ide-vim.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
With ghcide release v0.2.0 adding multi-component support this should
work more widely now. We still can have tags, so change the key binding
for jump to definition and drop key binding K for Hoogle.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
The only reason fzf.vim functioned till now seems to be due to the fact
that we were loading fzf.vim found in /usr/share/vim/vimfiles. Do not
rely on this and specify it in plugins.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This also helps in the key bindings now being in effect only for which
language servers has been enabled.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
We broke this in our last clean up which meant this was not working
anymore with the given option.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Now that we have dropped Neomake add a simple plugin to add the
functionality of quickfix signs.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
1. Clean up the remnants of Neomake and grepper config left behind
2. Drop quickui and use a custom preview function for items in QF
window stolen from floaterm plugin's author
3. Cleanups for vim default configuration settings like wildignore
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Profiling with below
nvim -c 'profile start vim.log' -c 'profile func *' -c 'q'
shows that neomake adds to the start up time. Currently we only use it
for two tasks. Running hlint for Haskell and stack build asynchronously.
Use asyncdo and define a generic wrapper command for running makeprg
asynchronously. This can be used for anything as long as makeprg is
set correctly.
vim-grepper also adds somewhat to the startup time though not much. We
do not need the functionality of switching between grep tools. Here
again just use asyncdo and define a generic command for running grepprg
asynchronously.
Drop QFGrep as we can use in built Cfilter plugin for filtering the
quickfix list.
Note that all start times mentioned above are a few milliseconds not
even more than 5ms. However, we would like to be as fast as possible
and use in built functions.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Drop polyglot and add the necessary language support manually. While at
it disable some internal plugins and drop vim-qlist. qlist is only useful
if path is set correctly and it can search for files as indicated by the
path. Since we do not do this, it does not add any value.
Add vim-tmux-focus-events back again. As per this thread
https://github.com/tmux-plugins/vim-tmux-focus-events/issues/1
neovim shouldn't require this plugin however the observation seems that
it's required.
Gitgutter quickfix entries should be loaded in quickfix and not location
list.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Use this so we do not pollute clipboard history. Also since neovim
depends on a provider which transparently uses shell commands to
communicate with the system clipboard, it seems this adds around 80ms
to start up.
074.721: sourcing /usr/share/nvim/runtime/autoload/provider/clipboard.vim
This plugin should allow us to depend on it only when required.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
:(. Gruvbox doesn't cut it, nor does jellybeans. Back to molokai.
Color scheme taken from
https://github.com/fatih/molokai
We add this to our own colors directory while dropping terminal color
support as we have terminal GUI colors option set. Also change the
background color to be completely black like we want it. Also drop the
auto command as it is not required anymore.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Back at this again as it loads faster and did not realise last time that
the background can be over ridden with an auto command group to be set
to complete black. The auto command group must be read first before
setting of the color scheme that's why the autocmd file is now loaded
first before everything else.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
We use easymotion primarily for vertical motion and any motion requires
at least 3 or 4 key bindings which isn't necessarily different if we are
using relative numbers. For example, pressing <Leader>j and then
pressing another one or two keys for the vertical movement is the same
number of keys while using relative numbers. So just use relative
numbers and drop it. We also never used the word and character motions
or cross window motions.
Use f,F,t,T for horizontal line motions. Use clever-f for this, which
improves the default behaviour. For any other motion not covered by
these two, just use incsearch.
While at it, move some of the key bindings to after/plugin to have
key bindings specific to a plugin in it's own file.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Also add the conflict-marker plugin. This should also be useful
for doing rebases and resolving conflicts. Might drop one later
if one of them serves all the purposes in all cases.
While at it, add unimpaired style bindings for moving between
tabs. This is required since :DiffConflictsShowHistory opens
a new tab and default tab navigation bindings gt/gT at least
are binded to something else in python.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
We do not want project specific or project local information to be
available among various neovim instances. It should either be managed
by sessions or should not be stored on neovim exit.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
vim-fugitive from Tpope is synchronous on neovim. It is
asynchronous on vim when vim-dispatch is available but for
neovim it will always be synchronous. Gina is asynchronous
by default and does not freeze on large repos like fugitive
does. So drop fugitive, other plugins and settings dependent
on it.
While at it, also add some more good things from git gutter
and some shortcuts.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
We switched away from Sonokai due to high load times in 20ms or more but
there isn't a monokai variant which is better than this. Gruvbox got
annoying after a while. A darker contrast would have been preferred but
no other fits the bill.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
It seems since we are using hard coded colors, so we do not need the
auto command at all. Getting rid of it gives the right results.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This theme is quite fast to load though slightly less nicer than
sonokai, the sonokai theme can take 20-30ms during load. Load times for
gruvbox8 seem to be around 2-2.5ms.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
LSP does not work all the time. Either client breaks, server breaks or
it does not work because of the project structure. Removing LSP for the
umpteenth time.
asyncomplete does not seem to work at all for tags. For example, in the
gst-build directory the generated tags file can be 200MB+ in size. Even
with the file size limit set to unlimited it does not seem to give any
tag suggestions at all. Same is the case for Haskell.
Mucomplete can be slow in such cases where tag file is very large or
search space is extensively large and being synchronous this is to be
expected. To alleviate this, it is necessary to have a minimum prefix
length of 2 and perhaps trigger completion only when required. However,
this was still not good enough.
We are back to deoplete with custom source configuration. It is pretty
clear vimscript solutions are not up to the mark. Enable python provider
and also reintroduce language specific solutions like racer and jedi.
Refactor out language/file type specific settings. init.vim should only
have global keybindings, plugins and plugin settings. Also some other
minor cleanups, additions and rearrangements.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Enable to process line and column jump specifications in file paths as found
in stack traces and similar output
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This setting results in the quickfix list having the same result
multiple times if by mistake we run the same search again.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
While we have fzf, for situations where we want to search and load
results in quickfix or location list vim-grepper should come in handy.
vim-qlist enchances ]i/I related bindings for search to load then in
quickfix list.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Airline section y is used for file encoding and file format. We do not
need this information in status line. Use it to show window number. Use
window numbers for navigation. See :h CTRL-W_W and :h winnr() for more
information.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
While I would ideally like to use rg, it seems any jump does or cannot
use rg for some reasons for certain languages like Haskell. This can be
seen from the language map in any jump repo. So set preferred engine as
ag for now.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
While at it, remove quick-scope as it doesn't add much of a value when
we already use easymotion. Also do some cleanup.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
The git gutter fold bindings was slowing down the easymotion h binding.
So change it. Also the any jump binding was slowing down the 'a' append
binding.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Using this setting results in floaterm changing the directory which then
does not work when working in a setup like gst-build. Stick to whatever
directory we launched from since we would have started from a version
controlled directory root in most cases.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
While this purpose can also be served by fzf the additional feature of
any-jump is that it shows definitions and usages, so helps to have more
context. Should also help us for languages we do not have any setup for
and might not want to use tags.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
We haven't used Slimux much and has not been as much useful in our
work flow. Also increases the load time.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
lessspace.vim is good but activates when leaving insert mode. This seems
to create problems while using LSP in python. Exact problem being when
in insert mode and about to enter function arguments, LSP will show
function argument signature. This conflicts with lessspace trying to do
it's thing and LSP trying to do it's thing.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This allows us to remove the various different syntax plugins we had for
each language and also takes care of most other languages if we ever
need. vim-polyglot includes the plugins we were using.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
vimtex seems to complain compiler callbacks won't work without setting
the vimtex compiler program name which is to be neovim-remote. However,
the reason for requiring neovim-remote is mentioned as neovim not
providing the --servername option which seems to be atleast not true
anymore. So remove that and disable the Python3 provider so that we do
not depend on any external providers going forward.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
vim-lsp seems to provide more options, seems to work better and faster
even perhaps. With the switch to vim-lsp and asyncomplete we should be
able to remove dependency on external python provider.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Starting a command with 'n' resulted in a poor usage experience for
jumping to 'next' match of a search. Prefix all these commands with
Leader.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
We do not do Purescript really so just add the language server support
and remove the extra bindings for purs ide plugin, if we ever require at
work.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
A plugin requiring a run of UpdateRemotePlugins does not work if it is
only setup to load with the specific file type.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
The dark black background of moonfly theme I like. So switch. Rest
seems the same as nightfly.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This theme has some better styled colors for Haskell and though
increases the load times in vim slightly seems better to use.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Neovim has a "stack" compiler file but this does not seem to work,
at least not in the shitty monorepo I am working on. Someone provided a
solution on Reddit which uses a custom compiler file and has been
modified to work on modules. Which is also perhaps why it doesn't work
in the monorepo project at work.
https://www.reddit.com/r/neovim/comments/es8wn7/haskell_makeprg_for_stack_build/https://github.com/maxigit/vimrc/tree/2020/compiler
Use them and tie it up with Neomake! change.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Using 'l' sometimes lead to false trigger as we also use it as our
primary 'Right' movement key.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Now that we use a 60% tenkeyless mechanical keyboard it is easier to
reach the ESC key and use it. Also it seems sometimes hitting jk pretty
fast to escape does not work so easily on the mechanical keyboard.
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>