|
@@ -1,320 +1,40 @@
|
|
|
+
|
|
|
+require 'custom.lazy'
|
|
|
+require 'custom.autocomplete'
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
vim.g.mapleader = ' '
|
|
|
vim.g.maplocalleader = ' '
|
|
|
|
|
|
+
|
|
|
+vim.o.clipboard = 'unnamedplus'
|
|
|
+
|
|
|
vim.wo.relativenumber = true
|
|
|
|
|
|
|
|
|
-vim.api.nvim_set_keymap("n", "<C-Left>", ":vertical resize +3<CR>", { silent = true, noremap = true })
|
|
|
-vim.api.nvim_set_keymap("n", "<C-Right>", ":vertical resize -3<CR>", { silent = true, noremap = true })
|
|
|
-vim.api.nvim_set_keymap("n", "<C-Up>", ":resize -3<CR>", { silent = true, noremap = true })
|
|
|
-vim.api.nvim_set_keymap("n", "<C-Down>", ":resize +3<CR>", { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-Left>', ':vertical resize +3<CR>', { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-Right>', ':vertical resize -3<CR>', { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-Up>', ':resize -3<CR>', { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-Down>', ':resize +3<CR>', { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-h>', '<C-w>h', { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-j>', '<C-w>j', { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-k>', '<C-w>k', { silent = true, noremap = true })
|
|
|
+vim.api.nvim_set_keymap('n', '<C-l>', '<C-w>l', { silent = true, noremap = true })
|
|
|
+
|
|
|
+
|
|
|
vim.keymap.set('n', '<leader>f', ':Sex', { silent = true, noremap = true })
|
|
|
|
|
|
|
|
|
|
|
|
-vim.api.nvim_set_keymap("i", "<C-H>", "<C-W>", { noremap = true })
|
|
|
+vim.api.nvim_set_keymap('i', '<C-H>', '<C-W>', { noremap = true })
|
|
|
|
|
|
|
|
|
vim.api.nvim_set_keymap('n', '<leader>gg', ':LazyGit<CR>', { noremap = true, silent = true })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-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({
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- 'tpope/vim-fugitive',
|
|
|
- 'tpope/vim-rhubarb',
|
|
|
-
|
|
|
-
|
|
|
- 'tpope/vim-sleuth',
|
|
|
-
|
|
|
-
|
|
|
- 'jose-elias-alvarez/null-ls.nvim',
|
|
|
-
|
|
|
- {
|
|
|
- "kdheepak/lazygit.nvim",
|
|
|
-
|
|
|
- dependencies = {
|
|
|
- "nvim-lua/plenary.nvim",
|
|
|
- },
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- 'eandrju/cellular-automaton.nvim',
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- 'neovim/nvim-lspconfig',
|
|
|
- dependencies = {
|
|
|
-
|
|
|
- { 'williamboman/mason.nvim', config = true },
|
|
|
- 'williamboman/mason-lspconfig.nvim',
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- { 'j-hui/fidget.nvim', opts = {} },
|
|
|
-
|
|
|
-
|
|
|
- 'folke/neodev.nvim',
|
|
|
- },
|
|
|
- },
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- 'hrsh7th/nvim-cmp',
|
|
|
- dependencies = {
|
|
|
-
|
|
|
- {
|
|
|
- 'L3MON4D3/LuaSnip',
|
|
|
- build = (function()
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- if vim.fn.has 'win32' == 1 then
|
|
|
- return
|
|
|
- end
|
|
|
- return 'make install_jsregexp'
|
|
|
- end)(),
|
|
|
- },
|
|
|
- 'saadparwaiz1/cmp_luasnip',
|
|
|
-
|
|
|
-
|
|
|
- 'hrsh7th/cmp-nvim-lsp',
|
|
|
- 'hrsh7th/cmp-path',
|
|
|
-
|
|
|
-
|
|
|
- 'rafamadriz/friendly-snippets',
|
|
|
- },
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- { 'folke/which-key.nvim', opts = {} },
|
|
|
- {
|
|
|
-
|
|
|
- 'lewis6991/gitsigns.nvim',
|
|
|
- opts = {
|
|
|
-
|
|
|
- signs = {
|
|
|
- add = { text = '+' },
|
|
|
- change = { text = '~' },
|
|
|
- delete = { text = '_' },
|
|
|
- topdelete = { text = '‾' },
|
|
|
- changedelete = { text = '~' },
|
|
|
- },
|
|
|
- on_attach = function(bufnr)
|
|
|
- local gs = package.loaded.gitsigns
|
|
|
-
|
|
|
- local function map(mode, l, r, opts)
|
|
|
- opts = opts or {}
|
|
|
- opts.buffer = bufnr
|
|
|
- vim.keymap.set(mode, l, r, opts)
|
|
|
- end
|
|
|
-
|
|
|
-
|
|
|
- map({ 'n', 'v' }, ']c', function()
|
|
|
- if vim.wo.diff then
|
|
|
- return ']c'
|
|
|
- end
|
|
|
- vim.schedule(function()
|
|
|
- gs.next_hunk()
|
|
|
- end)
|
|
|
- return '<Ignore>'
|
|
|
- end, { expr = true, desc = 'Jump to next hunk' })
|
|
|
-
|
|
|
- map({ 'n', 'v' }, '[c', function()
|
|
|
- if vim.wo.diff then
|
|
|
- return '[c'
|
|
|
- end
|
|
|
- vim.schedule(function()
|
|
|
- gs.prev_hunk()
|
|
|
- end)
|
|
|
- return '<Ignore>'
|
|
|
- end, { expr = true, desc = 'Jump to previous hunk' })
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- map('v', '<leader>hs', function()
|
|
|
- gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
|
- end, { desc = 'stage git hunk' })
|
|
|
- map('v', '<leader>hr', function()
|
|
|
- gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
|
- end, { desc = 'reset git hunk' })
|
|
|
-
|
|
|
- map('n', '<leader>hs', gs.stage_hunk, { desc = 'git stage hunk' })
|
|
|
- map('n', '<leader>hr', gs.reset_hunk, { desc = 'git reset hunk' })
|
|
|
- map('n', '<leader>hS', gs.stage_buffer, { desc = 'git Stage buffer' })
|
|
|
- map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'undo stage hunk' })
|
|
|
- map('n', '<leader>hR', gs.reset_buffer, { desc = 'git Reset buffer' })
|
|
|
- map('n', '<leader>hp', gs.preview_hunk, { desc = 'preview git hunk' })
|
|
|
- map('n', '<leader>hb', function()
|
|
|
- gs.blame_line { full = false }
|
|
|
- end, { desc = 'git blame line' })
|
|
|
- map('n', '<leader>hd', gs.diffthis, { desc = 'git diff against index' })
|
|
|
- map('n', '<leader>hD', function()
|
|
|
- gs.diffthis '~'
|
|
|
- end, { desc = 'git diff against last commit' })
|
|
|
-
|
|
|
-
|
|
|
- map('n', '<leader>tb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' })
|
|
|
- map('n', '<leader>td', gs.toggle_deleted, { desc = 'toggle git show deleted' })
|
|
|
-
|
|
|
-
|
|
|
- map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'select git hunk' })
|
|
|
- end,
|
|
|
- },
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- {
|
|
|
- "folke/tokyonight.nvim",
|
|
|
- lazy = false,
|
|
|
- priority = 1000,
|
|
|
- config = function()
|
|
|
- require('tokyonight').setup {
|
|
|
- style = 'night'
|
|
|
- }
|
|
|
- end
|
|
|
- },
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- 'navarasu/onedark.nvim',
|
|
|
- lazy = false,
|
|
|
- priority = 0,
|
|
|
- config = function()
|
|
|
- require('onedark').setup {
|
|
|
-
|
|
|
- style = 'dark',
|
|
|
- }
|
|
|
- require('onedark').load()
|
|
|
- end,
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- 'nvim-lualine/lualine.nvim',
|
|
|
-
|
|
|
- opts = {
|
|
|
- options = {
|
|
|
- icons_enabled = true,
|
|
|
- theme = 'tokyonight',
|
|
|
- component_separators = '|',
|
|
|
- section_separators = '',
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- 'lukas-reineke/indent-blankline.nvim',
|
|
|
-
|
|
|
-
|
|
|
- main = 'ibl',
|
|
|
- opts = {
|
|
|
- indent = {
|
|
|
- char = '▏',
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- { 'numToStr/Comment.nvim', opts = {} },
|
|
|
-
|
|
|
-
|
|
|
- {
|
|
|
- 'nvim-telescope/telescope.nvim',
|
|
|
- branch = '0.1.x',
|
|
|
- dependencies = {
|
|
|
- 'nvim-lua/plenary.nvim',
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- {
|
|
|
- 'nvim-telescope/telescope-fzf-native.nvim',
|
|
|
-
|
|
|
-
|
|
|
- build = 'make',
|
|
|
- cond = function()
|
|
|
- return vim.fn.executable 'make' == 1
|
|
|
- end,
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- 'nvim-treesitter/nvim-treesitter',
|
|
|
- dependencies = {
|
|
|
- 'nvim-treesitter/nvim-treesitter-textobjects',
|
|
|
- },
|
|
|
- build = ':TSUpdate',
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- require 'kickstart.plugins.debug',
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-}, {})
|
|
|
-
|
|
|
|
|
|
-vim.keymap.set("n", "<leader>fml", "<cmd>CellularAutomaton make_it_rain<CR>")
|
|
|
+vim.keymap.set('n', '<leader>fml', '<cmd>CellularAutomaton make_it_rain<CR>')
|
|
|
|
|
|
|
|
|
|
|
@@ -376,6 +96,7 @@ vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagn
|
|
|
|
|
|
|
|
|
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
|
|
|
+
|
|
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
|
|
callback = function()
|
|
|
vim.highlight.on_yank()
|
|
@@ -395,6 +116,11 @@ require('telescope').setup {
|
|
|
},
|
|
|
},
|
|
|
},
|
|
|
+ pickers = {
|
|
|
+ find_files = {
|
|
|
+ find_command = { 'rg', '--files', '--hidden', '-g', '!.git' },
|
|
|
+ },
|
|
|
+ },
|
|
|
}
|
|
|
|
|
|
|
|
@@ -570,7 +296,7 @@ local on_attach = function(_, bufnr)
|
|
|
|
|
|
|
|
|
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
|
|
|
- nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
|
|
|
+
|
|
|
|
|
|
|
|
|
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
|
@@ -620,8 +346,18 @@ require('mason-lspconfig').setup()
|
|
|
local servers = {
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+ pyright = {},
|
|
|
+ rust_analyzer = {
|
|
|
+ ['rust-analyzer'] = {
|
|
|
+ checkOnSave = true,
|
|
|
+ check = {
|
|
|
+ enable = true,
|
|
|
+ command = 'clippy',
|
|
|
+ features = 'all',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ filetypes = { 'rust' },
|
|
|
+ },
|
|
|
|
|
|
|
|
|
|
|
@@ -660,97 +396,39 @@ mason_lspconfig.setup_handlers {
|
|
|
end,
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
-local cmp = require 'cmp'
|
|
|
-local luasnip = require 'luasnip'
|
|
|
-require('luasnip.loaders.from_vscode').lazy_load()
|
|
|
-luasnip.config.setup {}
|
|
|
-
|
|
|
-cmp.setup {
|
|
|
- snippet = {
|
|
|
- expand = function(args)
|
|
|
- luasnip.lsp_expand(args.body)
|
|
|
- end,
|
|
|
- },
|
|
|
- completion = {
|
|
|
- completeopt = 'menu,menuone,noinsert',
|
|
|
- },
|
|
|
- mapping = cmp.mapping.preset.insert {
|
|
|
- ['<C-n>'] = cmp.mapping.select_next_item(),
|
|
|
- ['<C-p>'] = cmp.mapping.select_prev_item(),
|
|
|
- ['<C-b>'] = 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,
|
|
|
- },
|
|
|
- ['<Tab>'] = cmp.mapping(function(fallback)
|
|
|
- if cmp.visible() then
|
|
|
- cmp.select_next_item()
|
|
|
- elseif luasnip.expand_or_locally_jumpable() then
|
|
|
- luasnip.expand_or_jump()
|
|
|
- else
|
|
|
- fallback()
|
|
|
- end
|
|
|
- end, { 'i', 's' }),
|
|
|
- ['<S-Tab>'] = cmp.mapping(function(fallback)
|
|
|
- if cmp.visible() then
|
|
|
- cmp.select_prev_item()
|
|
|
- elseif luasnip.locally_jumpable(-1) then
|
|
|
- luasnip.jump(-1)
|
|
|
- else
|
|
|
- fallback()
|
|
|
- end
|
|
|
- end, { 'i', 's' }),
|
|
|
- },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+local null_ls = require 'null-ls'
|
|
|
+local augroup = vim.api.nvim_create_augroup('LspFormatting', {})
|
|
|
+
|
|
|
+null_ls.setup {
|
|
|
sources = {
|
|
|
- { name = 'nvim_lsp' },
|
|
|
- { name = 'luasnip' },
|
|
|
- { name = 'path' },
|
|
|
+ null_ls.builtins.formatting.stylua,
|
|
|
+ null_ls.builtins.formatting.black,
|
|
|
+ null_ls.builtins.completion.pyright,
|
|
|
+
|
|
|
+ null_ls.builtins.formatting.markdownlint,
|
|
|
+ null_ls.builtins.formatting.prettier,
|
|
|
+ null_ls.builtins.diagnostics.eslint,
|
|
|
},
|
|
|
+ on_attach = function(client, bufnr)
|
|
|
+ if client.supports_method 'textDocument/formatting' then
|
|
|
+ vim.api.nvim_clear_autocmds { group = augroup, buffer = bufnr }
|
|
|
+ vim.api.nvim_create_autocmd('BufWritePre', {
|
|
|
+ group = augroup,
|
|
|
+ buffer = bufnr,
|
|
|
+ callback = function()
|
|
|
+ vim.lsp.buf.format()
|
|
|
+ end,
|
|
|
+ })
|
|
|
+ end
|
|
|
+ end,
|
|
|
}
|
|
|
-
|
|
|
|
|
|
-local null_ls = require("null-ls")
|
|
|
-local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
|
|
|
-
|
|
|
-null_ls.setup({
|
|
|
- sources = {
|
|
|
- null_ls.builtins.formatting.rustfmt,
|
|
|
- null_ls.builtins.formatting.markdownlint,
|
|
|
- null_ls.builtins.formatting.prettier,
|
|
|
- null_ls.builtins.diagnostics.eslint,
|
|
|
- },
|
|
|
- on_attach = function(client, bufnr)
|
|
|
- if client.supports_method("textDocument/formatting") then
|
|
|
- vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
|
|
- vim.api.nvim_create_autocmd("BufWritePre", {
|
|
|
- group = augroup,
|
|
|
- buffer = bufnr,
|
|
|
- callback = function()
|
|
|
- vim.lsp.buf.format()
|
|
|
- end,
|
|
|
- })
|
|
|
- end
|
|
|
- end,
|
|
|
-})
|
|
|
-
|
|
|
|
|
|
|