add neovim configs

This commit is contained in:
2023-02-07 22:01:53 +08:00
parent 7d6317fd91
commit 0c8f5391c4
7 changed files with 152 additions and 0 deletions

5
nvim/init.lua Normal file
View 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
View 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
View File

@@ -0,0 +1,2 @@
vim.cmd "set iskeyword+=-"
vim.opt.termguicolors = true

50
nvim/lua/hmsy/keymaps.lua Normal file
View 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, {})

View 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,
},
})

View 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
View 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)