aboutsummaryrefslogtreecommitdiffstats
path: root/test/minimal_init.lua
blob: 4cc3dbdefa31981eba6a2003f63b203dab142981 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
-- install packer
local fn = vim.fn

local install_path = '/tmp/nvim/site/pack/packer/start/packer.nvim'

vim.cmd [[set packpath=/tmp/nvim/site]]

local function load_plugins()
  local use = require('packer').use
  require("packer").startup(
    {
      function()
        use 'wbthomason/packer.nvim'
        use "neovim/nvim-lspconfig"
      end,
      config = {package_root = '/tmp/nvim/site/pack'}
    }
  )
end

_G.load_config = function()
  vim.lsp.set_log_level("trace")
  local nvim_lsp = require('lspconfig')
  local on_attach = function(_, 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

    buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')

    -- Mappings.
    local opts = { noremap=true, silent=true }
    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', '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)
  end

  -- Add the server that troubles you here
  local name = "pyright"
  local cmd = { "pyright-langserver", "--stdio"} -- needed for elixirls, omnisharp, sumneko_lua
  if not name then
    print("You have not defined a server name, please edit minimal_init.lua")
  end
  if not nvim_lsp[name].document_config.default_config.cmd and (not cmd) then
    print([[You have not defined a server default cmd for a server
      that requires it please edit minimal_init.lua]])
  end

  nvim_lsp[name].setup {
      cmd = cmd,
      on_attach = on_attach,
    }

  print([[You can find your log at $HOME/.cache/nvim/lsp.log. Please paste in a github issue under a details tag as described in the issue template.]])
  end

if fn.isdirectory(install_path) == 0 then
  fn.system({'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path})
  load_plugins()
  require('packer').sync()
  vim.cmd 'autocmd User PackerComplete ++once lua load_config()'
else
  load_plugins()
  _G.load_config()
end