Created
March 5, 2023 16:44
-
-
Save ms747/4d780555bf72f57cc5f935a718337d16 to your computer and use it in GitHub Desktop.
Basic goto neovim config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local set = vim.opt | |
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' | |
if not vim.loop.fs_stat(lazypath) then | |
vim.fn.system { | |
'git', | |
'clone', | |
'--filter=blob:none', | |
'https://github.com/folke/lazy.nvim.git', | |
'--branch=stable', | |
lazypath, | |
} | |
end | |
vim.opt.rtp:prepend(lazypath) | |
require('lazy').setup({ | |
'akinsho/toggleterm.nvim', | |
{ | |
'neovim/nvim-lspconfig', | |
dependencies = { | |
'williamboman/mason.nvim', | |
'williamboman/mason-lspconfig.nvim', | |
{ 'j-hui/fidget.nvim', opts = {} }, | |
'folke/neodev.nvim', | |
}, | |
}, | |
{ | |
'hrsh7th/nvim-cmp', | |
dependencies = { 'hrsh7th/cmp-nvim-lsp', 'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip' }, | |
}, | |
{ "bluz71/vim-moonfly-colors", name = "moonfly", lazy = true, priority = 1000 }, | |
}, {}) | |
require("toggleterm").setup{ | |
size = 100, | |
open_mapping = [[<c-\>]], | |
direction = "vertical", | |
hide_numbers = true, | |
close_on_exit = true, | |
} | |
set.tabstop = 2 | |
set.softtabstop = 2 | |
set.shiftwidth = 2 | |
vim.o.hlsearch = false | |
vim.o.mouse = 'a' | |
vim.o.ignorecase = true | |
vim.o.smartcase = true | |
vim.o.updatetime = 250 | |
vim.o.timeout = true | |
vim.o.timeoutlen = 300 | |
vim.o.termguicolors = true | |
local on_attach = function(_, bufnr) | |
local nmap = function(keys, func, desc) | |
if desc then | |
desc = 'LSP: ' .. desc | |
end | |
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) | |
end | |
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') | |
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') | |
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') | |
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation') | |
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition') | |
nmap('K', vim.lsp.buf.hover, 'Hover Documentation') | |
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation') | |
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) | |
vim.lsp.buf.format() | |
end, { desc = 'Format current buffer with LSP' }) | |
end | |
local capabilities = vim.lsp.protocol.make_client_capabilities() | |
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) | |
require('mason').setup() | |
local mason_lspconfig = require 'mason-lspconfig' | |
local servers = { | |
clangd = {}, | |
rust_analyzer = {}, | |
} | |
mason_lspconfig.setup { | |
ensure_installed = vim.tbl_keys(servers), | |
} | |
mason_lspconfig.setup_handlers { | |
function(server_name) | |
require('lspconfig')[server_name].setup { | |
capabilities = capabilities, | |
on_attach = on_attach, | |
settings = servers[server_name], | |
} | |
end, | |
} | |
local cmp = require 'cmp' | |
local luasnip = require 'luasnip' | |
luasnip.config.setup {} | |
cmp.setup { | |
snippet = { | |
expand = function(args) | |
luasnip.lsp_expand(args.body) | |
end, | |
}, | |
mapping = cmp.mapping.preset.insert { | |
['<C-n>'] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), | |
['<C-p>'] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), | |
['<C-d>'] = cmp.mapping.scroll_docs(-4), | |
['<C-f>'] = cmp.mapping.scroll_docs(4), | |
['<C-Space>'] = cmp.mapping.complete {}, | |
['<CR>'] = cmp.mapping.confirm { | |
behavior = cmp.ConfirmBehavior.Replace, | |
select = true, | |
}, | |
}, | |
sources = { | |
{ name = 'nvim_lsp' }, | |
{ name = 'luasnip' }, | |
}, | |
} | |
vim.cmd [[colorscheme moonfly]] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment