Is your feature request related to a problem? Please describe.
Currently accessing certain coc functionality like maintaining extensions
requires the denite plugin.
Describe the solution you'd like
It would be nice to offer the option to use FZF which I believe offers v. similar functionality. I've never used denite so it might be that it offers some functionality that FZF does not so this isn't possible?.
I have tried feeding the output of some commands like coc-actions to fzf using FZF coc-action which doesn't work but I assume that's because fzf expects to be passed a list to manage, but can't figure out how to get the output of a command like coc-action to pass to it
Describe alternatives you've considered
An alternative if allowing direct FZF options is not possible, might be to expose the output of the commands which are aimed at denite so that a user can try and do something with this (if they happen to know any vimscript or at least try themselves to interop with fzf if possible).
Does FZF provide actions for items? I think not, so it seems impossible for using FZF to manage coc extensions, most of time your only need to use commands :CocInstall, :CocUninstall & :CocUpdate for extensions.
There's no coc-actions, but CocAction() and CocActionAsync() (with first argument as action name) can be used for any other plugin that manage list of items. Documentation of this part is poor, so you might be confused by returned data.
You could try moving from FZF to Denite for in-Vim fuzzy solution, it's not that hard, I did it. It's nice because with Denite you can have a lot of extra sources provided by others and easily built by yourself. https://github.com/neoclide/denite-extra for example is nice to have for filtering quickfix or location_list. For MRU check https://github.com/Shougo/neomru.vim.
This is a example of how you add additional in-project sources built upon previous sources: https://github.com/oblitum/dotfiles/blob/db1e69d1d9c2fc5ba1d175f9eb22cb32f7427c14/.vimrc#L1049-L1052.
@chemzqm, sorry was trying to remember the denite only commands from memory, you're right there's no action but there are quite a few useful ones like extension, source, diagnostic, workspace, symbols etc., re. using fzf, it doesn't work exactly the same way but a way that this could work with fzf is that it allows you to map actions to keys in a custom function, I have this block in my vimrc
function! Fzf_checkout_branch(b)
"First element is the command e.g ctrl-x, second element is the selected branch
let l:str = split(a:b[1], '* ')
let l:branch = get(l:str, 1, '')
if exists('g:loaded_fugitive')
let cmd = get({ 'ctrl-x': 'Git branch -d '}, a:b[0], 'Git checkout ')
try
execute cmd . a:b[1]
catch
echohl WarningMsg
echom v:exception
echohl None
endtry
endif
endfunction
let branch_options = { 'source': '( git branch -a )', 'sink*': function('Fzf_checkout_branch') }
let s:branch_log =
\'--reverse --expect=ctrl-x '.
\'--preview "(git log --color=always --graph --abbrev-commit --decorate --first-parent -- {})"'
" Home made git branch functionality
command! Branches call fzf#run(fzf#wrap('Branches',
\ extend(branch_options, { 'options': s:branch_log })))
so for example you could show each extension and then map say c-u to uninstall c-a to activate etc, another potential could be to open a further fzf menu on selecting each item that gave the options but remember the selected option.
Not sure how easy some of this might be to do, was just wondering if there is someway to leverage an existing (at least equally popular plugin, rather than adding a new one just to access some of that functionality which I would like to be able to use)
Another thought is a similar method to the plugin Gina.vim, this plugin opens a buffer with the output and then a user can move over each option and press a which will open the wild menu with options of how to interact with the item

Another problem with FZF (and most junegunn plugins atm), is that it has been some time he has reduced online activity a lot, issues keep increasing between projects, there's lack of response or commit activity, mostly merges of pull-requests. I've opened an issue on vim-plug, never answered.
I appreciate that this might be a pain in the butt to implement, so was more of an "if possible" request.
Re. FZF given that as far as I can tell J. Gunn maintains a bunch of plugins largely on his own I think he does a v. good job of responding and maintaining so many things, plus I don't think there's any worry that even if he doesn't maintain it someone else wouldn't given its popularity.
In hindsight I actually think that if this is ever a thing coc wants to bring in house it would actually be better to implement in a similar way as the example of Gina.vim as it seems to do all of this without any dependencies, but I haven't read through the code to figure out how.
@oblitum your vimrc is great borrowed loads of great stuff :laughing: :100:
Pull request for fzf is welcome.
I would improve the document, but will not make source for fzf since I don't use it.
That's fair enough I'll take a closer look myself to see if its something I can make a PR for :+1:
I'm currently using this: https://gist.github.com/RobertBuhren/02e05506255c667c0038ce74ee1cef96
to display the diagnostics of coc.nvim using FZF. I'm planning to implement something similar for locations, but I didn't had the time yet.
Maybe someone can use this as a starting point?
Regards,
Robert
Now that association with Denite is removed, I guess this one got pushed further out of scope.
Denite sources are moved to https://github.com/neoclide/coc-denite, the API is not changed, you can still use that for other list plugin.
Ah, nice, so that's the reverse, should be easier to produce coc-fzf.
@chemzqm thanks for adding the CocList functionality. I personally feel like the addition of CocList solves my problem I don't necessarily need the functionality to be available via FZF (just available somehow and fzf seemed like a good alternative if there wasn't an inbuilt one)
Hello, I have just published my plugin: vista.vim. I started working on it with an intention of replacing tagbar with LSP support added, but since I'm also a solid fzf user, I also supported filtering LSP symbols from coc on the strength of fzf.
If someone is interested in making coc-fzf, https://github.com/liuchengxu/vista.vim/blob/master/autoload/vista/finder/fzf.vim could be a reference as well.
:Vista finder coc:

