~damien/dotfiles

e0d504b16622bc56080f0a7d0476706c75da8aa8 — Damien Radtke 10 months ago d52f808
Set up new Lua-specific config
4 files changed, 133 insertions(+), 1 deletions(-)

A vim/.config/nvim/init.lua
R vim/.config/nvim/{init.vim => init.vim.old}
A vim/.config/nvim/lua/lsp.lua
A vim/.config/nvim/lua/plugins.lua
A vim/.config/nvim/init.lua => vim/.config/nvim/init.lua +14 -0
@@ 0,0 1,14 @@
require('plugins')
require('lsp')

vim.opt.number = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = false

vim.keymap.set('n', '<leader>ff', '<cmd>Telescope find_files<cr>')
vim.keymap.set('n', '<leader>fg', '<cmd>Telescope live_grep<cr>')
vim.keymap.set('n', '<leader>be', '<cmd>Telescope buffers<cr>')
vim.keymap.set('n', '<leader>fh', '<cmd>Telescope help_tags<cr>')

vim.cmd [[colorscheme catppuccin]]

R vim/.config/nvim/init.vim => vim/.config/nvim/init.vim.old +17 -1
@@ 54,6 54,17 @@ local on_attach = function(client, bufnr)
	-- end
end

local status, lsp_installer = pcall(require, 'nvim-lsp-installer')
if status then
	lsp_installer.on_server_ready(function(server)
		local opts = {
			on_attach = on_attach;
		}
		-- Server-specific options can be added here; check "server.name"
		server:setup(opts)
	end)
end

nvim_lsp.jdtls.setup{
	cmd = { 'java-language-server', '--heap-max', '8G' };
	init_options = {


@@ 105,7 116,12 @@ require('telescope').setup{
}
EOF

nmap <Leader>ff <cmd>Telescope find_files<cr>
if !empty(finddir('.git', '.;'))
	nmap <Leader>ff <cmd>Telescope git_files<cr>
else
	nmap <Leader>ff <cmd>Telescope find_files<cr>
endif

nmap <Leader>fg <cmd>Telescope live_grep<cr>
nmap <Leader>fb <cmd>Telescope buffers<cr>
nmap <Leader>fh <cmd>Telescope help_tags<cr>

A vim/.config/nvim/lua/lsp.lua => vim/.config/nvim/lua/lsp.lua +84 -0
@@ 0,0 1,84 @@
local ok, lspconfig = pcall(require, 'lspconfig')
if not ok then
	return
end

local ok, lsp_installer = pcall(require, 'nvim-lsp-installer')
if not ok then
	return
end

-- Mappings.
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
local opts = { noremap=true, silent=true }
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)

-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
	-- Enable completion triggered by <c-x><c-o>
	vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')

	-- Mappings.
	-- See `:help vim.lsp.*` for documentation on any of the below functions
	local bufopts = { noremap=true, silent=true, buffer=bufnr }
	vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
	vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
	vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
	vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
	vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
	vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
	vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
	vim.keymap.set('n', '<space>wl', function()
		print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
	end, bufopts)
	vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
	vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
	vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
	vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
	vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts)
end

local lsp_flags = {
	-- This is the default in Nvim 0.7+
	debounce_text_changes = 150,
}

lspconfig['rust_analyzer'].setup{
	on_attach = on_attach,
	flags = lsp_flags,
	-- Server-specific settings...
	settings = {
		["rust-analyzer"] = {}
	}
}

lspconfig['sumneko_lua'].setup{
	on_attach = on_attach,
	flags = lsp_flags,
	cmd = {vim.fn.stdpath('data')..'/lsp_servers/sumneko_lua/extension/server/bin/lua-language-server'},
	settings = {
		Lua = {
			diagnostics = {
				globals = {'vim'}
			}
		}
	}
}

lspconfig['gopls'].setup{
	on_attach = on_attach,
	flags = lsp_flags,
}

lspconfig['zls'].setup{
	on_attach = on_attach,
	flags = lsp_flags,
}

lsp_installer.setup{
	automatic_installation = true,
}

A vim/.config/nvim/lua/plugins.lua => vim/.config/nvim/lua/plugins.lua +18 -0
@@ 0,0 1,18 @@
-- Bootstrap packer
local install_path = vim.fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
	packer_bootstrap = vim.fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
end

return require('packer').startup(function(use)
	use {
		'wbthomason/packer.nvim', -- Manage itself
		'neovim/nvim-lspconfig',
		'williamboman/nvim-lsp-installer',
	}
	use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }
	use { 'nvim-telescope/telescope.nvim', requires = { {'nvim-lua/plenary.nvim'} } }

	-- Colorscheme
	use { 'catppuccin/nvim', as = 'catppuccin' }
end)