From 2420aee32b3539c5ff847bd99546728cc8610e6d Mon Sep 17 00:00:00 2001 From: long Date: Sun, 20 Feb 2022 03:52:11 -0600 Subject: [PATCH] changes --- .../{codex_unmap.lua => codex_unmap.lua.bak} | 0 after/plugin/folding.lua | 3 + after/plugin/harpoon_post_init.lua | 4 + ftplugin/javascript.lua | 3 + lua/ale.lua | 7 +- lua/config.lua | 33 +- lua/functions.lua | 295 +++++++++++------- lua/keybinds.lua | 57 ++-- lua/lsp.lua | 132 +++++--- lua/plugins.lua | 36 ++- 10 files changed, 375 insertions(+), 195 deletions(-) rename after/plugin/{codex_unmap.lua => codex_unmap.lua.bak} (100%) create mode 100644 after/plugin/folding.lua create mode 100644 after/plugin/harpoon_post_init.lua create mode 100644 ftplugin/javascript.lua diff --git a/after/plugin/codex_unmap.lua b/after/plugin/codex_unmap.lua.bak similarity index 100% rename from after/plugin/codex_unmap.lua rename to after/plugin/codex_unmap.lua.bak diff --git a/after/plugin/folding.lua b/after/plugin/folding.lua new file mode 100644 index 0000000..20ab8b5 --- /dev/null +++ b/after/plugin/folding.lua @@ -0,0 +1,3 @@ +--vim.o.foldlevelstart = 4 +--vim.o.foldmethod = "expr" +--vim.o.foldexpr = "nvim_treesitter#foldexpr()" diff --git a/after/plugin/harpoon_post_init.lua b/after/plugin/harpoon_post_init.lua new file mode 100644 index 0000000..53fadf0 --- /dev/null +++ b/after/plugin/harpoon_post_init.lua @@ -0,0 +1,4 @@ +-- automatically opens all marked files +_G.harpoon_open_marks() +-- sets tab switch mode to harpoon marks +_G.harpoon_btoggle(true) diff --git a/ftplugin/javascript.lua b/ftplugin/javascript.lua new file mode 100644 index 0000000..3b4858e --- /dev/null +++ b/ftplugin/javascript.lua @@ -0,0 +1,3 @@ +local len = 4 +vim.bo.shiftwidth = len +vim.bo.tabstop = len diff --git a/lua/ale.lua b/lua/ale.lua index 5ee1b08..b30ee90 100644 --- a/lua/ale.lua +++ b/lua/ale.lua @@ -4,13 +4,14 @@ local g = vim.g g.ale_completion_enabled = false g.ale_linters_explicit = true -g.ale_fix_on_save = true +g.ale_fix_on_save = false g.ale_fixers = { - c = {"clang-format"}, + --c = {"clang-format"}, cpp = {"clang-format"}, sh = {"shfmt"}, - python = {"black"}, + python = {"isort", "black"}, lua = {"luafmt"}, + json = {"prettier"}, css = {"prettier"}, scss = {"prettier"}, html = {"prettier"}, diff --git a/lua/config.lua b/lua/config.lua index 37ce125..8dba233 100644 --- a/lua/config.lua +++ b/lua/config.lua @@ -11,7 +11,6 @@ opt.autoindent = true opt.autoread = true --opt.autowrite = true opt.expandtab = true -opt.foldenable = false opt.hlsearch = true opt.ignorecase = true opt.number = true @@ -46,7 +45,17 @@ opt.titlestring = [[NVIM: [%{fnamemodify(getcwd(), ':t')}] %t]] opt.cursorline = true opt.cursorcolumn = true --- disable highlight outside of search and replace +--opt.foldlevel = 1 +opt.foldlevelstart = 10 +--opt.foldenable = false +opt.foldmethod = "indent" +--opt.foldmethod = "syntax" +--opt.foldmethod = "expr" +--opt.foldexpr = "nvim_treesitter#foldexpr()" + +----------------------------------------------------- +-- DISABLE HIGHLIGHT OUTSIDE OF SEARCH AND REPLACE -- +----------------------------------------------------- vim.cmd [[ " Enable highlighting all the matches in incsearch mode " But don't enable hlsearch always @@ -57,14 +66,26 @@ augroup vimrc-incsearch-highlight augroup END ]] +--------------- +-- PROVIDERS -- +--------------- +g.python3_host_prog = "/usr/bin/python3" + ------------------ -- ONEDARK.NVIM -- ------------------ --g.onedark_style = "cool" -g.onedark_style = "darker" -g.onedark_toggle_style_keymap = "" +--g.onedark_style = "darker" +--g.onedark_toggle_style_keymap = "" --g.onedark_darker_diagnostics = false +-- Lua +require("onedark").setup { + style = "darker", + toggle_style_key = "" +} +require("onedark").load() + ---------------- -- BCLOSE.VIM -- ---------------- @@ -139,7 +160,7 @@ require("lualine").setup { "buffers", show_filename_only = false, -- shows shortened relative path when false show_modified_status = true, -- shows indicator then bufder is modified - max_length = vim.o.columns * 6 / 7, -- maximum width of buffers component + max_length = vim.o.columns * 5 / 7, -- maximum width of buffers component filetype_names = { TelescopePrompt = "Telescope", dashboard = "Dashboard", @@ -228,8 +249,8 @@ require("fzf").default_options = { -- show_end_of_line = true --} --vim.opt.listchars:append("eol:↴") +--vim.opt.listchars:append("space:⋅") vim.opt.list = true -vim.opt.listchars:append("space:⋅") require("indent_blankline").setup { space_char_blankline = " ", diff --git a/lua/functions.lua b/lua/functions.lua index ab8e49a..f4bc58e 100644 --- a/lua/functions.lua +++ b/lua/functions.lua @@ -1,17 +1,9 @@ --- Determines if harpoon_bnext and harpoon_bprevious --- should switch between buffers or harpoon marks --- `true` - harpoon --- `false` - buffers -local function harpoon_tab_switch() - return require("harpoon.mark").get_length() > 1 -end - local bug = [[ Weird bug: -When at home directory, `Marked.get_current_index()` returns `nil` on files. +When at home directory or in a dot directory, `Marked.get_current_index()` returns `nil` on files. Caused by differences in the outputs of `Marked.get_marked_file_name()` and `require("harpoon.utils").normalize_path()`. @@ -24,26 +16,110 @@ Example: ]] -local harpoon_cycle_marked_file = function(up) - local step = up and 1 or -1 +-- true: harpoon +-- false: regular buffer +vim.g.my_harpoon_tab_switch = false - local Marked = require("harpoon.mark") - local current_index = Marked.get_current_index() - local number_of_items = Marked.get_length() +-- Determines if harpoon_bnext and harpoon_bprevious +-- should switch between buffers or harpoon marks +-- `true` - harpoon +-- `false` - buffers +local function harpoon_tab_switch() + --return require("harpoon.mark").get_length() > 0 + return vim.g.my_harpoon_tab_switch +end - current_index = current_index + step - current_index = current_index % number_of_items +-- Checks if a table contains a value. +local function has_value(tab, val) + for _, value in ipairs(tab) do + if value == val then + return true + end + end - require("harpoon.ui").nav_file(current_index) + return false +end + +local strip_dot_slash = function(str) + local first_two = string.sub(str, 1, 2) + if first_two == "./" then + str = string.sub(str, 3) + end + return str +end + +local fzf_run_with_opts = function(args) + local opts = require("fzf").default_options + + opts.width = math.floor(vim.o.columns * 0.9) + opts.height = math.floor(vim.o.lines * 0.6) + + local old_cli_args = opts.fzf_cli_args + if args.multi then + opts.fzf_cli_args = opts.fzf_cli_args .. " --multi " + end + + local results = args.fn() + + opts.fzf_cli_args = old_cli_args + + return results +end + +-- Does a fzf function call with the default options set. +-- idk if there's a better way to do this +local fzf_call = function(args) + local fn = function() + local fzf = require("fzf").fzf + if args.flags then + return fzf(args.items, args.flags) + elseif args.items then + return fzf(args.items) + else + return fzf() + end + end + + local results = fzf_run_with_opts({fn = fn, multi = args.multi}) + local stripped_results = {} + for _, filepath in ipairs(results) do + stripped_results[#stripped_results + 1] = strip_dot_slash(filepath) + end + return stripped_results +end +--coroutine.wrap(fzf_call)() + +-- Returns list of buffer file paths. +-- Does not include buffers without a file path. +local get_buffer_paths = function() + local buffers = {} + for b = 1, vim.fn.bufnr "$" do + if vim.fn.buflisted(b) ~= 0 and vim.api.nvim_buf_get_option(b, "buftype") == "" then + local buf_path = vim.fn.expand("#" .. b) + if buf_path ~= "" then + buffers[#buffers + 1] = strip_dot_slash(buf_path) + --print(buf_path) + end + end + end + + return buffers +end + +-- toggles tab mode +function _G.harpoon_btoggle(on) + if on == nil then + vim.g.my_harpoon_tab_switch = require("harpoon.mark").get_length() > 0 and not vim.g.my_harpoon_tab_switch + else + vim.g.my_harpoon_tab_switch = on and require("harpoon.mark").get_length() > 0 + end + print(vim.g.my_harpoon_tab_switch and "Tab: Harpoon" or "Tab: Buffer") end -- Dynamically switches between bnext and harpoon.ui.nav_next function _G.harpoon_bnext() if harpoon_tab_switch() then - --require("harpoon.ui").nav_next() - -- for some reason, next and prev have opposite directions - require("harpoon.ui").nav_prev() - --harpoon_cycle_marked_file(true) + require("harpoon.ui").nav_next() print("Harpoon nav_next") else vim.api.nvim_command("bnext") @@ -54,10 +130,7 @@ end -- Dynamically switches between bprevious and harpoon.ui.nav_prev function _G.harpoon_bprevious() if harpoon_tab_switch() then - --require("harpoon.ui").nav_prev() - -- for some reason, next and prev have opposite directions - require("harpoon.ui").nav_next() - --harpoon_cycle_marked_file(false) + require("harpoon.ui").nav_prev() print("Harpoon nav_prev") else vim.api.nvim_command("bprevious") @@ -67,13 +140,14 @@ end -- Runs harpoon.mark.toggle_file and refreshes lualine elements function _G.harpoon_toggle_file() - require("harpoon.mark").toggle_file() + require("harpoon.mark").add_file() vim.api.nvim_command("redrawtabline") vim.api.nvim_command("redrawstatus") end function _G.harpoon_clear_all() require("harpoon.mark").clear_all() + _G.harpoon_btoggle() vim.api.nvim_command("redrawtabline") vim.api.nvim_command("redrawstatus") end @@ -81,7 +155,7 @@ end -- I want my bclose bindings to also remove harpoon marks function _G.harpoon_rm_file() require("harpoon.mark").rm_file() - vim.api.nvim_command("bw") + vim.api.nvim_command("Bclose") end -- Lualine status element for harpoon @@ -94,99 +168,90 @@ function _G.harpoon_status() status_str = (harpoon_tab_switch() and "● " or "") .. status_str return string.format(status_str, marked_files) end ---[[string.format("Harpoon: %d files", require("harpoon.mark").get_length())]] -local get_harpoon_marked = function() - local Marked = require("harpoon.mark") - local contents = {} - - for idx = 1, Marked.get_length() do - local file = Marked.get_marked_file_name(idx) - if file == "" then - file = "(empty)" - end - contents[idx] = string.format("%s", file) - end - - return contents -end - -local fzf_opts = function() - return { - width = math.floor(vim.o.columns * 0.9), - height = math.floor(vim.o.lines * 0.6) - } -end - -local sleep = function(n) - local t0 = os.clock() - while os.clock() - t0 <= n do - end -end -- Marks buffers for harpoon -function _G.fzf_buffer_add_to_harpoon() - -- Returns list of buffer file paths. - -- Does not include buffers without a file path. - local get_buffer_paths = function() - local buffers = {} - for b = 1, vim.fn.bufnr "$" do - if vim.fn.buflisted(b) ~= 0 and vim.api.nvim_buf_get_option(b, "buftype") == "" then - local buf_path = vim.fn.expand("#" .. b) - if buf_path ~= "" then - buffers[#buffers + 1] = buf_path - end +local buffer_to_harpoon = function() + local buf_paths = get_buffer_paths() + local results = fzf_call({items = buf_paths, multi = true}) + + if results then + local sorted_results = {} + -- original buf_paths table is correctly ordered, easier to take from there + -- and just check if each item is in results. + for _, filepath in ipairs(buf_paths) do + if has_value(results, filepath) then + sorted_results[#sorted_results + 1] = filepath end end - - return buffers + local Marked = require("harpoon.mark") + Marked.set_mark_list(sorted_results) + _G.harpoon_btoggle(true) end - - local add_to_harpoon = function() - local fzf = require("fzf").fzf - local action = require "fzf.actions".action - - local buf_paths = get_buffer_paths() - - -- items is a table of selected or hovered fzf items - local shell = - action( - function(items, fzf_lines, fzf_cols) - -- get last item - local buf = vim.fn.bufnr(items[#items]) - - -- you can return either a string or a table to show in the preview - -- window - return vim.api.nvim_buf_get_lines(buf, 0, fzf_lines, false) - end - ) - - --''\''nvim'\'' --headless --clean --cmd '\''luafile /home/guy/.local/share/nvim/site/pack/packer/start/nvim-fzf/action_helper.lua'\'' '\''/tmp/nvimDUg2xo/3'\'' 7 {+}' - -- - local results = fzf(buf_paths, " --multi ", fzf_opts()) - if results then - local Marked = require("harpoon.mark") - Marked.set_mark_list(results) - --for _, p in ipairs(results) do - -- Marked.toggle_file(p) - -- --sleep(0.5) - --end - end - end - - --coroutine.wrap(add_to_harpoon)() - require("fzf-commands").files({fzf = add_to_harpoon}) end ---local testing = function () --- coroutine.wrap(function () --- local fzf = require("fzf").fzf --- fzf({}, '', { }) --- end)() ---end +function _G.fzf_buffer_add_to_harpoon() + coroutine.wrap(buffer_to_harpoon)() +end --- width: 139 --- margin width: 14 --- 90% width --- height: 35 --- margin height: 14 --- 60% height +-- Opens files from fzf, then marks them with harpoon. +local files_to_harpoon = function() + local results = fzf_call({multi = true}) + + if results then + -- opens all results into buffer + local cmd = ":n " + for _, filepath in ipairs(results) do + cmd = cmd .. filepath .. " " + end + vim.cmd(cmd) + + local buf_paths = get_buffer_paths() + local sorted_results = {} + for _, filepath in ipairs(buf_paths) do + print(filepath) + if has_value(results, filepath) then + sorted_results[#sorted_results + 1] = filepath + end + end + local Marked = require("harpoon.mark") + Marked.set_mark_list(sorted_results) + _G.harpoon_btoggle(true) + end +end + +function _G.fzf_files_to_harpoon() + coroutine.wrap(files_to_harpoon)() +end + +local get_marked_file_names = function() + local Marked = require("harpoon.mark") + local filepaths = {} + for i = 1, Marked.get_length() do + filepaths[#filepaths + 1] = Marked.get_marked_file_name(i) + end + return filepaths +end + +local select_harpoon_mark = function() + local results = fzf_call({items = get_marked_file_names()}) + + if results then + vim.api.nvim_win_set_buf(0, vim.fn.bufnr(results[1])) + end +end + +function _G.fzf_select_harpoon_mark() + coroutine.wrap(select_harpoon_mark)() +end + +_G.harpoon_open_marks = function() + local filepaths = get_marked_file_names() + if #filepaths ~= 0 then + local cmd = ":n " + + for _, filepath in ipairs(filepaths) do + cmd = cmd .. filepath .. " " + end + vim.cmd(cmd) + end +end diff --git a/lua/keybinds.lua b/lua/keybinds.lua index 2127dae..7fa7464 100644 --- a/lua/keybinds.lua +++ b/lua/keybinds.lua @@ -19,7 +19,7 @@ map("n", "", ":lua harpoon_bnext()") map("n", "", ":lua harpoon_bprevious()") map("n", "", ":noh", {silent = true}) --After searching, pressing escape stops the highlight -map("n", "w", [[:%s/\s\+$//e]]) +--map("n", "w", [[:%s/\s\+$//e]]) --map("n", "x", ":Bclose ") map("n", "t", ":tabnew") @@ -29,12 +29,22 @@ map("n", "", "") map("n", "", "") map("n", "", "") +--map("n", "", "") +--map("n", "", "") +--map("n", "", "") +--map("n", "", "") + -- Split navigations map("n", "", "") map("n", "", "") map("n", "", "") map("n", "", "") +--map("n", "", "") +--map("n", "", "") +--map("n", "", "") +--map("n", "", "") + -- Resize split --map("n", "", "-") --map("n", "", "+") @@ -81,18 +91,18 @@ map("v", "w", hopword, {silent = true}) -- args: direction: bool, inclusive: bool -- inclusive is broken in hop as of this comment -local hop_hint_char1 = function(args) - local direction = args.forward and "AFTER_CURSOR" or "BEFORE_CURSOR" - local inclusive = args.inclusive and "true" or "false" - - return ("lua require'hop'.hint_char1({ direction = require'hop.hint'.HintDirection." .. - direction .. ", current_line_only = true, inclusive_jump = " .. inclusive .. " })") -end - -vim.api.nvim_set_keymap("", "f", hop_hint_char1({forward = true, inclusive = false}), {}) -vim.api.nvim_set_keymap("", "F", hop_hint_char1({forward = false, inclusive = false}), {}) -vim.api.nvim_set_keymap("", "t", hop_hint_char1({forward = true, inclusive = false}), {}) -vim.api.nvim_set_keymap("", "T", hop_hint_char1({forward = false, inclusive = false}), {}) +--local hop_hint_char1 = function(args) +-- local direction = args.forward and "AFTER_CURSOR" or "BEFORE_CURSOR" +-- local inclusive = args.inclusive and "true" or "false" +-- +-- return ("lua require'hop'.hint_char1({ direction = require'hop.hint'.HintDirection." .. +-- direction .. ", current_line_only = true, inclusive_jump = " .. inclusive .. " })") +--end +-- +--vim.api.nvim_set_keymap("", "f", hop_hint_char1({forward = true, inclusive = false}), {}) +--vim.api.nvim_set_keymap("", "F", hop_hint_char1({forward = false, inclusive = false}), {}) +--vim.api.nvim_set_keymap("", "t", hop_hint_char1({forward = true, inclusive = false}), {}) +--vim.api.nvim_set_keymap("", "T", hop_hint_char1({forward = false, inclusive = false}), {}) -- place this in one of your configuration file(s) --vim.api.nvim_set_keymap( @@ -138,7 +148,7 @@ vim.api.nvim_set_keymap("", "T", hop_hint_char1({forward = false, inclusive = fa map("n", "o", ":Files") --map("n", "O", [[:lua vim.fn['fzf#vim#files']('~/')]]) map("n", "O", ":Files ~/") -map("n", "b", ":Buffers") +map("n", "p", ":Buffers") map("n", "h", ":Helptags") map("n", ";", ":History:") map("n", "c", ":Commands") @@ -160,6 +170,7 @@ map("n", "gb", ":GBranches") --------- --map("n", "", ":ALEPreviousWrap ", {silent = true}) --map("n", "", ":ALENextWrap ", {silent = true}) +map("n", "f", ":ALEFix", {silent = true}) ------------- -- HARPOON -- @@ -167,9 +178,10 @@ map("n", "gb", ":GBranches") --map("n", "m", [[:lua require("harpoon.mark").add_file() ]]) map("n", "x", ":lua harpoon_rm_file()") ---map("n", "m", [[:lua harpoon_toggle_file()]]) -map("n", "M", [[:lua harpoon_clear_all()]]) -map("n", "l", [[:lua require("harpoon.ui").toggle_quick_menu()]]) +map("n", "ma", [[:lua harpoon_toggle_file()]]) +map("n", "mc", [[:lua harpoon_clear_all()]]) +map("n", "ml", [[:lua require("harpoon.ui").toggle_quick_menu()]]) +map("n", "mt", [[:lua harpoon_btoggle()]]) --map("n", "n", [[:lua require("harpoon.ui").nav_next() ]]) --map("n", "N", [[:lua require("harpoon.ui").nav_prev() ]]) @@ -177,12 +189,15 @@ map("n", "l", [[:lua require("harpoon.ui").toggle_quick_menu()]]) ----------- -- CODEX -- ----------- -local create_completion = ":lua vim.fn.CreateCompletion(200)" -map("n", "", create_completion) -map("i", "", ("" .. create_completion)) +--local create_completion = ":lua vim.fn.CreateCompletion(200)" +--local create_completion = ":lua vim.fn.CreateCompletionLine()" +--map("n", "", create_completion) +--map("i", "", ("" .. create_completion)) --map("i", "", "liul:CreateCompletion") -------------- -- NVIM FZF -- -------------- -map("n", "m", [[:lua fzf_buffer_add_to_harpoon()]]) +map("n", "mm", [[:lua fzf_buffer_add_to_harpoon()]]) +map("n", "mo", [[:lua fzf_files_to_harpoon()]]) +map("n", "ml", [[:lua fzf_select_harpoon_mark()]]) diff --git a/lua/lsp.lua b/lua/lsp.lua index 174ae26..0a0eeaf 100644 --- a/lua/lsp.lua +++ b/lua/lsp.lua @@ -17,15 +17,70 @@ local has_words_before = function() return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil end -local luasnip = require("luasnip") local cmp_autopairs = require("nvim-autopairs.completion.cmp") local cmp = require("cmp") +-- LUASNIP CMP THINGS +--local luasnip = require("luasnip") +-- +--local luasnip_expand = function(args) +-- luasnip.lsp_expand(args.body) +--end +-- +--local luasnip_tab = cmp.mapping( +-- function(fallback) +-- if cmp.visible() then +-- cmp.select_next_item() +-- elseif luasnip.expand_or_jumpable() then +-- luasnip.expand_or_jump() +-- elseif has_words_before() then +-- cmp.complete() +-- else +-- fallback() +-- end +-- end, +-- {"i", "s"} +--) +-- +--local luasnip_shift_tab = cmp.mapping( +-- function(fallback) +-- if cmp.visible() then +-- cmp.select_prev_item() +-- elseif luasnip.jumpable(-1) then +-- luasnip.jump(-1) +-- else +-- fallback() +-- end +-- end, +-- {"i", "s"} +--) + +-- CMP NVIM ULTISNIP +local cmp_ultisnips_mappings = require("cmp_nvim_ultisnips.mappings") +local ultisnip = { + expand = function(args) + vim.fn["UltiSnips#Anon"](args.body) + end, + tab = cmp.mapping( + function(fallback) + --cmp_ultisnips_mappings.jump_forwards(fallback) + --cmp_ultisnips_mappings.compose({"jump_forwards", "select_next_item"})(fallback) + cmp_ultisnips_mappings.compose({"select_next_item"})(fallback) + end, + {"i", "s"} + ), + shift_tab = cmp.mapping( + function(fallback) + --cmp_ultisnips_mappings.jump_backwards(fallback) + cmp_ultisnips_mappings.compose({"select_prev_item"})(fallback) + end, + {"i", "s"} + ) +} + cmp.setup { snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end + expand = ultisnip.expand }, mapping = { [""] = cmp.mapping.select_prev_item(), @@ -38,36 +93,13 @@ cmp.setup { --behavior = cmp.ConfirmBehavior.Replace, select = true }, - [""] = cmp.mapping( - function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, - {"i", "s"} - ), - [""] = cmp.mapping( - function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, - {"i", "s"} - ) + [""] = ultisnip.tab, + [""] = ultisnip.shift_tab }, sources = { {name = "nvim_lsp"}, - {name = "luasnip"} + --{name = "luasnip"}, + {name = "ultisnips"} } } @@ -108,8 +140,8 @@ local common_on_attach = function(client, bufnr) vim.api.nvim_buf_set_option(bufnr, ...) end - client.resolved_capabilities.document_formatting = false - client.resolved_capabilities.document_range_formatting = false + --client.resolved_capabilities.document_formatting = false + --client.resolved_capabilities.document_range_formatting = false -- Enable completion triggered by buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") @@ -120,16 +152,16 @@ local common_on_attach = function(client, bufnr) --buf_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) buf_set_keymap("n", "D", "lua vim.lsp.buf.type_definition()", opts) buf_set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", opts) - buf_set_keymap("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts) - buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - buf_set_keymap("n", "q", "lua vim.lsp.diagnostic.set_loclist()", opts) + buf_set_keymap("n", "e", "lua vim.diagnostic.show_line_diagnostics()", opts) + buf_set_keymap("n", "F", "lua vim.lsp.buf.formatting()", opts) + buf_set_keymap("n", "q", "lua vim.diagnostic.set_loclist()", opts) buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts) buf_set_keymap("n", "wl", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts) buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts) buf_set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) - buf_set_keymap("n", "", "lua vim.lsp.diagnostic.goto_prev({wrap = false})", opts) - buf_set_keymap("n", "", "lua vim.lsp.diagnostic.goto_next({wrap = false})", opts) + buf_set_keymap("n", "", "lua vim.diagnostic.goto_prev({wrap = true})", opts) + buf_set_keymap("n", "", "lua vim.diagnostic.goto_next({wrap = true})", opts) buf_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) buf_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) @@ -191,7 +223,7 @@ require("nvim-lsp-installer").on_server_ready( debounce_text_changes = 150 }, settings = { - format = {enable = false} + format = {enable = true} }, handlers = { ["textDocument/publishDiagnostics"] = vim.lsp.with( @@ -224,6 +256,22 @@ require("nvim-lsp-installer").on_server_ready( } } } + elseif server.name == "diagnosticls" then + opts = { + filetypes = {"python"}, + init_options = { + formatters = { + black = { + command = "black", + args = {"--quiet", "-"}, + rootPatterns = {"pyproject.toml", "setup.cfg"} + }, + formatFiletypes = { + python = {"black"} + } + } + } + } end server:setup(opts) @@ -234,6 +282,7 @@ require("nvim-lsp-installer").on_server_ready( local lsp_installer_servers = require("nvim-lsp-installer.servers") local auto_servers = { "pylsp", + --"pyright", "sumneko_lua", "tsserver", "bashls", @@ -241,7 +290,10 @@ local auto_servers = { "rust_analyzer", "html", "cssls", - "jsonls" + "jsonls", + "omnisharp", + "eslint" + --"diagnosticls" --"eslintls" } diff --git a/lua/plugins.lua b/lua/plugins.lua index 1f517dc..3782eb2 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -5,21 +5,29 @@ require("packer").startup( use "wbthomason/packer.nvim" -- OPENAI CODEX - use "tom-doerr/vim_codex" + --use "tom-doerr/vim_codex" -- NAVIGATION use { "phaazon/hop.nvim", - as = "hop", + --branch = "v1.2", -- optional but strongly recommended config = function() -- you can configure Hop the way you like here; see :h hop-config - require "hop".setup {} - --require "hop".setup {keys = "etovxqpdygfblzhckisuran"} + require "hop".setup {keys = "etovxqpdygfblzhckisuran"} end } + --use { + -- "phaazon/hop.nvim", + -- as = "hop", + -- config = function() + -- -- you can configure Hop the way you like here; see :h hop-config + -- require "hop".setup {} + -- --require "hop".setup {keys = "etovxqpdygfblzhckisuran"} + -- end + --} -- TABLE - use "dhruvasagar/vim-table-mode" + --use "dhruvasagar/vim-table-mode" -- VIM THEMING --use "rafi/awesome-vim-colorschemes" -- vim themes @@ -35,6 +43,7 @@ require("packer").startup( use "francoiscabrol/ranger.vim" use "vijaymarupudi/nvim-fzf" use "vijaymarupudi/nvim-fzf-commands" + use {"tpope/vim-obsession"} -- GIT use "tpope/vim-fugitive" @@ -52,14 +61,23 @@ require("packer").startup( use "dense-analysis/ale" --use "nathanmsmith/nvim-ale-diagnostic" use "turbio/bracey.vim" - -- init.lua use "lukas-reineke/indent-blankline.nvim" + --use "sheerun/vim-polyglot" + + -- SNIPPETS + use "SirVer/ultisnips" + use "honza/vim-snippets" -- LSP + use "hrsh7th/nvim-cmp" -- Autocompletion plugin + --use "saadparwaiz1/cmp_luasnip" -- Snippets source for nvim-cmp use {"nvim-treesitter/nvim-treesitter", run = ":TSUpdate"} use "neovim/nvim-lspconfig" -- Collection of configurations for built-in LSP client use "williamboman/nvim-lsp-installer" - use "hrsh7th/cmp-nvim-lsp" -- LSP source for nvim-cmp + use { + "hrsh7th/cmp-nvim-lsp", + requires = "quangnguyen30192/cmp-nvim-ultisnips" + } -- LSP source for nvim-cmp use "nvim-lua/plenary.nvim" use "jose-elias-alvarez/nvim-lsp-ts-utils" @@ -68,8 +86,6 @@ require("packer").startup( use "ThePrimeagen/harpoon" use "L3MON4D3/LuaSnip" -- Snippets plugin - use "hrsh7th/nvim-cmp" -- Autocompletion plugin - use "saadparwaiz1/cmp_luasnip" -- Snippets source for nvim-cmp -- JS use "HerringtonDarkholme/yats.vim" @@ -79,7 +95,7 @@ require("packer").startup( --use "leafOfTree/vim-vue-plugin" -- vue syntax highlight & indent -- PYTHON - use {"numirias/semshi", run = ":UpdateRemotePlugins"} -- python + --use {"numirias/semshi", run = ":UpdateRemotePlugins"} -- python use "Vimjas/vim-python-pep8-indent" -- HTML/CSS