liuchengxu / vista.vim

:cactus: Viewer & Finder for LSP symbols and tags
https://liuchengxu.github.io/vista.vim
MIT License
1.88k stars 89 forks source link

Vista just doesn't work #444

Closed matteouni closed 1 year ago

matteouni commented 1 year ago

Usually I use nvim-lsp. I've installed coc.nvim as doc prescribes, and yet no result when I run ":Vista"

local lfs = require("lfs") require('packer').startup(function(use) use "neoclide/coc.nvim" --installed for vista.vim use "liuchengxu/vista.vim" use "hrsh7th/cmp-nvim-lsp" use "hrsh7th/nvim-cmp" use "ray-x/lsp_signature.nvim" use "https://gitlab.com/yorickpeterse/nvim-window.git" use "folke/trouble.nvim" use "williamboman/mason.nvim" use "neovim/nvim-lspconfig" use "nvim-tree/nvim-tree.lua" use "nvim-treesitter/nvim-treesitter" use "easymotion/vim-easymotion" use "github/copilot.vim" use "wbthomason/packer.nvim" use "preservim/tagbar" -- exuberant-ctags use "L3MON4D3/LuaSnip" end)

local luasnip = require("luasnip") local cmp = require("cmp") cmp.setup({ snippet = { --https://github.com/hrsh7th/nvim-cmp/blob/bb95d975ff2e2c57acf5a005f5c5c9bc94522319/lua/cmp/core.lua 472 expand = function(SnippetExpansionParams) --how nvim-cmp interacts with a particular snippet engine -- cmp.SnippetExpansionParams luasnip.lsp_expand(SnippetExpansionParams.body) end }, mapping = { [""] = cmp.mapping.confirm({ select = true, behavior = cmp.ConfirmBehavior.Replace}), --If you didn't select any item and the option table contains select = true, nvim-cmp will automatically select the first item. Plus see https://github.com/hrsh7th/nvim-cmp/issues/1320 }, sources = { {name = "nvim_lsp"}, {name = "buffer"}, } }) require("lsp_signature").setup({ fix_pos = true, -- do not auto-close floating window until I've filled all parameters hint_enable = false, -- do not show virtual hint text alongisde signature window hint_prefix = "->", -- point at paramater to be filled floating_window_above_cur_line = true, -- obviously when it's feasible }) require("trouble").setup({ icons = false, fold_open = "", fold_closed = "", indent_lines = true, signs = { error = "E", warning = "W", hint = "H", information = "I", other = "O", }, }) --TODO refresh local lspconfig = require("lspconfig") local servers = {"pyright", "sumnekolua", "clangd", "gopls"} for , v in pairs(servers) do lspconfig[v].setup({ -- update_capabilities is deprecated https://github.com/hrsh7th/cmp-nvim-lsp/issues/38 capabilities = vim.tbl_deep_extend("force", lspconfig.util.default_config.capabilities, require('cmp_nvim_lsp').default_capabilities()) -- vim.tbl_deep_extend merges recursively two or more map-like tables. The first param decides what to do if a key is found in more than one table. In this case we may use value from the rightmost map. In this way we do not throw away neovim built-in's LSP capabilities.

})

end require("mason").setup() require("nvim-treesitter.configs").setup({ ensure_installed = {"lua"}, --parsers indent = {enable = true}, highlight = {enable = true}, --"I get query error: invalid node type at position" paragraph. Syntax highlighting }) require("nvim-tree").setup({ --TODO sync tab option open_on_setup_file = true, -- focus on file window rather than nvim-tree view = { relativenumber = true, number = true, }, renderer = { highlight_opened_files = "names", icons = {-- To disable the display of icons see |renderer.icons.show| show = { git = true, folder = false, file = false, folder_arrow = false, }, }, }, diagnostics = { enable = true, icons = { hint = "H", info = "I", warning = "W", error = "E", }, }, }) -- config centered on github copilot local options = { filetype = "on", --turned on filetype detection foldmethod = "expr", foldexpr = "nvimtreesitter#foldexpr()", foldnestmax = 1, clipboard = vim.opt.clipboard + "unnamedplus" + "unnamed", --TOFIX from repeat.vim page expandtab = true, hlsearch = false, iskeyword = vim.opt.iskeyword + "-" + "", number = true, pumheight = 7, relativenumber = true, scrolloff = 999, shiftwidth = 4, -- Number of spaces to use for each step of (auto)indent showmode = false, smartindent = true, -- Do smart autoindenting when starting a new line -- softtabstop = 4, -- Number of spaces that a counts for while performing editing operations tabstop = 4, -- Number of spaces that a in the file counts for updatetime = 200, cursorline = true, cursorline=true, cursorlineopt = "screenline", } for k, v in pairs(options) do vim.opt[k] = v end local globals = { tagbar_show_linenumbers = 2, -- show relative line numbers in tagbar window copilot_no_tab_map = true, -- do not accept copilot suggestion with tab }

for k, v in pairs(globals) do vim.g[k] = v end local speedcoding = {"w", "wq", "wq!", "q", "q!", "qa", "qa!"} local function partiallyAccept() local = vim.fn'copilot#Accept' local suggestion = vim.fn['copilot#TextQueuedForInsertion']() return vim.fn.split(suggestion, [[[ .]\zs]])[1] -- the word can be separated by space or by the dot char end

local function smartIndent() local currLine, currCol = unpack(vim.api.nvim_win_get_cursor(0)) --! => nore vim.api.nvim_command("normal! gg=G") vim.api.nvim_command("normal! " .. currLine .. "G") end -- TODO indent mode local keymaps = { -- :h modes {"i", "", 'copilot#Accept("")', {expr=true}}, {"nv", "", ":lua require('nvim-window').pick()", {}}, {"nv", "p", '"+p', {noremap=true}}, --REQUIRES xclip on X11! {"nv", "y", '"+y', {noremap=true}}, {"nv", "c", '"_c', {noremap=true}}, {"nv", "d", '"_d', {noremap=true}}, {"nv", "x", '"_x', {noremap=true}}, {"i", "", partiallyAccept, {expr=true}}, {"n", "", smartIndent, {}}, {"n", "", function() updateLSP(lfs.currentdir(), 1) vim.api.nvim_command("Trouble") end, {}}, {"nov", "F" , "(easymotion-Fl)", {}}, {"nov", "T" , "(easymotion-Tl)", {}}, {"nov", "t" , "(easymotion-tl)", {}}, {"nov", "f" , "(easymotion-fl)", {}},

}

local function keymap(modes, key, value, opts) for i=1, string.len(modes) do local mode = string.sub(modes, i, i) vim.keymap.set(mode, key, value, opts) end end

for _, v in pairs(keymaps) do keymap(unpack(v)) end function updateLSP(path, depth) --TODO see :help vim.lsp.start_client if depth == 0 then return end for file in lfs.dir(path) do local f = path..'/'..file if file ~= "." and file ~= ".." and lfs.attributes(f).mode ~= "directory" then vim.cmd("vs " .. file) vim.cmd("close") end end vim.cmd("NvimTreeRefresh") end local all_files = {".lua", ".py", ".c", ".cpp", ".h", ".hpp"} local autocmds = { -- TOSEE https://stackoverflow.com/questions/3837933/autowrite-when-changing-tab-in-vim --TODO NERDTree like, add commenter and system clipboard {{"TabNew"}, {pattern = all_files, command=":TagbarOpen"}}, {{"TabNew"}, {pattern = all_files, command=":NvimTreeOpen"}}, {{"VimEnter"}, {pattern = all_files, command=":NvimTreeOpen"}}, {{"VimEnter"}, {pattern = all_files, command=":TagbarOpen"}}, {{"CursorHoldI"}, {pattern = allfiles, command=":TagbarForceUpdate"}}, } for , v in pairs(autocmds) do vim.api.nvim_create_autocmd(unpack(v)) end

liuchengxu commented 1 year ago

You have to use https://github.com/universal-ctags/ctags instead of Exuberant Ctags. Feel free to reopen if this does not help.