All Projects → gfanto → fzf-lsp.nvim

gfanto / fzf-lsp.nvim

Licence: MIT license
Enable the power of fzf fuzzy search for the neovim built in lsp

Programming Languages

lua
6591 projects
Vim Script
2826 projects
shell
77523 projects

Projects that are alternatives of or similar to fzf-lsp.nvim

modes.nvim
Prismatic line decorations for the adventurous vim user
Stars: ✭ 299 (+109.09%)
Mutual labels:  nvim, neovim-lua
fm-nvim
🗂 Neovim plugin that lets you use your favorite terminal file managers (and fuzzy finders) from within Neovim.
Stars: ✭ 114 (-20.28%)
Mutual labels:  fzf, nvim
dotfiles
i3, Vim, Bash, Ruby, Typescript & React, Elixir, Golang & more!
Stars: ✭ 22 (-84.62%)
Mutual labels:  fzf, nvim
lsp-command
Command interface for neovim LSP
Stars: ✭ 48 (-66.43%)
Mutual labels:  nvim, lsp
tmuxjump.vim
A plugin to open file from file paths printed in sibling tmux pane
Stars: ✭ 50 (-65.03%)
Mutual labels:  fzf, nvim
coc-java-debug
An extension for coc.nvim to enable Java debugging via jdt.ls
Stars: ✭ 92 (-35.66%)
Mutual labels:  nvim, lsp
awesome-neovim
Awesome Configurations for C/C++,Zig,Web and Lua development in NeoVim
Stars: ✭ 54 (-62.24%)
Mutual labels:  nvim, neovim-lua
Twf
Standalone tree view file explorer, inspired by fzf.
Stars: ✭ 196 (+37.06%)
Mutual labels:  fzf, nvim
vim-lamp
💡Language Server Protocol client for Vim.
Stars: ✭ 34 (-76.22%)
Mutual labels:  nvim, lsp
neocode
Completely theme responsive, lean, streamlined lua configuration for neovim (dotfiles). NeoCode aims to provide a fluent experience in nvim and vscode.
Stars: ✭ 38 (-73.43%)
Mutual labels:  nvim, neovim-lua
nvim-config
My neovim config
Stars: ✭ 63 (-55.94%)
Mutual labels:  nvim, lsp
aerial.nvim
Neovim plugin for a code outline window
Stars: ✭ 485 (+239.16%)
Mutual labels:  nvim, lsp
lsp spinner.nvim
neovim plugin to retrieve the name of the running LSP client(s) and display a spinner when there are wip job
Stars: ✭ 23 (-83.92%)
Mutual labels:  nvim, lsp
py lsp.nvim
Lsp Plugin for working with Python virtual environments
Stars: ✭ 58 (-59.44%)
Mutual labels:  nvim, lsp
nvim-fennel-lsp-conjure-as-clojure-ide
Basic config to transform your NVIM in a powerful Clojure IDE using fennel, clojure-lsp and conjure.
Stars: ✭ 144 (+0.7%)
Mutual labels:  nvim, lsp
nvim-metals
A Metals plugin for Neovim
Stars: ✭ 265 (+85.31%)
Mutual labels:  nvim, lsp
Coc Fzf
fzf ❤️ coc.nvim
Stars: ✭ 261 (+82.52%)
Mutual labels:  fzf, lsp
Init.nvim
An Opinionated Neovim Config for the Minimalists
Stars: ✭ 194 (+35.66%)
Mutual labels:  fzf, nvim
neovimfiles
My Neovim configuration written in Lua
Stars: ✭ 52 (-63.64%)
Mutual labels:  nvim, lsp
telescope-repo.nvim
🦘 Jump into the repositories (git, mercurial…) of your filesystem with telescope.nvim, without any setup
Stars: ✭ 99 (-30.77%)
Mutual labels:  nvim, neovim-lua

fzf-lsp.nvim

Show document symbols

Installation

Install using vim-plug. Put this in your init.vim.

Plug 'gfanto/fzf-lsp.nvim'

Requirements

Features

This is an extension for fzf that give you the ability to search for symbols using the neovim builtin lsp.

Commands and settings

If you have fzf.vim installed, this plugin will respect your g:fzf_command_prefix setting.

Settings:

