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>