modify lua init

This commit is contained in:
2023-05-16 15:31:46 -04:00
parent 6d7a383491
commit d77d0f2e35
11 changed files with 411 additions and 183 deletions

41
nvim/lua/keymaps.lua Normal file
View File

@@ -0,0 +1,41 @@
local map = vim.api.nvim_set_keymap
local noremap = function(ctx, keys, cmd, opts)
opts = opts or {}
opts['noremap'] = true
opts['silent'] = true
map(ctx, keys, cmd, opts)
end
local nnoremap = function(keys, cmd)
noremap('n', keys, cmd, nil)
end
local tnoremap = function(keys, cmd)
noremap('t', keys, cmd, nil)
end
local vnoremap = function(keys, cmd)
noremap('v', keys, cmd, nil)
end
-- For plugin-specific keymaps, see that plugin's file in lua/plugins/
map('i', 'jj', '<Esc>', {})
nnoremap('<Leader>q', ':bp|bd #<CR>')
nnoremap('<Leader>w', ':w<CR>')
nnoremap('<Leader>n', ':bn<CR>')
nnoremap('<Leader>b', ':bp<CR>')
nnoremap('<c-j>', '<c-w><c-j>')
nnoremap('<c-k>', '<c-w><c-k>')
nnoremap('<c-h>', '<c-w><c-h>')
nnoremap('<c-l>', '<c-w><c-l>')
tnoremap('<c-j>', '<c-\\><c-n><c-w><c-j>')
tnoremap('<c-k>', '<c-\\><c-n><c-w><c-k>')
tnoremap('<c-h>', '<c-\\><c-n><c-w><c-h>')
tnoremap('<c-l>', '<c-\\><c-n><c-w><c-l>')
tnoremap('<Esc>', '<c-\\><c-n>')
vnoremap('J', ':m \'>+1<CR>gv=gv')
vnoremap('K', ':m \'<-2<CR>gv=gv')

View File

@@ -0,0 +1,63 @@
-- Mappings.
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
local opts = { noremap=true, silent=true }
vim.keymap.set('n', '<space>d', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '<space>dd', require'telescope.builtin'.diagnostics, 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>dl', 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', require'telescope.builtin'.lsp_type_definitions, bufopts)
--vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', 'gd', require'telescope.builtin'.lsp_definitions, bufopts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
vim.keymap.set('n', 'gi', require'telescope.builtin'.lsp_implementations, bufopts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, 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', 'gr', require'telescope.builtin'.lsp_references, bufopts)
vim.keymap.set('n', '<space>f', vim.lsp.buf.format, bufopts)
end
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())
require('lspconfig')['gopls'].setup{
settings = {
gopls = {
templateExtensions = {'gotmpl', 'gohtml'},
}
},
filetypes = { "go", "gomod", "gowork", "gotmpl", "gohtml", "gohtmltmpl" },
on_attach = on_attach,
capabilities = capabilities,
}
require('lspconfig')['pyright'].setup{
on_attach = on_attach,
capabilities = capabilities,
}
require('lspconfig')['tsserver'].setup{
on_attach = on_attach,
capabilities = capabilities,
}
require('lspconfig')['clangd'].setup{
on_attach = on_attach,
capabilities = capabilities,
}
require('lspconfig')['rust_analyzer'].setup{
on_attach = on_attach,
capabilities = capabilities,
}
require('lspconfig')['bashls'].setup{
on_attach = on_attach,
capabilities = capabilities,
}

View File

@@ -0,0 +1,29 @@
local map = vim.api.nvim_set_keymap
local harp = require('harpoon.ui')
local harpmap = function(cmd, cb)
map('n', cmd, '', {
noremap = true,
silent = true,
callback = cb,
})
end
local nav_file = function(n)
return function()
harp.nav_file(n)
end
end
harpmap('<Leader>ee', require('harpoon.mark').add_file)
harpmap('<Leader>fh', harp.toggle_quick_menu)
harpmap('<Leader>1', nav_file(1))
harpmap('<Leader>2', nav_file(2))
harpmap('<Leader>3', nav_file(3))
harpmap('<Leader>4', nav_file(4))
harpmap('<Leader>5', nav_file(5))
harpmap('<Leader>6', nav_file(6))
harpmap('<Leader>7', nav_file(7))
harpmap('<Leader>8', nav_file(8))
harpmap('<Leader>9', nav_file(9))

View File

@@ -58,4 +58,8 @@ Plug 'tpope/vim-dispatch'
vim.call('plug#end')
require("plugins/floaterm")
require("plugins/harpoon")
require("plugins/telescope")
require("plugins/treesitter")
require("plugins/nvim-cmp")

View File

@@ -0,0 +1,73 @@
local cmp = require('cmp')
cmp.setup({
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'vsnip' },
}, {
{ name = 'buffer' },
})
})
-- Set configuration for specific filetype.
cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources({
{ name = 'cmp_git' },
}, {
{ name = 'buffer' },
})
})
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline('/', {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' }
}
})
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'path' }
}, {
{ name = 'cmdline' }
})
})

View File

@@ -0,0 +1,21 @@
local map = vim.api.nvim_set_keymap
local tele = require('telescope.builtin')
local telemap = function(cmd, cb)
map('n', cmd, '', {
noremap = true,
silent = true,
callback = cb,
})
end
telemap('<Leader>ff', function() tele.find_files({ hidden = true, file_ignore_patterns = {'^.git'} }) end)
telemap('<Leader>fg', tele.live_grep)
telemap('<Leader>fb', tele.buffers)
telemap('<Leader>ft', tele.grep_string)
telemap('<Leader>tr', tele.treesitter)

View File

@@ -1,5 +1,5 @@
vim.api.nvim_set_option('number', true)
vim.api.nvim_set_option('relativenumber', true)
vim.api.nvim_win_set_option(0, 'number', true)
vim.api.nvim_win_set_option(0, 'relativenumber', true)
vim.api.nvim_win_set_option(0, 'wrap', false)
vim.api.nvim_set_option('tabstop', 4)
@@ -23,5 +23,5 @@ vim.api.nvim_set_option('updatetime', 50)
vim.api.nvim_set_option('swapfile', false)
vim.api.nvim_set_option('backup', false)
vim.api.nvim_set_option('undofile', true)
vim.api.nvim_set_option('undodir', '~/.vim/undodir')
vim.api.nvim_set_option('undodir', vim.fn.expand('~')..'/.vim/undodir')