vim-gutentags
nvim-cmp
Our great sponsors
vim-gutentags | nvim-cmp | |
---|---|---|
18 | 250 | |
2,254 | 7,078 | |
- | - | |
1.3 | 8.1 | |
about 1 month ago | about 9 hours ago | |
Vim Script | Lua | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
vim-gutentags
-
Vim + Ctags + Modern JS
https://github.com/ludovicchabant/vim-gutentags/issues/139 has some background.
-
Rust setup for neovim
Hi everyone. I'm looking to have a better setup for Rust in neovim. I do have rust-analyzer installed for useful lsp things but I was hoping to get tags working for it as well. I was using vim-gutentags (https://github.com/ludovicchabant/vim-gutentags) for navigating useful functions and stuff but couldn't quite get it to work for rust. Is there a simple way to do it or do I need rusty-tags and some aucommand to get it to work?
-
Project & File navigation
use tags, I like https://github.com/ludovicchabant/vim-gutentags for this. I might use my local .vimrc to tweak the config (exclude compiled source files and other uninteresting things)
- Whenever I'm looking for plugins these days [OC]
-
Big game changers you wish you knew about earlier
guttentag: https://github.com/ludovicchabant/vim-gutentags
-
Having trouble with ctags
Without more information, it's hard to point you in the right direction. The tags file could be out-of-date, in which case you can try to re-generate it (vim-gutentags for tags auto-generation). You could have 2 function declarations with the same name, in which case you can try :tag to cycle through tags (supports partials, like :tag F which will suggest FOO, FAR, FAB ...etc) or :tag to see a list of possible options (supports partials, like :tag F which will list FOO, FAR, FAB, ...etc) for various matching tags you can jump to (fzf.vim provides a tags fuzzy finder via :Tags). Maybe you're experiencing :h tag-priority?
-
What are your must-have vim/nvim extensions?
ludovicchabant/vim-gutentags - Tags
-
Vim – Minimal Setup Explained
You can then use :cnext and :cprev (or focusing the window and selecting an entry) to navigate between them.
As others have stated, you can also use ctags (plugins like https://github.com/ludovicchabant/vim-gutentags are useful for refreshing tags in a project), but for some languages you may need to add a tag definition (e.g. for something like rust or zig). For older languages like C you should be fine.
- How to set up VIM for PHP development
-
Can you add custom functionality for goto definition for lsp to use multiple langauges?
Not sure if it will help in this case, but I also depend on ctags for when the lsp fails (e.g. code it doesn't compile for some reason). Here you let a program create a tags file, e.g. I use https://github.com/universal-ctags/ctags (it seems it can parse json files, though I'm not sure what kind of tags are generated from this and if they will be useful to you) with https://github.com/ludovicchabant/vim-gutentags to update the tags file. The tags file just contains symbol names with locations where they are defined, and vim has builtin functionality to use these tags files :h tag and they (can) work filetype independent. For example if I mention a C type in a markdown document I can just use ctrl-[ to jump to its definition in the C source file. Possibly you can generate tags files yourself from the json files to help with this, the tags file format is not very complicated. Tags also are not very intelligent and depend on unique names for them to work well, there is the :h g_CTRL-] that can help, but for symbols that are very common (e.g. init or something that potentially has like 20+ definitions) it doesn't really work.
nvim-cmp
-
What is this red color in cmp?
vim.api.nvim_set_hl(0, "PmenuSel", { bg = c.background_light, fg = "NONE" }) vim.api.nvim_set_hl(0, "Pmenu", { fg = c.foreground, bg = c.background_light }) vim.api.nvim_set_hl(0, "CmpItemAbbrDeprecated", { fg = c.foreground_light, bg = "NONE", strikethrough = true }) vim.api.nvim_set_hl(0, "CmpItemAbbrMatch", { fg = c.blue , bg = "NONE", bold = true }) vim.api.nvim_set_hl(0, "CmpItemAbbrMatchFuzzy", { fg = c.blue, bg = "NONE", bold = true }) vim.api.nvim_set_hl(0, "CmpItemMenu", { fg = c.purple, bg = "NONE", italic = true }) vim.api.nvim_set_hl(0, "CmpItemKindField", { fg = c.red }) vim.api.nvim_set_hl(0, "CmpItemKindProperty", { fg = c.red }) vim.api.nvim_set_hl(0, "CmpItemKindEvent", { fg = c.red }) vim.api.nvim_set_hl(0, "CmpItemKindText", { fg = c.green }) vim.api.nvim_set_hl(0, "CmpItemKindEnum", { fg = c.green }) vim.api.nvim_set_hl(0, "CmpItemKindKeyword", { fg = c.green }) vim.api.nvim_set_hl(0, "CmpItemKindConstant", { fg = c.yellow }) vim.api.nvim_set_hl(0, "CmpItemKindConstructor", { fg = c.yellow }) vim.api.nvim_set_hl(0, "CmpItemKindReference", { fg = c.yellow }) vim.api.nvim_set_hl(0, "CmpItemKindFunction", { fg = c.purple }) vim.api.nvim_set_hl(0, "CmpItemKindStruct", { fg = c.purple }) vim.api.nvim_set_hl(0, "CmpItemKindClass", { fg = c.purple }) vim.api.nvim_set_hl(0, "CmpItemKindModule", { fg = c.purple }) vim.api.nvim_set_hl(0, "CmpItemKindOperator", { fg = c.purple }) vim.api.nvim_set_hl(0, "CmpItemKindVariable", { fg = c.foreground }) vim.api.nvim_set_hl(0, "CmpItemKindFile", { fg = c.foreground }) vim.api.nvim_set_hl(0, "CmpItemKindUnit", { fg = c.orange }) vim.api.nvim_set_hl(0, "CmpItemKindSnippet", { fg = c.orange }) vim.api.nvim_set_hl(0, "CmpItemKindFolder", { fg = c.orange }) vim.api.nvim_set_hl(0, "CmpItemKindMethod", { fg = c.blue }) vim.api.nvim_set_hl(0, "CmpItemKindValue", { fg = c.blue }) vim.api.nvim_set_hl(0, "CmpItemKindEnumMember", { fg = c.blue }) vim.api.nvim_set_hl(0, "CmpItemKindInterface", { fg = c.aqua }) vim.api.nvim_set_hl(0, "CmpItemKindColor", { fg = c.aqua }) vim.api.nvim_set_hl(0, "CmpItemKindTypeParameter", { fg = c.aqua }) -- https://github.com/hrsh7th/nvim-cmp/pull/1689 vim.api.nvim_set_hl(0, 'FloatBorder', { fg = c.background_light, bg = c.background_light })
-
cmp border background is changed all of a sudden.
Doing a fast scan on the commit history this is probably related to https://github.com/hrsh7th/nvim-cmp/pull/1689 . Hope it helps.
-
Do I need NeoVIM?
https://github.com/hrsh7th/nvim-cmp This is an autocompletion engine https://github.com/nvim-treesitter/nvim-treesitter This allows NeoVim to install parsing scripts so NeoVim can do things like code highlighting. https://github.com/williamboman/mason.nvim Not strictly necessary, but allows you to access a repo of LSP, install them, and configure them for without you actively messing about in config files. https://github.com/neovim/nvim-lspconfig Also not strictly necessary, but vastly simplifies LSP setup. https://github.com/williamboman/mason-lspconfig.nvim This lets the above two plugins talk to each other more easily.
-
Can't go down when writing a command nvim
Edit: Solved I only had to do this
-
What is your most anticipated PR?
toggling sources by Treesitter context
-
About some deprecations in Neovim core
But today I'm a different person, and I'm sure that this is the right decision. I already gave a spiel on the cmp PR, but lemme copy-paste my response for those that weren't following the issue or don't check their GitHub notifications:
-
nvim starts multiple node processes leading to very high memory usage
EDIT: I was able to reproduce the issue with a simplified nvim-cmp init.vim - posted here: https://github.com/hrsh7th/nvim-cmp/issues/1728
-
[Need Help]: I am having trouble getting autocomplete with clangd.
You need to add nvim-cmp and cmp-nvim-lsp
-
is it possible to limit the size of nvim-cmps autocompletion window?
one thing that always annoyed me is how the autocomplete window behaves. when the space below your current line isn't sufficient it just teleports above the line. i know you can set a custom menu direction but i'd much rather have it pop up in a consistent place that is below the current line. the other behavior i dislike is the sizing. it's as big as the longest function in the list which can make the window enormous, to the point where there's almost no place left for the docs window. there aren't really any docs in the example below but i imagine with the little space that is left it'll get troublesome for more verbose docs such as with rust. i'd like to somehow tell nvim-cmp to always pop up below the current line, no matter how long the list is and possibly limit the horizontal size. is that at all possible? i've looked through the nvim-cmp wiki but haven't found an adequate solution. does this go beyond nvim-cmp?
-
Toggling the nvim-cmp documentation window
Update: This isn't currently supported by nvim-cmp (and in fact it has been a feature request for a bit) and so I did my best and opened a PR that implements it :)
What are some alternatives?
tagbar - Vim plugin that displays tags in a window, ordered by scope
coc.nvim - Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.
ctags - A maintained ctags implementation
cmp-nvim-lsp - nvim-cmp source for neovim builtin LSP client
coq.artifacts
vista.vim - :cactus: Viewer & Finder for LSP symbols and tags
completion-nvim - A async completion framework aims to provide completion to neovim's built in LSP written in Lua
nvim-bqf - Better quickfix window in Neovim, polish old quickfix window.
LuaSnip - Snippet Engine for Neovim written in Lua.
cmp-nvim-tags - tags sources for nvim-cmp
rust-tools.nvim - Tools for better development in rust using neovim's builtin lsp