In general fzf-lsp.vim will respect your fzf.vim settings, alternatively you can override a specific settings with the fzf-lsp.vim equivalent:

  • g:fzf_lsp_action: the equivalent of g:fzf_action, it's a dictionary containing all the actions that fzf will do in case of specific input
  • g:fzf_lsp_layout: the equivalent of g:fzf_layout, dictionary with the fzf_window layout
  • g:fzf_lsp_colors: the equivalent of g:fzf_colors, it's a string that will be passed to fzf to set colors
  • g:fzf_lsp_preview_window: the equivalent of g:fzf_preview_window, it's a list containing the preview windows position and key bindings
  • f:fzf_lsp_command_prefix: the equivalent of g:fzf_command_prefix, it's the prefix applied to all commands

fzf-lsp.vim only settings:

  • g:fzf_lsp_timeout: integer value, number of milliseconds after command calls will go to timeout

Commands:

*** Commands accepts and respect the ! if given ***

  • Call :Definitions to show the definition for the symbols under the cursor
  • Call :Declarations to show the declaration for the symbols under the cursor*
  • Call :TypeDefinitions to show the type definition for the symbols under the cursor*
  • Call :Implementations to show the implementation for the symbols under the cursor*
  • Call :References to show the references for the symbol under the cursor
  • Call :DocumentSymbols to show all the symbols in the current buffer
  • Call :WorkspaceSymbols to show all the symbols in the workspace, you can optionally pass the query as argument to the command
  • Call :IncomingCalls to show the incoming calls
  • Call :OutgoingCalls to show the outgoing calls
  • Call :CodeActions to show the list of available code actions
  • Call :RangeCodeActions to show the list of available code actions in the visual selection
  • Call :Diagnostics to show all the available diagnostic informations in the current buffer, you can optionally pass the desired severity level as first argument or the severity limit level as second argument
  • Call :DiagnosticsAll to show all the available diagnostic informations in all the opened buffers, you can optionally pass the desired severity level as first argument or the severity limit level as second argument

Note(*): this methods may not be implemented in your language server, especially textDocument/declaration (Declarations) it's usually not implemented in favour of textDocument/definition (Definitions).

Functions

Commands are just wrappers to the following function, each function take one optional parameter: a dictionary containing the options.

  • require'fzf_lsp'.code_action_call
  • require'fzf_lsp'.range_code_action_call
  • require'fzf_lsp'.definition_call
  • require'fzf_lsp'.declaration_call
  • require'fzf_lsp'.type_definition_call
  • require'fzf_lsp'.implementation_call
  • require'fzf_lsp'.references_call
  • require'fzf_lsp'.document_symbol_call
  • require'fzf_lsp'.workspace_symbol_call
    • options:
      • query
  • require'fzf_lsp'.incoming_calls_call
  • require'fzf_lsp'.outgoing_calls_call
  • require'fzf_lsp'.diagnostic_call
    • options:
      • bufnr: the buffer number, default on current buffer
      • severity: the minimum severity level
      • severity_limit: the maximum severity level

Handlers

Functions and commands are implemented using sync calls, if you want your calls to be async you can use the standard neovim calls setting his relative handler. To do that you can use the provided setup function, keeping in mind that this will replace all your handlers:

require'fzf_lsp'.setup()

or you can manually setup your handlers. The provided handlers are:

vim.lsp.handlers["textDocument/codeAction"] = require'fzf_lsp'.code_action_handler
vim.lsp.handlers["textDocument/definition"] = require'fzf_lsp'.definition_handler
vim.lsp.handlers["textDocument/declaration"] = require'fzf_lsp'.declaration_handler
vim.lsp.handlers["textDocument/typeDefinition"] = require'fzf_lsp'.type_definition_handler
vim.lsp.handlers["textDocument/implementation"] = require'fzf_lsp'.implementation_handler
vim.lsp.handlers["textDocument/references"] = require'fzf_lsp'.references_handler
vim.lsp.handlers["textDocument/documentSymbol"] = require'fzf_lsp'.document_symbol_handler
vim.lsp.handlers["workspace/symbol"] = require'fzf_lsp'.workspace_symbol_handler
vim.lsp.handlers["callHierarchy/incomingCalls"] = require'fzf_lsp'.incoming_calls_handler
vim.lsp.handlers["callHierarchy/outgoingCalls"] = require'fzf_lsp'.outgoing_calls_handler
Setup options

The setup function optionally takes a table for configuration. Available options:

  • override_ui_select: boolean option to override the vim.ui.select function (only for neovim 0.6+)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].