diff options
| -rw-r--r-- | init.lua | 6 | ||||
| -rw-r--r-- | lua/user/autocommands.lua | 156 | ||||
| -rw-r--r-- | lua/user/dap.lua | 95 | ||||
| -rw-r--r-- | lua/user/illuminate.lua | 11 | ||||
| -rw-r--r-- | lua/user/keymaps.lua | 19 | ||||
| -rw-r--r-- | lua/user/lsp/handlers.lua | 33 | ||||
| -rw-r--r-- | lua/user/lsp/null-ls.lua | 7 | ||||
| -rw-r--r-- | lua/user/nvim-tree.lua | 5 | ||||
| -rw-r--r-- | lua/user/nvim-webdev-icons.lua | 49 | ||||
| -rw-r--r-- | lua/user/plugins.lua | 9 |
10 files changed, 371 insertions, 19 deletions
@@ -7,8 +7,14 @@ require "user.telescope" require "user.treesitter" require "user.autopairs" + require "user.autocommands" require "user.comment" + require "user.dap" require "user.gitsigns" + require "user.icons" + require "user.illuminate" + require "user.impatient" + require "user.nvim-webdev-icons" require "user.nvim-tree" require "user.bufferline" require "user.lualine" diff --git a/lua/user/autocommands.lua b/lua/user/autocommands.lua new file mode 100644 index 0000000..94d861b --- /dev/null +++ b/lua/user/autocommands.lua @@ -0,0 +1,156 @@ +-- vim.api.nvim_create_autocmd({ "User" }, { +-- pattern = { "AlphaReady" }, +-- callback = function() +-- vim.cmd [[ +-- set showtabline=0 | autocmd BufUnload <buffer> set showtabline=2 +-- ]] +-- end, +-- }) + +vim.api.nvim_create_autocmd({ "User" }, { + pattern = { "AlphaReady" }, + callback = function() + vim.cmd [[ + set laststatus=0 | autocmd BufUnload <buffer> set laststatus=3 + ]] + end, +}) + +vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "Jaq", "qf", "help", "man", "lspinfo", "spectre_panel", "lir", "DressingSelect", "tsplayground" }, + callback = function() + vim.cmd [[ + nnoremap <silent> <buffer> q :close<CR> + set nobuflisted + ]] + end, +}) + +vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "Jaq" }, + callback = function() + vim.cmd [[ + nnoremap <silent> <buffer> <m-r> :close<CR> + " nnoremap <silent> <buffer> <m-r> <NOP> + set nobuflisted + ]] + end, +}) + +vim.api.nvim_create_autocmd({ "BufEnter" }, { + pattern = { "" }, + callback = function() + local buf_ft = vim.bo.filetype + if buf_ft == "" or buf_ft == nil then + vim.cmd [[ + nnoremap <silent> <buffer> q :close<CR> + nnoremap <silent> <buffer> <c-j> j<CR> + nnoremap <silent> <buffer> <c-k> k<CR> + set nobuflisted + ]] + end + end, +}) + +vim.api.nvim_create_autocmd({ "BufEnter" }, { + pattern = { "term://*" }, + callback = function() + vim.cmd "startinsert!" + -- TODO: if java = 2 + vim.cmd "set cmdheight=1" + end, +}) + +vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "gitcommit", "markdown" }, + callback = function() + vim.opt_local.wrap = true + vim.opt_local.spell = true + end, +}) + +vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "lir" }, + callback = function() + vim.opt_local.number = false + vim.opt_local.relativenumber = false + end, +}) + +vim.cmd "autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif" +-- vim.api.nvim_create_autocmd({ "BufEnter" }, { +-- callback = function() +-- vim.cmd [[ +-- if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif +-- ]] +-- end, +-- }) + +vim.api.nvim_create_autocmd({ "VimResized" }, { + callback = function() + vim.cmd "tabdo wincmd =" + end, +}) + +vim.api.nvim_create_autocmd({ "CmdWinEnter" }, { + callback = function() + vim.cmd "quit" + end, +}) + +-- require("user.winbar").get_winbar() + +if vim.fn.has "nvim-0.8" == 1 then + vim.api.nvim_create_autocmd( + { "CursorMoved", "CursorHold", "BufWinEnter", "BufFilePost", "InsertEnter", "BufWritePost", "TabClosed" }, + { + callback = function() + require("user.winbar").get_winbar() + end, + } + ) +end +-- require "user.winbar" + +vim.api.nvim_create_autocmd({ "BufWinEnter" }, { + callback = function() + vim.cmd "set formatoptions-=cro" + end, +}) + +vim.api.nvim_create_autocmd({ "TextYankPost" }, { + callback = function() + vim.highlight.on_yank { higroup = "Visual", timeout = 200 } + end, +}) + +vim.api.nvim_create_autocmd({ "BufWritePost" }, { + pattern = { "*.java" }, + callback = function() + vim.lsp.codelens.refresh() + end, +}) + +vim.api.nvim_create_autocmd({ "VimEnter" }, { + callback = function() + vim.cmd "hi link illuminatedWord LspReferenceText" + end, +}) + +vim.api.nvim_create_autocmd({ "BufWinEnter" }, { + pattern = { "*" }, + callback = function() + vim.cmd "checktime" + end, +}) + +-- vim.api.nvim_create_autocmd({ "ModeChanged" }, { +-- callback = function() +-- local luasnip = require "luasnip" +-- if luasnip.expand_or_jumpable() then +-- -- ask maintainer for option to make this silent +-- -- luasnip.unlink_current() +-- vim.cmd [[silent! lua require("luasnip").unlink_current()]] +-- end +-- end, +-- }) diff --git a/lua/user/dap.lua b/lua/user/dap.lua new file mode 100644 index 0000000..b51dfd7 --- /dev/null +++ b/lua/user/dap.lua @@ -0,0 +1,95 @@ +local dap_status_ok, dap = pcall(require, "dap") +if not dap_status_ok then + return +end + +local dap_install_status_ok, dap_install = pcall(require, "dap-install") +if not dap_install_status_ok then + return +end + +local dap_ui_status_ok, dapui = pcall(require, "dapui") +if not dap_ui_status_ok then + return +end + +if not dap_install_status_ok then + return +end + +dap_install.setup({ + installation_path = vim.fn.stdpath('data') .. "/dapinstall/", +}) + +dap_install.config("python", {}) + +-- dapui.setup() +dapui.setup({ + icons = { expanded = "▾", collapsed = "▸" }, + mappings = { + -- Use a table to apply multiple mappings + expand = { "<CR>", "<2-LeftMouse>" }, + open = "o", + remove = "d", + edit = "e", + repl = "r", + toggle = "t", + }, + -- Expand lines larger than the window + -- Requires >= 0.7 + expand_lines = vim.fn.has("nvim-0.7"), + -- Layouts define sections of the screen to place windows. + -- The position can be "left", "right", "top" or "bottom". + -- The size specifies the height/width depending on position. It can be an Int + -- or a Float. Integer specifies height/width directly (i.e. 20 lines/columns) while + -- Float value specifies percentage (i.e. 0.3 - 30% of available lines/columns) + -- Elements are the elements shown in the layout (in order). + -- Layouts are opened in order so that earlier layouts take priority in window sizing. + layouts = { + { + elements = { + -- Elements can be strings or table with id and size keys. + { id = "scopes", size = 0.25 }, + "breakpoints", + -- "stacks", + -- "watches", + }, + size = 40, -- 40 columns + position = "right", + }, + { + elements = { + "repl", + "console", + }, + size = 0.25, -- 25% of total lines + position = "bottom", + }, + }, + floating = { + max_height = nil, -- These can be integers or a float between 0 and 1. + max_width = nil, -- Floats will be treated as percentage of your screen. + border = "single", -- Border style. Can be "single", "double" or "rounded" + mappings = { + close = { "q", "<Esc>" }, + }, + }, + windows = { indent = 1 }, + render = { + max_type_length = nil, -- Can be integer or nil. + } +}) + +local icons = require "user.icons" + +vim.fn.sign_define('DapBreakpoint', {text="", texthl='DiagnosticSignError', linehl='', numhl=''}) + +dap.listeners.after.event_initialized["dapui_config"] = function() + dapui.open() +end +dap.listeners.before.event_terminated["dapui_config"] = function() + dapui.close() +end +dap.listeners.before.event_exited["dapui_config"] = function() + dapui.close() +end diff --git a/lua/user/illuminate.lua b/lua/user/illuminate.lua new file mode 100644 index 0000000..dfe3415 --- /dev/null +++ b/lua/user/illuminate.lua @@ -0,0 +1,11 @@ +-- vim.g.Illuminate_delay = 0 +-- vim.g.Illuminate_highlightUnderCursor = 0 +vim.g.Illuminate_ftblacklist = { "alpha", "NvimTree", "DressingSelect", "harpoon" } +-- vim.g.Illuminate_highlightUnderCursor = 0 +vim.api.nvim_set_keymap("n", "<a-n>", '<cmd>lua require"illuminate".next_reference{wrap=true}<cr>', { noremap = true }) +vim.api.nvim_set_keymap( + "n", + "<a-p>", + '<cmd>lua require"illuminate".next_reference{reverse=true,wrap=true}<cr>', + { noremap = true } +) diff --git a/lua/user/keymaps.lua b/lua/user/keymaps.lua index 9909142..af377f5 100644 --- a/lua/user/keymaps.lua +++ b/lua/user/keymaps.lua @@ -66,9 +66,10 @@ keymap("t", "<C-l>", "<C-\\><C-N><C-w>l", term_opts) -- Nvimtree keymap("n", "<leader>e", ":NvimTreeToggle<cr>", opts) keymap("n", "<leader>v", ":edit $MYVIMRC<cr>", opts) -keymap("n", "<leader>f", ":Format<cr>", opts) -keymap("n", "<leader>f", "<cmd>lua require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ previewer = false }))<cr>", opts) -keymap("n", "<c-t>", "<cmd>Telescope live_grep<cr>", opts) +-- keymap("n", "<leader>ff", "<cmd>lua require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ previewer = false }))<cr>", opts) +keymap("n", "<leader>ff", ":Telescope find_files(require('telescope.themes').get_dropdown({ previewer = false }))<cr>", opts) +keymap("n", "<leader>ft", ":Telescope live_grep<cr>", opts) +keymap("n", "<leader>fb", ":Telescope buffers<cr>", opts) -- Magma keymap("n", "<localleader>r", "nvim_exec('MagmaEvalutateOperator',v:true)", opts) @@ -77,3 +78,15 @@ keymap("x", "<localleader>r", ":<C-u>MagmaEvalutateVisual<cr>", opts) keymap("n", "<localleader>rc", ":MagmaReevalutateCell<cr>", opts) keymap("n", "<localleader>rd", ":MagmaDelete<cr>", opts) keymap("n", "<localleader>ro", ":MagmaShowOutput<cr>", opts) + +-- LSP -- +keymap("n", "<leader>la", "<cmd>lua vim.lsp.buf.code_action()<cr>", opts) +keymap("n", "<leader>ld", "<cmd>Telescope lsp_document_diagnostics<cr>", opts) +keymap("n", "<leader>lf", "<cmd>lua vim.lsp.buf.formatting()<cr>", opts) +keymap("n", "<leader>lF", "<cmd>LspToggleAutoFormat<cr>", opts) +keymap("n", "<leader>li", "<cmd>LspInfo<cr>", opts) +keymap("n", "<leader>lI", "<cmd>LspInstallInfo<cr>", opts) +keymap("n", "<leader>lw", "<cmd>Telescope lsp_workspace_diagnostics<cr>", opts) +keymap("n", "<leader>lj", "<cmd>lua vim.lsp.diagnostic.goto_next()<cr>", opts) +keymap("n", "<leader>lk", "<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>", opts) +keymap("n", "<leader>lr", "<cmd>lua vim.lsp.buf.rename()<cr>", opts) diff --git a/lua/user/lsp/handlers.lua b/lua/user/lsp/handlers.lua index 5792a74..fc5d7d3 100644 --- a/lua/user/lsp/handlers.lua +++ b/lua/user/lsp/handlers.lua @@ -45,19 +45,25 @@ M.setup = function() end local function lsp_highlight_document(client) - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec( - [[ - augroup lsp_document_highlight - autocmd! * <buffer> - autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() - autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() - augroup END - ]], - false - ) + -- if client.server_capabilities.document_highlight then + local status_ok, illuminate = pcall(require, "illuminate") + if not status_ok then + return end + illuminate.on_attach(client) + -- -- Set autocommands conditional on server_capabilities + -- if client.resolved_capabilities.document_highlight then + -- vim.api.nvim_exec( + -- [[ + -- augroup lsp_document_highlight + -- autocmd! * <buffer> + -- autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() + -- autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() + -- augroup END + -- ]], + -- false + -- ) + -- end end local function lsp_keymaps(bufnr) @@ -80,6 +86,9 @@ local function lsp_keymaps(bufnr) end M.on_attach = function(client, bufnr) + if client.name == "sumneko_lua" then + client.resolved_capabilities.document_formatting = false + end if client.name == "tsserver" then client.resolved_capabilities.document_formatting = false end diff --git a/lua/user/lsp/null-ls.lua b/lua/user/lsp/null-ls.lua index cb02d76..731644e 100644 --- a/lua/user/lsp/null-ls.lua +++ b/lua/user/lsp/null-ls.lua @@ -1,11 +1,14 @@ local null_ls_status_ok, null_ls = pcall(require, "null-ls") +if not null_ls_status_ok then + return +end -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting local formatting = null_ls.builtins.formatting -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics local diagnostics = null_ls.builtins.diagnostics -null_ls.setup({ +null_ls.setup{ debug = false, sources = { formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }), @@ -13,4 +16,4 @@ null_ls.setup({ formatting.stylua, diagnostics.flake8 }, -}) +} diff --git a/lua/user/nvim-tree.lua b/lua/user/nvim-tree.lua index e88a027..de10411 100644 --- a/lua/user/nvim-tree.lua +++ b/lua/user/nvim-tree.lua @@ -25,7 +25,8 @@ nvim_tree.setup { open_on_tab = false, hijack_cursor = false, update_cwd = true, - update_to_buf_dir = { + -- update_to_buf_dir = { + hijack_directories = { enable = true, auto_open = true, }, @@ -85,7 +86,7 @@ nvim_tree.setup { height = 30, hide_root_folder = false, side = "left", - auto_resize = true, + -- auto_resize = true, mappings = { custom_only = false, list = { diff --git a/lua/user/nvim-webdev-icons.lua b/lua/user/nvim-webdev-icons.lua new file mode 100644 index 0000000..85cd308 --- /dev/null +++ b/lua/user/nvim-webdev-icons.lua @@ -0,0 +1,49 @@ +local status_ok, nvim_web_devicons = pcall(require, "nvim-web-devicons") +if not status_ok then + return +end + +nvim_web_devicons.set_icon { + sh = { + icon = "", + color = "#1DC123", + cterm_color = "59", + name = "Sh", + }, + [".gitattributes"] = { + icon = "", + color = "#e24329", + cterm_color = "59", + name = "GitAttributes", + }, + [".gitconfig"] = { + icon = "", + color = "#e24329", + cterm_color = "59", + name = "GitConfig", + }, + [".gitignore"] = { + icon = "", + color = "#e24329", + cterm_color = "59", + name = "GitIgnore", + }, + [".gitlab-ci.yml"] = { + icon = "", + color = "#e24329", + cterm_color = "166", + name = "GitlabCI", + }, + [".gitmodules"] = { + icon = "", + color = "#e24329", + cterm_color = "59", + name = "GitModules", + }, + ["diff"] = { + icon = "", + color = "#e24329", + cterm_color = "59", + name = "Diff", + }, +} diff --git a/lua/user/plugins.lua b/lua/user/plugins.lua index c276e03..40adaaf 100644 --- a/lua/user/plugins.lua +++ b/lua/user/plugins.lua @@ -84,6 +84,7 @@ return packer.startup(function(use) use "tamago324/nlsp-settings.nvim" -- language server settings defined in json for use "neovim/nvim-lspconfig" -- enable LSP use "williamboman/nvim-lsp-installer" -- simple to use language server installer + use "RRethy/vim-illuminate" -- Telescope use "nvim-telescope/telescope.nvim" @@ -95,12 +96,20 @@ return packer.startup(function(use) run = ":TSUpdate", } use "JoosepAlviste/nvim-ts-context-commentstring" + use "windwp/nvim-ts-autotag" + use "romgrk/nvim-treesitter-context" -- Git use "lewis6991/gitsigns.nvim" use "p00f/nvim-ts-rainbow" use "nvim-treesitter/playground" + -- DAP + use "mfussenegger/nvim-dap" + use "mfussenegger/nvim-dap-python" + use "rcarriga/nvim-dap-ui" + use "Pocco81/DAPInstall.nvim" + -- Jupyter interaction use 'hkupty/iron.nvim' use 'kana/vim-textobj-user' |
