From c9b2f0436942bc0614b00dd9dedcee591a20892c Mon Sep 17 00:00:00 2001 From: Henrik Bakken Date: Mon, 13 Dec 2021 12:20:52 +0100 Subject: [PATCH] nvim config autoformat --- nvim/init.lua | 1269 ++++++++++++++++++++++++------------------------- 1 file changed, 619 insertions(+), 650 deletions(-) diff --git a/nvim/init.lua b/nvim/init.lua index 1883670..10900fe 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -54,8 +54,8 @@ opt.smartcase = true -- Do not ignore case with capitals opt.wildmode = {"full"} -- Command-line completion mode opt.wildignorecase = true opt.wildignore = opt.wildignore + { - "*swp", "*.class", "*.pyc", "*.png", "*.jpg", "*.gif", "*.zip", "*/tmp/*", - "*.o", ".obj", "*.so" + "*swp", "*.class", "*.pyc", "*.png", "*.jpg", "*.gif", "*.zip", "*/tmp/*", + "*.o", ".obj", "*.so" } -- cursor @@ -168,669 +168,638 @@ local install_path = vim.fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" if vim.fn.empty(vim.fn.glob(install_path)) > 0 then - vim.fn.system({ - "git", "clone", "https://github.com/wbthomason/packer.nvim", - install_path - }) - vim.api.nvim_command "packadd packer.nvim" + vim.fn.system({ + "git", "clone", "https://github.com/wbthomason/packer.nvim", install_path + }) + vim.api.nvim_command "packadd packer.nvim" end require("packer").startup { - function(use) - use {"wbthomason/packer.nvim"} + function(use) + use {"wbthomason/packer.nvim"} - -- tpope - use {"tpope/vim-sensible"} -- sensible default - use {"tpope/vim-commentary"} -- comment out stuff - use {"tpope/vim-surround"} - use {"tpope/vim-repeat"} -- repeat vim-surround with . - use {"tpope/vim-eunuch"} -- Move, Rename etc - use {"farmergreg/vim-lastplace"} -- keep location upon reopening + -- tpope + use {"tpope/vim-sensible"} -- sensible default + use {"tpope/vim-commentary"} -- comment out stuff + use {"tpope/vim-surround"} + use {"tpope/vim-repeat"} -- repeat vim-surround with . + use {"tpope/vim-eunuch"} -- Move, Rename etc + use {"farmergreg/vim-lastplace"} -- keep location upon reopening - -- smooth scrolling - -- use {"psliwka/vim-smoothie"} + -- smooth scrolling + -- use {"psliwka/vim-smoothie"} - -- tables - use {"dhruvasagar/vim-table-mode"} + -- tables + use {"dhruvasagar/vim-table-mode"} - -- git - use { - "tpope/vim-fugitive", - config = function() - local map = vim.api.nvim_set_keymap - map("", "", ":vertical Git:vertical resize 60", {}) - map("", "gg", ":vertical Gclog!", {}) - map("", "gc", ":vertical 0Gclog!", {}) - end - } + -- git + use { + "tpope/vim-fugitive", + config = function() + local map = vim.api.nvim_set_keymap + map("", "", ":vertical Git:vertical resize 60", {}) + map("", "gg", ":vertical Gclog!", {}) + map("", "gc", ":vertical 0Gclog!", {}) + end + } - use { - "lewis6991/gitsigns.nvim", - requires = {"nvim-lua/plenary.nvim"}, - config = function() - require("gitsigns").setup { - numhl = false, - linehl = false, - keymaps = { - -- Default keymap options - noremap = true, - buffer = true, + use { + "lewis6991/gitsigns.nvim", + requires = {"nvim-lua/plenary.nvim"}, + config = function() + require("gitsigns").setup { + numhl = false, + linehl = false, + keymaps = { + -- Default keymap options + noremap = true, + buffer = true, - ["n "] = { - expr = true, - [[&diff ? "]c" : "lua require('gitsigns.actions').next_hunk()"]] - }, - ["n "] = { - expr = true, - [[&diff ? "[c" : "lua require('gitsigns.actions').prev_hunk()"]] - }, - - ["n gs"] = [[lua require("gitsigns").stage_hunk()]], - ["v gs"] = [[lua require("gitsigns").stage_hunk({vim.fn.line("."), vim.fn.line("v")})]], - ["n gu"] = [[lua require("gitsigns").undo_stage_hunk()]], - ["n gx"] = [[lua require("gitsigns").reset_hunk()]], - ["v gx"] = [[lua require("gitsigns").reset_hunk({vim.fn.line("."), vim.fn.line("v")})]], - ["n gi"] = [[lua require("gitsigns").preview_hunk()]], - ["n gb"] = [[lua require("gitsigns").blame_line(true)]], - - -- Text objects - ["o ih"] = [[:lua require("gitsigns.actions").select_hunk()]], - ["x ih"] = [[:lua require("gitsigns.actions").select_hunk()]] - }, - word_diff = false - } - end - } - - -- folder tree - use { - "kyazdani42/nvim-tree.lua", - requires = {"kyazdani42/nvim-web-devicons"}, - config = function() - require("nvim-tree").setup { - disable_netrw = false, - auto_close = true - } - local map = vim.api.nvim_set_keymap - map("n", "", ":NvimTreeToggle", {noremap = true}) - end - } - - -- theme - use { - "folke/tokyonight.nvim", - config = function() vim.g.tokyonight_style = "night" end - } - - use {"sonph/onehalf", rtp = "vim"} - use {"tomasr/molokai"} - use {"morhetz/gruvbox"} - use {"jnurmine/Zenburn"} - use {"nanotech/jellybeans.vim"} - use {"mhartington/oceanic-next"} - use {"NLKNguyen/papercolor-theme"} - use {"drewtempelmeyer/palenight.vim"} - use {"altercation/vim-colors-solarized"} - use { - "rakr/vim-one", - config = function() vim.g.one_allow_italics = 1 end - } - - use { - "ayu-theme/ayu-vim", - config = function() - -- vim.g.ayucolor = "light" - -- vim.g.ayucolor = "mirage" - vim.g.ayucolor = "dark" - end - } - - use { - "skbolton/embark", - config = function() vim.g.embark_terminal_italics = 1 end - } - - use {"arcticicestudio/nord-vim", config = function() end} - - use { - "junegunn/seoul256.vim", - config = function() vim.g.seoul256_background = 235 end - } - vim.cmd "colorscheme nord" - - -- coloring of colornames - use { - "rrethy/vim-hexokinase", - run = "cd /home/hjalmarlucius/.local/share/nvim/site/pack/packer/start/vim-hexokinase && make hexokinase", - config = function() - vim.g.Hexokinase_highlighters = {"backgroundfull"} - end - } - - -- edgedb syntax highlighting - use {"edgedb/edgedb-vim"} - - -- flashing cursor on move - use { - "danilamihailov/beacon.nvim", - setup = function() - vim.api.nvim_exec([[highlight Beacon guibg=white ctermbg=15]], - false) - end, - config = function() - vim.g.beacon_size = 40 - vim.g.beacon_minimal_jump = 10 - vim.g.beacon_shrink = 1 - end - } - - -- indentation guides - use { - "lukas-reineke/indent-blankline.nvim", - config = function() - vim.g.indent_blankline_char = "|" - vim.g.indent_blankline_use_treesitter = true - end - } - - use { - "haya14busa/vim-asterisk", - config = function() - vim.g["asterisk#keeppos"] = 1 - local map = vim.api.nvim_set_keymap - map("", "*", "(asterisk-z*)", {}) - map("", "#", "(asterisk-z#)", {}) - map("", "g*", "(asterisk-gz*)", {}) - map("", "g#", "(asterisk-gz#)", {}) - end - } - - use { - "christoomey/vim-tmux-navigator", - config = function() - vim.g.tmux_navigator_no_mappings = 1 - vim.g.tmux_navigator_disable_when_zoomed = 1 - local map = vim.api.nvim_set_keymap - opts = {silent = true, noremap = true} - map("n", "", ":TmuxNavigateLeft", opts) - map("n", "", ":TmuxNavigateDown", opts) - map("n", "", ":TmuxNavigateUp", opts) - map("n", "", ":TmuxNavigateRight", opts) - end - } - - use { - "mbbill/undotree", - config = function() - local map = vim.api.nvim_set_keymap - map("", "", ":UndotreeToggle:UndotreeFocus", - {noremap = true}) - end - } - - use { - "iamcco/markdown-preview.nvim", -- requires yarn - run = "cd /home/hjalmarlucius/.local/share/nvim/site/pack/packer/start/markdown-preview && yarn install", - config = function() - vim.g.mkdp_auto_start = 0 -- auto start on moving into - vim.g.mkdp_auto_close = 0 -- auto close on moving away - vim.g.mkdp_open_to_the_world = 0 -- available to others - vim.g.mkdp_open_ip = "" -- use custom IP to open preview page - end - } - - use { - "hoob3rt/lualine.nvim", - requires = {"kyazdani42/nvim-web-devicons"}, - config = function() - require("lualine").setup { - options = {theme = "auto"}, - extensions = {"fugitive"}, - sections = { - lualine_a = {"mode"}, - lualine_b = {"branch"}, - lualine_c = {{"filename", file_status = true, path = 1}}, -- , {"diff", colored=false}, { "diagnostics", sources = {"nvim_lsp"}} - lualine_x = {"filetype"}, - lualine_y = {"progress"}, -- "encoding", "fileformat", - lualine_z = {"location"} - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = {{"filename", file_status = true, path = 1}}, - lualine_x = {}, - lualine_y = {"progress"}, - lualine_z = {"location"} - } - } - end - } - - use { - "akinsho/nvim-bufferline.lua", - requires = {"kyazdani42/nvim-web-devicons"}, - config = function() - require("bufferline").setup { - options = {diagnostics = "nvim_lsp"} - } - local map = vim.api.nvim_set_keymap - map("n", "", ":BufferLineCyclePrev", - {noremap = true, silent = true}) - map("n", "", ":BufferLineCycleNext", - {noremap = true, silent = true}) - map("n", "", ":BufferLineMovePrev", - {noremap = true, silent = true}) - map("n", "", ":BufferLineMoveNext", - {noremap = true, silent = true}) - end - } - - use { - "numtostr/FTerm.nvim", - config = function() - require("FTerm").setup {} - local map = vim.api.nvim_set_keymap - local opts = {noremap = true, silent = true} - map("n", "", [[lua require("FTerm").toggle()]], - opts) - map("t", "", - [[lua require("FTerm").toggle()]], opts) - end - } - - use {"psf/black", config = function() vim.g.black_fast = 1 end} - - -- treesitter - use { - "nvim-treesitter/nvim-treesitter", - run = ":TSUpdate", - config = function() - require("nvim-treesitter.configs").setup { - ensure_installed = "all" - } - vim.opt.foldexpr = "nvim_treesitter#foldexpr()" - end - } - - use { - "nvim-telescope/telescope.nvim", - requires = { - "nvim-lua/popup.nvim", "nvim-lua/plenary.nvim", - "nvim-telescope/telescope-live-grep-raw.nvim" + ["n "] = { + expr = true, + [[&diff ? "]c" : "lua require('gitsigns.actions').next_hunk()"]] }, - config = function() - -- TODO grep with regex - local map = vim.api.nvim_set_keymap - local opts = {noremap = true} - local actions = require("telescope.actions") - map("n", "", "Telescope find_files", opts) - map("n", "", "Telescope git_files", opts) - map("n", "", - ":lua require('telescope').extensions.live_grep_raw.live_grep_raw()", - opts) - map("n", "", "Telescope buffers", opts) - map("n", "", "Telescope filetypes", opts) - map("n", "", "Telescope colorscheme", opts) - map("n", "la", "Telescope lsp_code_actions", - opts) - map("v", "la", - "Telescope lsp_range_code_actions", opts) - map("n", "ld", - "Telescope lsp_document_diagnostics", opts) - map("n", "lD", - "Telescope lsp_workspace_diagnostics", opts) - map("n", "", "Telescope", opts) - require("telescope").setup { - defaults = { - mappings = { - i = { - [""] = actions.close, - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - [""] = actions.preview_scrolling_up, - [""] = actions.preview_scrolling_down, - [""] = actions.select_default + - actions.center, - [""] = actions.select_horizontal, - [""] = actions.select_vertical, - [""] = actions.select_tab, - [""] = actions.toggle_selection + - actions.move_selection_worse, - [""] = actions.toggle_selection + - actions.move_selection_better, - [""] = actions.send_to_qflist + - actions.open_qflist, - [""] = actions.send_selected_to_qflist + - actions.open_qflist, - [""] = actions.complete_tag - } - }, - file_ignore_patterns = {}, - set_env = {["COLORTERM"] = "truecolor"} - } - } - end + ["n "] = { + expr = true, + [[&diff ? "[c" : "lua require('gitsigns.actions').prev_hunk()"]] + }, + + ["n gs"] = [[lua require("gitsigns").stage_hunk()]], + ["v gs"] = [[lua require("gitsigns").stage_hunk({vim.fn.line("."), vim.fn.line("v")})]], + ["n gu"] = [[lua require("gitsigns").undo_stage_hunk()]], + ["n gx"] = [[lua require("gitsigns").reset_hunk()]], + ["v gx"] = [[lua require("gitsigns").reset_hunk({vim.fn.line("."), vim.fn.line("v")})]], + ["n gi"] = [[lua require("gitsigns").preview_hunk()]], + ["n gb"] = [[lua require("gitsigns").blame_line(true)]], + + -- Text objects + ["o ih"] = [[:lua require("gitsigns.actions").select_hunk()]], + ["x ih"] = [[:lua require("gitsigns.actions").select_hunk()]] + }, + word_diff = false } - -- context - use { - "romgrk/nvim-treesitter-context", - requires = {"nvim-treesitter/nvim-treesitter"}, - config = function() - require("treesitter-context").setup{ - enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) - throttle = true, -- Throttles plugin updates (may improve performance) - max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit. - patterns = { - default = { - "class", - "function", - "method", - -- 'for', -- These won't appear in the context - -- 'while', - -- 'if', - -- 'switch', - -- 'case', - }, - -- Example for a specific filetype. - -- If a pattern is missing, *open a PR* so everyone can benefit. - -- rust = { - -- 'impl_item', - -- }, - }, + end + } + + -- folder tree + use { + "kyazdani42/nvim-tree.lua", + requires = {"kyazdani42/nvim-web-devicons"}, + config = function() + require("nvim-tree").setup {disable_netrw = false, auto_close = true} + local map = vim.api.nvim_set_keymap + map("n", "", ":NvimTreeToggle", {noremap = true}) + end + } + + -- theme + use { + "folke/tokyonight.nvim", + config = function() vim.g.tokyonight_style = "night" end + } + + use {"sonph/onehalf", rtp = "vim"} + use {"tomasr/molokai"} + use {"morhetz/gruvbox"} + use {"jnurmine/Zenburn"} + use {"nanotech/jellybeans.vim"} + use {"mhartington/oceanic-next"} + use {"NLKNguyen/papercolor-theme"} + use {"drewtempelmeyer/palenight.vim"} + use {"altercation/vim-colors-solarized"} + use {"rakr/vim-one", config = function() vim.g.one_allow_italics = 1 end} + + use { + "ayu-theme/ayu-vim", + config = function() + -- vim.g.ayucolor = "light" + -- vim.g.ayucolor = "mirage" + vim.g.ayucolor = "dark" + end + } + + use { + "skbolton/embark", + config = function() vim.g.embark_terminal_italics = 1 end + } + + use {"arcticicestudio/nord-vim", config = function() end} + + use { + "junegunn/seoul256.vim", + config = function() vim.g.seoul256_background = 235 end + } + vim.cmd "colorscheme nord" + + -- coloring of colornames + use { + "rrethy/vim-hexokinase", + run = "cd /home/hjalmarlucius/.local/share/nvim/site/pack/packer/start/vim-hexokinase && make hexokinase", + config = function() + vim.g.Hexokinase_highlighters = {"backgroundfull"} + end + } + + -- edgedb syntax highlighting + use {"edgedb/edgedb-vim"} + + -- flashing cursor on move + use { + "danilamihailov/beacon.nvim", + setup = function() + vim.api.nvim_exec([[highlight Beacon guibg=white ctermbg=15]], false) + end, + config = function() + vim.g.beacon_size = 40 + vim.g.beacon_minimal_jump = 10 + vim.g.beacon_shrink = 1 + end + } + + -- indentation guides + use { + "lukas-reineke/indent-blankline.nvim", + config = function() + vim.g.indent_blankline_char = "|" + vim.g.indent_blankline_use_treesitter = true + end + } + + use { + "haya14busa/vim-asterisk", + config = function() + vim.g["asterisk#keeppos"] = 1 + local map = vim.api.nvim_set_keymap + map("", "*", "(asterisk-z*)", {}) + map("", "#", "(asterisk-z#)", {}) + map("", "g*", "(asterisk-gz*)", {}) + map("", "g#", "(asterisk-gz#)", {}) + end + } + + use { + "christoomey/vim-tmux-navigator", + config = function() + vim.g.tmux_navigator_no_mappings = 1 + vim.g.tmux_navigator_disable_when_zoomed = 1 + local map = vim.api.nvim_set_keymap + opts = {silent = true, noremap = true} + map("n", "", ":TmuxNavigateLeft", opts) + map("n", "", ":TmuxNavigateDown", opts) + map("n", "", ":TmuxNavigateUp", opts) + map("n", "", ":TmuxNavigateRight", opts) + end + } + + use { + "mbbill/undotree", + config = function() + local map = vim.api.nvim_set_keymap + map("", "", ":UndotreeToggle:UndotreeFocus", + {noremap = true}) + end + } + + use { + "iamcco/markdown-preview.nvim", -- requires yarn + run = "cd /home/hjalmarlucius/.local/share/nvim/site/pack/packer/start/markdown-preview && yarn install", + config = function() + vim.g.mkdp_auto_start = 0 -- auto start on moving into + vim.g.mkdp_auto_close = 0 -- auto close on moving away + vim.g.mkdp_open_to_the_world = 0 -- available to others + vim.g.mkdp_open_ip = "" -- use custom IP to open preview page + end + } + + use { + "hoob3rt/lualine.nvim", + requires = {"kyazdani42/nvim-web-devicons"}, + config = function() + require("lualine").setup { + options = {theme = "auto"}, + extensions = {"fugitive"}, + sections = { + lualine_a = {"mode"}, + lualine_b = {"branch"}, + lualine_c = {{"filename", file_status = true, path = 1}}, -- , {"diff", colored=false}, { "diagnostics", sources = {"nvim_lsp"}} + lualine_x = {"filetype"}, + lualine_y = {"progress"}, -- "encoding", "fileformat", + lualine_z = {"location"} + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = {{"filename", file_status = true, path = 1}}, + lualine_x = {}, + lualine_y = {"progress"}, + lualine_z = {"location"} + } + } + end + } + + use { + "akinsho/nvim-bufferline.lua", + requires = {"kyazdani42/nvim-web-devicons"}, + config = function() + require("bufferline").setup {options = {diagnostics = "nvim_lsp"}} + local map = vim.api.nvim_set_keymap + map("n", "", ":BufferLineCyclePrev", + {noremap = true, silent = true}) + map("n", "", ":BufferLineCycleNext", + {noremap = true, silent = true}) + map("n", "", ":BufferLineMovePrev", + {noremap = true, silent = true}) + map("n", "", ":BufferLineMoveNext", + {noremap = true, silent = true}) + end + } + + use { + "numtostr/FTerm.nvim", + config = function() + require("FTerm").setup {} + local map = vim.api.nvim_set_keymap + local opts = {noremap = true, silent = true} + map("n", "", [[lua require("FTerm").toggle()]], opts) + map("t", "", [[lua require("FTerm").toggle()]], + opts) + end + } + + use {"psf/black", config = function() vim.g.black_fast = 1 end} + + -- treesitter + use { + "nvim-treesitter/nvim-treesitter", + run = ":TSUpdate", + config = function() + require("nvim-treesitter.configs").setup {ensure_installed = "all"} + vim.opt.foldexpr = "nvim_treesitter#foldexpr()" + end + } + + use { + "nvim-telescope/telescope.nvim", + requires = { + "nvim-lua/popup.nvim", "nvim-lua/plenary.nvim", + "nvim-telescope/telescope-live-grep-raw.nvim" + }, + config = function() + -- TODO grep with regex + local map = vim.api.nvim_set_keymap + local opts = {noremap = true} + local actions = require("telescope.actions") + map("n", "", "Telescope find_files", opts) + map("n", "", "Telescope git_files", opts) + map("n", "", + ":lua require('telescope').extensions.live_grep_raw.live_grep_raw()", + opts) + map("n", "", "Telescope buffers", opts) + map("n", "", "Telescope filetypes", opts) + map("n", "", "Telescope colorscheme", opts) + map("n", "la", "Telescope lsp_code_actions", opts) + map("v", "la", "Telescope lsp_range_code_actions", opts) + map("n", "ld", "Telescope lsp_document_diagnostics", + opts) + map("n", "lD", "Telescope lsp_workspace_diagnostics", + opts) + map("n", "", "Telescope", opts) + require("telescope").setup { + defaults = { + mappings = { + i = { + [""] = actions.close, + [""] = actions.move_selection_next, + [""] = actions.move_selection_previous, + [""] = actions.preview_scrolling_up, + [""] = actions.preview_scrolling_down, + [""] = actions.select_default + actions.center, + [""] = actions.select_horizontal, + [""] = actions.select_vertical, + [""] = actions.select_tab, + [""] = actions.toggle_selection + + actions.move_selection_worse, + [""] = actions.toggle_selection + + actions.move_selection_better, + [""] = actions.send_to_qflist + actions.open_qflist, + [""] = actions.send_selected_to_qflist + + actions.open_qflist, + [""] = actions.complete_tag + } + }, + file_ignore_patterns = {}, + set_env = {["COLORTERM"] = "truecolor"} + } + } + end + } + -- context + use { + "romgrk/nvim-treesitter-context", + requires = {"nvim-treesitter/nvim-treesitter"}, + config = function() + require("treesitter-context").setup { + enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) + throttle = true, -- Throttles plugin updates (may improve performance) + max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit. + patterns = { + default = { + "class", "function", "method" + -- 'for', -- These won't appear in the context + -- 'while', + -- 'if', + -- 'switch', + -- 'case', } - end + -- Example for a specific filetype. + -- If a pattern is missing, *open a PR* so everyone can benefit. + -- rust = { + -- 'impl_item', + -- }, + } } + end + } - -- autocompletion - use { - "hrsh7th/nvim-cmp", - requires = { - {"hrsh7th/cmp-nvim-lsp", after = "nvim-cmp"}, - {"hrsh7th/cmp-path", after = "nvim-cmp"}, - {"hrsh7th/cmp-buffer", after = "nvim-cmp"}, - {"hrsh7th/cmp-calc", after = "nvim-cmp"} - }, - config = function() - local cmp = require("cmp") - cmp.setup({ - experimental = {native_menu = true}, - mapping = { - [''] = cmp.mapping.select_next_item({ - behavior = cmp.SelectBehavior.Insert - }), - [''] = cmp.mapping.select_prev_item({ - behavior = cmp.SelectBehavior.Insert - }), - [''] = cmp.mapping({ - c = function(fallback) - if #cmp.core:get_sources() > 0 and not cmp.get_config().experimental.native_menu then - if cmp.visible() then - cmp.select_next_item() - else - cmp.complete() - end - else - fallback() - end - end, - }), - [''] = cmp.mapping({ - c = function(fallback) - if #cmp.core:get_sources() > 0 and not cmp.get_config().experimental.native_menu then - if cmp.visible() then - cmp.select_prev_item() - else - cmp.complete() - end - else - fallback() - end - end, - }), - }, - sources = { - {name = "nvim_lsp"}, - {name = "buffer"}, - {name = "path"}, - {name = "nvim_lua"}, - }, - }) - end - } - - use {"itchyny/vim-qfedit"} - - use { - "folke/trouble.nvim", - requires = "kyazdani42/nvim-web-devicons", - config = function() - require("trouble").setup { - position = "right", -- position of the list can be: bottom, top, left, right - height = 10, -- height of the trouble list when position is top or bottom - width = 60, -- width of the list when position is left or right - icons = true, -- use devicons for filenames - mode = "quickfix", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" - fold_open = "", -- icon used for open folds - fold_closed = "", -- icon used for closed folds - action_keys = { -- key mappings for actions in the trouble list - close = "q", -- close the list - cancel = "", -- cancel the preview and get back to your last window / buffer / cursor - refresh = "r", -- manually refresh - jump = {"", ""}, -- jump to the diagnostic or open / close folds - open_split = {""}, -- open buffer in new split - open_vsplit = {""}, -- open buffer in new vsplit - open_tab = {""}, -- open buffer in new tab - jump_close = {"o"}, -- jump to the diagnostic and close the list - toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode - toggle_preview = "P", -- toggle auto_preview - hover = "K", -- opens a small popup with the full multiline message - preview = "p", -- preview the diagnostic location - close_folds = {"zM", "zm"}, -- close all folds - open_folds = {"zR", "zr"}, -- open all folds - toggle_fold = {"zA", "za"}, -- toggle fold of current file - previous = "k", -- preview item - next = "j" -- next item - }, - indent_lines = true, -- add an indent guide below the fold icons - auto_open = false, -- automatically open the list when you have diagnostics - auto_close = false, -- automatically close the list when you have no diagnostics - auto_preview = true, -- automatically preview the location of the diagnostic. to close preview and go back to last window - auto_fold = false -- automatically fold a file trouble list at creation - } - local map = vim.api.nvim_set_keymap - local opts = {noremap = true} - map("n", "", ":Trouble lsp_workspace_diagnostics", opts) - map("n", "", ":Trouble quickfix", opts) - map("n", "", ":Trouble loclist", opts) - map("n", "", ":Trouble lsp_references", opts) - end - } - - use { - "folke/todo-comments.nvim", - requires = {"nvim-lua/plenary.nvim"}, - config = function() - require("todo-comments").setup { - signs = true, -- show icons in the signs column - sign_priority = 8, -- sign priority - -- keywords recognized as todo comments - keywords = { - ERROR = {icon = " ", color = "error"}, - WIP = {icon = " ", color = "warning"}, - TODO = {icon = " ", color = "warning"}, - PERF = {icon = " ", color = "info"}, - TEST = {icon = " ", color = "info"}, - MAYBE = {icon = " ", color = "default"}, - IDEA = {icon = " ", color = "hint"} - }, - merge_keywords = true, -- when true, custom keywords will be merged with the defaults - highlight = {keyword = "bg", pattern = [[<(KEYWORDS)\s*]]}, - search = {pattern = [[\b(KEYWORDS)\b]]}, - colors = { - error = {"#E15030"}, - warning = {"#FBBF24"}, - info = {"#91BED0"}, - hint = {"#10B981"}, - default = {"#91D0C1"} - } - } - local map = vim.api.nvim_set_keymap - local opts = {noremap = true} - map("n", "", ":TodoTrouble", opts) - end - } - - use { - "neovim/nvim-lspconfig", - run = ":TSUpdate", - config = function() - -- see https://github.com/lukas-reineke/dotfiles/blob/master/vim/lua/lsp/init.lua - on_attach = function(client, bufnr) - local bmap = vim.api.nvim_buf_set_keymap - local opts = {noremap = true} - vim.api.nvim_buf_set_option(bufnr, "omnifunc", - "v:lua.vim.lsp.omnifunc") - vim.lsp.set_log_level("error") - -- workspaces - bmap(bufnr, "n", "wa", - "lua vim.lsp.buf.add_workspace_folder()", opts) - bmap(bufnr, "n", "wr", - "lua vim.lsp.buf.remove_workspace_folder()", - opts) - bmap(bufnr, "n", "wl", - "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", - opts) - -- jump - bmap(bufnr, "n", "gl", - "lua vim.lsp.diagnostic.set_loclist({severity_limit='Warning'})", - opts) - bmap(bufnr, "n", "", - "lua vim.lsp.diagnostic.show_line_diagnostics({show_header=false})", - opts) - bmap(bufnr, "n", "", - "lua vim.lsp.diagnostic.goto_next({severity_limit='Warning', popup_opts={show_header=false}})", - opts) - bmap(bufnr, "n", "", - "lua vim.lsp.diagnostic.goto_prev({severity_limit='Warning', popup_opts={show_header=false}})", - opts) - -- popups - bmap(bufnr, "n", "", - "lua vim.lsp.buf.signature_help()", opts) - bmap(bufnr, "i", "", - "lua vim.lsp.buf.signature_help()", opts) - -- other - if client.resolved_capabilities.goto_definition then - bmap(bufnr, "n", "gd", - ":lua vim.lsp.buf.definition()", opts) - end - if client.resolved_capabilities.find_references then - bmap(bufnr, "n", "gr", - "lua vim.lsp.buf.references()", opts) - end - if client.resolved_capabilities.hover then - bmap(bufnr, "n", "K", - "lua vim.lsp.buf.hover()", opts) - end - if client.resolved_capabilities.rename then - bmap(bufnr, "n", "", - "lua vim.lsp.buf.rename()", opts) - end - if client.resolved_capabilities.document_formatting or - client.resolved_capabilities.document_range_formatting then - vim.api.nvim_command [[augroup Format]] - vim.api.nvim_command [[autocmd! * ]] - vim.api - .nvim_command [[autocmd BufWritePost *.py lua vim.lsp.buf.formatting_seq_sync()]] - vim.api - .nvim_command [[autocmd BufWritePost *.lua lua vim.lsp.buf.formatting_seq_sync()]] - vim.api - .nvim_command [[autocmd BufWritePost *.md lua vim.lsp.buf.formatting_seq_sync()]] - vim.api - .nvim_command [[autocmd BufWritePost *.yaml lua vim.lsp.buf.formatting_seq_sync()]] - vim.api.nvim_command [[augroup END]] - - end + -- autocompletion + use { + "hrsh7th/nvim-cmp", + requires = { + {"hrsh7th/cmp-nvim-lsp", after = "nvim-cmp"}, + {"hrsh7th/cmp-path", after = "nvim-cmp"}, + {"hrsh7th/cmp-buffer", after = "nvim-cmp"}, + {"hrsh7th/cmp-calc", after = "nvim-cmp"} + }, + config = function() + local cmp = require("cmp") + cmp.setup({ + experimental = {native_menu = true}, + mapping = { + [''] = cmp.mapping.select_next_item({ + behavior = cmp.SelectBehavior.Insert + }), + [''] = cmp.mapping.select_prev_item({ + behavior = cmp.SelectBehavior.Insert + }), + [''] = cmp.mapping({ + c = function(fallback) + if #cmp.core:get_sources() > 0 and + not cmp.get_config().experimental.native_menu then + if cmp.visible() then + cmp.select_next_item() + else + cmp.complete() + end + else + fallback() end - local nvim_lsp = require("lspconfig") - nvim_lsp.tsserver.setup {} - nvim_lsp.yamlls.setup { - on_attach = on_attach, - settings = { - yaml = { - customTags = { - "!ChildAccessor mapping", - "!ChildContainer mapping", - "!ConstantAccessor mapping", "!Dtype scalar", - "!ConstantTensorAccessor mapping", - "!DtypeTensor scalar", "!ImportClass scalar", - "!ReferenceContainer mapping", - "!ReferenceLink mapping", - "!SeriesTensor mapping", - "!SeriesTensorAccessor mapping", - "!UDFtensorfactory scalar", "!UDFnu scalar", - "!UDFvalidator scalar", "!Unit scalar", - "!UserClass mapping", "!UserInstance mapping", - "!getattr mapping" - } - } - } - } - nvim_lsp.pyright.setup { - on_attach = on_attach, - settings = { - python = { - analysis = { - diagnosticMode = "workspace", - logLevel = "Warning", - typeCheckingMode = "basic", - autoImportCompletions = false, - } - } - } - } - nvim_lsp.efm.setup { - on_attach = on_attach, - init_options = {documentFormatting = true}, - filetypes = { - "python", "markdown", "yaml", "lua", "javascript" - }, - root_dir = vim.loop.cwd, - settings = { - rootMarkers = {".git/"}, - languages = { - python = { - { - lintCommand = "flake8 --max-line-length 88 --format '%(path)s:%(row)d:%(col)d: %(code)s %(code)s %(text)s' --stdin-display-name ${INPUT} -", - lintFormats = {"%f:%l:%c: %t%n%n%n %m"}, - lintSource = "flake8", - lintStdin = true, - lintIgnoreExitCode = true - }, { - formatCommand = "isort --stdout --profile black --force-single-line-imports -", - formatStdin = true - -- }, { - -- lintCommand = "mypy --show-column-numbers --ignore-missing-imports", - -- lintFormats = { - -- "%f=%l:%c: %trror: %m", - -- "%f=%l:%c: %tarning: %m", - -- "%f=%l:%c: %tote: %m" - -- } - } - }, - javascript = {{formatCommand = "prettier"}}, - yaml = {{formatCommand = "prettier"}}, - markdown = {{formatCommand = "prettier"}}, - lua = { - { - formatCommand = "lua-format -i --tab-width=2 --indent-width=2", - formatStdin = true - } - } - } - } + end + }), + [''] = cmp.mapping({ + c = function(fallback) + if #cmp.core:get_sources() > 0 and + not cmp.get_config().experimental.native_menu then + if cmp.visible() then + cmp.select_prev_item() + else + cmp.complete() + end + else + fallback() + end + end + }) + }, + sources = { + {name = "nvim_lsp"}, {name = "buffer"}, {name = "path"}, + {name = "nvim_lua"} + } + }) + end + } - } - end + use {"itchyny/vim-qfedit"} + + use { + "folke/trouble.nvim", + requires = "kyazdani42/nvim-web-devicons", + config = function() + require("trouble").setup { + position = "right", -- position of the list can be: bottom, top, left, right + height = 10, -- height of the trouble list when position is top or bottom + width = 60, -- width of the list when position is left or right + icons = true, -- use devicons for filenames + mode = "quickfix", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" + fold_open = "", -- icon used for open folds + fold_closed = "", -- icon used for closed folds + action_keys = { -- key mappings for actions in the trouble list + close = "q", -- close the list + cancel = "", -- cancel the preview and get back to your last window / buffer / cursor + refresh = "r", -- manually refresh + jump = {"", ""}, -- jump to the diagnostic or open / close folds + open_split = {""}, -- open buffer in new split + open_vsplit = {""}, -- open buffer in new vsplit + open_tab = {""}, -- open buffer in new tab + jump_close = {"o"}, -- jump to the diagnostic and close the list + toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode + toggle_preview = "P", -- toggle auto_preview + hover = "K", -- opens a small popup with the full multiline message + preview = "p", -- preview the diagnostic location + close_folds = {"zM", "zm"}, -- close all folds + open_folds = {"zR", "zr"}, -- open all folds + toggle_fold = {"zA", "za"}, -- toggle fold of current file + previous = "k", -- preview item + next = "j" -- next item + }, + indent_lines = true, -- add an indent guide below the fold icons + auto_open = false, -- automatically open the list when you have diagnostics + auto_close = false, -- automatically close the list when you have no diagnostics + auto_preview = true, -- automatically preview the location of the diagnostic. to close preview and go back to last window + auto_fold = false -- automatically fold a file trouble list at creation } - end + local map = vim.api.nvim_set_keymap + local opts = {noremap = true} + map("n", "", ":Trouble lsp_workspace_diagnostics", opts) + map("n", "", ":Trouble quickfix", opts) + map("n", "", ":Trouble loclist", opts) + map("n", "", ":Trouble lsp_references", opts) + end + } + + use { + "folke/todo-comments.nvim", + requires = {"nvim-lua/plenary.nvim"}, + config = function() + require("todo-comments").setup { + signs = true, -- show icons in the signs column + sign_priority = 8, -- sign priority + -- keywords recognized as todo comments + keywords = { + ERROR = {icon = " ", color = "error"}, + WIP = {icon = " ", color = "warning"}, + TODO = {icon = " ", color = "warning"}, + PERF = {icon = " ", color = "info"}, + TEST = {icon = " ", color = "info"}, + MAYBE = {icon = " ", color = "default"}, + IDEA = {icon = " ", color = "hint"} + }, + merge_keywords = true, -- when true, custom keywords will be merged with the defaults + highlight = {keyword = "bg", pattern = [[<(KEYWORDS)\s*]]}, + search = {pattern = [[\b(KEYWORDS)\b]]}, + colors = { + error = {"#E15030"}, + warning = {"#FBBF24"}, + info = {"#91BED0"}, + hint = {"#10B981"}, + default = {"#91D0C1"} + } + } + local map = vim.api.nvim_set_keymap + local opts = {noremap = true} + map("n", "", ":TodoTrouble", opts) + end + } + + use { + "neovim/nvim-lspconfig", + run = ":TSUpdate", + config = function() + -- see https://github.com/lukas-reineke/dotfiles/blob/master/vim/lua/lsp/init.lua + on_attach = function(client, bufnr) + local bmap = vim.api.nvim_buf_set_keymap + local opts = {noremap = true} + vim.api.nvim_buf_set_option(bufnr, "omnifunc", + "v:lua.vim.lsp.omnifunc") + vim.lsp.set_log_level("error") + -- workspaces + bmap(bufnr, "n", "wa", + "lua vim.lsp.buf.add_workspace_folder()", opts) + bmap(bufnr, "n", "wr", + "lua vim.lsp.buf.remove_workspace_folder()", opts) + bmap(bufnr, "n", "wl", + "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", + opts) + -- jump + bmap(bufnr, "n", "gl", + "lua vim.lsp.diagnostic.set_loclist({severity_limit='Warning'})", + opts) + bmap(bufnr, "n", "", + "lua vim.lsp.diagnostic.show_line_diagnostics({show_header=false})", + opts) + bmap(bufnr, "n", "", + "lua vim.lsp.diagnostic.goto_next({severity_limit='Warning', popup_opts={show_header=false}})", + opts) + bmap(bufnr, "n", "", + "lua vim.lsp.diagnostic.goto_prev({severity_limit='Warning', popup_opts={show_header=false}})", + opts) + -- popups + bmap(bufnr, "n", "", "lua vim.lsp.buf.signature_help()", + opts) + bmap(bufnr, "i", "", "lua vim.lsp.buf.signature_help()", + opts) + -- other + if client.resolved_capabilities.goto_definition then + bmap(bufnr, "n", "gd", ":lua vim.lsp.buf.definition()", opts) + end + if client.resolved_capabilities.find_references then + bmap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) + end + if client.resolved_capabilities.hover then + bmap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) + end + if client.resolved_capabilities.rename then + bmap(bufnr, "n", "", "lua vim.lsp.buf.rename()", opts) + end + if client.resolved_capabilities.document_formatting or + client.resolved_capabilities.document_range_formatting then + vim.api.nvim_command [[augroup Format]] + vim.api.nvim_command [[autocmd! * ]] + vim.api + .nvim_command [[autocmd BufWritePost *.py lua vim.lsp.buf.formatting_seq_sync()]] + vim.api + .nvim_command [[autocmd BufWritePost *.lua lua vim.lsp.buf.formatting_seq_sync()]] + vim.api + .nvim_command [[autocmd BufWritePost *.md lua vim.lsp.buf.formatting_seq_sync()]] + vim.api + .nvim_command [[autocmd BufWritePost *.yaml lua vim.lsp.buf.formatting_seq_sync()]] + vim.api.nvim_command [[augroup END]] + + end + end + local nvim_lsp = require("lspconfig") + nvim_lsp.tsserver.setup {} + nvim_lsp.yamlls.setup { + on_attach = on_attach, + settings = { + yaml = { + customTags = { + "!ChildAccessor mapping", "!ChildContainer mapping", + "!ConstantAccessor mapping", "!Dtype scalar", + "!ConstantTensorAccessor mapping", "!DtypeTensor scalar", + "!ImportClass scalar", "!ReferenceContainer mapping", + "!ReferenceLink mapping", "!SeriesTensor mapping", + "!SeriesTensorAccessor mapping", "!UDFtensorfactory scalar", + "!UDFnu scalar", "!UDFvalidator scalar", "!Unit scalar", + "!UserClass mapping", "!UserInstance mapping", + "!getattr mapping" + } + } + } + } + nvim_lsp.pyright.setup { + on_attach = on_attach, + settings = { + python = { + analysis = { + diagnosticMode = "workspace", + logLevel = "Warning", + typeCheckingMode = "basic", + autoImportCompletions = false + } + } + } + } + nvim_lsp.efm.setup { + on_attach = on_attach, + init_options = {documentFormatting = true}, + filetypes = {"python", "markdown", "yaml", "lua", "javascript"}, + root_dir = vim.loop.cwd, + settings = { + rootMarkers = {".git/"}, + languages = { + python = { + { + lintCommand = "flake8 --max-line-length 88 --format '%(path)s:%(row)d:%(col)d: %(code)s %(code)s %(text)s' --stdin-display-name ${INPUT} -", + lintFormats = {"%f:%l:%c: %t%n%n%n %m"}, + lintSource = "flake8", + lintStdin = true, + lintIgnoreExitCode = true + }, { + formatCommand = "isort --stdout --profile black --force-single-line-imports -", + formatStdin = true + -- }, { + -- lintCommand = "mypy --show-column-numbers --ignore-missing-imports", + -- lintFormats = { + -- "%f=%l:%c: %trror: %m", + -- "%f=%l:%c: %tarning: %m", + -- "%f=%l:%c: %tote: %m" + -- } + } + }, + javascript = {{formatCommand = "prettier"}}, + yaml = {{formatCommand = "prettier"}}, + markdown = {{formatCommand = "prettier"}}, + lua = { + { + formatCommand = "lua-format -i --tab-width=2 --indent-width=2", + formatStdin = true + } + } + } + } + } + end + } + end }