add neovim configs
This commit is contained in:
5
nvim/init.lua
Normal file
5
nvim/init.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
require "hmsy.plugins"
|
||||
require "hmsy.cmp"
|
||||
require "hmsy.lsp"
|
||||
require "hmsy.keymaps"
|
||||
require "hmsy.hmsy"
|
||||
51
nvim/lua/hmsy/cmp.lua
Normal file
51
nvim/lua/hmsy/cmp.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
local luasnip = require("luasnip")
|
||||
local cmp = require('cmp')
|
||||
|
||||
local has_words_before = function()
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
cmp.setup {
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
['<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 }),
|
||||
["<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" }),
|
||||
},
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
}),
|
||||
expreimental = {
|
||||
ghost_text = true,
|
||||
},
|
||||
}
|
||||
2
nvim/lua/hmsy/hmsy.lua
Normal file
2
nvim/lua/hmsy/hmsy.lua
Normal file
@@ -0,0 +1,2 @@
|
||||
vim.cmd "set iskeyword+=-"
|
||||
vim.opt.termguicolors = true
|
||||
50
nvim/lua/hmsy/keymaps.lua
Normal file
50
nvim/lua/hmsy/keymaps.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
require('gitsigns').setup{
|
||||
on_attach = function(bufnr)
|
||||
local gs = package.loaded.gitsigns
|
||||
|
||||
-- Navigation
|
||||
map('n', ']c', function()
|
||||
if vim.wo.diff then return ']c' end
|
||||
vim.schedule(function() gs.next_hunk() end)
|
||||
return '<Ignore>'
|
||||
end, {expr=true})
|
||||
|
||||
map('n', '[c', function()
|
||||
if vim.wo.diff then return '[c' end
|
||||
vim.schedule(function() gs.prev_hunk() end)
|
||||
return '<Ignore>'
|
||||
end, {expr=true})
|
||||
|
||||
-- Actions
|
||||
map({'n', 'v'}, '<leader>hs', ':Gitsigns stage_hunk<CR>')
|
||||
map({'n', 'v'}, '<leader>hr', ':Gitsigns reset_hunk<CR>')
|
||||
map('n', '<leader>hS', gs.stage_buffer)
|
||||
map('n', '<leader>hu', gs.undo_stage_hunk)
|
||||
map('n', '<leader>hR', gs.reset_buffer)
|
||||
map('n', '<leader>hp', gs.preview_hunk)
|
||||
map('n', '<leader>hb', function() gs.blame_line{full=true} end)
|
||||
map('n', '<leader>tb', gs.toggle_current_line_blame)
|
||||
map('n', '<leader>hd', gs.diffthis)
|
||||
map('n', '<leader>hD', function() gs.diffthis('~') end)
|
||||
map('n', '<leader>td', gs.toggle_deleted)
|
||||
|
||||
-- Text object
|
||||
map({'o', 'x'}, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
|
||||
end
|
||||
}
|
||||
|
||||
-- formatter
|
||||
map('n', '<leader>F', vim.lsp.buf.format, {})
|
||||
|
||||
-- telescope
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
||||
8
nvim/lua/hmsy/lsp/formatter.lua
Normal file
8
nvim/lua/hmsy/lsp/formatter.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
null_ls.setup({
|
||||
sources = {
|
||||
null_ls.builtins.formatting.prettier,
|
||||
null_ls.builtins.formatting.autopep8,
|
||||
},
|
||||
})
|
||||
13
nvim/lua/hmsy/lsp/init.lua
Normal file
13
nvim/lua/hmsy/lsp/init.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
require("mason").setup()
|
||||
require("mason-lspconfig").setup()
|
||||
|
||||
require("mason-lspconfig").setup_handlers {
|
||||
function(server_name)
|
||||
require("lspconfig")[server_name].setup {}
|
||||
end,
|
||||
["rust_analyzer"] = function ()
|
||||
require("rust-tools").setup {}
|
||||
end
|
||||
}
|
||||
|
||||
require('hmsy.lsp.formatter')
|
||||
23
nvim/lua/hmsy/plugins.lua
Normal file
23
nvim/lua/hmsy/plugins.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local packer = require('packer')
|
||||
packer.startup(function(use)
|
||||
use 'wbthomason/packer.nvim'
|
||||
use 'lewis6991/gitsigns.nvim'
|
||||
use 'preservim/nerdtree'
|
||||
use 'vim-airline/vim-airline'
|
||||
use 'vim-airline/vim-airline-themes'
|
||||
use({ "L3MON4D3/LuaSnip", tag = "v<CurrentMajor>.*" })
|
||||
use 'hrsh7th/nvim-cmp'
|
||||
use 'hrsh7th/cmp-buffer'
|
||||
use 'neovim/nvim-lspconfig'
|
||||
use 'hrsh7th/cmp-nvim-lsp'
|
||||
use "jose-elias-alvarez/null-ls.nvim"
|
||||
use "nvim-lua/plenary.nvim"
|
||||
use 'williamboman/mason.nvim'
|
||||
use "williamboman/mason-lspconfig.nvim"
|
||||
use {
|
||||
'nvim-telescope/telescope.nvim', tag = '0.1.0',
|
||||
-- or , branch = '0.1.x',
|
||||
requires = { { 'nvim-lua/plenary.nvim' } }
|
||||
}
|
||||
use "simrat39/rust-tools.nvim"
|
||||
end)
|
||||
Reference in New Issue
Block a user