From 6a0cd1c30041a63a8bd30ef78bea5f4243dcf9dc Mon Sep 17 00:00:00 2001 From: davidpkj Date: Sat, 25 Feb 2023 17:50:19 +0100 Subject: Update neovim, fancy language input, lsp --- neovim/.config/nvim/init.lua | 6 --- neovim/.config/nvim/lua/autocmd.lua | 24 ++++++++- neovim/.config/nvim/lua/keybinds.lua | 9 +++- neovim/.config/nvim/lua/plugins.lua | 10 +++- neovim/.config/nvim/lua/plugins/autopairs.lua | 0 neovim/.config/nvim/lua/plugins/cmp.lua | 2 +- neovim/.config/nvim/lua/plugins/gitsigns.lua | 10 ++-- neovim/.config/nvim/lua/plugins/lsp.lua | 43 ++++++++++----- neovim/.config/nvim/lua/plugins/lualine.lua | 2 +- neovim/.config/nvim/lua/plugins/pairs.lua | 1 + neovim/.config/nvim/lua/plugins/rust-tools.lua | 4 ++ neovim/.config/nvim/lua/plugins/telescope.lua | 12 +---- neovim/.config/nvim/lua/plugins/todocomments.lua | 66 ++++++++++++++++++++++++ neovim/.config/nvim/lua/plugins/treesitter.lua | 1 + neovim/.config/nvim/plugin/packer_compiled.lua | 25 +++++++-- 15 files changed, 172 insertions(+), 43 deletions(-) create mode 100644 neovim/.config/nvim/lua/plugins/autopairs.lua create mode 100644 neovim/.config/nvim/lua/plugins/todocomments.lua diff --git a/neovim/.config/nvim/init.lua b/neovim/.config/nvim/init.lua index ccad37a..27d1417 100644 --- a/neovim/.config/nvim/init.lua +++ b/neovim/.config/nvim/init.lua @@ -3,12 +3,6 @@ require("keybinds") require("autocmd") require("plugins") --- https://sharksforarms.dev/posts/neovim-rust/ --- https://ka.codes/posts/nvim-lspinstall --- https://rsdlt.github.io/posts/rust-nvim-ide-guide-walkthrough-development-debug/#why-neovim-for-rust-development - --- 1. italic error signs -> probably st - -- Pretty print lua table function _G.dump(...) local objects = vim.tbl_map(vim.inspect, { ... }) diff --git a/neovim/.config/nvim/lua/autocmd.lua b/neovim/.config/nvim/lua/autocmd.lua index 603e6b4..3854532 100644 --- a/neovim/.config/nvim/lua/autocmd.lua +++ b/neovim/.config/nvim/lua/autocmd.lua @@ -13,7 +13,7 @@ vim.filetype.add({ local cmd = vim.api.nvim_create_autocmd -- Go to last location when opening buffer -cmd("BufReadPost", { +cmd("BufReadPost", { command = [[ if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g`\"" | endif ]] }) @@ -23,3 +23,25 @@ cmd("TextYankPost", { callback = function() vim.highlight.on_yank({ higroup = "Visual" }) end, }) +--[[ vim.api.nvim_create_autocmd( + {"TextChangedI", "TextChangedP"}, + { + callback = function() + local line = vim.api.nvim_get_current_line() + local cursor = vim.api.nvim_win_get_cursor(0)[2] + + local current = string.sub(line, cursor, cursor + 1) + if current == "." or current == "," or current == " " then + require('cmp').close() + end + + local before_line = string.sub(line, 1, cursor + 1) + local after_line = string.sub(line, cursor + 1, -1) + if not string.match(before_line, '^%s+$') then + if after_line == "" or string.match(before_line, " $") or string.match(before_line, "%.$") then + require('cmp').complete() + end + end + end, + pattern = "*" +}) ]] diff --git a/neovim/.config/nvim/lua/keybinds.lua b/neovim/.config/nvim/lua/keybinds.lua index 56834b2..d113573 100644 --- a/neovim/.config/nvim/lua/keybinds.lua +++ b/neovim/.config/nvim/lua/keybinds.lua @@ -10,7 +10,7 @@ map("n", "n", "nzz") map("n", "N", "Nzz") -- Move line up and down in NORMAL and VISUAL modes -map("n", "", "move .+1") +map("n", "", "move .+1") map("n", "", "move .-2") map("x", "", ":move '>+1gv=gv") map("x", "", ":move '<-2gv=gv") @@ -29,6 +29,13 @@ map("n", "", ":!compile %") -- Move to last buffer -- map("n", """", "b#") +-- Plugin +map("n", "", "TodoTelescope") + +-- Hacky update thing +-- TODO: Fix timing +map("n", "u", "PackerSyncPackerCompileTSUpdateMason") + exp = {} exp.map = map diff --git a/neovim/.config/nvim/lua/plugins.lua b/neovim/.config/nvim/lua/plugins.lua index 5b28fbb..d5de0b0 100644 --- a/neovim/.config/nvim/lua/plugins.lua +++ b/neovim/.config/nvim/lua/plugins.lua @@ -9,7 +9,9 @@ return require("packer").startup(function(use) use("wbthomason/packer.nvim") use("nvim-lua/plenary.nvim") - -- Color theme + use 'h-hg/fcitx.nvim' + + -- Color theme use({ "catppuccin/nvim", as = "catppuccin-theme", @@ -57,6 +59,12 @@ return require("packer").startup(function(use) }, }) + use({ + "folke/todo-comments.nvim", + requires = "nvim-lua/plenary.nvim", + config = function() require("plugins.todocomments") end, + }) + -- Git features use({ "lewis6991/gitsigns.nvim", diff --git a/neovim/.config/nvim/lua/plugins/autopairs.lua b/neovim/.config/nvim/lua/plugins/autopairs.lua new file mode 100644 index 0000000..e69de29 diff --git a/neovim/.config/nvim/lua/plugins/cmp.lua b/neovim/.config/nvim/lua/plugins/cmp.lua index 18d8fe6..09a0381 100644 --- a/neovim/.config/nvim/lua/plugins/cmp.lua +++ b/neovim/.config/nvim/lua/plugins/cmp.lua @@ -1,5 +1,5 @@ -- https://github.com/hrsh7th/nvim-cmp#basic-configuration -local cmp = require('cmp') +local cmp = require("cmp") cmp.setup({ snippet = { diff --git a/neovim/.config/nvim/lua/plugins/gitsigns.lua b/neovim/.config/nvim/lua/plugins/gitsigns.lua index 61f6238..5663e64 100644 --- a/neovim/.config/nvim/lua/plugins/gitsigns.lua +++ b/neovim/.config/nvim/lua/plugins/gitsigns.lua @@ -2,10 +2,12 @@ local map = vim.keymap.set require("gitsigns").setup({ signs = { - add = { text = "+" }, - delete = { text = "-" }, - change = { text = "~" }, - changedelete = { text = "⋍" }, + add = { hl = 'GitSignsAdd' , text = '│', numhl='GitSignsAddNr' , linehl='GitSignsAddLn' }, + untracked = { hl = 'GitSignsAdd' , text = '│', numhl='GitSignsAddNr' , linehl='GitSignsAddLn' }, + change = { hl = 'GitSignsChange', text = '│', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn' }, + changedelete = { hl = 'GitSignsChange', text = '│', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn' }, + delete = { hl = 'GitSignsDelete', text = '▁', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn' }, + topdelete = { hl = 'GitSignsDelete', text = '▔', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn' }, }, on_attach = function(buf) local gs = package.loaded.gitsigns diff --git a/neovim/.config/nvim/lua/plugins/lsp.lua b/neovim/.config/nvim/lua/plugins/lsp.lua index db73c10..703fa7c 100644 --- a/neovim/.config/nvim/lua/plugins/lsp.lua +++ b/neovim/.config/nvim/lua/plugins/lsp.lua @@ -1,4 +1,26 @@ -require("lspconfig") +local lspconf = require("lspconfig") + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true + +lspconf.html.setup { + capabilities = capabilities, +} + +lspconf.cssls.setup({ + capabilities = capabilities, +}) + +lspconf.emmet_ls.setup({}) +lspconf.tsserver.setup({ + capabilities = capabilities, + on_attach = function() end, +}) + +lspconf.eslint.setup({ + capabilities = capabilities, + on_attach = function() end, +}) local sign = function(opts) vim.fn.sign_define(opts.name, { @@ -8,10 +30,10 @@ local sign = function(opts) }) end -sign({name = 'DiagnosticSignError', text = ''}) -sign({name = 'DiagnosticSignWarn', text = ''}) -sign({name = 'DiagnosticSignHint', text = ''}) -sign({name = 'DiagnosticSignInfo', text = ''}) +sign({name = 'DiagnosticSignError', text = ''}) +sign({name = 'DiagnosticSignWarn', text = ''}) +sign({name = 'DiagnosticSignInfo', text = ''}) +sign({name = 'DiagnosticSignHint', text = ''}) vim.diagnostic.config({ signs = true, @@ -31,7 +53,10 @@ require("keybinds") map("n", "", "lua vim.lsp.buf.rename()") map("n", "", "lua vim.diagnostic.open_float()") ---[[ +map("n", "dn", "lua vim.diagnostic.goto_next()") +map("n", "dp", "lua vim.diagnostic.goto_prev()") + +--[[ nnoremap lua vim.lsp.buf.definition() nnoremap K lua vim.lsp.buf.hover() nnoremap gD lua vim.lsp.buf.implementation() @@ -69,11 +94,5 @@ bufmap('x', '', 'lua vim.lsp.buf.range_code_action()') -- Show diagnostics in a floating window bufmap('n', 'gl', 'lua vim.diagnostic.open_float()') - --- Move to the previous diagnostic -bufmap('n', '[d', 'lua vim.diagnostic.goto_prev()') - --- Move to the next diagnostic -bufmap('n', ']d', 'lua vim.diagnostic.goto_next()') ]] diff --git a/neovim/.config/nvim/lua/plugins/lualine.lua b/neovim/.config/nvim/lua/plugins/lualine.lua index 353e691..46ad4f0 100644 --- a/neovim/.config/nvim/lua/plugins/lualine.lua +++ b/neovim/.config/nvim/lua/plugins/lualine.lua @@ -3,7 +3,7 @@ require("lualine").setup({ theme = "catppuccin", component_separators = { left = "»", right = "«" }, section_separators = "", - icons_enabled = true, + icons_enabled = false, globalstatus = true, }, sections = { diff --git a/neovim/.config/nvim/lua/plugins/pairs.lua b/neovim/.config/nvim/lua/plugins/pairs.lua index ed0e692..cdaa868 100644 --- a/neovim/.config/nvim/lua/plugins/pairs.lua +++ b/neovim/.config/nvim/lua/plugins/pairs.lua @@ -1,2 +1,3 @@ require("nvim-autopairs").setup() require("cmp").event:on("confirm_done", require("nvim-autopairs.completion.cmp").on_confirm_done()) + diff --git a/neovim/.config/nvim/lua/plugins/rust-tools.lua b/neovim/.config/nvim/lua/plugins/rust-tools.lua index c8442aa..68e882c 100644 --- a/neovim/.config/nvim/lua/plugins/rust-tools.lua +++ b/neovim/.config/nvim/lua/plugins/rust-tools.lua @@ -1,3 +1,7 @@ +local on_attach = function() + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') +end + require("rust-tools").setup({ tools = { autoSetHints = true, diff --git a/neovim/.config/nvim/lua/plugins/telescope.lua b/neovim/.config/nvim/lua/plugins/telescope.lua index 01dcb2f..6d3be34 100644 --- a/neovim/.config/nvim/lua/plugins/telescope.lua +++ b/neovim/.config/nvim/lua/plugins/telescope.lua @@ -1,18 +1,9 @@ local actions = require("telescope.actions") local finders = require("telescope.builtin") -local action_mt = require "telescope.actions.mt" -local action_state = require "telescope.actions.state" --- global for later inspection -custom_actions = action_mt.transform_mod({ - print_entry = function() - print(vim.inspect(action_state.get_selected_entry())) - end, -}) - require("telescope").setup({ defaults = { - prompt_prefix = " ", + prompt_prefix = "> ", initial_mode = "insert", sorting_strategy = "ascending", layout_config = { @@ -20,7 +11,6 @@ require("telescope").setup({ }, mappings = { i = { - [""] = custom_actions['print_entry'], [""] = actions.close, [""] = actions.move_selection_next, [""] = actions.move_selection_previous, diff --git a/neovim/.config/nvim/lua/plugins/todocomments.lua b/neovim/.config/nvim/lua/plugins/todocomments.lua new file mode 100644 index 0000000..a0c75a3 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/todocomments.lua @@ -0,0 +1,66 @@ +local todocomments = require("todo-comments") + +todocomments.setup({ + signs = true, -- show icons in the signs column + sign_priority = 8, -- sign priority + -- keywords recognized as todo comments + keywords = { + FIX = { + icon = " ", -- icon used for the sign, and in search results + color = "error", -- can be a hex color, or a named color (see below) + alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords + signs = false, -- configure signs for some keywords individually + }, + TODO = { icon = " ", color = "info", signs = false }, + HACK = { icon = " ", color = "warning", signs = false }, + WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" }, signs = false }, + PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" }, signs = false }, + NOTE = { icon = " ", color = "hint", alt = { "INFO" }, signs = false }, + TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" }, signs = false }, + }, + gui_style = { + fg = "NONE", -- The gui style to use for the fg highlight group. + bg = "BOLD", -- The gui style to use for the bg highlight group. + }, + merge_keywords = true, -- when true, custom keywords will be merged with the defaults + -- highlighting of the line containing the todo comment + -- * before: highlights before the keyword (typically comment characters) + -- * keyword: highlights of the keyword + -- * after: highlights after the keyword (todo text) + highlight = { + multiline = true, -- enable multine todo comments + multiline_pattern = "^.", -- lua pattern to match the next multiline from the start of the matched keyword + multiline_context = 10, -- extra lines that will be re-evaluated when changing a line + before = "", -- "fg" or "bg" or empty + keyword = "wide", -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg) + after = "fg", -- "fg" or "bg" or empty + pattern = [[.*<(KEYWORDS)\s*:]], -- pattern or table of patterns, used for highlightng (vim regex) + comments_only = true, -- uses treesitter to match keywords in comments only + max_line_len = 400, -- ignore lines longer than this + exclude = {}, -- list of file types to exclude highlighting + }, + -- list of named colors where we try to extract the guifg from the + -- list of highlight groups or use the hex color if hl not found as a fallback + colors = { + error = { "DiagnosticError", "ErrorMsg", "#DC2626" }, + warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" }, + info = { "DiagnosticInfo", "#2563EB" }, + hint = { "DiagnosticHint", "#10B981" }, + default = { "Identifier", "#7C3AED" }, + test = { "Identifier", "#FF00FF" } + }, + search = { + command = "rg", + args = { + "--color=never", + "--no-heading", + "--with-filename", + "--line-number", + "--column", + }, + -- regex that will be used to match keywords. + -- don't replace the (KEYWORDS) placeholder + pattern = [[\b(KEYWORDS):]], -- ripgrep regex + -- pattern = [[\b(KEYWORDS)\b]], -- match without the extra colon. You'll likely get false positives + }, +}) diff --git a/neovim/.config/nvim/lua/plugins/treesitter.lua b/neovim/.config/nvim/lua/plugins/treesitter.lua index e3d8fbb..f05cca9 100644 --- a/neovim/.config/nvim/lua/plugins/treesitter.lua +++ b/neovim/.config/nvim/lua/plugins/treesitter.lua @@ -8,6 +8,7 @@ require("nvim-treesitter.configs").setup({ auto_install = true, ensure_installed = { "c", + "cpp", "lua", "rust", "go", diff --git a/neovim/.config/nvim/plugin/packer_compiled.lua b/neovim/.config/nvim/plugin/packer_compiled.lua index a561012..1d6578d 100644 --- a/neovim/.config/nvim/plugin/packer_compiled.lua +++ b/neovim/.config/nvim/plugin/packer_compiled.lua @@ -120,6 +120,11 @@ _G.packer_plugins = { path = "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-vsnip", url = "https://github.com/hrsh7th/cmp-vsnip" }, + ["fcitx.nvim"] = { + loaded = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/fcitx.nvim", + url = "https://github.com/h-hg/fcitx.nvim" + }, ["fidget.nvim"] = { config = { "\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19plugins.fidget\frequire\0" }, load_after = { @@ -173,7 +178,7 @@ _G.packer_plugins = { url = "https://github.com/windwp/nvim-autopairs" }, ["nvim-cmp"] = { - after = { "cmp-vsnip", "cmp-buffer", "nvim-autopairs", "cmp-nvim-lsp", "rust-tools.nvim", "vim-vsnip", "cmp-path" }, + after = { "cmp-nvim-lsp", "cmp-path", "cmp-vsnip", "nvim-autopairs", "vim-vsnip", "rust-tools.nvim", "cmp-buffer" }, config = { "\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16plugins.cmp\frequire\0" }, loaded = true, only_config = true, @@ -189,7 +194,7 @@ _G.packer_plugins = { url = "https://github.com/neovim/nvim-lspconfig" }, ["nvim-treesitter"] = { - after = { "nvim-treesitter-textobjects", "playground", "nvim-treesitter-refactor" }, + after = { "playground", "nvim-treesitter-textobjects", "nvim-treesitter-refactor" }, config = { "\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23plugins.treesitter\frequire\0" }, loaded = false, needs_bufread = false, @@ -258,6 +263,12 @@ _G.packer_plugins = { path = "/home/me/.local/share/nvim/site/pack/packer/start/telescope.nvim", url = "https://github.com/nvim-telescope/telescope.nvim" }, + ["todo-comments.nvim"] = { + config = { "\27LJ\2\n4\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\25plugins.todocomments\frequire\0" }, + loaded = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/todo-comments.nvim", + url = "https://github.com/folke/todo-comments.nvim" + }, ["vim-vsnip"] = { load_after = {}, loaded = true, @@ -280,6 +291,10 @@ time([[Config for catppuccin-theme]], false) time([[Config for nvim-cmp]], true) try_loadstring("\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16plugins.cmp\frequire\0", "config", "nvim-cmp") time([[Config for nvim-cmp]], false) +-- Config for: todo-comments.nvim +time([[Config for todo-comments.nvim]], true) +try_loadstring("\27LJ\2\n4\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\25plugins.todocomments\frequire\0", "config", "todo-comments.nvim") +time([[Config for todo-comments.nvim]], false) -- Config for: telescope.nvim time([[Config for telescope.nvim]], true) try_loadstring("\27LJ\2\n1\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\22plugins.telescope\frequire\0", "config", "telescope.nvim") @@ -297,15 +312,15 @@ vim.cmd [[ packadd telescope-fzf-native.nvim ]] -- Config for: telescope-fzf-native.nvim try_loadstring("\27LJ\2\nH\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0'\2\3\0B\0\2\1K\0\1\0\bfzf\19load_extension\14telescope\frequire\0", "config", "telescope-fzf-native.nvim") +vim.cmd [[ packadd cmp-buffer ]] vim.cmd [[ packadd cmp-path ]] -vim.cmd [[ packadd vim-vsnip ]] vim.cmd [[ packadd rust-tools.nvim ]] -- Config for: rust-tools.nvim try_loadstring("\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23plugins.rust-tools\frequire\0", "config", "rust-tools.nvim") +vim.cmd [[ packadd vim-vsnip ]] vim.cmd [[ packadd cmp-nvim-lsp ]] -vim.cmd [[ packadd cmp-buffer ]] vim.cmd [[ packadd cmp-vsnip ]] time([[Sequenced loading]], false) vim.cmd [[augroup packer_load_aucmds]] @@ -313,7 +328,7 @@ vim.cmd [[au!]] -- Event lazy-loads time([[Defining lazy-load event autocommands]], true) vim.cmd [[au InsertCharPre * ++once lua require("packer.load")({'nvim-autopairs'}, { event = "InsertCharPre *" }, _G.packer_plugins)]] -vim.cmd [[au BufEnter * ++once lua require("packer.load")({'gitsigns.nvim', 'Comment.nvim', 'lualine.nvim', 'nvim-treesitter'}, { event = "BufEnter *" }, _G.packer_plugins)]] +vim.cmd [[au BufEnter * ++once lua require("packer.load")({'Comment.nvim', 'lualine.nvim', 'nvim-treesitter', 'gitsigns.nvim'}, { event = "BufEnter *" }, _G.packer_plugins)]] time([[Defining lazy-load event autocommands]], false) vim.cmd("augroup END") -- cgit v1.2.3