summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua6
-rw-r--r--lua/user/autocommands.lua156
-rw-r--r--lua/user/dap.lua95
-rw-r--r--lua/user/illuminate.lua11
-rw-r--r--lua/user/keymaps.lua19
-rw-r--r--lua/user/lsp/handlers.lua33
-rw-r--r--lua/user/lsp/null-ls.lua7
-rw-r--r--lua/user/nvim-tree.lua5
-rw-r--r--lua/user/nvim-webdev-icons.lua49
-rw-r--r--lua/user/plugins.lua9
10 files changed, 371 insertions, 19 deletions
diff --git a/init.lua b/init.lua
index 8a1ab1c..d74d32f 100644
--- a/init.lua
+++ b/init.lua
@@ -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'