@liuchengxu nice plugin.
@chemzqm With all due respect, I think this issue should be reopened. Currently I don't have enough time to create coc-fzf or similar, but I would love to have FZF working in place of coc's native list. I know it's enough for many users (including you, coc's creator), but it simply breaks my momentum. I'm an avid user of FZF and CocList breaks my workflow.
See, I'm not saying you should be the one to implement that, but at least leave the issue open until someone comes up with something. The ideal solution would be a full "replacement" for coc's native fuzzy finder.
Feature like workspace symbols search requires the interactive search on input change, it's not supported by fzf as far as I know.
@chemzqm by interactive, do you mean that every input change sends a request to the LSP server to update the results?
@gbrlsnchs yes
I've been using coc for a week now, and it's amazing. It has replaced many other plugins and integrates very well. This is definitely one of the best, if not the best plugin to use with Neovim.
Except, as you might expect, the lack of FZF support and the foreign controls when using its lists.
I can see how the lists are really well done, they have a nice design, and work well, it's just that I don't use Vim all day, and everywhere else in my terminal I always use FZF when dealing with lists. This makes FZF part of my muscle memory that won't disappear, which makes coc lists awkward to use for me.
Perhaps that will change over time, and I can seamlessly switch between the two, but I wanted to give my vote to this feature nonetheless, even though I understand from your comments that it's not as straightforward to support as we'd all hoped it would be.
I don't have interest for fzf, you can use API from coc.nvim to manage the lists.
@chemzqm With all due respect, I think this issue should be reopened. Currently I don't have enough time to create
coc-fzfor similar, but I would love to have FZF working in place of coc's native list. I know it's enough for many users (including you, coc's creator), but it simply breaks my momentum. I'm an avid user of FZF andCocListbreaks my workflow.See, I'm not saying you should be the one to implement that, but at least leave the issue open until someone comes up with something. The ideal solution would be a full "replacement" for coc's native fuzzy finder.
@gbrlsnchs The absence of fzf was a bummer for me too but you can remap the coc list mappings to have a similar experience to fzf. I don't miss it anymore with these additional settings:
{
"list.nextKeymap": "<C-n>",
"list.previousKeymap": "<C-p>",
"list.maxHeight": 15,
"list.insertMappings": {
"<C-c>": "do:exit"
},
}
(I would still love fzf support 馃槈)
@Akin909 , all, I just create coc-fzf: https://github.com/antoinemadec/coc-fzf
It looks exactly like CocList.
For now it has _diagnostics_, _extensions_, _services_, _outline_, _location_ and _resume_.
If you have ideas for other lists, let me know.
The _workspaceSymbols_ will be tough to implement unless coc.nvim provides a function to do a query with a fuzzy pattern.
Feedback and contributions are welcome :smiley:
@antoinemadec I've added getWorkspaceSymbols CocAction.
@chemzqm @fannheyward , thanks a lot for the support.
https://github.com/antoinemadec/coc-fzf now supports _symbols_ as well :smile:
@antoinemadec your plugin looks great. Do you know whether it can be made to work with skim instead of fzf? I've stopped using fzf in [n]vim as I use denite there, and on the command line skim runs much faster than fzf in my experience. Just asking, not sure whether it's easily replaceable in this case. I've replaced fzf for skim in the tmux extrakto tool, and it was just a matter of setting set -g @extrakto_fzf_tool 'sk'.
@oblitum
I've stopped using fzf in [n]vim as I use denite there
Did you try coc-denite ?
your plugin looks great. Do you know whether it can be made to work with skim instead of fzf?
Thanks :smile: .The only thing I see right off the bat is the RELOAD INPUT feature of fzf that would need to be implemented differently in skim. I won't do it, but feel free to send a PR if choosing between fzf and skim represent few changes :+1:
@antoinemadec
Did you try coc-denite?
It's what I use, it works great. Was just commenting on the skim option as I'm finding it faster than fzf for the other tasks I do.
@oblitum You can use ripgrep with FZF if you're finding FZF slow. Just set FZF_DEFAULT_COMMAND to something like rg --files --hidden.
@oblitum @PhilT , absolutely, I personally use ag:
export FZF_DEFAULT_COMMAND='ag -g ""'
I used ripgrep already, skim is still faster.
@oblitum , got it. If you can, PR are welcome: https://github.com/antoinemadec/coc-fzf
You can also fork it, I will be happy to respond to your questions :smiley:
@Akin909 @chemzqm, coc-fzf by @antoinemadec has gone a long way, I guess this issue can be closed?
Most helpful comment
@chemzqm With all due respect, I think this issue should be reopened. Currently I don't have enough time to create
coc-fzfor similar, but I would love to have FZF working in place of coc's native list. I know it's enough for many users (including you, coc's creator), but it simply breaks my momentum. I'm an avid user of FZF andCocListbreaks my workflow.See, I'm not saying you should be the one to implement that, but at least leave the issue open until someone comes up with something. The ideal solution would be a full "replacement" for coc's native fuzzy finder.