Giter Club home page Giter Club logo

virtual-types.nvim's Introduction

virtual-types.nvim

This plugin shows type annotations for functions in virtual text using built-in LSP client.

I use it with ocaml-lsp, but it will probably work with other LSP servers that support textDocument/codeLens request.

Screenshot

screenshot

Prerequisites

Installation

Install with plugin manager:

Plug 'jubnzv/virtual-types.nvim'

And add the following line in your LSP configuration:

lua require'nvim_lsp'.ocamllsp.setup{on_attach=require'virtualtypes'.on_attach}

virtual-types.nvim's People

Contributors

jubnzv avatar oemmerson avatar sbaildon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

virtual-types.nvim's Issues

Errors in haskell-language-server and fsautocomplete

I saw documentation these LSP and has "CodeLens"

on haskell(hls) show this error
172552

but work(strange format but work)
172623

on fsharp(fsautocomplete) show this error
172735

nvim:6.1

require("lspconfig").fsautocomplete.setup({
  on_attach = require("virtualtypes").on_attach,
})

require("lspconfig").hls.setup({
  on_attach = require("virtualtypes").on_attach,
})

module 'virtualtypes' not found

Hello, I have the following packer setting:

    use {
        "neovim/nvim-lspconfig",
        opt = true,
        cmd = "LspStart",
        requires = {
            {"folke/lsp-colors.nvim"},
            {"jubnzv/virtual-types.nvim"},
            {"simrat39/rust-tools.nvim"},
            {"gfanto/fzf-lsp.nvim"},
            {"folke/lsp-colors.nvim"},
            {"j-hui/fidget.nvim", config = function() require("fidget_settings.settings") end},
            {
                "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
                config = function() require("lsp_lines").setup() end
            },
        },
        config = function() require("lsp_settings.settings") end
    }

and this are the first four lines of ~/.config/nvim/lua/lsp_settings/settings.lua:

local nvim_lsp = require('lspconfig')
local cmp_nvim_lsp = require('cmp_nvim_lsp')
local lsp_keybinding_setter = require('lsp_settings.keybindings')
local virtual_types = require('virtualtypes')

I'm getting the following error:

packer.nvim: Error running config for nvim-lspconfig: /home/tornax/.config/nvim/lua/lsp_settings/settings.lua:4: module 'virtualtypes' not found:
	no field package.preload['virtualtypes']
	no file './virtualtypes.lua'
	no file '/usr/share/luajit-2.1.0-beta3/virtualtypes.lua'
	no file '/usr/local/share/lua/5.1/virtualtypes.lua'
	no file '/usr/local/share/lua/5.1/virtualtypes/init.lua'
	no file '/usr/share/lua/5.1/virtualtypes.lua'
	no file '/usr/share/lua/5.1/virtualtypes/init.lua'
	no file '/home/tornax/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/virtualtypes.lua'
	no file '/home/tornax/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/virtualtypes/init.lua'
	no file '/home/tornax/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/virtualtypes.lua'
	no file '/home/tornax/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/virtualtypes/init.lua'
	no file './virtualtypes.so'
	no file '/usr/local/lib/lua/5.1/virtualtypes.so'
	no file '/usr/lib/lua/5.1/virtualtypes.so'
	no file '/usr/local/lib/lua/5.1/loadall.so'
	no file '/home/tornax/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/virtualtypes.so'

what am I doing wrong?

Getting error with ts-server language server

Error

IMG_20211106_200758

My Lsp configuration

-- locals
local nvim_lsp = require("lspconfig")
local nvim_lsp_config = require("lspconfig.configs")
local cmp_lsp = require("cmp_nvim_lsp")
local illuminate = require("illuminate")
local signature = require("lsp_signature")
local virtualtypes = require("virtualtypes")

-- Capabilities
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = cmp_lsp.update_capabilities(capabilities)
capabilities.textDocument.completion.completionItem.snippetSupport = true
capabilities.textDocument.completion.completionItem.documentationFormat = { "markdown", "plaintext" }
capabilities.textDocument.completion.completionItem.preselectSupport = true
capabilities.textDocument.completion.completionItem.insertReplaceSupport = true
capabilities.textDocument.completion.completionItem.labelDetailsSupport = true
capabilities.textDocument.completion.completionItem.deprecatedSupport = true
capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } }
capabilities.textDocument.completion.completionItem.resolveSupport = {
	properties = { "documentation", "detail", "additionalTextEdits" },
}

-- On_attach
local on_attach = function(client, bufnr)
	signature.on_attach()
	illuminate.on_attach()
	virtualtypes.on_attach()
end

