All Projects → weilbith → nvim-lsp-smag

weilbith / nvim-lsp-smag

Licence: MIT License
Seamless integration of language server locations into NeoVim

Programming Languages

lua
6591 projects
Vim Script
2826 projects

Projects that are alternatives of or similar to nvim-lsp-smag

null-ls.nvim
Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
Stars: ✭ 965 (+1508.33%)
Mutual labels:  neovim, neovim-plugin, neovim-lsp
nvim context vt
Virtual text context for neovim treesitter
Stars: ✭ 193 (+221.67%)
Mutual labels:  neovim, neovim-plugin
spellsitter.nvim
Treesitter powered spellchecker
Stars: ✭ 251 (+318.33%)
Mutual labels:  neovim, neovim-plugin
denite-gtags
Denite source for GNU Global
Stars: ✭ 27 (-55%)
Mutual labels:  neovim, neovim-plugin
nvim-lsp-ts-utils
Utilities to improve the TypeScript development experience for Neovim's built-in LSP client.
Stars: ✭ 437 (+628.33%)
Mutual labels:  neovim-plugin, neovim-lsp
trouble.nvim
🚦 A pretty diagnostics, references, telescope results, quickfix and location list to help you solve all the trouble your code is causing.
Stars: ✭ 2,663 (+4338.33%)
Mutual labels:  neovim-plugin, neovim-lsp
Comment.nvim
🧠 💪 // Smart and powerful comment plugin for neovim. Supports treesitter, dot repeat, left-right/up-down motions, hooks, and more
Stars: ✭ 796 (+1226.67%)
Mutual labels:  neovim, neovim-plugin
Lush.nvim
Define Neovim themes as a DSL in lua, with real-time feedback.
Stars: ✭ 204 (+240%)
Mutual labels:  neovim, neovim-plugin
close-buffers.nvim
📑 Delete multiple vim buffers based on different conditions
Stars: ✭ 54 (-10%)
Mutual labels:  neovim, neovim-plugin
boo-colorscheme-nvim
Boo is a colorscheme for Neovim with handcrafted support for LSP, Treesitter.
Stars: ✭ 62 (+3.33%)
Mutual labels:  neovim, neovim-plugin
virt-column.nvim
Display a character as the colorcolumn
Stars: ✭ 64 (+6.67%)
Mutual labels:  neovim, neovim-plugin
Vim Ghost
Vim/Nvim client for GhostText - Edit browser text areas in Vim/Neovim
Stars: ✭ 245 (+308.33%)
Mutual labels:  neovim, neovim-plugin
Vim Vsnip
Snippet plugin for vim/nvim that supports LSP/VSCode's snippet format.
Stars: ✭ 224 (+273.33%)
Mutual labels:  neovim, neovim-plugin
awesome-neovim
Awesome Configurations for C/C++,Zig,Web and Lua development in NeoVim
Stars: ✭ 54 (-10%)
Mutual labels:  neovim-plugin, neovim-lsp
Indent Blankline.nvim
Indent guides for Neovim
Stars: ✭ 203 (+238.33%)
Mutual labels:  neovim, neovim-plugin
nvim-jdtls
Extensions for the built-in LSP support in Neovim for eclipse.jdt.ls
Stars: ✭ 282 (+370%)
Mutual labels:  neovim, neovim-plugin
cmp-under-comparator
nvim-cmp comparator function for completion items that start with one or more underlines
Stars: ✭ 77 (+28.33%)
Mutual labels:  neovim, neovim-plugin
Lsp Status.nvim
Utility functions for getting diagnostic status and progress messages from LSP servers, for use in the Neovim statusline
Stars: ✭ 201 (+235%)
Mutual labels:  neovim, neovim-plugin
Nvim Go
Go development plugin for Neovim written in pure Go
Stars: ✭ 207 (+245%)
Mutual labels:  neovim, neovim-plugin
lir.nvim
Neovim file explorer
Stars: ✭ 194 (+223.33%)
Mutual labels:  neovim, neovim-plugin

NeoVim Language Server Smart Tags

This plugin allows to seamlessly integrate the language server protocol into NeoVim. It leverages the tagfunc option to customize how tags are searched. Instead of searching in a tag file, this plugin queries all attached language clients. It queries the servers for the definition, declaration, implementation and type definition. The resulting list combines all of them together. It can be partially empty if the server doesn't provide all capabilities or a response was empty. In case there is no language client connected to the current buffer, it falls back to the default functionality with a tag file.

The main advantage is to simplify the whole process of either using a tag file or the vim.lsp.client. Furthermore it also combines all location lookup functions together. Instead of defining a separated mapping for the definition, declaration, implementation and type definition this provides all at once. It can be configured which of them should have the highest priority. So it is still possible to jump directly or select from a list of all locations.

Installation

Install the plugin with your favorite manager tool. Here is an example using dein.vim:

call dein#add('weilbith/nvim-lsp-smag')

It is recommended to use the nvim-lspconfig plugin to attach language clients to your buffers.

Usage

The plugin works out of the box. You can simply use all standard ex-commands for tags as always. No need to tweak your mappings to conditional switch the to execute command (checkout nvim-lsp-bacomp when still needed).

To always jump directly to the definition no matter if the implementations etc. just use the :tag command. This will always jump to the tag location with the highest priority. The priority sort order can be defined in the configuration. Furthermore it is also configurable which language server providers to query for locations.

Checkout the docs (:help lsp-smag.txt) to read about how to configure the behavior of this plugin.


Warning:

Using this plugin will remove the ability to search for arbitrary tags with any of the tag related ex-commands. As long as a language client is available, the current cursor location is used by the server to determine the results. Nevertheless it is necessary to define the [name] parameter. This parameter gets simply ignored as long as no tag file is used. Else the ex-commands work different for empty [name] parameter. Therefore it is recommended to use mappings like <cmd>execute 'tjump ' . expand('<cword>')<CR> or type <C-R><C-W> for interactive solutions. Thereby it will work for any case. To search for tags, I recommend to use the symbols by the language server. Checkout vim.lsp.bug.document_symbols() (and the workspace version) or plugins like nvim-lsp-denite.

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].