diff --git a/vim/.vim/lua/config/lsp-google.lua b/vim/.vim/lua/config/lsp-google.lua index c0b6850..84474d7 100644 --- a/vim/.vim/lua/config/lsp-google.lua +++ b/vim/.vim/lua/config/lsp-google.lua @@ -67,7 +67,7 @@ function M.setup(capabilities) end lspconfig.ciderlsp.setup({ - capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), + capabilities = capabilities, on_attach = cider_on_attach, handlers = cider_lsp_handlers, }) diff --git a/vim/.vim/lua/plugins/blink.lua b/vim/.vim/lua/plugins/blink.lua new file mode 100644 index 0000000..e7d8931 --- /dev/null +++ b/vim/.vim/lua/plugins/blink.lua @@ -0,0 +1,118 @@ +local use_google = require("utils").use_google +local flags = require("utils").flags + +return { + { + "saghen/blink.compat", + -- use the latest release, via version = '*', if you also use the latest release for blink.cmp + version = "*", + -- lazy.nvim will automatically load the plugin when it's required by blink.cmp + lazy = true, + -- make sure to set opts so that lazy.nvim calls blink.compat's setup + opts = {}, + cond = flags.blink, + }, + { + "saghen/blink.cmp", + lazy = false, -- lazy loading handled internally + cond = flags.blink, + dependencies = { + "Exafunction/codeium.nvim", + "mikavilpas/blink-ripgrep.nvim", + "hrsh7th/cmp-cmdline", + -- "FelipeLema/cmp-async-path", + "chrisgrieser/cmp-nerdfont", + "hrsh7th/cmp-emoji", + "rafamadriz/friendly-snippets", -- optional: provides snippets for the snippet source + }, + version = "v0.*", -- use a release tag to download pre-built binaries + -- build = 'cargo build --release', + + ---@module 'blink.cmp' + ---@type blink.cmp.Config + opts = { + keymap = { + [""] = { "show", "show_documentation", "hide_documentation" }, + [""] = { "hide", "fallback" }, + [""] = { "accept", "fallback" }, + + [""] = { "snippet_forward", "fallback" }, + [""] = { "snippet_backward", "fallback" }, + + [""] = { "select_prev", "fallback" }, + [""] = { "select_next", "fallback" }, + + [""] = { "scroll_documentation_up", "fallback" }, + [""] = { "scroll_documentation_down", "fallback" }, + }, + sources = { + providers = function() + local providerToEnable = { + "lsp", + "path", + "crates", + "snippets", + "buffer", + "ripgrep", + "emoji", + "nerdfont", + } + print("sources") + if use_google() then + table.insert(providerToEnable, "nvim_ciderlsp") + table.insert(providerToEnable, "buganizer") + else + table.insert(providerToEnable, "codeium") + end + return providerToEnable + end, + }, + providers = { + -- dont show LuaLS require statements when lazydev has items + lsp = { fallback_for = { "lazydev" } }, + lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, + ripgrep = { + module = "blink-ripgrep", + name = "Ripgrep", + -- the options below are optional, some default values are shown + ---@module "blink-ripgrep" + ---@type blink-ripgrep.Options + opts = { + prefix_min_len = 3, + context_size = 5, + max_filesize = "1M", + additional_rg_options = {}, + }, + }, + nvim_ciderlsp = { + name = "nvim_ciderlsp", + module = "blink.compat.source", + }, + buganizer = { + name = "nvim_buganizer", + module = "blink.compat.source", + }, + codeium = { + name = "codeium", + module = "blink.compat.source", + }, + }, + -- experimental signature help support + signature = { enabled = true }, + completion = { + trigger = { + show_on_x_blocked_trigger_characters = { "'", '"', "(", "{" }, + }, + menu = { + draw = { + -- columns = { { "label", "label_description", gap = 1 }, { "kind_icon", "kind" } }, + }, + }, + }, + }, + + -- allows extending the providers array elsewhere in your config + -- without having to redefine it + opts_extend = { "sources.default" }, + }, +} diff --git a/vim/.vim/lua/plugins/cmp.lua b/vim/.vim/lua/plugins/cmp.lua index 4326485..03ddbbe 100644 --- a/vim/.vim/lua/plugins/cmp.lua +++ b/vim/.vim/lua/plugins/cmp.lua @@ -1,22 +1,11 @@ local use_google = require("utils").use_google - -local function compare_by_ciderlsp_score(entry1, entry2) - if entry1.completion_item.score ~= nil and entry2.completion_item.score ~= nil then - print("LSP score " .. entry1.completion_item.score) - print("LSP score " .. entry2.completion_item.score) - return entry1.completion_item.score > entry2.completion_item.score - end -end - -local has_words_before = function() - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil -end +local flags = require("utils").flags return { { "hrsh7th/nvim-cmp", event = { "InsertEnter", "CmdlineEnter" }, + cond = not flags.blink, dependencies = { "Exafunction/codeium.nvim", "FelipeLema/cmp-async-path", diff --git a/vim/.vim/lua/plugins/dashboard.lua b/vim/.vim/lua/plugins/dashboard.lua index a25e7b8..1e66768 100644 --- a/vim/.vim/lua/plugins/dashboard.lua +++ b/vim/.vim/lua/plugins/dashboard.lua @@ -42,6 +42,6 @@ return { }, }) end, - keys = { { "", ":Dashboard" } }, + -- keys = { { "", ":Dashboard" } }, dependencies = { { "nvim-tree/nvim-web-devicons" } }, } diff --git a/vim/.vim/lua/plugins/lazydev.lua b/vim/.vim/lua/plugins/lazydev.lua new file mode 100644 index 0000000..72ebd73 --- /dev/null +++ b/vim/.vim/lua/plugins/lazydev.lua @@ -0,0 +1,11 @@ +return { + "folke/lazydev.nvim", + ft = "lua", -- only load on lua files + opts = { + library = { + -- See the configuration section for more details + -- Load luvit types when the `vim.uv` word is found + { path = "${3rd}/luv/library", words = { "vim%.uv" } }, + }, + }, +} diff --git a/vim/.vim/lua/plugins/lsp.lua b/vim/.vim/lua/plugins/lsp.lua index 6886160..db6ad38 100644 --- a/vim/.vim/lua/plugins/lsp.lua +++ b/vim/.vim/lua/plugins/lsp.lua @@ -1,4 +1,5 @@ local use_google = require("utils").use_google +local flags = require("utils").flags return { { @@ -21,7 +22,7 @@ return { }, { "kosayoda/nvim-lightbulb", - commit = "1cae7b7153ae98dcf1b11173a443ac1b6d8e3d49", + commit = "1cae7b7153ae98dcf1b11173a443ac1b6d8e3d49", event = { "LspAttach" }, opts = { autocmd = { enabled = true }, @@ -66,8 +67,9 @@ return { }, -- cond = not use_google(), config = function() - local capabilities = - require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) + local capabilities = flags.blink + and require("blink.cmp").get_lsp_capabilities(vim.lsp.protocol.make_client_capabilities()) + or require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) capabilities.offsetEncoding = { "utf-16" } require("go").setup({ lsp_cfg = { capabilities = capabilities }, @@ -87,7 +89,6 @@ return { group = format_sync_grp, }) end, - event = { "CmdlineEnter" }, ft = { "go", "gomod" }, build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries }, @@ -118,11 +119,9 @@ return { local lsp_status = require("lsp-status") lsp_status.register_progress() - vim.opt.spell = true - vim.opt.spelllang = { "en_us" } - - local capabilities = - require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) + local capabilities = flags.blink + and require("blink.cmp").get_lsp_capabilities(vim.lsp.protocol.make_client_capabilities()) + or require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) capabilities = vim.tbl_extend("keep", capabilities or {}, lsp_status.capabilities) capabilities.offsetEncoding = { "utf-16" } diff --git a/vim/.vim/lua/plugins/mason.lua b/vim/.vim/lua/plugins/mason.lua index cdae74e..67c3c61 100644 --- a/vim/.vim/lua/plugins/mason.lua +++ b/vim/.vim/lua/plugins/mason.lua @@ -23,7 +23,6 @@ return { TableConcat(lsps, { "pyright", "omnisharp_mono", - "tsserver", "docker_compose_language_service", "dockerls", "graphql", diff --git a/vim/.vim/lua/plugins/neodev.lua b/vim/.vim/lua/plugins/neodev.lua deleted file mode 100644 index a0b1d79..0000000 --- a/vim/.vim/lua/plugins/neodev.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "folke/neodev.nvim", - config = function() - require("neodev").setup({ - library = { plugins = { "nvim-dap-ui" }, types = true }, - }) - end, -} diff --git a/vim/.vim/lua/plugins/neoscopes.lua b/vim/.vim/lua/plugins/neoscopes.lua deleted file mode 100644 index fe0f122..0000000 --- a/vim/.vim/lua/plugins/neoscopes.lua +++ /dev/null @@ -1,23 +0,0 @@ -return { - "smartpde/neoscopes", - config = function() - require("neoscopes").setup({ - scopes = { - { - name = "earlycheckin", - dirs = { - "java/com/google/android/gmscore/tools/earlycheckin/", - "javatests/com/google/android/gmscore/tools/earlycheckin/", - }, - }, - { name = "experimental", dirs = { "experimental/users/cnieves" } }, - }, - -- add_dirs_to_all_scopes = { - -- "~/dotfiles", - -- }, - }) - - local scopes = require("neoscopes") - scopes.add_startup_scope() - end, -} diff --git a/vim/.vim/lua/plugins/scroll.lua b/vim/.vim/lua/plugins/scroll.lua index 0356b7f..d7ff64c 100644 --- a/vim/.vim/lua/plugins/scroll.lua +++ b/vim/.vim/lua/plugins/scroll.lua @@ -1,18 +1,4 @@ return { - -- { - -- "dstein64/nvim-scrollview", - -- config = function() - -- require("scrollview").setup({ - -- excluded_filetypes = { "nerdtree" }, - -- current_only = true, - -- -- base = "buffer", - -- -- column = 80, - -- signs_on_startup = { "all" }, - -- diagnostics_severities = { vim.diagnostic.severity.ERROR }, - -- }) - -- end, - -- }, - { "petertriho/nvim-scrollbar", config = function() @@ -30,22 +16,4 @@ return { end, lazy = false, }, - -- { - -- "kevinhwang91/nvim-hlslens", - -- config = function() - -- require("hlslens").setup({ - -- nearest_only = true, - -- build_position_cb = function(plist, _, _, _) - -- require("scrollbar.handlers.search").handler.show(plist.start_pos) - -- end, - -- }) - -- - -- vim.cmd([[ - -- augroup scrollbar_search_hide - -- autocmd! - -- autocmd CmdlineLeave : lua require('scrollbar.handlers.search').handler.hide() - -- augroup END - -- ]]) - -- end, - -- }, } diff --git a/vim/.vim/lua/plugins/telescope.lua b/vim/.vim/lua/plugins/telescope.lua index b37d5aa..2c2a7f8 100644 --- a/vim/.vim/lua/plugins/telescope.lua +++ b/vim/.vim/lua/plugins/telescope.lua @@ -1,41 +1,39 @@ local use_google = require("utils").use_google local exec = require("utils").exec local TableConcat = require("utils").TableConcat -local scopes = require("neoscopes") _G.find_files = function(search_dirs) - require("telescope.builtin").find_files({ search_dirs = search_dirs, }) + require("telescope.builtin").find_files({ search_dirs = search_dirs }) end -- Helper functions to fetch the current scope and set `search_dirs` -_G.find_dotfiles = function() -end +_G.find_dotfiles = function() end _G.search_cwd = function() - local builtin = require("telescope.builtin") - local utils = require("telescope.utils") - builtin.find_files({ cwd = utils.buffer_dir() }) + local builtin = require("telescope.builtin") + local utils = require("telescope.utils") + builtin.find_files({ cwd = utils.buffer_dir() }) end _G.live_grep = function(search_dirs) - require("telescope.builtin").live_grep({ - search_dirs = search_dirs, - }) + require("telescope.builtin").live_grep({ + search_dirs = search_dirs, + }) end _G.live_grep_cword = function(search_dirs) - require("telescope.builtin").live_grep({ search_dirs = search_dirs, }) + require("telescope.builtin").live_grep({ search_dirs = search_dirs }) end local function exe(cmd) - return vim.split(vim.fn.system(cmd), "\n") + return vim.split(vim.fn.system(cmd), "\n") end function fig_modified() - return exe("hg pstatus -ma -n --no-status --template= | sort") + return exe("hg pstatus -ma -n --no-status --template= | sort") end function fig_all_modified() - return exe("hg status -ma -n --rev p4base --no-status --template= | sort") + return exe("hg status -ma -n --rev p4base --no-status --template= | sort") end -- stylua: ignore @@ -63,8 +61,8 @@ local keys = { } if use_google() then - local find_files = require("telescope.builtin").find_files - local cs_query = require("telescope").extensions.codesearch.find_query + local find_files = require("telescope.builtin").find_files + local cs_query = require("telescope").extensions.codesearch.find_query -- stylua: ignore TableConcat(keys, { { "tm", function() find_files({ search_dirs = fig_modified() }) end, desc = "list modified Fig files." }, @@ -79,144 +77,144 @@ if use_google() then end return { - { - "aznhe21/actions-preview.nvim", - config = function() - require("actions-preview").setup({ - telescope = { - sorting_strategy = "ascending", - layout_strategy = "vertical", - layout_config = { - width = 0.8, - height = 0.9, - prompt_position = "top", - preview_cutoff = 20, - preview_height = function(_, _, max_lines) - return max_lines - 15 - end, - }, - }, - }) - end, - keys = { - { "?", "lua require('actions-preview').code_actions()" }, - }, - }, - { - "smartpde/telescope-recent-files", - config = function() - require("telescope").load_extension("recent_files") - end, - keys = { - { "to", [[lua require('telescope').extensions.recent_files.pick()]] }, - }, - }, - { - "piersolenski/telescope-import.nvim", - dependencies = "nvim-telescope/telescope.nvim", - config = function() - require("telescope").load_extension("import") - end, - keys = function() - if not use_google() then - return { - { "i", ":Telescope import" }, - } - end - end, - }, - { - "nvim-telescope/telescope.nvim", - dependencies = { - "mfussenegger/nvim-dap", - "smartpde/telescope-recent-files", - "rcarriga/nvim-dap-ui", - }, - config = function() - require("telescope").setup({ - defaults = { - -- The vertical layout strategy is good to handle long paths like those in - -- google3 repos because you have nearly the full screen to display a file path. - -- The caveat is that the preview area is smaller. - layout_strategy = "vertical", - -- Common paths in google3 repos are collapsed following the example of Cider - -- It is nice to keep this as a user config rather than part of - -- telescope-codesearch because it can be reused by other telescope pickers. - path_display = function(opts, path) - -- Do common substitutions - path = path:gsub("^/google/src/cloud/[^/]+/[^/]+/google3/", "google3/", 1) - path = path:gsub("^google3/java/com/google/", "//j/c/g/", 1) - path = path:gsub("^google3/javatests/com/google/", "//jt/c/g/", 1) - path = path:gsub("^google3/third_party/", "//3p/", 1) - path = path:gsub("^google3/", "//", 1) + { + "aznhe21/actions-preview.nvim", + config = function() + require("actions-preview").setup({ + telescope = { + sorting_strategy = "ascending", + layout_strategy = "vertical", + layout_config = { + width = 0.8, + height = 0.9, + prompt_position = "top", + preview_cutoff = 20, + preview_height = function(_, _, max_lines) + return max_lines - 15 + end, + }, + }, + }) + end, + keys = { + { "?", "lua require('actions-preview').code_actions()" }, + }, + }, + { + "smartpde/telescope-recent-files", + config = function() + require("telescope").load_extension("recent_files") + end, + keys = { + { "to", [[lua require('telescope').extensions.recent_files.pick()]] }, + }, + }, + { + "piersolenski/telescope-import.nvim", + dependencies = "nvim-telescope/telescope.nvim", + config = function() + require("telescope").load_extension("import") + end, + keys = function() + if not use_google() then + return { + { "i", ":Telescope import" }, + } + end + end, + }, + { + "nvim-telescope/telescope.nvim", + dependencies = { + "mfussenegger/nvim-dap", + "smartpde/telescope-recent-files", + "rcarriga/nvim-dap-ui", + }, + config = function() + require("telescope").setup({ + defaults = { + -- The vertical layout strategy is good to handle long paths like those in + -- google3 repos because you have nearly the full screen to display a file path. + -- The caveat is that the preview area is smaller. + layout_strategy = "vertical", + -- Common paths in google3 repos are collapsed following the example of Cider + -- It is nice to keep this as a user config rather than part of + -- telescope-codesearch because it can be reused by other telescope pickers. + path_display = function(opts, path) + -- Do common substitutions + path = path:gsub("^/google/src/cloud/[^/]+/[^/]+/google3/", "google3/", 1) + path = path:gsub("^google3/java/com/google/", "//j/c/g/", 1) + path = path:gsub("^google3/javatests/com/google/", "//jt/c/g/", 1) + path = path:gsub("^google3/third_party/", "//3p/", 1) + path = path:gsub("^google3/", "//", 1) - -- Do truncation. This allows us to combine our custom display formatter - -- with the built-in truncation. - -- `truncate` handler in transform_path memoizes computed truncation length in opts.__length. - -- Here we are manually propagating this value between new_opts and opts. - -- We can make this cleaner and more complicated using metatables :) - local new_opts = { - path_display = { - truncate = true, - }, - __length = opts.__length, - } - path = require("telescope.utils").transform_path(new_opts, path) - opts.__length = new_opts.__length - return path - end, - mappings = { - n = { - [""] = "close", - [""] = "close", - }, - i = { - -- [""] = function(bufnr) - -- require("telescope.actions.set").edit(bufnr, "tab drop") - -- end, - [""] = "close", - [""] = "close", - [""] = "cycle_history_next", - [""] = "cycle_history_prev", - }, - }, - }, - extensions = { - codesearch = { - experimental = true, -- enable results from google3/experimental - }, - recent_files = { - -- This function rewrites all file paths to the current workspace. - -- For example, if w2 is the current workspace, then - -- /google/.../w1/google3/my_file.cc becomes /google/.../w2/google3/my_file.cc, - transform_file_path = function(path) - local neocitc = require("neocitc") - local path_func = neocitc.path_in_current_workspace_or_head - or neocitc.path_in_current_workspace - return path_func(path) - end, - -- This is a useful option to speed up Telescope by avoiding the check - -- for file existence. - stat_files = false, - -- Ignore common patterns that can show up from other google plugins - ignore_patterns = { - "/%.git/COMMIT_EDITING$", - "/%.git/COMMIT_EDITMSG$", - "/%.git/MERGE_MSG$", - "^/tmp/%.pipertmp-", - "/Related_Files$", - "^term:", - ";#toggleterm#", - }, - }, - persisted = {}, - import = { - -- Add imports to the top of the file keeping the cursor in place - insert_at_top = true, - }, - }, - }) - end, - keys = keys, - }, + -- Do truncation. This allows us to combine our custom display formatter + -- with the built-in truncation. + -- `truncate` handler in transform_path memoizes computed truncation length in opts.__length. + -- Here we are manually propagating this value between new_opts and opts. + -- We can make this cleaner and more complicated using metatables :) + local new_opts = { + path_display = { + truncate = true, + }, + __length = opts.__length, + } + path = require("telescope.utils").transform_path(new_opts, path) + opts.__length = new_opts.__length + return path + end, + mappings = { + n = { + [""] = "close", + [""] = "close", + }, + i = { + -- [""] = function(bufnr) + -- require("telescope.actions.set").edit(bufnr, "tab drop") + -- end, + [""] = "close", + [""] = "close", + [""] = "cycle_history_next", + [""] = "cycle_history_prev", + }, + }, + }, + extensions = { + codesearch = { + experimental = true, -- enable results from google3/experimental + }, + recent_files = { + -- This function rewrites all file paths to the current workspace. + -- For example, if w2 is the current workspace, then + -- /google/.../w1/google3/my_file.cc becomes /google/.../w2/google3/my_file.cc, + transform_file_path = function(path) + local neocitc = require("neocitc") + local path_func = neocitc.path_in_current_workspace_or_head + or neocitc.path_in_current_workspace + return path_func(path) + end, + -- This is a useful option to speed up Telescope by avoiding the check + -- for file existence. + stat_files = false, + -- Ignore common patterns that can show up from other google plugins + ignore_patterns = { + "/%.git/COMMIT_EDITING$", + "/%.git/COMMIT_EDITMSG$", + "/%.git/MERGE_MSG$", + "^/tmp/%.pipertmp-", + "/Related_Files$", + "^term:", + ";#toggleterm#", + }, + }, + persisted = {}, + import = { + -- Add imports to the top of the file keeping the cursor in place + insert_at_top = true, + }, + }, + }) + end, + keys = keys, + }, } diff --git a/vim/.vim/lua/utils.lua b/vim/.vim/lua/utils.lua index 594c76b..8689ef8 100644 --- a/vim/.vim/lua/utils.lua +++ b/vim/.vim/lua/utils.lua @@ -1,99 +1,102 @@ local M = { - use_google_cache = nil, + use_google_cache = nil, + flags = { + blink = false, + }, } function M.exec(command, args) - local Job = require("plenary.job") - local job = Job:new({ - command = command, - args = args, - }) - job:sync() - job:wait() - return job:result() + local Job = require("plenary.job") + local job = Job:new({ + command = command, + args = args, + }) + job:sync() + job:wait() + return job:result() end function M.map(mode, lhs, rhs, opts) - local options = { noremap = true } - if opts then - options = vim.tbl_extend("force", options, opts) - end - -- vim.api.nvim_set_keymap(mode, lhs, rhs, options) - vim.keymap.set(mode, lhs, rhs, options) + local options = { noremap = true } + if opts then + options = vim.tbl_extend("force", options, opts) + end + -- vim.api.nvim_set_keymap(mode, lhs, rhs, options) + vim.keymap.set(mode, lhs, rhs, options) end function M.use_google() - if M.use_google_cache == nil then - M.use_google_cache = M.file_exists(os.getenv("HOME") .. "/use_google") - end - return M.use_google_cache + if M.use_google_cache == nil then + M.use_google_cache = M.file_exists(os.getenv("HOME") .. "/use_google") + end + return M.use_google_cache end function M.file_exists(name) - local f = io.open(name, "r") - if f ~= nil then - io.close(f) - return true - else - return false - end + local f = io.open(name, "r") + if f ~= nil then + io.close(f) + return true + else + return false + end end function M.dump(o) - if type(o) == "table" then - local s = "{ " - for k, v in pairs(o) do - if type(k) ~= "number" then - k = '"' .. k .. '"' - end - s = s .. "[" .. k .. "] = " .. M.dump(v) .. "," - end - return s .. "} " - else - return tostring(o) - end + if type(o) == "table" then + local s = "{ " + for k, v in pairs(o) do + if type(k) ~= "number" then + k = '"' .. k .. '"' + end + s = s .. "[" .. k .. "] = " .. M.dump(v) .. "," + end + return s .. "} " + else + return tostring(o) + end end function M.tprint(tbl, indent) - if not indent then - indent = 0 - end - local toprint = string.rep(" ", indent) .. "{\r\n" - indent = indent + 2 - for k, v in pairs(tbl) do - toprint = toprint .. string.rep(" ", indent) - if type(k) == "number" then - toprint = toprint .. "[" .. k .. "] = " - elseif type(k) == "string" then - toprint = toprint .. k .. "= " - end - if type(v) == "number" then - toprint = toprint .. v .. ",\r\n" - elseif type(v) == "string" then - toprint = toprint .. '"' .. v .. '",\r\n' - elseif type(v) == "table" then - toprint = toprint .. M.tprint(v, indent + 2) .. ",\r\n" - else - toprint = toprint .. '"' .. tostring(v) .. '",\r\n' - end - end - toprint = toprint .. string.rep(" ", indent - 2) .. "}" - return toprint + if not indent then + indent = 0 + end + local toprint = string.rep(" ", indent) .. "{\r\n" + indent = indent + 2 + for k, v in pairs(tbl) do + toprint = toprint .. string.rep(" ", indent) + if type(k) == "number" then + toprint = toprint .. "[" .. k .. "] = " + elseif type(k) == "string" then + toprint = toprint .. k .. "= " + end + if type(v) == "number" then + toprint = toprint .. v .. ",\r\n" + elseif type(v) == "string" then + toprint = toprint .. '"' .. v .. '",\r\n' + elseif type(v) == "table" then + toprint = toprint .. M.tprint(v, indent + 2) .. ",\r\n" + else + toprint = toprint .. '"' .. tostring(v) .. '",\r\n' + end + end + toprint = toprint .. string.rep(" ", indent - 2) .. "}" + return toprint end function M.log(message) - local log_file_path = vim.fn.expand("$HOME/nvim.log") - local log_file = io.open(log_file_path, "a") - io.output(log_file) - io.write(message .. "\n") - io.close(log_file) + local log_file_path = vim.fn.expand("$HOME/nvim.log") + local log_file = io.open(log_file_path, "a") + io.output(log_file) + io.write(message .. "\n") + io.close(log_file) end function M.TableConcat(t1, t2) - for i = 1, #t2 do - t1[#t1 + 1] = t2[i] - end - return t1 + for i = 1, #t2 do + t1[#t1 + 1] = t2[i] + end + return t1 end return M diff --git a/vim/.vimrc b/vim/.vimrc index 3f8df5a..fd7f9ac 100644 --- a/vim/.vimrc +++ b/vim/.vimrc @@ -8,13 +8,7 @@ set undofile set nobackup set formatoptions+=j set nowritebackup -au BufWritePre * let &bex = '@' . strftime("%F.%H:%M") - set termguicolors -let &t_8f = "\[38;2;%lu;%lu;%lum" -let &t_8b = "\[48;2;%lu;%lu;%lum" -let &t_AB="\e[48;5;%dm" -let &t_AF="\e[38;5;%dm" set laststatus=2 set cmdheight=1 @@ -43,8 +37,11 @@ set hlsearch " highlight matches set splitright " Puts new vsplit windows to the right of the current set splitbelow " Puts new split windows to the bottom of the current +" When set to a negative number from -1 to -100 this is used as the +" percentage of the window height. Thus -50 scrolls half the window +" height. set scrolljump=5 " Line to scroll when cursor leaves screen -set scrolloff=3 " Minimum lines to keep above and below cursor +" set scrolloff=3 " Minimum lines to keep above and below cursor set shortmess=A " disable swapg set shortmess+=O @@ -52,19 +49,10 @@ set modifiable set noscrollbind set expandtab -source ~/.vim/prefs/mappings.vim -source ~/.vim/prefs/leader.vim - set encoding=utf-8 - set t_Co=256 - let base16colorspace=256 set colorcolumn=100 - -if (has("termguicolors")) - set termguicolors -endif set background=dark let $NVIM_TUI_ENABLE_TRUE_COLOR=1 @@ -96,3 +84,8 @@ let g:loaded_remote_plugins = 1 filetype plugin indent on syntax on + +source ~/.vim/prefs/mappings.vim +source ~/.vim/prefs/leader.vim +source ~/.vim/prefs/mappings.vim +source ~/.vim/prefs/leader.vim