-- JS / TS
nvim_lsp.tsserver.setup({
	on_attach = on_attach,
	capabilities = capabilities,
})

-- JSON
nvim_lsp.jsonls.setup({
	on_attach = on_attach,
	capabilities = capabilities,
	commands = {
		Format = {
			function()
				vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line("$"), 0 })
			end,
		},
	},
	settings = {
		json = {
			schemas = require("schemastore").json.schemas(),
		},
	},
})

-- HTML & CSS
nvim_lsp.cssls.setup({
	on_attach = on_attach,
	capabilities = capabilities,
})
nvim_lsp.tailwindcss.setup({
	on_attach = on_attach,
	capabilities = capabilities,
})
nvim_lsp.html.setup({
	on_attach = on_attach,
	capabilities = capabilities,
})
nvim_lsp_config.emmet_ls = {
	default_config = {
		cmd = { "emmet-ls", "--stdio" },
		filetypes = { "html", "css" },
		root_dir = function(fname)
			return vim.loop.cwd()
		end,
		settings = {},
	},
}
nvim_lsp.emmet_ls.setup({
	on_attach = on_attach,
	capabilities = capabilities,
})

-- Bash / Zsh
-- nvim_lsp.bashls.setup({
-- 	on_attach = on_attach,
-- 	capabilities = capabilities,
-- })

-- Python
nvim_lsp.pyright.setup({
	on_attach = on_attach,
	capabilities = capabilities,
})

-- Vim
nvim_lsp.vimls.setup({
	on_attach = on_attach,
	capabilities = capabilities,
})

Not working with rust-analyzer

I've followed readme instructions step by step, installed virtual-types.nvim, included the on_attach snippet, but it simply doesn't works, no error or warning output is displayed, but the virtual texts aren't showing up when i open a .rs file

Not sure if this is relevant, but I'm using nvim-lspinstall for easing the process of setting up language servers

Here's my system details:

Apply this plugin with custom on_attach

I have a custom on_attach function for customized keybindings which I use in my language-server setup config.

Here is my on_attach function:

local on_attach = function(client, bufnr)
  local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
  local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end

  --Enable completion triggered by <c-x><c-o>
  buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')

  -- Mappings.
  local opts = { noremap=true, silent=true }

  -- See `:help vim.lsp.*` for documentation on any of the below functions
  buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
  buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
  buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
  buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
  buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
  buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
  buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
  buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
  buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
  buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
  buf_set_keymap('n', 'ga', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
  buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
  buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
  buf_set_keymap('n', '[a', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
  buf_set_keymap('n', ']a', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
  buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
  buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting_sync()<CR>", opts)
    buf_set_keymap("i", "<C-x><C-x>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)

  vim.cmd("autocmd BufWritePre <buffer> :lua vim.lsp.buf.formatting_sync()")

end

Here is my Haskell LSP setup:

nvim_lsp.hls.setup {
  capabilities = capabilities,
  on_attach = on_attach,
  root_dir = nvim_lsp.util.root_pattern("*.cabal", "stack.yaml", "cabal.project", "package.yaml", "hie.yaml", ".git")
}

How do I combine the required function from this plugin and my custom on_attach function?

error: bad argument #1 to pairs, ocamlls

I get the folowing error:
image

My config:

local on_attach = function(client, bufnr)

  local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
  local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end

  require'virtualtypes'.on_attach()
  -- Mappings.
  local opts = { noremap=true, silent=true }

  -- See `:help vim.lsp.*` for documentation on any of the below functions
  buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
  buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
  buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
  buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
  buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
  buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
  buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
  buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
  buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
  buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
  buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
  buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
  buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
  buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
  buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
  buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
  buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
end
 
 Language client log: /home/pedro/.cache/nvim/lsp.log
 Detected filetype:   ocaml
 
 1 client(s) attached to this buffer: 
 
 Client: ocamlls (id: 1, pid: 218446, bufnr: [3, 3])
 	filetypes:       ocaml, reason
 	autostart:       true
 	root directory:  /home/pedro/Desktop/learning-ocaml
 	cmd:             /home/pedro/.local/share/nvim/lsp_servers/ocamlls/node_modules/.bin/ocaml-language-server --stdio
 
 Configured servers list: cmake, html, texlab, bashls, sumneko_lua, tsserver, r_language_server, yamlls, rust_analyzer, julials, ocamlls, cssls, vimls, pyright, jsonls, rescriptls

Why ocaml-lsp is a prerequisite?

If i understood correctly, shouldn't it be just one of the many supported LSP's instead of being on the readme "Prerequisites" section?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.