LanguageClient-neovim, by default, puts diagnostics into the quickfix list. This list is also used by fugitive's Glog command to browse the history of a file. Once Glog has been triggered, a previous revision of the current file is shown, the language client passes the file to the language server and invalidates the quickfix entries that fugitive has populated. Thus, you are never able to browse further into the history.
Somehow, mangling the quickfix list should be disabled while browsing the history with fugitive.
nvim --version or vim --version): v0.3.1git rev-parse --short HEAD): 0b6b10a9e6923e616707ae430332f9646b0fe063bin/languageclient --version): languageclient 0.1.113 0b6b10a9e6923e616707ae430332f9646b0fe063set nocompatible
set hidden
set runtimepath+=~/.local/share/nvim/bundle/vim-fugitive
set runtimepath+=~/.local/share/nvim/bundle/LanguageClient-neovim
let g:LanguageClient_serverCommands = {
\ 'python': ['pyls'],
\ }
let g:LanguageClient_autoStart = 1
runtime plugin/LanguageClient.vim
:Glog:copenThe opened quickfix list is either empty or replaced with warnings from the file from history.
Fugitive revisions are still available in the quickfix list.
Same happens to me when using ack.vim.
There is no straightforward way for this plugin to know quickfix is being used by other plugins or when it is safe to override quickfix list.
I'd argue operations like Glog and ack should use location list rather than quickfix. As the name difference suggests quickfix is to show list of compiling errors and location list is for displaying different locations.
Then they conflict with ALE ;) But git revisions are not local to a file. location list would be gone if I navigate to a different file using the git history. But I see that this is probably a fundamental design problem in vim. I don't know whether there's a good workaround though.
This might be relevant: https://github.com/w0rp/ale#5xi-how-can-i-use-the-quickfix-list-instead-of-the-loclist
And then ale conflicts with the language client?
As been stated previously, there is no straight forward way to avoid this confliction.
I'm adding a new function LanguageClient#setDiagnosticsList() to support dynamically set diagnostics output. With this, a workaround might look like
call LanguageClient#setDiagnosticsList('Disabled');
" do stuff with quickfix/location list
call LanguageClient#setDiagnosticsList('Quickfix');
Thanks, this makes this at least solvable.
Most helpful comment
Same happens to me when using ack.vim.