diff options
author | Gustaf Rydholm <gustaf.rydholm@gmail.com> | 2022-01-13 19:12:32 +0100 |
---|---|---|
committer | Gustaf Rydholm <gustaf.rydholm@gmail.com> | 2022-01-13 19:12:32 +0100 |
commit | 73a60f5ee71bb60265ec0c97be7531a5e7605d8c (patch) | |
tree | d46283a3d04285c5a5ead92d5bbb3b1fe424b736 /.config/nvim | |
parent | 19c1942757f07387b95db3ddbc39d9b561d5b51d (diff) |
Remove bloat nvim config
Diffstat (limited to '.config/nvim')
92 files changed, 0 insertions, 7045 deletions
diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore deleted file mode 100644 index 36647be..0000000 --- a/.config/nvim/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -plugin/ -tags* -.netrwhist -pythonpath.vim -nodepath.vim -autoload/plugged/* -vimspector-config/gadgets/* -session -wiki/ -pack/ -lua-language-server/ -site/ -package.json -package-lock.json -node_modules/ diff --git a/.config/nvim/.stylua.toml b/.config/nvim/.stylua.toml deleted file mode 100644 index 4c56db7..0000000 --- a/.config/nvim/.stylua.toml +++ /dev/null @@ -1,6 +0,0 @@ -column_width = 88 -line_endings = "Unix" -indent_type = "Spaces" -indent_width = 2 -quote_style = "AutoPreferDouble" -no_call_parentheses = true diff --git a/.config/nvim/README.md b/.config/nvim/README.md deleted file mode 100644 index 7f39a9b..0000000 --- a/.config/nvim/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Neovim - diff --git a/.config/nvim/colors/dark.vim b/.config/nvim/colors/dark.vim deleted file mode 100644 index 89c03d1..0000000 --- a/.config/nvim/colors/dark.vim +++ /dev/null @@ -1 +0,0 @@ -lua require("dark") diff --git a/.config/nvim/config.lua b/.config/nvim/config.lua deleted file mode 100644 index d622353..0000000 --- a/.config/nvim/config.lua +++ /dev/null @@ -1,166 +0,0 @@ --- general -options.format_on_save = true -options.colorscheme = "dark" -vim.opt.wrap = false - --- Keymappings -options.leader = "space" - -options.keys.normal_mode["<esc><esc>"] = "<cmd>nohlsearch<cr>" - --- LSP -options.lsp.diagnostics.virtual_text = false --- require("extra.json_schemas").setup() - --- After changing plugin config it is recommended to run :PackerCompile -options.builtin.autopairs.active = true -options.builtin.dashboard.active = true -options.builtin.terminal.active = true -options.builtin.telescope.active = true -options.builtin.bufferline.active = true -options.builtin.lualine.active = true -options.builtin.lualine.style = "dark" -options.builtin.project.patterns = { ".git" } - --- Whichkey -options.builtin.which_key.mappings.l.d = { "<cmd>TroubleToggle<cr>", "Diagnostics" } -options.builtin.which_key.mappings.l.R = { - "<cmd>TroubleToggle lsp_references<cr>", - "References", -} -options.builtin.which_key.mappings.l.o = { "<cmd>SymbolsOutline<cr>", "Outline" } -options.builtin.which_key.mappings.T.h = { - "<cmd>TSHighlightCapturesUnderCursor<cr>", - "Highlight", -} -options.builtin.which_key.mappings.T.p = { "<cmd>TSPlaygroundToggle<cr>", "Playground" } -options.builtin.which_key.mappings["z"] = { "<cmd>ZenMode<cr>", "Zen" } -options.builtin.which_key.mappings["r"] = { - name = "Replace", - r = { "<cmd>lua require('spectre').open()<cr>", "Replace" }, - w = { - "<cmd>lua require('spectre').open_visual({select_word=true})<cr>", - "Replace Word", - }, - f = { "<cmd>lua require('spectre').open_file_search()<cr>", "Replace Buffer" }, -} -options.builtin.which_key.mappings.f = { - "<cmd>lua require('lir.float').toggle()<cr>", - "Files", -} -options.builtin.which_key.mappings.v = { "<cmd>vsplit<cr>", "Vertical Split" } -options.builtin.which_key.mappings.h = { "<cmd>split<cr>", "Horizontal Split" } - --- options.builtin.nvimtree.auto_open = 0 - --- Treesitter -options.builtin.treesitter.ensure_installed = "maintained" -options.builtin.treesitter.autotag.enable = false -options.builtin.treesitter.playground.enable = false -options.builtin.treesitter.indent.disable = { "python" } - -options.builtin.which_key.mappings["z"] = { "<cmd>ZenMode<cr>", "Zen" } -options.builtin.which_key.mappings["r"] = { - name = "Replace", - r = { "<cmd>lua require('spectre').open()<cr>", "Replace" }, - w = { - "<cmd>lua require('spectre').open_visual({select_word=true})<cr>", - "Replace Word", - }, - f = { "<cmd>lua require('spectre').open_file_search()<cr>", "Replace Buffer" }, -} - -options.builtin.telescope.on_config_done = function() - local actions = require "telescope.actions" - options.builtin.telescope.defaults.mappings.i["<C-j>"] = actions.move_selection_next - options.builtin.telescope.defaults.mappings.i["<C-k>"] = - actions.move_selection_previous - options.builtin.telescope.defaults.mappings.i["<C-n>"] = actions.cycle_history_next - options.builtin.telescope.defaults.mappings.i["<C-p>"] = actions.cycle_history_prev -end - --- Extra plugings - -options.plugins = { - { - "folke/trouble.nvim", - cmd = "TroubleToggle", - }, - - { - "nvim-telescope/telescope-project.nvim", - event = "BufWinEnter", - setup = function() - vim.cmd [[packadd telescope.nvim]] - end, - }, - - { - "nacro90/numb.nvim", - event = "BufRead", - config = function() - require("extra.numb").config() - end, - }, - - { - "unblevable/quick-scope", - config = function() - require "extra.quickscope" - end, - }, - - { - "phaazon/hop.nvim", - event = "BufRead", - config = function() - require("extra.hop").config() - end, - }, - - { - "tamago324/lir.nvim", - config = function() - require "extra.lir" - end, - }, - - { - "norcalli/nvim-colorizer.lua", - config = function() - require("extra.colorizer").config() - end, - }, - - { - "windwp/nvim-spectre", - event = "BufRead", - config = function() - require("extra.spectre").config() - end, - }, - - { - "folke/zen-mode.nvim", - config = function() - require("extra.zen").config() - end, - }, - - { - "karb94/neoscroll.nvim", - config = function() - require("extra.neoscroll").config() - end, - }, - - { - "kevinhwang91/nvim-bqf", - event = "BufRead", - }, - - { - "sindrets/diffview.nvim", - event = "BufRead", - }, -} diff --git a/.config/nvim/ftdetect/nix.lua b/.config/nvim/ftdetect/nix.lua deleted file mode 100644 index a85bcfd..0000000 --- a/.config/nvim/ftdetect/nix.lua +++ /dev/null @@ -1 +0,0 @@ -vim.cmd [[ au BufRead,BufNewFile *.nix set filetype=nix ]] diff --git a/.config/nvim/ftdetect/zig.lua b/.config/nvim/ftdetect/zig.lua deleted file mode 100644 index 7edf1f6..0000000 --- a/.config/nvim/ftdetect/zig.lua +++ /dev/null @@ -1,4 +0,0 @@ -vim.cmd [[ - au BufRead,BufNewFile *.zig set filetype=zig - au BufRead,BufNewFile *.zir set filetype=zir -]] diff --git a/.config/nvim/ftplugin/json.lua b/.config/nvim/ftplugin/json.lua deleted file mode 100644 index a2047cd..0000000 --- a/.config/nvim/ftplugin/json.lua +++ /dev/null @@ -1,2 +0,0 @@ -local formatters = require "lsp.null-ls.formatters" -formatters.setup { { exe = "prettier", filetypes = { "json" } } } diff --git a/.config/nvim/ftplugin/lua.lua b/.config/nvim/ftplugin/lua.lua deleted file mode 100644 index 6e10a53..0000000 --- a/.config/nvim/ftplugin/lua.lua +++ /dev/null @@ -1,2 +0,0 @@ -local formatters = require "lsp.null-ls.formatters" -formatters.setup { { exe = "stylua", filetypes = { "lua" } } } diff --git a/.config/nvim/ftplugin/python.lua b/.config/nvim/ftplugin/python.lua deleted file mode 100644 index a725200..0000000 --- a/.config/nvim/ftplugin/python.lua +++ /dev/null @@ -1,4 +0,0 @@ -local formatters = require "lsp.null-ls.formatters" -local linters = require "lsp.null-ls.linters" -formatters.setup { { exe = "black", filetypes = { "python" } } } -linters.setup { { exe = "flake8", filetypes = { "python" } } } diff --git a/.config/nvim/ftplugin/sh.lua b/.config/nvim/ftplugin/sh.lua deleted file mode 100644 index 6fcc649..0000000 --- a/.config/nvim/ftplugin/sh.lua +++ /dev/null @@ -1,4 +0,0 @@ -local formatters = require "lsp.null-ls.formatters" -formatters.setup { - { exe = "shellcheck", args = { "--sverity", "error" }, filetypes = { "sh" } }, -} diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua deleted file mode 100644 index 1810297..0000000 --- a/.config/nvim/init.lua +++ /dev/null @@ -1,17 +0,0 @@ -require("bootstrap"):init() - -require("config"):load() - -local plugins = require "plugins" -require("plugin-loader").load { plugins, options.plugins } - -local Log = require "core.log" -Log:debug "Starting NeoVim" - -vim.g.colors_name = options.colorscheme -- Colorscheme must get called after plugins are loaded or it will break new installs. -vim.cmd("colorscheme " .. options.colorscheme) - -local commands = require "core.commands" -commands.load(commands.defaults) - -require("lsp").setup() diff --git a/.config/nvim/lsp-settings/jsonls.json b/.config/nvim/lsp-settings/jsonls.json deleted file mode 100644 index e69de29..0000000 --- a/.config/nvim/lsp-settings/jsonls.json +++ /dev/null diff --git a/.config/nvim/lsp-settings/pyright.json b/.config/nvim/lsp-settings/pyright.json deleted file mode 100644 index cc5a352..0000000 --- a/.config/nvim/lsp-settings/pyright.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "python.analysis.typeCheckingMode": "off" -} diff --git a/.config/nvim/lsp-settings/rust_analyzer.json b/.config/nvim/lsp-settings/rust_analyzer.json deleted file mode 100644 index 8130c24..0000000 --- a/.config/nvim/lsp-settings/rust_analyzer.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "rust-analyzer.lens.enable": true, - "rust-analyzer.lens.references": true -} diff --git a/.config/nvim/lsp-settings/terraformls.json b/.config/nvim/lsp-settings/terraformls.json deleted file mode 100644 index 050973c..0000000 --- a/.config/nvim/lsp-settings/terraformls.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "terraform-ls.experimentalFeatures": { - "validateOnSave": true - } -} diff --git a/.config/nvim/lua/bootstrap.lua b/.config/nvim/lua/bootstrap.lua deleted file mode 100644 index 4247f04..0000000 --- a/.config/nvim/lua/bootstrap.lua +++ /dev/null @@ -1,77 +0,0 @@ -local M = {} - ----Join path segments that were passed as input ----@return string -function _G.join_paths(...) - local path_sep = "/" - local result = table.concat({ ... }, path_sep) - return result -end - ----Get the full path to `$LUNARVIM_RUNTIME_DIR` ----@return string -function _G.get_runtime_dir() - -- when nvim is used directly - return vim.fn.stdpath "config" -end - ----Get the full path to `$LUNARVIM_CONFIG_DIR` ----@return string -function _G.get_config_dir() - return vim.fn.stdpath "config" -end - -function _G.get_data_dir() - return vim.fn.stdpath "data" -end - ----Get the full path to `$LUNARVIM_CACHE_DIR` ----@return string -function _G.get_cache_dir() - return vim.fn.stdpath "cache" -end - ----Initialize the `&runtimepath` variables and prepare for startup ----@return table -function M:init() - self.runtime_dir = get_runtime_dir() - self.config_dir = get_config_dir() - self.cache_path = get_cache_dir() - self.data_dir = get_data_dir() - self.repo_dir = join_paths(self.runtime_dir, "nvim") - - self.pack_dir = join_paths(self.data_dir, "site", "pack") - self.packer_install_dir = join_paths( - self.data_dir, - "site", - "pack", - "packer", - "start", - "packer.nvim" - ) - self.packer_cache_path = join_paths(self.config_dir, "plugin", "packer_compiled.lua") - vim.fn.mkdir(vim.fn.stdpath "cache", "p") - - local config = require "config" - config:init { - path = join_paths(self.config_dir, "config.lua"), - } - - require("plugin-loader"):init { - package_root = self.pack_dir, - install_path = self.packer_install_dir, - } - - return self -end - ----pulls the latest changes from github and, resets the startup cache -function M:update() - package.loaded["utils.hooks"] = nil - local _, hooks = pcall(require, "utils.hooks") - hooks.run_pre_update() - M:update_repo() - hooks.run_post_update() -end - -return M diff --git a/.config/nvim/lua/config/defaults.lua b/.config/nvim/lua/config/defaults.lua deleted file mode 100644 index 87ef57a..0000000 --- a/.config/nvim/lua/config/defaults.lua +++ /dev/null @@ -1,39 +0,0 @@ -return { - leader = "space", - colorscheme = "dark", - line_wrap_cursor_movement = true, - transparent_window = false, - format_on_save = { - ---@usage pattern string pattern used for the autocommand (Default: '*') - pattern = "*", - ---@usage timeout number timeout in ms for the format request (Default: 1000) - timeout = 1000, - }, - keys = {}, - - builtin = {}, - - plugins = { - -- use config.lua for this not put here - }, - - autocommands = {}, - lang = {}, - log = { - ---@usage can be { "trace", "debug", "info", "warn", "error", "fatal" }, - level = "warn", - viewer = { - ---@usage this will fallback on "less +F" if not found - cmd = "lnav", - layout_config = { - ---@usage direction = 'vertical' | 'horizontal' | 'window' | 'float', - direction = "horizontal", - open_mapping = "", - size = 40, - float_opts = {}, - }, - }, - -- currently disabled due to instabilities - override_notify = false, - }, -} diff --git a/.config/nvim/lua/config/init.lua b/.config/nvim/lua/config/init.lua deleted file mode 100644 index 63f4d0f..0000000 --- a/.config/nvim/lua/config/init.lua +++ /dev/null @@ -1,127 +0,0 @@ -local utils = require "utils" -local Log = require "core.log" - -local M = {} -local user_config_dir = get_config_dir() -local user_config_file = utils.join_paths(user_config_dir, "config.lua") - -local function apply_defaults(configs, defaults) - configs = configs or {} - return vim.tbl_deep_extend("keep", configs, defaults) -end - ----Get the full path to the user configuration file ----@return string -function M:get_user_config_path() - return user_config_file -end - ---- Initialize nvim default configuration --- Define options global variable -function M:init() - if vim.tbl_isempty(nvim or {}) then - options = vim.deepcopy(require "config.defaults") - local home_dir = vim.loop.os_homedir() - options.vsnip_dir = utils.join_paths(home_dir, ".config", "snippets") - options.database = { - save_location = utils.join_paths(home_dir, ".config", "lunarvim_db"), - auto_execute = 1, - } - end - - local builtins = require "core.builtins" - builtins.config { user_config_file = user_config_file } - - local settings = require "config.settings" - settings.load_options() - - local default_keymaps = require("keymappings").get_defaults() - options.keys = apply_defaults(options.keys, default_keymaps) - - local autocmds = require "core.autocmds" - options.autocommands = apply_defaults(options.autocommands, autocmds.load_augroups()) - - local lsp_config = require "lsp.config" - options.lsp = apply_defaults(options.lsp, vim.deepcopy(lsp_config)) - - local supported_languages = require "config.supported_languages" - require("lsp.manager").init_defaults(supported_languages) -end - -local function handle_deprecated_settings() - local function deprecation_notice(setting) - local in_headless = #vim.api.nvim_list_uis() == 0 - if in_headless then - return - end - - local msg = string.format( - "Deprecation notice: [%s] setting is no longer supported. See https://github.com/LunarVim/LunarVim#breaking-changes", - setting - ) - vim.schedule(function() - Log:warn(msg) - end) - end - - for lang, entry in pairs(options.lang) do - local deprecated_config = entry.formatters or entry.linters or {} - if not vim.tbl_isempty(deprecated_config) then - deprecation_notice(string.format("lang.%s", lang)) - end - end -end - ---- Override the configuration with a user provided one --- @param config_path The path to the configuration overrides -function M:load(config_path) - local autocmds = require "core.autocmds" - config_path = config_path or self.get_user_config_path() - local ok, err = pcall(dofile, config_path) - if not ok then - if utils.is_file(user_config_file) then - Log:warn("Invalid configuration: " .. err) - else - Log:warn(string.format("Unable to find configuration file [%s]", config_path)) - end - end - - handle_deprecated_settings() - - autocmds.define_augroups(options.autocommands) - - vim.g.mapleader = (options.leader == "space" and " ") or options.leader - require("keymappings").load(options.keys) - - local settings = require "config.settings" - settings.load_commands() -end - ---- Override the configuration with a user provided one --- @param config_path The path to the configuration overrides -function M:reload() - local core_modules = {} - for module, _ in pairs(package.loaded) do - if module:match "core" then - package.loaded[module] = nil - table.insert(core_modules, module) - end - end - - M:init() - M:load() - - local plugins = require "plugins" - local autocmds = require "core.autocmds" - autocmds.configure_format_on_save() - local plugin_loader = require "plugin-loader" - plugin_loader.cache_clear() - plugin_loader.load { plugins, options.plugins } - vim.cmd ":PackerInstall" - vim.cmd ":PackerCompile" - -- vim.cmd ":PackerClean" - require("lsp").setup() - Log:info "Reloaded configuration" -end - -return M diff --git a/.config/nvim/lua/config/settings.lua b/.config/nvim/lua/config/settings.lua deleted file mode 100644 index 4b5c340..0000000 --- a/.config/nvim/lua/config/settings.lua +++ /dev/null @@ -1,78 +0,0 @@ -local M = {} -local utils = require "utils" - -M.load_options = function() - local default_options = { - backup = false, -- creates a backup file - clipboard = "unnamedplus", -- allows neovim to access the system clipboard - cmdheight = 2, -- more space in the neovim command line for displaying messages - colorcolumn = "99999", -- fixes indentline for now - completeopt = { "menuone", "noselect" }, - conceallevel = 0, -- so that `` is visible in markdown files - fileencoding = "utf-8", -- the encoding written to a file - foldmethod = "manual", -- folding, set to "expr" for treesitter based folding - foldexpr = "", -- set to "nvim_treesitter#foldexpr()" for treesitter based folding - guifont = "monospace:h17", -- the font used in graphical neovim applications - hidden = true, -- required to keep multiple buffers and open multiple buffers - hlsearch = true, -- highlight all matches on previous search pattern - ignorecase = true, -- ignore case in search patterns - mouse = "a", -- allow the mouse to be used in neovim - pumheight = 10, -- pop up menu height - showmode = false, -- we don't need to see things like -- INSERT -- anymore - showtabline = 2, -- always show tabs - smartcase = true, -- smart case - smartindent = true, -- make indenting smarter again - splitbelow = true, -- force all horizontal splits to go below current window - splitright = true, -- force all vertical splits to go to the right of current window - swapfile = false, -- creates a swapfile - termguicolors = true, -- set term gui colors (most terminals support this) - timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds) - title = true, -- set the title of window to the value of the titlestring - -- opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to - undodir = utils.join_paths(get_cache_dir(), "undo"), -- set an undo directory - undofile = true, -- enable persistent undo - updatetime = 300, -- faster completion - writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited - expandtab = true, -- convert tabs to spaces - shiftwidth = 2, -- the number of spaces inserted for each indentation - tabstop = 2, -- insert 2 spaces for a tab - cursorline = true, -- highlight the current line - number = true, -- set numbered lines - relativenumber = true, -- set relative numbered lines - numberwidth = 4, -- set number column width to 2 {default 4} - signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time - wrap = false, -- display lines as one long line - spell = false, - spelllang = "en", - scrolloff = 8, -- is one of my fav - sidescrolloff = 8, - } --- VIM ONLY COMMANDS ---cmd "filetype plugin on"cmd('let &titleold="' .. TERMINAL .. '"')cmd "set inccommand=split"cmd "set iskeyword+=-" - - --- SETTINGS --- - - vim.opt.shortmess:append "c" - - for k, v in pairs(default_options) do - vim.opt[k] = v - end -end - -M.load_commands = function() - local cmd = vim.cmd - if options.line_wrap_cursor_movement then - cmd "set whichwrap+=<,>,[,],h,l" - end - - if options.transparent_window then - cmd "au ColorScheme * hi Normal ctermbg=none guibg=none" - cmd "au ColorScheme * hi SignColumn ctermbg=none guibg=none" - cmd "au ColorScheme * hi NormalNC ctermbg=none guibg=none" - cmd "au ColorScheme * hi MsgArea ctermbg=none guibg=none" - cmd "au ColorScheme * hi TelescopeBorder ctermbg=none guibg=none" - cmd "au ColorScheme * hi NvimTreeNormal ctermbg=none guibg=none" - cmd "au ColorScheme * hi EndOfBuffer ctermbg=none guibg=none" - cmd "let &fcs='eob: '" - end -end - -return M diff --git a/.config/nvim/lua/config/supported_languages.lua b/.config/nvim/lua/config/supported_languages.lua deleted file mode 100644 index db28df1..0000000 --- a/.config/nvim/lua/config/supported_languages.lua +++ /dev/null @@ -1,94 +0,0 @@ -return { - "asm", - "bash", - "beancount", - "bibtex", - "bicep", - "c", - "c_sharp", - "clojure", - "cmake", - "comment", - "commonlisp", - "cpp", - "crystal", - "cs", - "css", - "cuda", - "d", - "dart", - "dockerfile", - "dot", - "elixir", - "elm", - "emmet", - "erlang", - "fennel", - "fish", - "fortran", - "gdscript", - "glimmer", - "go", - "gomod", - "graphql", - "haskell", - "hcl", - "heex", - "html", - "java", - "javascript", - "javascriptreact", - "jsdoc", - "json", - "json5", - "jsonc", - "julia", - "kotlin", - "latex", - "ledger", - "less", - "lua", - "markdown", - "nginx", - "nix", - "ocaml", - "ocaml_interface", - "perl", - "php", - "pioasm", - "ps1", - "puppet", - "python", - "ql", - "query", - "r", - "regex", - "rst", - "ruby", - "rust", - "scala", - "scss", - "sh", - "solidity", - "sparql", - "sql", - "supercollider", - "surface", - "svelte", - "swift", - "tailwindcss", - "terraform", - "tex", - "tlaplus", - "toml", - "tsx", - "turtle", - "typescript", - "typescriptreact", - "verilog", - "vim", - "vue", - "yaml", - "yang", - "zig", -} diff --git a/.config/nvim/lua/core/autocmds.lua b/.config/nvim/lua/core/autocmds.lua deleted file mode 100644 index 046b7c0..0000000 --- a/.config/nvim/lua/core/autocmds.lua +++ /dev/null @@ -1,145 +0,0 @@ -local M = {} -local Log = require "core.log" - ---- Load the default set of autogroups and autocommands. -function M.load_augroups() - local user_config_file = require("config"):get_user_config_path() - - return { - _general_settings = { - { "FileType", "qf,help,man", "nnoremap <silent> <buffer> q :close<CR>" }, - { - "TextYankPost", - "*", - "lua require('vim.highlight').on_yank({higroup = 'Search', timeout = 200})", - }, - { - "BufWinEnter", - "dashboard", - "setlocal cursorline signcolumn=yes cursorcolumn number", - }, - { "BufWritePost", user_config_file, "lua require('config'):reload()" }, - { "FileType", "qf", "set nobuflisted" }, - -- { "VimLeavePre", "*", "set title set titleold=" }, - }, - _formatoptions = { - { - "BufWinEnter,BufRead,BufNewFile", - "*", - "setlocal formatoptions-=c formatoptions-=r formatoptions-=o", - }, - }, - _filetypechanges = { - { "BufWinEnter", ".tf", "setlocal filetype=terraform" }, - { "BufRead", "*.tf", "setlocal filetype=terraform" }, - { "BufNewFile", "*.tf", "setlocal filetype=terraform" }, - { "BufWinEnter", ".zsh", "setlocal filetype=sh" }, - { "BufRead", "*.zsh", "setlocal filetype=sh" }, - { "BufNewFile", "*.zsh", "setlocal filetype=sh" }, - }, - _git = { - { "FileType", "gitcommit", "setlocal wrap" }, - { "FileType", "gitcommit", "setlocal spell" }, - }, - _markdown = { - { "FileType", "markdown", "setlocal wrap" }, - { "FileType", "markdown", "setlocal spell" }, - }, - _buffer_bindings = { - { "FileType", "floaterm", "nnoremap <silent> <buffer> q :q<CR>" }, - }, - _auto_resize = { - -- will cause split windows to be resized evenly if main window is resized - { "VimResized", "*", "tabdo wincmd =" }, - }, - _general_lsp = { - { - "FileType", - "lspinfo,lsp-installer,null-ls-info", - "nnoremap <silent> <buffer> q :close<CR>", - }, - }, - custom_groups = {}, - } -end - -local get_format_on_save_opts = function() - local defaults = require("config.defaults").format_on_save - -- accept a basic boolean `format_on_save=true` - if type(options.format_on_save) ~= "table" then - return defaults - end - - return { - pattern = options.format_on_save.pattern or defaults.pattern, - timeout = options.format_on_save.timeout or defaults.timeout, - } -end - -function M.enable_format_on_save(opts) - local fmd_cmd = string.format( - ":silent lua vim.lsp.buf.formatting_sync({}, %s)", - opts.timeout_ms - ) - M.define_augroups { - format_on_save = { { "BufWritePre", opts.pattern, fmd_cmd } }, - } - Log:debug "enabled format-on-save" -end - -function M.disable_format_on_save() - M.remove_augroup "format_on_save" - Log:debug "disabled format-on-save" -end - -function M.configure_format_on_save() - if options.format_on_save then - if vim.fn.exists "#format_on_save#BufWritePre" == 1 then - M.remove_augroup "format_on_save" - Log:debug "reloading format-on-save configuration" - end - local opts = get_format_on_save_opts() - M.enable_format_on_save(opts) - else - M.disable_format_on_save() - end -end - -function M.toggle_format_on_save() - if vim.fn.exists "#format_on_save#BufWritePre" == 0 then - local opts = get_format_on_save_opts() - M.enable_format_on_save(opts) - else - M.disable_format_on_save() - end -end - -function M.remove_augroup(name) - if vim.fn.exists("#" .. name) == 1 then - vim.cmd("au! " .. name) - end -end - -function M.define_augroups(definitions) -- {{{1 - -- Create autocommand groups based on the passed definitions - -- - -- The key will be the name of the group, and each definition - -- within the group should have: - -- 1. Trigger - -- 2. Pattern - -- 3. Text - -- just like how they would normally be defined from Vim itself - for group_name, definition in pairs(definitions) do - vim.cmd("augroup " .. group_name) - vim.cmd "autocmd!" - - for _, def in pairs(definition) do - local command = table.concat(vim.tbl_flatten { "autocmd", def }, " ") - vim.cmd(command) - end - - vim.cmd "augroup END" - end -end - -return M diff --git a/.config/nvim/lua/core/autopairs.lua b/.config/nvim/lua/core/autopairs.lua deleted file mode 100644 index 0759fd6..0000000 --- a/.config/nvim/lua/core/autopairs.lua +++ /dev/null @@ -1,79 +0,0 @@ -local M = {} - -function M.config() - options.builtin.autopairs = { - active = true, - on_config_done = nil, - ---@usage -- modifies the function or method delimiter by filetypes - map_char = { - all = "(", - tex = "{", - }, - enable_check_bracket_line = false, - ---@usage check treesitter - check_ts = true, - ts_config = { - lua = { "string" }, - javascript = { "template_string" }, - java = false, - }, - } -end - -M.setup = function() - local autopairs = require "nvim-autopairs" - local Rule = require "nvim-autopairs.rule" - local cond = require "nvim-autopairs.conds" - - autopairs.setup { - check_ts = options.builtin.autopairs.check_ts, - enable_check_bracket_line = options.builtin.autopairs.enable_check_bracket_line, - ts_config = options.builtin.autopairs.ts_config, - } - - -- vim.g.completion_confirm_key = "" - - autopairs.add_rule(Rule("$$", "$$", "tex")) - autopairs.add_rules { - Rule("$", "$", { "tex", "latex" }) -- don't add a pair if the next character is % - :with_pair(cond.not_after_regex_check "%%") -- don't add a pair if the previous character is xxx - :with_pair(cond.not_before_regex_check("xxx", 3)) -- don't move right when repeat character - :with_move(cond.none()) -- don't delete if the next character is xx - :with_del(cond.not_after_regex_check "xx") -- disable add newline when press <cr> - :with_cr(cond.none()), - } - autopairs.add_rules { - Rule("$$", "$$", "tex"):with_pair(function(opts) - print(vim.inspect(opts)) - if opts.line == "aa $$" then - -- don't add pair on that line - return false - end - end), - } - - local cmp_status_ok, cmp = pcall(require, "cmp") - if cmp_status_ok then - -- If you want insert `(` after select function or method item - local cmp_autopairs = require "nvim-autopairs.completion.cmp" - local map_char = options.builtin.autopairs.map_char - cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = map_char }) - end - - require("nvim-treesitter.configs").setup { autopairs = { enable = true } } - - local ts_conds = require "nvim-autopairs.ts-conds" - - -- TODO: can these rules be safely added from "config.lua" ? - -- press % => %% is only inside comment or string - autopairs.add_rules { - Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node { "string", "comment" }), - Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node { "function" }), - } - - if options.builtin.autopairs.on_config_done then - options.builtin.autopairs.on_config_done(autopairs) - end -end - -return M diff --git a/.config/nvim/lua/core/bufferline.lua b/.config/nvim/lua/core/bufferline.lua deleted file mode 100644 index ebd7a64..0000000 --- a/.config/nvim/lua/core/bufferline.lua +++ /dev/null @@ -1,21 +0,0 @@ -local M = {} - -M.config = function() - options.builtin.bufferline = { - active = true, - on_config_done = nil, - keymap = { - normal_mode = {}, - }, - } -end - -M.setup = function() - require("keymappings").load(options.builtin.bufferline.keymap) - - if options.builtin.bufferline.on_config_done then - options.builtin.bufferline.on_config_done() - end -end - -return M diff --git a/.config/nvim/lua/core/builtins/init.lua b/.config/nvim/lua/core/builtins/init.lua deleted file mode 100644 index 10ce680..0000000 --- a/.config/nvim/lua/core/builtins/init.lua +++ /dev/null @@ -1,26 +0,0 @@ -local M = {} - -local builtins = { - "core.which-key", - "core.gitsigns", - "core.cmp", - "core.dashboard", - "core.terminal", - "core.telescope", - "core.treesitter", - "core.nvimtree", - "core.project", - "core.bufferline", - "core.autopairs", - "core.comment", - "core.lualine", -} - -function M.config(config) - for _, builtin_path in ipairs(builtins) do - local builtin = require(builtin_path) - builtin.config(config) - end -end - -return M diff --git a/.config/nvim/lua/core/cmp.lua b/.config/nvim/lua/core/cmp.lua deleted file mode 100644 index fe4119f..0000000 --- a/.config/nvim/lua/core/cmp.lua +++ /dev/null @@ -1,309 +0,0 @@ -local M = {} -M.methods = {} - ----checks if the character preceding the cursor is a space character ----@return boolean true if it is a space character, false otherwise -local check_backspace = function() - local col = vim.fn.col "." - 1 - return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" -end -M.methods.check_backspace = check_backspace - -local function T(str) - return vim.api.nvim_replace_termcodes(str, true, true, true) -end - ----wraps vim.fn.feedkeys while replacing key codes with escape codes ----Ex: feedkeys("<CR>", "n") becomes feedkeys("^M", "n") ----@param key string ----@param mode string -local function feedkeys(key, mode) - vim.fn.feedkeys(T(key), mode) -end -M.methods.feedkeys = feedkeys - ----checks if emmet_ls is available and active in the buffer ----@return boolean true if available, false otherwise -local is_emmet_active = function() - local clients = vim.lsp.buf_get_clients() - - for _, client in pairs(clients) do - if client.name == "emmet_ls" then - return true - end - end - return false -end -M.methods.is_emmet_active = is_emmet_active - ----when inside a snippet, seeks to the nearest luasnip field if possible, and checks if it is jumpable ----@param dir number 1 for forward, -1 for backward; defaults to 1 ----@return boolean true if a jumpable luasnip field is found while inside a snippet -local function jumpable(dir) - local luasnip_ok, luasnip = pcall(require, "luasnip") - if not luasnip_ok then - return - end - - local win_get_cursor = vim.api.nvim_win_get_cursor - local get_current_buf = vim.api.nvim_get_current_buf - - local function inside_snippet() - -- for outdated versions of luasnip - if not luasnip.session.current_nodes then - return false - end - - local node = luasnip.session.current_nodes[get_current_buf()] - if not node then - return false - end - - local snip_begin_pos, snip_end_pos = node.parent.snippet.mark:pos_begin_end() - local pos = win_get_cursor(0) - pos[1] = pos[1] - 1 -- LuaSnip is 0-based not 1-based like nvim for rows - return pos[1] >= snip_begin_pos[1] and pos[1] <= snip_end_pos[1] - end - - ---sets the current buffer's luasnip to the one nearest the cursor - ---@return boolean true if a node is found, false otherwise - local function seek_luasnip_cursor_node() - -- for outdated versions of luasnip - if not luasnip.session.current_nodes then - return false - end - - local pos = win_get_cursor(0) - pos[1] = pos[1] - 1 - local node = luasnip.session.current_nodes[get_current_buf()] - if not node then - return false - end - - local snippet = node.parent.snippet - local exit_node = snippet.insert_nodes[0] - - -- exit early if we're past the exit node - if exit_node then - local exit_pos_end = exit_node.mark:pos_end() - if - (pos[1] > exit_pos_end[1]) - or (pos[1] == exit_pos_end[1] and pos[2] > exit_pos_end[2]) - then - snippet:remove_from_jumplist() - luasnip.session.current_nodes[get_current_buf()] = nil - - return false - end - end - - node = snippet.inner_first:jump_into(1, true) - while node ~= nil and node.next ~= nil and node ~= snippet do - local n_next = node.next - local next_pos = n_next and n_next.mark:pos_begin() - local candidate = n_next ~= snippet and next_pos and (pos[1] < next_pos[1]) - or (pos[1] == next_pos[1] and pos[2] < next_pos[2]) - - -- Past unmarked exit node, exit early - if n_next == nil or n_next == snippet.next then - snippet:remove_from_jumplist() - luasnip.session.current_nodes[get_current_buf()] = nil - - return false - end - - if candidate then - luasnip.session.current_nodes[get_current_buf()] = node - return true - end - - local ok - ok, node = pcall(node.jump_from, node, 1, true) -- no_move until last stop - if not ok then - snippet:remove_from_jumplist() - luasnip.session.current_nodes[get_current_buf()] = nil - - return false - end - end - - -- No candidate, but have an exit node - if exit_node then - -- to jump to the exit node, seek to snippet - luasnip.session.current_nodes[get_current_buf()] = snippet - return true - end - - -- No exit node, exit from snippet - snippet:remove_from_jumplist() - luasnip.session.current_nodes[get_current_buf()] = nil - return false - end - - if dir == -1 then - return inside_snippet() and luasnip.jumpable(-1) - else - return inside_snippet() and seek_luasnip_cursor_node() and luasnip.jumpable() - end -end -M.methods.jumpable = jumpable - -M.config = function() - local status_cmp_ok, cmp = pcall(require, "cmp") - if not status_cmp_ok then - return - end - local status_luasnip_ok, luasnip = pcall(require, "luasnip") - if not status_luasnip_ok then - return - end - - options.builtin.cmp = { - confirm_opts = { - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }, - completion = { - ---@usage The minimum length of a word to complete on. - keyword_length = 1, - }, - experimental = { - ghost_text = true, - native_menu = false, - }, - formatting = { - fields = { "kind", "abbr", "menu" }, - kind_icons = { - Class = " ", - Color = " ", - Constant = "ﲀ ", - Constructor = " ", - Enum = "練", - EnumMember = " ", - Event = " ", - Field = " ", - File = "", - Folder = " ", - Function = " ", - Interface = "ﰮ ", - Keyword = " ", - Method = " ", - Module = " ", - Operator = "", - Property = " ", - Reference = " ", - Snippet = " ", - Struct = " ", - Text = " ", - TypeParameter = " ", - Unit = "塞", - Value = " ", - Variable = " ", - }, - source_names = { - nvim_lsp = "(LSP)", - path = "(Path)", - calc = "(Calc)", - cmp_tabnine = "(Tabnine)", - vsnip = "(Snippet)", - luasnip = "(Snippet)", - buffer = "(Buffer)", - }, - duplicates = { - buffer = 1, - path = 1, - nvim_lsp = 0, - luasnip = 1, - }, - duplicates_default = 0, - format = function(entry, vim_item) - vim_item.kind = options.builtin.cmp.formatting.kind_icons[vim_item.kind] - vim_item.menu = options.builtin.cmp.formatting.source_names[entry.source.name] - vim_item.dup = options.builtin.cmp.formatting.duplicates[entry.source.name] - or options.builtin.cmp.formatting.duplicates_default - return vim_item - end, - }, - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - end, - }, - documentation = { - border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, - }, - sources = { - { name = "nvim_lsp" }, - { name = "path" }, - { name = "luasnip" }, - { name = "cmp_tabnine" }, - { name = "nvim_lua" }, - { name = "buffer", keyword_length = 5 }, - { name = "calc" }, - { name = "treesitter" }, - { name = "crates" }, - }, - mapping = { - ["<C-k>"] = cmp.mapping.select_prev_item(), - ["<C-j>"] = cmp.mapping.select_next_item(), - ["<C-d>"] = cmp.mapping.scroll_docs(-4), - ["<C-f>"] = cmp.mapping.scroll_docs(4), - -- TODO: potentially fix emmet nonsense - ["<Tab>"] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expandable() then - luasnip.expand() - elseif jumpable() then - luasnip.jump(1) - elseif check_backspace() then - fallback() - elseif is_emmet_active() then - return vim.fn["cmp#complete"]() - else - fallback() - end - end, { - "i", - "s", - }), - ["<S-Tab>"] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { - "i", - "s", - }), - - ["<C-Space>"] = cmp.mapping.complete(), - ["<C-e>"] = cmp.mapping.abort(), - ["<CR>"] = cmp.mapping(function(fallback) - if cmp.visible() and cmp.confirm(options.builtin.cmp.confirm_opts) then - if jumpable() then - luasnip.jump(1) - end - return - end - - if jumpable() then - if not luasnip.jump(1) then - fallback() - end - else - fallback() - end - end), - }, - } -end - -M.setup = function() - require("cmp").setup(options.builtin.cmp) -end - -return M diff --git a/.config/nvim/lua/core/commands.lua b/.config/nvim/lua/core/commands.lua deleted file mode 100644 index bb22dea..0000000 --- a/.config/nvim/lua/core/commands.lua +++ /dev/null @@ -1,28 +0,0 @@ -local M = {} - -M.defaults = { - [[ - function! QuickFixToggle() - if empty(filter(getwininfo(), 'v:val.quickfix')) - copen - else - cclose - endif - endfunction - ]], - -- :NvimInfo - [[ command! NvimInfo lua require('core.info').toggle_popup(vim.bo.filetype) ]], - [[ command! NvimCacheReset lua require('utils.hooks').reset_cache() ]], - [[ command! NvimUpdate lua require('bootstrap').update() ]], - [[ command! NvimSyncCorePlugins lua require('plugin-loader'):sync_core_plugins() ]], - [[ command! NvimReload lua require('config'):reload() ]], - [[ command! NvimToggleFormatOnSave lua require('core.autocmds').toggle_format_on_save() ]], -} - -M.load = function(commands) - for _, command in ipairs(commands) do - vim.cmd(command) - end -end - -return M diff --git a/.config/nvim/lua/core/comment.lua b/.config/nvim/lua/core/comment.lua deleted file mode 100644 index f8d62c2..0000000 --- a/.config/nvim/lua/core/comment.lua +++ /dev/null @@ -1,71 +0,0 @@ -local M = {} - -function M.config() - local pre_hook = nil - if options.builtin.treesitter.context_commentstring.enable then - pre_hook = function(_ctx) - return require("ts_context_commentstring.internal").calculate_commentstring() - end - end - options.builtin.comment = { - active = true, - on_config_done = nil, - ---Add a space b/w comment and the line - ---@type boolean - padding = true, - - ---Lines to be ignored while comment/uncomment. - ---Could be a regex string or a function that returns a regex string. - ---Example: Use '^$' to ignore empty lines - ---@type string|function - ignore = "^$", - - ---Whether to create basic (operator-pending) and extra mappings for NORMAL/VISUAL mode - ---@type table - mappings = { - ---operator-pending mapping - ---Includes `gcc`, `gcb`, `gc[count]{motion}` and `gb[count]{motion}` - basic = true, - ---extended mapping - ---Includes `g>`, `g<`, `g>[count]{motion}` and `g<[count]{motion}` - extra = false, - }, - - ---LHS of line and block comment toggle mapping in NORMAL/VISUAL mode - ---@type table - toggler = { - ---line-comment toggle - line = "gcc", - ---block-comment toggle - block = "gbc", - }, - - ---LHS of line and block comment operator-mode mapping in NORMAL/VISUAL mode - ---@type table - opleader = { - ---line-comment opfunc mapping - line = "gc", - ---block-comment opfunc mapping - block = "gb", - }, - - ---Pre-hook, called before commenting the line - ---@type function|nil - pre_hook = pre_hook, - - ---Post-hook, called after commenting is done - ---@type function|nil - post_hook = nil, - } -end - -function M.setup() - local nvim_comment = require "Comment" - - nvim_comment.setup(options.builtin.comment) - if options.builtin.comment.on_config_done then - options.builtin.comment.on_config_done(nvim_comment) - end -end - -return M diff --git a/.config/nvim/lua/core/dashboard.lua b/.config/nvim/lua/core/dashboard.lua deleted file mode 100644 index 20edd22..0000000 --- a/.config/nvim/lua/core/dashboard.lua +++ /dev/null @@ -1,112 +0,0 @@ -local M = {} -local utils = require "utils" - -M.config = function(config) - options.builtin.dashboard = { - active = false, - on_config_done = nil, - search_handler = "telescope", - disable_at_vim_enter = 0, - session_directory = utils.join_paths(get_cache_dir(), "sessions"), - custom_header = { - " ##############..... ############## ", - " ##############......############## ", - " ##########..........########## ", - " ##########........########## ", - " ##########.......########## ", - " ##########.....##########.. ", - " ##########....##########..... ", - " ..##########..##########......... ", - " ....##########.#########............. ", - " ..################JJJ............ ", - " ################............. ", - " ##############.JJJ.JJJJJJJJJJ ", - " ############...JJ...JJ..JJ JJ ", - " ##########....JJ...JJ..JJ JJ ", - " ########......JJJ..JJJ JJJ JJJ ", - " ###### ......... ", - " ..... ", - " . ", - }, - - custom_section = { - a = { - description = { " Find File " }, - command = "Telescope find_files", - }, - b = { - description = { " New File " }, - command = ":ene!", - }, - c = { - description = { " Recent Projects " }, - command = "Telescope projects", - }, - d = { - description = { " Recently Used Files" }, - command = "Telescope oldfiles", - }, - e = { - description = { " Find Word " }, - command = "Telescope live_grep", - }, - f = { - description = { " Configuration " }, - command = ":e " .. config.user_config_file, - }, - }, - } -end - -M.setup = function() - vim.g.dashboard_disable_at_vimenter = options.builtin.dashboard.disable_at_vim_enter - - vim.g.dashboard_custom_header = options.builtin.dashboard.custom_header - - vim.g.dashboard_default_executive = options.builtin.dashboard.search_handler - - vim.g.dashboard_custom_section = options.builtin.dashboard.custom_section - - options.builtin.which_key.mappings[";"] = { "<cmd>Dashboard<CR>", "Dashboard" } - - vim.g.dashboard_session_directory = options.builtin.dashboard.session_directory - - local num_plugins_loaded = #vim.fn.globpath( - get_data_dir() .. "/site/pack/packer/start", - "*", - 0, - 1 - ) - - local footer = { - "nvim loaded " .. num_plugins_loaded .. " plugins ", - "", - } - - local text = require "interface.text" - vim.g.dashboard_custom_footer = text.align_center({ width = 0 }, footer, 0.49) -- Use 0.49 as counts for 2 characters - - require("core.autocmds").define_augroups { - _dashboard = { - -- seems to be nobuflisted that makes my stuff disappear will do more testing - { - "FileType", - "dashboard", - "setlocal nocursorline noswapfile synmaxcol& signcolumn=no norelativenumber nocursorcolumn nospell nolist nonumber bufhidden=wipe colorcolumn= foldcolumn=0 matchpairs= ", - }, - { - "FileType", - "dashboard", - "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=" - .. vim.opt.showtabline._value, - }, - { "FileType", "dashboard", "nnoremap <silent> <buffer> q :q<CR>" }, - }, - } - - if options.builtin.dashboard.on_config_done then - options.builtin.dashboard.on_config_done() - end -end - -return M diff --git a/.config/nvim/lua/core/gitsigns.lua b/.config/nvim/lua/core/gitsigns.lua deleted file mode 100644 index 97f5314..0000000 --- a/.config/nvim/lua/core/gitsigns.lua +++ /dev/null @@ -1,61 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - options.builtin.gitsigns = { - signs = { - add = { - hl = "GitSignsAdd", - text = "▎", - numhl = "GitSignsAddNr", - linehl = "GitSignsAddLn", - }, - change = { - hl = "GitSignsChange", - text = "▎", - numhl = "GitSignsChangeNr", - linehl = "GitSignsChangeLn", - }, - delete = { - hl = "GitSignsDelete", - text = "契", - numhl = "GitSignsDeleteNr", - linehl = "GitSignsDeleteLn", - }, - topdelete = { - hl = "GitSignsDelete", - text = "契", - numhl = "GitSignsDeleteNr", - linehl = "GitSignsDeleteLn", - }, - changedelete = { - hl = "GitSignsChange", - text = "▎", - numhl = "GitSignsChangeNr", - linehl = "GitSignsChangeLn", - }, - }, - numhl = false, - linehl = false, - keymaps = { - -- Default keymap options - noremap = true, - buffer = true, - }, - watch_gitdir = { interval = 1000 }, - sign_priority = 6, - update_debounce = 200, - status_formatter = nil, -- Use default - } -end - -M.setup = function() - local status_ok, gitsigns = pcall(require, "gitsigns") - if not status_ok then - Log:get_default().error "Failed to load gitsigns" - return - end - gitsigns.setup(options.builtin.gitsigns) -end - -return M diff --git a/.config/nvim/lua/core/info.lua b/.config/nvim/lua/core/info.lua deleted file mode 100644 index 646cf71..0000000 --- a/.config/nvim/lua/core/info.lua +++ /dev/null @@ -1,206 +0,0 @@ -local M = { - banner = { - "", - [[ _ ___ ]], - [[| | / (_)___ ___ ]], - [[| | / / / __ `__ \]], - [[| |/ / / / / / / /]], - [[|___/_/_/ /_/ /_/ ]], - }, -} - -local fmt = string.format -local text = require "interface.text" -local lsp_utils = require "lsp.utils" - -local function str_list(list) - return fmt("[ %s ]", table.concat(list, ", ")) -end - -local function make_formatters_info(ft) - local null_formatters = require "lsp.null-ls.formatters" - local registered_formatters = null_formatters.list_registered_providers(ft) - local supported_formatters = null_formatters.list_available(ft) - local section = { - "Formatters info", - fmt( - "* Active: %s%s", - table.concat(registered_formatters, " , "), - vim.tbl_count(registered_formatters) > 0 and " " or "" - ), - fmt("* Supported: %s", str_list(supported_formatters)), - } - - return section -end - -local function make_code_actions_info(ft) - local null_actions = require "lsp.null-ls.code_actions" - local registered_actions = null_actions.list_registered_providers(ft) - local supported_actions = null_actions.list_available(ft) - local section = { - "Code actions info", - fmt( - "* Active: %s%s", - table.concat(registered_actions, " , "), - vim.tbl_count(registered_actions) > 0 and " " or "" - ), - fmt("* Supported: %s", str_list(supported_actions)), - } - - return section -end - -local function make_linters_info(ft) - local null_linters = require "lsp.null-ls.linters" - local supported_linters = null_linters.list_available(ft) - local registered_linters = null_linters.list_registered_providers(ft) - local section = { - "Linters info", - fmt( - "* Active: %s%s", - table.concat(registered_linters, " , "), - vim.tbl_count(registered_linters) > 0 and " " or "" - ), - fmt("* Supported: %s", str_list(supported_linters)), - } - - return section -end - -local function tbl_set_highlight(terms, highlight_group) - for _, v in pairs(terms) do - vim.cmd('let m=matchadd("' .. highlight_group .. '", "' .. v .. "[ ,│']\")") - end -end - -local function make_client_info(client) - local client_enabled_caps = lsp_utils.get_client_capabilities(client.id) - local name = client.name - local id = client.id - local filetypes = lsp_utils.get_supported_filetypes(name) - local document_formatting = client.resolved_capabilities.document_formatting - local attached_buffers_list = table.concat( - vim.lsp.get_buffers_by_client_id(client.id), - ", " - ) - local client_info = { - fmt("* Name: %s", name), - fmt("* Id: [%s]", tostring(id)), - fmt("* filetype(s): [%s]", table.concat(filetypes, ", ")), - fmt("* Attached buffers: [%s]", tostring(attached_buffers_list)), - fmt("* Supports formatting: %s", tostring(document_formatting)), - } - if not vim.tbl_isempty(client_enabled_caps) then - local caps_text = "* Capabilities list: " - local caps_text_len = caps_text:len() - local enabled_caps = text.format_table(client_enabled_caps, 3, " | ") - enabled_caps = text.shift_right(enabled_caps, caps_text_len) - enabled_caps[1] = fmt("%s%s", caps_text, enabled_caps[1]:sub(caps_text_len + 1)) - vim.list_extend(client_info, enabled_caps) - end - - return client_info -end - -function M.toggle_popup(ft) - local clients = lsp_utils.get_active_clients_by_ft(ft) - local client_names = {} - local bufnr = vim.api.nvim_get_current_buf() - local ts_active_buffers = vim.tbl_keys(vim.treesitter.highlighter.active) - local is_treesitter_active = function() - local status = "inactive" - if vim.tbl_contains(ts_active_buffers, bufnr) then - status = "active" - end - return status - end - local header = { - fmt("Detected filetype: %s", ft), - fmt("Current buffer number: [%s]", bufnr), - } - - local ts_info = { - "Treesitter info", - fmt("* current buffer: %s", is_treesitter_active()), - fmt("* list: [%s]", table.concat(ts_active_buffers, ", ")), - } - - local lsp_info = { - "Language Server Protocol (LSP) info", - fmt "* Active server(s):", - } - - for _, client in pairs(clients) do - vim.list_extend(lsp_info, make_client_info(client)) - table.insert(client_names, client.name) - end - - local formatters_info = make_formatters_info(ft) - - local linters_info = make_linters_info(ft) - - local code_actions_info = make_code_actions_info(ft) - - local content_provider = function(popup) - local content = {} - - for _, section in ipairs { - M.banner, - { "" }, - { "" }, - header, - { "" }, - ts_info, - { "" }, - lsp_info, - { "" }, - formatters_info, - { "" }, - linters_info, - } do - vim.list_extend(content, section) - end - - return text.align_left(popup, content, 0.5) - end - - local function set_syntax_hl() - vim.cmd [[highlight NvimInfoIdentifier gui=bold]] - vim.cmd [[highlight link NvimInfoHeader Type]] - vim.cmd [[let m=matchadd("NvimInfoHeader", "Treesitter info")]] - vim.cmd [[let m=matchadd("NvimInfoHeader", "Language Server Protocol (LSP) info")]] - vim.cmd [[let m=matchadd("NvimInfoHeader", "Formatters info")]] - vim.cmd [[let m=matchadd("NvimInfoHeader", "Linters info")]] - vim.cmd [[let m=matchadd("NvimInfoHeader", "Code actions info")]] - vim.cmd('let m=matchadd("NvimInfoIdentifier", " ' .. ft .. '$")') - vim.cmd 'let m=matchadd("string", "true")' - vim.cmd 'let m=matchadd("string", "active")' - vim.cmd 'let m=matchadd("boolean", "inactive")' - vim.cmd 'let m=matchadd("string", "")' - vim.cmd 'let m=matchadd("error", "false")' - -- tbl_set_highlight(registered_providers, "NvimInfoIdentifier") - tbl_set_highlight( - require("lsp.null-ls.formatters").list_available(ft), - "NvimInfoIdentifier" - ) - tbl_set_highlight( - require("lsp.null-ls.linters").list_available(ft), - "NvimInfoIdentifier" - ) - tbl_set_highlight( - require("lsp.null-ls.code_actions").list_available(ft), - "NvimInfoIdentifier" - ) - end - - local Popup = require("interface.popup"):new { - win_opts = { number = false }, - buf_opts = { modifiable = false, filetype = "lspinfo" }, - } - Popup:display(content_provider) - set_syntax_hl() - - return Popup -end -return M diff --git a/.config/nvim/lua/core/log.lua b/.config/nvim/lua/core/log.lua deleted file mode 100644 index 815aeb1..0000000 --- a/.config/nvim/lua/core/log.lua +++ /dev/null @@ -1,127 +0,0 @@ -local Log = {} - -local logfile = string.format("%s/%s.log", get_cache_dir(), "nvim") - -Log.levels = { - TRACE = 1, - DEBUG = 2, - INFO = 3, - WARN = 4, - ERROR = 5, -} - -vim.tbl_add_reverse_lookup(Log.levels) - -function Log:init() - local status_ok, structlog = pcall(require, "structlog") - if not status_ok then - return nil - end - - local log_level = Log.levels[(options.log.level):upper() or "WARN"] - local nvim_log = { - nvim = { - sinks = { - structlog.sinks.Console(log_level, { - async = false, - processors = { - structlog.processors.Namer(), - structlog.processors.StackWriter( - { "line", "file" }, - { max_parents = 0, stack_level = 2 } - ), - structlog.processors.Timestamper "%H:%M:%S", - }, - formatter = structlog.formatters.FormatColorizer( -- - "%s [%-5s] %s: %-30s", - { "timestamp", "level", "logger_name", "msg" }, - { level = structlog.formatters.FormatColorizer.color_level() } - ), - }), - structlog.sinks.File(Log.levels.TRACE, logfile, { - processors = { - structlog.processors.Namer(), - structlog.processors.StackWriter( - { "line", "file" }, - { max_parents = 3, stack_level = 2 } - ), - structlog.processors.Timestamper "%H:%M:%S", - }, - formatter = structlog.formatters.Format( -- - "%s [%-5s] %s: %-30s", - { "timestamp", "level", "logger_name", "msg" } - ), - }), - }, - }, - } - - structlog.configure(nvim_log) - - local logger = structlog.get_logger "nvim" - - return logger -end - ---- Adds a log entry using Plenary.log ----@fparam msg any ----@param level string [same as vim.log.log_levels] -function Log:add_entry(level, msg, event) - if self.__handle then - self.__handle:log(level, vim.inspect(msg), event) - return - end - - local logger = self:init() - if not logger then - return - end - - self.__handle = logger - self.__handle:log(level, vim.inspect(msg), event) -end - ----Retrieves the path of the logfile ----@return string path of the logfile -function Log:get_path() - return logfile -end - ----Add a log entry at TRACE level ----@param msg any ----@param event any -function Log:trace(msg, event) - self:add_entry(self.levels.TRACE, msg, event) -end - ----Add a log entry at DEBUG level ----@param msg any ----@param event any -function Log:debug(msg, event) - self:add_entry(self.levels.DEBUG, msg, event) -end - ----Add a log entry at INFO level ----@param msg any ----@param event any -function Log:info(msg, event) - self:add_entry(self.levels.INFO, msg, event) -end - ----Add a log entry at WARN level ----@param msg any ----@param event any -function Log:warn(msg, event) - self:add_entry(self.levels.WARN, msg, event) -end - ----Add a log entry at ERROR level ----@param msg any ----@param event any -function Log:error(msg, event) - self:add_entry(self.levels.ERROR, msg, event) -end - -setmetatable({}, Log) - -return Log diff --git a/.config/nvim/lua/core/lualine/colors.lua b/.config/nvim/lua/core/lualine/colors.lua deleted file mode 100644 index f922d3f..0000000 --- a/.config/nvim/lua/core/lualine/colors.lua +++ /dev/null @@ -1,19 +0,0 @@ -local colors = { - bg = "#171717", - fg = "#D0D0D0", - grey = "#D0D0D0", - blue = "#569CD6", - green = "#608B4E", - yellow = "#DCDCAA", - orange = "#FF8800", - purple = "#C586C0", - magenta = "#D16D9E", - cyan = "#4EC9B0", - red = "#D16969", - error_red = "#F44747", - warning_orange = "#FF8800", - info_yellow = "#FFCC66", - hint_blue = "#9CDCFE", -} - -return colors diff --git a/.config/nvim/lua/core/lualine/components.lua b/.config/nvim/lua/core/lualine/components.lua deleted file mode 100644 index 42ec112..0000000 --- a/.config/nvim/lua/core/lualine/components.lua +++ /dev/null @@ -1,179 +0,0 @@ -local conditions = require "core.lualine.conditions" -local colors = require "core.lualine.colors" - -local function diff_source() - local gitsigns = vim.b.gitsigns_status_dict - if gitsigns then - return { - added = gitsigns.added, - modified = gitsigns.changed, - removed = gitsigns.removed, - } - end -end - -return { - mode = { - function() - local alias = { - n = "NORMAL", - i = "INSERT", - c = "COMMAND", - V = "VISUAL", - [""] = "VISUAL", - v = "VISUAL", - R = "REPLACE", - } - local alias_mode = alias[vim.fn.mode()] - if alias_mode == nil then - alias_mode = vim.fn.mode() - end - return alias_mode .. " " - -- return " " - end, - padding = { left = 0, right = 0 }, - cond = nil, - color = { fg = colors.fg, bg = colors.bg }, - }, - branch = { - "b:gitsigns_head", - icon = " ", - color = { gui = "bold", fg = colors.fg, bg = colors.bg }, - cond = conditions.hide_in_width, - }, - filename = { - "filename", - color = { fg = colors.fg, bg = colors.bg }, - cond = nil, - }, - diff = { - "diff", - source = diff_source, - symbols = { added = " ", modified = "柳", removed = " " }, - diff_color = { - added = { fg = colors.green }, - modified = { fg = colors.yellow }, - removed = { fg = colors.red }, - }, - color = {}, - cond = nil, - }, - python_env = { - function() - local utils = require "core.lualine.utils" - if vim.bo.filetype == "python" then - local venv = os.getenv "CONDA_DEFAULT_ENV" - if venv then - return string.format(" (%s)", utils.env_cleanup(venv)) - end - venv = os.getenv "VIRTUAL_ENV" - if venv then - return string.format(" (%s)", utils.env_cleanup(venv)) - end - return "" - end - return "" - end, - color = { fg = colors.green }, - cond = conditions.hide_in_width, - }, - diagnostics = { - "diagnostics", - sources = { "nvim_lsp" }, - symbols = { error = " ", warn = " ", info = " ", hint = " " }, - color = {}, - cond = conditions.hide_in_width, - }, - treesitter = { - function() - local b = vim.api.nvim_get_current_buf() - if next(vim.treesitter.highlighter.active[b]) then - return " " - end - return "" - end, - color = { fg = colors.green }, - cond = conditions.hide_in_width, - }, - lsp = { - function(msg) - msg = msg or "LS Inactive" - local buf_clients = vim.lsp.buf_get_clients() - if next(buf_clients) == nil then - if type(msg) == "boolean" or #msg == 0 then - return "LS Inactive" - end - return msg - end - local buf_ft = vim.bo.filetype - local buf_client_names = {} - - -- add client - for _, client in pairs(buf_clients) do - if client.name ~= "null-ls" then - table.insert(buf_client_names, client.name) - end - end - - -- add formatter - local formatters = require "lsp.null-ls.formatters" - local supported_formatters = formatters.list_registered_providers(buf_ft) - vim.list_extend(buf_client_names, supported_formatters) - - -- add linter - local linters = require "lsp.null-ls.linters" - local supported_linters = linters.list_registered_providers(buf_ft) - vim.list_extend(buf_client_names, supported_linters) - - return "[" .. table.concat(buf_client_names, ", ") .. "]" - end, - color = { fg = colors.fg, bg = colors.bg }, - cond = conditions.hide_in_width, - }, - location = { "location", cond = conditions.hide_in_width, color = {} }, - progress = { "progress", cond = conditions.hide_in_width, color = {} }, - spaces = { - function() - if not vim.api.nvim_buf_get_option(0, "expandtab") then - return "Tab size: " .. vim.api.nvim_buf_get_option(0, "tabstop") .. " " - end - local size = vim.api.nvim_buf_get_option(0, "shiftwidth") - if size == 0 then - size = vim.api.nvim_buf_get_option(0, "tabstop") - end - return "Spaces: " .. size .. " " - end, - color = {}, - cond = conditions.hide_in_width, - }, - encoding = { - "o:encoding", - fmt = string.upper, - color = { fg = colors.fg, bg = colors.bg }, - cond = conditions.hide_in_width, - }, - filetype = { "filetype", cond = conditions.hide_in_width, color = {} }, - scrollbar = { - function() - local current_line = vim.fn.line "." - local total_lines = vim.fn.line "$" - local chars = { - "__", - "▁▁", - "▂▂", - "▃▃", - "▄▄", - "▅▅", - "▆▆", - "▇▇", - "██", - } - local line_ratio = current_line / total_lines - local index = math.ceil(line_ratio * #chars) - return chars[index] - end, - padding = { left = 0, right = 0 }, - cond = nil, - color = { fg = colors.yellow, bg = colors.bg }, - }, -} diff --git a/.config/nvim/lua/core/lualine/conditions.lua b/.config/nvim/lua/core/lualine/conditions.lua deleted file mode 100644 index 6e120b2..0000000 --- a/.config/nvim/lua/core/lualine/conditions.lua +++ /dev/null @@ -1,17 +0,0 @@ -local window_width_limit = 70 - -local conditions = { - buffer_not_empty = function() - return vim.fn.empty(vim.fn.expand "%:t") ~= 1 - end, - hide_in_width = function() - return vim.fn.winwidth(0) > window_width_limit - end, - -- check_git_workspace = function() - -- local filepath = vim.fn.expand "%:p:h" - -- local gitdir = vim.fn.finddir(".git", filepath .. ";") - -- return gitdir and #gitdir > 0 and #gitdir < #filepath - -- end, -} - -return conditions diff --git a/.config/nvim/lua/core/lualine/init.lua b/.config/nvim/lua/core/lualine/init.lua deleted file mode 100644 index 7d67559..0000000 --- a/.config/nvim/lua/core/lualine/init.lua +++ /dev/null @@ -1,47 +0,0 @@ -local M = {} -M.config = function() - options.builtin.lualine = { - active = true, - style = "options", - options = { - icons_enabled = nil, - component_separators = nil, - section_separators = nil, - theme = nil, - disabled_filetypes = nil, - }, - sections = { - lualine_a = nil, - lualine_b = nil, - lualine_c = nil, - lualine_x = nil, - lualine_y = nil, - lualine_z = nil, - }, - inactive_sections = { - lualine_a = nil, - lualine_b = nil, - lualine_c = nil, - lualine_x = nil, - lualine_y = nil, - lualine_z = nil, - }, - tabline = nil, - extensions = nil, - on_config_done = nil, - } -end - -M.setup = function() - require("core.lualine.styles").update() - require("core.lualine.utils").validate_theme() - - local lualine = require "lualine" - lualine.setup(options.builtin.lualine) - - if options.builtin.lualine.on_config_done then - options.builtin.lualine.on_config_done(lualine) - end -end - -return M diff --git a/.config/nvim/lua/core/lualine/styles.lua b/.config/nvim/lua/core/lualine/styles.lua deleted file mode 100644 index 8caf349..0000000 --- a/.config/nvim/lua/core/lualine/styles.lua +++ /dev/null @@ -1,185 +0,0 @@ -local M = {} -local components = require "core.lualine.components" - -local styles = { - lvim = nil, - default = nil, - none = nil, - dark = nil, -} - -styles.dark = { - style = "dark", - options = { - icons_enabled = true, - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = { "dashboard", "NvimTree", "Outline" }, - }, - sections = { - lualine_a = { - components.mode, - }, - lualine_b = { - components.branch, - components.filename, - }, - lualine_c = { - components.diff, - components.python_env, - }, - lualine_x = { - components.diagnostics, - components.treesitter, - components.lsp, - components.filetype, - }, - lualine_y = {}, - lualine_z = { - components.location, - components.progress, - components.encoding, - }, - }, - inactive_sections = { - lualine_a = { - "filename", - }, - lualine_b = {}, - lualine_c = {}, - lualine_x = {}, - lualine_y = {}, - lualine_z = {}, - }, - tabline = {}, - extensions = { "nvim-tree" }, -} - -styles.none = { - style = "none", - options = { - icons_enabled = true, - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = {}, - }, - sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = {}, - lualine_x = {}, - lualine_y = {}, - lualine_z = {}, - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = {}, - lualine_x = {}, - lualine_y = {}, - lualine_z = {}, - }, - tabline = {}, - extensions = {}, -} - -styles.default = { - style = "default", - options = { - icons_enabled = true, - component_separators = { "", "" }, - section_separators = { "", "" }, - disabled_filetypes = {}, - }, - sections = { - lualine_a = { "mode" }, - lualine_b = { "branch" }, - lualine_c = { "filename" }, - lualine_x = { "encoding", "fileformat", "filetype" }, - lualine_y = { "progress" }, - lualine_z = { "location" }, - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = { "filename" }, - lualine_x = { "location" }, - lualine_y = {}, - lualine_z = {}, - }, - tabline = {}, - extensions = {}, -} - -styles.lvim = { - style = "lvim", - options = { - icons_enabled = true, - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = { "dashboard" }, - }, - sections = { - lualine_a = { - components.mode, - }, - lualine_b = { - components.branch, - components.filename, - }, - lualine_c = { - components.diff, - components.python_env, - }, - lualine_x = { - components.diagnostics, - components.treesitter, - components.lsp, - components.filetype, - }, - lualine_y = {}, - lualine_z = { - components.scrollbar, - }, - }, - inactive_sections = { - lualine_a = { - "filename", - }, - lualine_b = {}, - lualine_c = {}, - lualine_x = {}, - lualine_y = {}, - lualine_z = {}, - }, - tabline = {}, - extensions = { "nvim-tree" }, -} - -function M.get_style(style) - local style_keys = vim.tbl_keys(styles) - if not vim.tbl_contains(style_keys, style) then - local Log = require "core.log" - Log:error( - "Invalid lualine style", - string.format('"%s"', style), - "options are: ", - string.format('"%s"', table.concat(style_keys, '", "')) - ) - Log:debug '"lvim" style is applied.' - style = "lvim" - end - - return vim.deepcopy(styles[style]) -end - -function M.update() - local style = M.get_style(options.builtin.lualine.style) - if options.builtin.lualine.options.theme == nil then - options.builtin.lualine.options.theme = options.colorscheme - end - - options.builtin.lualine = vim.tbl_deep_extend("keep", options.builtin.lualine, style) -end - -return M diff --git a/.config/nvim/lua/core/lualine/utils.lua b/.config/nvim/lua/core/lualine/utils.lua deleted file mode 100644 index 48756a7..0000000 --- a/.config/nvim/lua/core/lualine/utils.lua +++ /dev/null @@ -1,27 +0,0 @@ -local M = {} - -function M.validate_theme() - local theme = options.builtin.lualine.options.theme - if type(theme) == "table" then - return - end - - local lualine_loader = require "lualine.utils.loader" - local ok = pcall(lualine_loader.load_theme, theme) - if not ok then - options.builtin.lualine.options.theme = "auto" - end -end - -function M.env_cleanup(venv) - if string.find(venv, "/") then - local final_venv = venv - for w in venv:gmatch "([^/]+)" do - final_venv = w - end - venv = final_venv - end - return venv -end - -return M diff --git a/.config/nvim/lua/core/nvimtree.lua b/.config/nvim/lua/core/nvimtree.lua deleted file mode 100644 index b525351..0000000 --- a/.config/nvim/lua/core/nvimtree.lua +++ /dev/null @@ -1,175 +0,0 @@ -local M = {} -local Log = require "core.log" - -function M.config() - options.builtin.nvimtree = { - active = true, - on_config_done = nil, - setup = { - disable_netrw = true, - hijack_netrw = true, - open_on_setup = false, - ignore_ft_on_setup = { - "startify", - "dashboard", - "alpha", - }, - update_to_buf_dir = { - enable = true, - auto_open = true, - }, - auto_close = true, - open_on_tab = false, - hijack_cursor = false, - update_cwd = false, - diagnostics = { - enable = true, - icons = { - hint = "", - info = "", - warning = "", - error = "", - }, - }, - update_focused_file = { - enable = true, - update_cwd = true, - ignore_list = {}, - }, - system_open = { - cmd = nil, - args = {}, - }, - git = { - enable = true, - ignore = true, - timeout = 200, - }, - view = { - width = 30, - height = 30, - side = "left", - auto_resize = true, - number = false, - relativenumber = false, - mappings = { - custom_only = false, - list = {}, - }, - }, - filters = { - dotfiles = true, - custom = { ".git", "node_modules", ".cache" }, - }, - }, - show_icons = { - git = 1, - folders = 1, - files = 1, - folder_arrows = 1, - tree_width = 30, - }, - quit_on_open = 0, - git_hl = 1, - disable_window_picker = 0, - root_folder_modifier = ":t", - icons = { - default = "", - symlink = "", - git = { - unstaged = "", - staged = "S", - unmerged = "", - renamed = "➜", - deleted = "", - untracked = "U", - ignored = "◌", - }, - folder = { - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - }, - }, - } - options.builtin.which_key.mappings["e"] = { "<cmd>NvimTreeToggle<CR>", "Explorer" } -end - -function M.setup() - local status_ok, nvim_tree_config = pcall(require, "nvim-tree.config") - if not status_ok then - Log:error "Failed to load nvim-tree.config" - return - end - local g = vim.g - - for opt, val in pairs(options.builtin.nvimtree) do - g["nvim_tree_" .. opt] = val - end - - -- Implicitly update nvim-tree when project module is active - if options.builtin.project.active then - options.builtin.nvimtree.respect_buf_cwd = 1 - options.builtin.nvimtree.setup.update_cwd = true - options.builtin.nvimtree.setup.disable_netrw = false - options.builtin.nvimtree.setup.hijack_netrw = false - vim.g.netrw_banner = false - end - - local tree_cb = nvim_tree_config.nvim_tree_callback - - if not options.builtin.nvimtree.setup.view.mappings.list then - options.builtin.nvimtree.setup.view.mappings.list = { - { key = { "l", "<CR>", "o" }, cb = tree_cb "edit" }, - { key = "h", cb = tree_cb "close_node" }, - { key = "v", cb = tree_cb "vsplit" }, - } - end - - local tree_view = require "nvim-tree.view" - - -- Add nvim_tree open callback - local open = tree_view.open - tree_view.open = function() - M.on_open() - open() - end - - vim.cmd "au WinClosed * lua require('core.nvimtree').on_close()" - - if options.builtin.nvimtree.on_config_done then - options.builtin.nvimtree.on_config_done(nvim_tree_config) - end - require("nvim-tree").setup(options.builtin.nvimtree.setup) -end - -function M.on_open() - if - package.loaded["bufferline.state"] - and options.builtin.nvimtree.setup.view.side == "left" - then - require("bufferline.state").set_offset( - options.builtin.nvimtree.setup.view.width + 1, - "" - ) - end -end - -function M.on_close() - local buf = tonumber(vim.fn.expand "<abuf>") - local ft = vim.api.nvim_buf_get_option(buf, "filetype") - if ft == "NvimTree" and package.loaded["bufferline.state"] then - require("bufferline.state").set_offset(0) - end -end - -function M.change_tree_dir(dir) - local lib_status_ok, lib = pcall(require, "nvim-tree.lib") - if lib_status_ok then - lib.change_dir(dir) - end -end - -return M diff --git a/.config/nvim/lua/core/project.lua b/.config/nvim/lua/core/project.lua deleted file mode 100644 index b2d4f5f..0000000 --- a/.config/nvim/lua/core/project.lua +++ /dev/null @@ -1,51 +0,0 @@ -local M = {} - -function M.config() - options.builtin.project = { - ---@usage set to false to disable project.nvim. - --- This is on by default since it's currently the expected behavior. - active = true, - - on_config_done = nil, - - ---@usage set to true to disable setting the current-woriking directory - --- Manual mode doesn't automatically change your root directory, so you have - --- the option to manually do so using `:ProjectRoot` command. - manual_mode = false, - - ---@usage Methods of detecting the root directory - --- Allowed values: **"lsp"** uses the native neovim lsp - --- **"pattern"** uses vim-rooter like glob pattern matching. Here - --- order matters: if one is not detected, the other is used as fallback. You - --- can also delete or rearangne the detection methods. - detection_methods = { "lsp", "pattern" }, - - ---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods - patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" }, - - ---@ Show hidden files in telescope when searching for files in a project - show_hidden = false, - - ---@usage When set to false, you will get a message when project.nvim changes your directory. - -- When set to false, you will get a message when project.nvim changes your directory. - silent_chdir = true, - - ---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... } - ignore_lsp = {}, - - ---@type string - ---@usage path to store the project history for use in telescope - datapath = get_cache_dir(), - } -end - -function M.setup() - local project = require "project_nvim" - - project.setup(options.builtin.project) - if options.builtin.project.on_config_done then - options.builtin.project.on_config_done(project) - end -end - -return M diff --git a/.config/nvim/lua/core/telescope.lua b/.config/nvim/lua/core/telescope.lua deleted file mode 100644 index 7ef2e58..0000000 --- a/.config/nvim/lua/core/telescope.lua +++ /dev/null @@ -1,159 +0,0 @@ -local M = {} - -function M.config() - -- Define this minimal config so that it's available if telescope is not yet available. - options.builtin.telescope = { - ---@usage disable telescope completely [not recommeded] - active = true, - on_config_done = nil, - } - - local status_ok, actions = pcall(require, "telescope.actions") - if not status_ok then - return - end - - options.builtin.telescope = vim.tbl_extend("force", options.builtin.telescope, { - defaults = { - prompt_prefix = " ", - selection_caret = " ", - entry_prefix = " ", - initial_mode = "insert", - selection_strategy = "reset", - sorting_strategy = "ascending", - layout_strategy = "horizontal", - layout_config = { - width = 0.75, - prompt_position = "top", - preview_cutoff = 120, - horizontal = { mirror = false }, - vertical = { mirror = false }, - }, - vimgrep_arguments = { - "rg", - "--color=never", - "--no-heading", - "--with-filename", - "--line-number", - "--column", - "--smart-case", - "--hidden", - }, - mappings = { - i = { - ["<C-n>"] = actions.move_selection_next, - ["<C-p>"] = actions.move_selection_previous, - ["<C-c>"] = actions.close, - ["<C-j>"] = actions.cycle_history_next, - ["<C-k>"] = actions.cycle_history_prev, - ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist, - ["<CR>"] = actions.select_default + actions.center, - }, - n = { - ["<C-n>"] = actions.move_selection_next, - ["<C-p>"] = actions.move_selection_previous, - ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist, - }, - }, - file_ignore_patterns = {}, - path_display = { shorten = 5 }, - winblend = 0, - border = {}, - borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, - color_devicons = true, - set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil, - pickers = { - find_files = { - find_command = { "fd", "--type=file", "--hidden", "--smart-case" }, - }, - live_grep = { - --@usage don't include the filename in the search results - only_sort_text = true, - }, - }, - }, - extensions = { - fzf = { - fuzzy = true, -- false will only do exact matching - override_generic_sorter = true, -- override the generic sorter - override_file_sorter = true, -- override the file sorter - case_mode = "smart_case", -- or "ignore_case" or "respect_case" - }, - }, - }) -end - -function M.code_actions() - local opts = { - winblend = 15, - layout_config = { - prompt_position = "top", - width = 80, - height = 12, - }, - borderchars = { - prompt = { "─", "│", " ", "│", "╭", "╮", "│", "│" }, - results = { "─", "│", "─", "│", "├", "┤", "╯", "╰" }, - preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, - }, - border = {}, - previewer = false, - shorten_path = false, - } - require("telescope.builtin").lsp_code_actions( - require("telescope.themes").get_dropdown(opts) - ) -end - -function M.setup() - local previewers = require "telescope.previewers" - local sorters = require "telescope.sorters" - local actions = require "telescope.actions" - - options.builtin.telescope = vim.tbl_extend("keep", { - file_previewer = previewers.vim_buffer_cat.new, - grep_previewer = previewers.vim_buffer_vimgrep.new, - qflist_previewer = previewers.vim_buffer_qflist.new, - file_sorter = sorters.get_fuzzy_file, - generic_sorter = sorters.get_generic_fuzzy_sorter, - ---@usage Mappings are fully customizable. Many familiar mapping patterns are setup as defaults. - mappings = { - i = { - ["<C-n>"] = actions.move_selection_next, - ["<C-p>"] = actions.move_selection_previous, - ["<C-c>"] = actions.close, - ["<C-j>"] = actions.cycle_history_next, - ["<C-k>"] = actions.cycle_history_prev, - ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist, - ["<CR>"] = actions.select_default + actions.center, - }, - n = { - ["<C-n>"] = actions.move_selection_next, - ["<C-p>"] = actions.move_selection_previous, - ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist, - }, - }, - }, options.builtin.telescope) - - local telescope = require "telescope" - - telescope.setup(options.builtin.telescope) - - if options.builtin.project.active then - pcall(function() - require("telescope").load_extension "projects" - end) - end - - if options.builtin.telescope.on_config_done then - options.builtin.telescope.on_config_done(telescope) - end - - if - options.builtin.telescope.extensions and options.builtin.telescope.extensions.fzf - then - require("telescope").load_extension "fzf" - end -end - -return M diff --git a/.config/nvim/lua/core/terminal.lua b/.config/nvim/lua/core/terminal.lua deleted file mode 100644 index 1a7b0bc..0000000 --- a/.config/nvim/lua/core/terminal.lua +++ /dev/null @@ -1,118 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - options.builtin["terminal"] = { - on_config_done = nil, - -- size can be a number or function which is passed the current terminal - size = 20, - -- open_mapping = [[<c-\>]], - open_mapping = [[<c-t>]], - hide_numbers = true, -- hide the number column in toggleterm buffers - shade_filetypes = {}, - shade_terminals = true, - shading_factor = 2, -- the degree by which to darken to terminal colour, default: 1 for dark backgrounds, 3 for light - start_in_insert = true, - insert_mappings = true, -- whether or not the open mapping applies in insert mode - persist_size = false, - -- direction = 'vertical' | 'horizontal' | 'window' | 'float', - direction = "float", - close_on_exit = true, -- close the terminal window when the process exits - shell = vim.o.shell, -- change the default shell - -- This field is only relevant if direction is set to 'float' - float_opts = { - -- The border key is *almost* the same as 'nvim_win_open' - -- see :h nvim_win_open for details on borders however - -- the 'curved' border is a custom border type - -- not natively supported but implemented in this plugin. - -- border = 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open - border = "curved", - -- width = <value>, - -- height = <value>, - winblend = 0, - highlights = { - border = "Normal", - background = "Normal", - }, - }, - -- Add executables on the config.lua - -- { exec, keymap, name} - -- options.builtin.terminal.execs = {{}} to overwrite - -- options.builtin.terminal.execs[#options.builtin.terminal.execs+1] = {"gdb", "tg", "GNU Debugger"} - execs = { - { "lazygit", "gg", "LazyGit" }, - }, - } -end - -M.setup = function() - local terminal = require "toggleterm" - for _, exec in pairs(options.builtin.terminal.execs) do - require("core.terminal").add_exec(exec[1], exec[2], exec[3]) - end - terminal.setup(options.builtin.terminal) - - if options.builtin.terminal.on_config_done then - options.builtin.terminal.on_config_done(terminal) - end -end - -M.add_exec = function(exec, keymap, name) - vim.api.nvim_set_keymap( - "n", - "<leader>" .. keymap, - "<cmd>lua require('core.terminal')._exec_toggle('" .. exec .. "')<CR>", - { noremap = true, silent = true } - ) - options.builtin.which_key.mappings[keymap] = name -end - -M._split = function(inputstr, sep) - if sep == nil then - sep = "%s" - end - local t = {} - for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do - table.insert(t, str) - end - return t -end - -M._exec_toggle = function(exec) - local binary = M._split(exec)[1] - if vim.fn.executable(binary) ~= 1 then - Log:error( - "Unable to run executable " - .. binary - .. ". Please make sure it is installed properly." - ) - return - end - local Terminal = require("toggleterm.terminal").Terminal - local exec_term = Terminal:new { cmd = exec, hidden = true } - exec_term:toggle() -end - ----Toggles a log viewer according to log.viewer.layout_config ----@param logfile string the fullpath to the logfile -M.toggle_log_view = function(logfile) - local log_viewer = options.log.viewer.cmd - if vim.fn.executable(log_viewer) ~= 1 then - log_viewer = "less +F" - end - log_viewer = log_viewer .. " " .. logfile - local term_opts = vim.tbl_deep_extend("force", options.builtin.terminal, { - cmd = log_viewer, - open_mapping = options.log.viewer.layout_config.open_mapping, - direction = options.log.viewer.layout_config.direction, - -- TODO: this might not be working as expected - size = options.log.viewer.layout_config.size, - float_opts = options.log.viewer.layout_config.float_opts, - }) - - local Terminal = require("toggleterm.terminal").Terminal - local log_view = Terminal:new(term_opts) - log_view:toggle() -end - -return M diff --git a/.config/nvim/lua/core/treesitter.lua b/.config/nvim/lua/core/treesitter.lua deleted file mode 100644 index b56c245..0000000 --- a/.config/nvim/lua/core/treesitter.lua +++ /dev/null @@ -1,94 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - options.builtin.treesitter = { - on_config_done = nil, - ensure_installed = {}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages - ignore_install = {}, - matchup = { - enable = false, -- mandatory, false will disable the whole extension - -- disable = { "c", "ruby" }, -- optional, list of language that will be disabled - }, - highlight = { - enable = true, -- false will disable the whole extension - additional_vim_regex_highlighting = true, - disable = { "latex" }, - }, - context_commentstring = { - enable = true, - config = { - -- Languages that have a single comment style - typescript = "// %s", - css = "/* %s */", - scss = "/* %s */", - html = "<!-- %s -->", - svelte = "<!-- %s -->", - vue = "<!-- %s -->", - json = "", - }, - }, - -- indent = {enable = true, disable = {"python", "html", "javascript"}}, - -- TODO seems to be broken - indent = { enable = true, disable = { "yaml" } }, - autotag = { enable = false }, - textobjects = { - swap = { - enable = false, - -- swap_next = textobj_swap_keymaps, - }, - -- move = textobj_move_keymaps, - select = { - enable = false, - -- keymaps = textobj_sel_keymaps, - }, - }, - textsubjects = { - enable = false, - keymaps = { ["."] = "textsubjects-smart", [";"] = "textsubjects-big" }, - }, - playground = { - enable = false, - disable = {}, - updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code - persist_queries = false, -- Whether the query persists across vim sessions - keybindings = { - toggle_query_editor = "o", - toggle_hl_groups = "i", - toggle_injected_languages = "t", - toggle_anonymous_nodes = "a", - toggle_language_display = "I", - focus_language = "f", - unfocus_language = "F", - update = "R", - goto_node = "<cr>", - show_help = "?", - }, - }, - rainbow = { - enable = false, - extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean - max_file_lines = 1000, -- Do not enable for files with more than 1000 lines, int - }, - } -end - -M.setup = function() - local status_ok, treesitter_configs = pcall(require, "nvim-treesitter.configs") - if not status_ok then - Log:get_default().error "Failed to load nvim-treesitter.configs" - return - end - - local opts = vim.deepcopy(options.builtin.treesitter) - - -- avoid running any installers in headless mode since it's harder to detect failures - opts.ensure_installed = #vim.api.nvim_list_uis() == 0 and {} or opts.ensure_installed - treesitter_configs.setup(opts) - - if options.builtin.treesitter.on_config_done then - options.builtin.treesitter.on_config_done(treesitter_configs) - end -end - -return M diff --git a/.config/nvim/lua/core/which-key.lua b/.config/nvim/lua/core/which-key.lua deleted file mode 100644 index 333ce6d..0000000 --- a/.config/nvim/lua/core/which-key.lua +++ /dev/null @@ -1,283 +0,0 @@ -local M = {} - -M.config = function() - options.builtin.which_key = { - ---@usage disable which-key completely [not recommeded] - active = true, - on_config_done = nil, - setup = { - plugins = { - marks = true, -- shows a list of your marks on ' and ` - registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode - -- the presets plugin, adds help for a bunch of default keybindings in Neovim - -- No actual key bindings are created - presets = { - operators = false, -- adds help for operators like d, y, ... - motions = false, -- adds help for motions - text_objects = false, -- help for text objects triggered after entering an operator - windows = true, -- default bindings on <c-w> - nav = true, -- misc bindings to work with windows - z = true, -- bindings for folds, spelling and others prefixed with z - g = true, -- bindings for prefixed with g - }, - spelling = { enabled = true, suggestions = 20 }, -- use which-key for spelling hints - }, - icons = { - breadcrumb = "»", -- symbol used in the command line area that shows your active key combo - separator = "➜", -- symbol used between a key and it's label - group = "+", -- symbol prepended to a group - }, - window = { - border = "single", -- none, single, double, shadow - position = "bottom", -- bottom, top - margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] - padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] - }, - layout = { - height = { min = 4, max = 25 }, -- min and max height of the columns - width = { min = 20, max = 50 }, -- min and max width of the columns - spacing = 3, -- spacing between columns - }, - hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate - show_help = true, -- show help message on the command line when the popup is visible - }, - - opts = { - mode = "n", -- NORMAL mode - prefix = "<leader>", - buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings - silent = true, -- use `silent` when creating keymaps - noremap = true, -- use `noremap` when creating keymaps - nowait = true, -- use `nowait` when creating keymaps - }, - vopts = { - mode = "v", -- VISUAL mode - prefix = "<leader>", - buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings - silent = true, -- use `silent` when creating keymaps - noremap = true, -- use `noremap` when creating keymaps - nowait = true, -- use `nowait` when creating keymaps - }, - -- NOTE: Prefer using : over <cmd> as the latter avoids going back in normal-mode. - -- see https://neovim.io/doc/user/map.html#:map-cmd - vmappings = { - ["k"] = { - "<ESC><CMD>lua require('Comment.api').gc(vim.fn.visualmode())<CR>", - "Comment", - }, - }, - mappings = { - ["w"] = { "<cmd>w!<CR>", "Save" }, - ["q"] = { "<cmd>q!<CR>", "Quit" }, - ["k"] = { "<cmd>lua require('Comment').toggle()<CR>", "Comment" }, - ["c"] = { "<cmd>BufferClose!<CR>", "Close Buffer" }, - ["f"] = { "<cmd>Telescope find_files<CR>", "Find File" }, - ["n"] = { "<cmd>nohlsearch<CR>", "No Highlight" }, - b = { - name = "Buffers", - j = { "<cmd>BufferPick<cr>", "Jump" }, - f = { "<cmd>Telescope buffers<cr>", "Find" }, - b = { "<cmd>b#<cr>", "Previous" }, - w = { "<cmd>BufferWipeout<cr>", "Wipeout" }, - e = { - "<cmd>BufferCloseAllButCurrent<cr>", - "Close all but current", - }, - h = { "<cmd>BufferCloseBuffersLeft<cr>", "Close all to the left" }, - l = { - "<cmd>BufferCloseBuffersRight<cr>", - "Close all to the right", - }, - D = { - "<cmd>BufferOrderByDirectory<cr>", - "Sort by directory", - }, - L = { - "<cmd>BufferOrderByLanguage<cr>", - "Sort by language", - }, - }, - p = { - name = "Packer", - c = { "<cmd>PackerCompile<cr>", "Compile" }, - i = { "<cmd>PackerInstall<cr>", "Install" }, - r = { "<cmd>lua require('plugin-loader').recompile()<cr>", "Re-compile" }, - s = { "<cmd>PackerSync<cr>", "Sync" }, - S = { "<cmd>PackerStatus<cr>", "Status" }, - u = { "<cmd>PackerUpdate<cr>", "Update" }, - }, - - -- " Available Debug Adapters: - -- " https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/ - -- " Adapter configuration and installation instructions: - -- " https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation - -- " Debug Adapter protocol: - -- " https://microsoft.github.io/debug-adapter-protocol/ - -- " Debugging - g = { - name = "Git", - j = { "<cmd>lua require 'gitsigns'.next_hunk()<cr>", "Next Hunk" }, - k = { "<cmd>lua require 'gitsigns'.prev_hunk()<cr>", "Prev Hunk" }, - l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" }, - p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" }, - r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" }, - R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" }, - s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" }, - u = { - "<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>", - "Undo Stage Hunk", - }, - o = { "<cmd>Telescope git_status<cr>", "Open changed file" }, - b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" }, - c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" }, - C = { - "<cmd>Telescope git_bcommits<cr>", - "Checkout commit(for current file)", - }, - d = { - "<cmd>Gitsigns diffthis HEAD<cr>", - "Git Diff", - }, - }, - - l = { - name = "LSP", - a = { - "<cmd>lua require('core.telescope').code_actions()<cr>", - "Code Action", - }, - d = { - "<cmd>Telescope lsp_document_diagnostics<cr>", - "Document Diagnostics", - }, - w = { - "<cmd>Telescope lsp_workspace_diagnostics<cr>", - "Workspace Diagnostics", - }, - f = { "<cmd>lua vim.lsp.buf.formatting()<cr>", "Format" }, - i = { "<cmd>LspInfo<cr>", "Info" }, - I = { "<cmd>LspInstallInfo<cr>", "Installer Info" }, - j = { - "<cmd>lua vim.lsp.diagnostic.goto_next({popup_opts = {border = lsp.popup_border}})<cr>", - "Next Diagnostic", - }, - k = { - "<cmd>lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = lsp.popup_border}})<cr>", - "Prev Diagnostic", - }, - l = { "<cmd>lua vim.lsp.codelens.run()<cr>", "CodeLens Action" }, - p = { - name = "Peek", - d = { "<cmd>lua require('lsp.peek').Peek('definition')<cr>", "Definition" }, - t = { - "<cmd>lua require('lsp.peek').Peek('typeDefinition')<cr>", - "Type Definition", - }, - i = { - "<cmd>lua require('lsp.peek').Peek('implementation')<cr>", - "Implementation", - }, - }, - q = { "<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>", "Quickfix" }, - r = { "<cmd>lua vim.lsp.buf.rename()<cr>", "Rename" }, - s = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" }, - S = { - "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>", - "Workspace Symbols", - }, - }, - L = { - name = "+NeoVim", - c = { - "<cmd>edit " .. get_config_dir() .. "/config.lua<cr>", - "Edit config.lua", - }, - k = { "<cmd>Telescope keymaps<cr>", "View NeoVim's keymappings" }, - i = { - "<cmd>lua require('core.info').toggle_popup(vim.bo.filetype)<cr>", - "Toggle NeoVim Info", - }, - I = { - "<cmd>lua require('core.telescope.custom-finders').view_lunarvim_changelog()<cr>", - "View NeoVim's changelog", - }, - l = { - name = "+logs", - d = { - "<cmd>lua require('core.terminal').toggle_log_view(require('core.log').get_path())<cr>", - "view default log", - }, - D = { - "<cmd>lua vim.fn.execute('edit ' .. require('core.log').get_path())<cr>", - "Open the default logfile", - }, - l = { - "<cmd>lua require('core.terminal').toggle_log_view(vim.lsp.get_log_path())<cr>", - "view lsp log", - }, - L = { - "<cmd>lua vim.fn.execute('edit ' .. vim.lsp.get_log_path())<cr>", - "Open the LSP logfile", - }, - n = { - "<cmd>lua require('core.terminal').toggle_log_view(os.getenv('NVIM_LOG_FILE'))<cr>", - "view neovim log", - }, - N = { "<cmd>edit $NVIM_LOG_FILE<cr>", "Open the Neovim logfile" }, - p = { - "<cmd>lua require('core.terminal').toggle_log_view('packer.nvim')<cr>", - "view packer log", - }, - P = { - "<cmd>exe 'edit '.stdpath('cache').'/packer.nvim.log'<cr>", - "Open the Packer logfile", - }, - }, - r = { "<cmd>NvimReload<cr>", "Reload Neovim's configuration" }, - u = { "<cmd>NvimUpdate<cr>", "Update NeoVim" }, - }, - s = { - name = "Search", - b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" }, - c = { "<cmd>Telescope colorscheme<cr>", "Colorscheme" }, - f = { "<cmd>Telescope find_files<cr>", "Find File" }, - h = { "<cmd>Telescope help_tags<cr>", "Find Help" }, - M = { "<cmd>Telescope man_pages<cr>", "Man Pages" }, - r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" }, - R = { "<cmd>Telescope registers<cr>", "Registers" }, - t = { "<cmd>Telescope live_grep<cr>", "Text" }, - k = { "<cmd>Telescope keymaps<cr>", "Keymaps" }, - C = { "<cmd>Telescope commands<cr>", "Commands" }, - p = { - "<cmd>lua require('telescope.builtin.internal').colorscheme({enable_preview = true})<cr>", - "Colorscheme with Preview", - }, - }, - T = { - name = "Treesitter", - i = { ":TSConfigInfo<cr>", "Info" }, - }, - }, - } -end - -M.setup = function() - local which_key = require "which-key" - - which_key.setup(options.builtin.which_key.setup) - - local opts = options.builtin.which_key.opts - local vopts = options.builtin.which_key.vopts - - local mappings = options.builtin.which_key.mappings - local vmappings = options.builtin.which_key.vmappings - - which_key.register(mappings, opts) - which_key.register(vmappings, vopts) - - if options.builtin.which_key.on_config_done then - options.builtin.which_key.on_config_done(which_key) - end -end - -return M diff --git a/.config/nvim/lua/dark/Git.lua b/.config/nvim/lua/dark/Git.lua deleted file mode 100644 index b47ccf2..0000000 --- a/.config/nvim/lua/dark/Git.lua +++ /dev/null @@ -1,10 +0,0 @@ -local Git = { - SignAdd = { fg = C.sign_add }, - SignChange = { fg = C.sign_change }, - SignDelete = { fg = C.sign_delete }, - GitSignsAdd = { fg = C.sign_add }, - GitSignsChange = { fg = C.sign_change }, - GitSignsDelete = { fg = C.sign_delete }, -} - -return Git diff --git a/.config/nvim/lua/dark/LSP.lua b/.config/nvim/lua/dark/LSP.lua deleted file mode 100644 index 85d0d7e..0000000 --- a/.config/nvim/lua/dark/LSP.lua +++ /dev/null @@ -1,92 +0,0 @@ -local LSP = { - LspDiagnosticsDefaultError = { fg = C.error_red }, - LspDiagnosticsDefaultWarning = { fg = C.warning_orange }, - LspDiagnosticsDefaultInformation = { fg = C.info_yellow }, - LspDiagnosticsDefaultHint = { fg = C.hint_blue }, - LspDiagnosticsVirtualTextError = { fg = C.error_red }, - LspDiagnosticsVirtualTextWarning = { fg = C.warning_orange }, - LspDiagnosticsVirtualTextInformation = { fg = C.info_yellow }, - LspDiagnosticsVirtualTextHint = { fg = C.hint_blue }, - LspDiagnosticsFloatingError = { fg = C.error_red }, - LspDiagnosticsFloatingWarning = { fg = C.warning_orange }, - LspDiagnosticsFloatingInformation = { fg = C.info_yellow }, - LspDiagnosticsFloatingHint = { fg = C.hint_blue }, - LspDiagnosticsSignError = { fg = C.error_red }, - LspDiagnosticsSignWarning = { fg = C.warning_orange }, - LspDiagnosticsSignInformation = { fg = C.info_yellow }, - LspDiagnosticsSignHint = { fg = C.hint_blue }, - LspDiagnosticsError = { fg = C.error_red }, - LspDiagnosticsWarning = { fg = C.warning_orange }, - LspDiagnosticsInformation = { fg = C.info_yellow }, - LspDiagnosticsHint = { fg = C.hint_blue }, - LspDiagnosticsUnderlineError = { fg = C.error_red }, - LspDiagnosticsUnderlineWarning = { fg = C.warning_orange }, - LspDiagnosticsUnderlineInformation = { fg = C.info_yellow }, - LspDiagnosticsUnderlineHint = { fg = C.hint_blue }, - QuickScopePrimary = { fg = C.cyan_test, style = "underline" }, - QuickScopeSecondary = { fg = C.purple_test, style = "underline" }, - TelescopeSelection = { fg = C.hint_blue }, - TelescopeMatching = { fg = C.info_yellow, style = "bold" }, - TelescopeBorder = { fg = C.gray, bg = C.bg }, - NvimTreeFolderIcon = { fg = C.blue }, - NvimTreeIndentMarker = { fg = C.gray }, - NvimTreeNormal = { fg = C.light_gray, bg = C.alt_bg }, - NvimTreeVertSplit = { fg = C.alt_bg, bg = C.alt_bg }, - NvimTreeFolderName = { fg = C.blue }, - NvimTreeOpenedFolderName = { fg = C.cyan, style = "italic" }, - NvimTreeImageFile = { fg = C.purple }, - NvimTreeSpecialFile = { fg = C.orange }, - NvimTreeGitStaged = { fg = C.sign_add }, - NvimTreeGitNew = { fg = C.sign_add }, - NvimTreeGitDirty = { fg = C.sign_add }, - NvimTreeGitDeleted = { fg = C.sign_delete }, - NvimTreeGitMerge = { fg = C.sign_change }, - NvimTreeGitRenamed = { fg = C.sign_change }, - NvimTreeSymlink = { fg = C.cyan }, - NvimTreeRootFolder = { fg = C.fg, style = "bold" }, - NvimTreeExecFile = { fg = C.green }, - BufferCurrent = { fg = C.fg, bg = C.bg }, - BufferCurrentIndex = { fg = C.fg, bg = C.bg }, - BufferCurrentMod = { fg = C.info_yellow, bg = C.bg }, - BufferCurrentSign = { fg = C.hint_blue, bg = C.bg }, - BufferCurrentTarget = { fg = C.red, bg = C.bg, style = "bold" }, - BufferVisible = { fg = C.fg, bg = C.bg }, - BufferVisibleIndex = { fg = C.fg, bg = C.bg }, - BufferVisibleMod = { fg = C.info_yellow, bg = C.bg }, - BufferVisibleSign = { fg = C.hint_blue, bg = C.bg }, - BufferVisibleTarget = { fg = C.red, bg = C.bg, style = "bold" }, - BufferInactive = { fg = C.gray, bg = C.alt_bg }, - BufferInactiveIndex = { fg = C.gray, bg = C.alt_bg }, - BufferInactiveMod = { fg = C.info_yellow, bg = C.alt_bg }, - BufferInactiveSign = { fg = C.gray, bg = C.alt_bg }, - BufferInactiveTarget = { fg = C.red, bg = C.alt_bg, style = "bold" }, - StatusLine = { fg = C.alt_bg }, - StatusLineNC = { fg = C.alt_bg }, - StatusLineSeparator = { fg = C.alt_bg }, - StatusLineTerm = { fg = C.alt_bg }, - StatusLineTermNC = { fg = C.alt_bg }, - CodiVirtualText = { fg = C.pale_purple }, - IndentBlanklineContextChar = { fg = C.accent }, - DashboardHeader = { fg = C.blue }, - DashboardCenter = { fg = C.white }, - DashboardFooter = { fg = C.gray }, - CompeDocumentation = { bg = C.alt_bg }, - DiffViewNormal = { fg = C.gray, bg = C.alt_bg }, - DiffviewStatusAdded = { fg = C.sign_add }, - DiffviewStatusModified = { fg = C.sign_change }, - DiffviewStatusRenamed = { fg = C.sign_change }, - DiffviewStatusDeleted = { fg = C.sign_delete }, - DiffviewFilePanelInsertion = { fg = C.sign_add }, - DiffviewFilePanelDeletion = { fg = C.sign_delete }, - DiffviewVertSplit = { bg = C.bg }, - diffAdded = { fg = C.sign_add }, - diffRemoved = { fg = C.sign_delete }, - diffFileId = { fg = C.blue, style = "bold,reverse" }, - diffFile = { fg = C.alt_bg }, - diffNewFile = { fg = C.green }, - diffOldFile = { fg = C.red }, - debugPc = { bg = C.cyan }, - debugBreakpoint = { fg = C.red, style = "reverse" }, -} - -return LSP diff --git a/.config/nvim/lua/dark/Treesitter.lua b/.config/nvim/lua/dark/Treesitter.lua deleted file mode 100644 index da9482d..0000000 --- a/.config/nvim/lua/dark/Treesitter.lua +++ /dev/null @@ -1,56 +0,0 @@ -local Treesitter = { - TSComment = { fg = C.gray }, - TSAnnotation = { fg = C.white }, - TSAttribute = { fg = C.white }, - TSConstructor = { fg = C.white }, - TSType = { fg = C.orange }, - TSTypeBuiltin = { fg = C.white }, - TSConditional = { fg = C.red }, - TSException = { fg = C.red }, - TSInclude = { fg = C.red }, - TSKeyword = { fg = C.red }, - TSKeywordFunction = { fg = C.red }, - TSLabel = { fg = C.white }, - TSNamespace = { fg = C.white }, - TSRepeat = { fg = C.red }, - TSConstant = { fg = C.orange }, - TSConstBuiltin = { fg = C.orange }, - TSFloat = { fg = C.blue }, - TSNumber = { fg = C.blue }, - TSBoolean = { fg = C.blue }, - TSCharacter = { fg = C.light_green }, - TSError = { fg = C.error_red }, - TSFunction = { fg = C.white }, - TSFuncBuiltin = { fg = C.white }, - TSMethod = { fg = C.white }, - TSConstMacro = { fg = C.white }, - TSFuncMacro = { fg = C.white }, - TSVariable = { fg = C.white }, - TSVariableBuiltin = { fg = C.white }, - TSProperty = { fg = C.white }, - TSOperator = { fg = C.white }, - TSField = { fg = C.white }, - TSParameter = { fg = C.white }, - TSParameterReference = { fg = C.white }, - TSSymbol = { fg = C.gray }, - TSText = { fg = C.fg }, - TSPunctDelimiter = { fg = C.white }, - TSTagDelimiter = { fg = C.white }, - TSPunctBracket = { fg = C.white }, - TSPunctSpecial = { fg = C.gray }, - TSString = { fg = C.gray }, - TSStringRegex = { fg = C.gray }, - TSStringEscape = { fg = C.gray }, - TSTag = { fg = C.pale_purple }, - TSEmphasis = { style = "italic" }, - TSUnderline = { style = "underline" }, - TSTitle = { fg = C.gray }, - TSLiteral = { fg = C.gray }, - TSURI = { fg = C.cyan, style = "underline" }, - TSKeywordOperator = { fg = C.gray }, - TSStructure = { fg = C.purple_test }, - TSStrong = { fg = C.gray }, - TSQueryLinterError = { fg = C.warning_orange }, -} - -return Treesitter diff --git a/.config/nvim/lua/dark/Whichkey.lua b/.config/nvim/lua/dark/Whichkey.lua deleted file mode 100644 index 9b9fb60..0000000 --- a/.config/nvim/lua/dark/Whichkey.lua +++ /dev/null @@ -1,9 +0,0 @@ -local Whichkey = { - WhichKey = { fg = C.light_gray }, - WhichKeySeperator = { fg = C.gray }, - WhichKeyGroup = { fg = C.yellow }, - WhichKeyDesc = { fg = C.light_gray }, - WhichKeyFloat = { bg = C.bg }, -} - -return Whichkey diff --git a/.config/nvim/lua/dark/config.lua b/.config/nvim/lua/dark/config.lua deleted file mode 100644 index ebac710..0000000 --- a/.config/nvim/lua/dark/config.lua +++ /dev/null @@ -1,23 +0,0 @@ -local config - -vim = vim or { g = {}, o = {} } - -local function opt(key, default) - if vim.g[key] == nil then - return default - end - if vim.g[key] == 0 then - return false - end - return vim.g[key] -end - -config = { - transparent_background = opt("transparent_background", false), - italic_comments = opt("italic_keywords", true) and "italic" or "NONE", - italic_keywords = opt("italic_keywords", true) and "italic" or "NONE", - italic_functions = opt("italic_function", false) and "italic" or "NONE", - italic_variables = opt("italic_variables", true) and "italic" or "NONE", -} - -return config diff --git a/.config/nvim/lua/dark/highlights.lua b/.config/nvim/lua/dark/highlights.lua deleted file mode 100644 index 45008b7..0000000 --- a/.config/nvim/lua/dark/highlights.lua +++ /dev/null @@ -1,99 +0,0 @@ -local highlights = { - Normal = { fg = C.fg, bg = Config.transparent_background and "NONE" or C.bg }, - SignColumn = { bg = C.bg }, - MsgArea = { fg = C.fg, bg = C.bg }, - ModeMsg = { fg = C.fg, bg = C.bg }, - MsgSeparator = { fg = C.fg, bg = C.bg }, - SpellBad = { fg = C.error_red, style = "underline" }, - SpellCap = { fg = C.yellow, style = "underline" }, - SpellLocal = { fg = C.green, style = "underline" }, - SpellRare = { fg = C.purple, style = "underline" }, - NormalNC = { fg = C.fg, bg = C.bg }, - Pmenu = { fg = C.white, bg = C.accent }, - PmenuSel = { fg = C.blue, bg = C.alt_bg }, - WildMenu = { fg = C.blue, bg = C.alt_bg }, - CursorLineNr = { fg = C.light_gray, style = "bold" }, - Comment = { fg = C.blue, style = "italic" }, - Folded = { fg = C.light_gray, bg = C.alt_bg }, - FoldColumn = { fg = C.light_gray, bg = C.alt_bg }, - LineNr = { fg = C.gray }, - FloatBoder = { fg = C.gray, bg = C.alt_bg }, - Whitespace = { fg = C.gray }, - VertSplit = { fg = C.bg, bg = C.accent }, - CursorLine = { bg = C.alt_bg }, - CursorColumn = { bg = C.alt_bg }, - ColorColumn = { bg = C.alt_bg }, - NormalFloat = { bg = C.alt_bg }, - Visual = { bg = C.gray }, - VisualNOS = { bg = C.alt_bg }, - WarningMsg = { fg = C.error_red, bg = C.bg }, - DiffAdd = { fg = C.alt_bg, bg = C.sign_add }, - DiffChange = { fg = C.alt_bg, bg = C.sign_change, style = "underline" }, - DiffDelete = { fg = C.alt_bg, bg = C.sign_delete }, - QuickFixLine = { bg = C.accent }, - PmenuSbar = { bg = C.alt_bg }, - PmenuThumb = { bg = C.white }, - MatchWord = { style = "underline" }, - MatchParen = { fg = C.pale_purple, bg = C.bg, style = "underline" }, - MatchWordCur = { style = "underline" }, - MatchParenCur = { style = "underline" }, - Cursor = { fg = C.cursor_fg, bg = C.cursor_bg }, - lCursor = { fg = C.cursor_fg, bg = C.cursor_bg }, - CursorIM = { fg = C.cursor_fg, bg = C.cursor_bg }, - TermCursor = { fg = C.cursor_fg, bg = C.cursor_bg }, - TermCursorNC = { fg = C.cursor_fg, bg = C.cursor_bg }, - Conceal = { fg = C.accent }, - Directory = { fg = C.blue }, - SpecialKey = { fg = C.blue }, - Title = { fg = C.blue }, - ErrorMsg = { fg = C.error_red, bg = C.bg, style = "bold" }, - Search = { fg = C.hint_blue, bg = C.alt_bg }, - IncSearch = { fg = C.hint_blue, bg = C.alt_bg }, - Substitute = { fg = C.alt_bg, bg = C.gray_blue }, - MoreMsg = { fg = C.cyan }, - Question = { fg = C.cyan }, - EndOfBuffer = { fg = C.bg }, - NonText = { fg = C.bg }, - Variable = { fg = C.white }, - String = { fg = C.blue }, - Character = { fg = C.light_green }, - Constant = { fg = C.orange }, - Number = { fg = C.red }, - Boolean = { fg = C.red }, - Float = { fg = C.red }, - Identifier = { fg = C.white }, - Function = { fg = C.purple }, - Operator = { fg = C.orange }, - Type = { fg = C.white }, - StorageClass = { fg = C.yellow }, - Structure = { fg = C.orange }, - Typedef = { fg = C.purple }, - Keyword = { fg = C.orange }, - Statement = { fg = C.orange }, - Conditional = { fg = C.orange }, - Repeat = { fg = C.orange }, - Label = { fg = C.orange }, - Exception = { fg = C.orange }, - Include = { fg = C.orange }, - PreProc = { fg = C.orange }, - Define = { fg = C.orange }, - Macro = { fg = C.orange }, - PreCondit = { fg = C.orange }, - Special = { fg = C.orange }, - SpecialChar = { fg = C.orange }, - Tag = { fg = C.pale_purple }, - Debug = { fg = C.red }, - Delimiter = { fg = C.gray }, - SpecialComment = { fg = C.blue }, - Underlined = { style = "underline" }, - Bold = { style = "bold" }, - Italic = { style = "italic" }, - Ignore = { fg = C.cyan, bg = C.bg, style = "bold" }, - Todo = { fg = C.red, bg = C.bg, style = "bold" }, - Error = { fg = C.error_red, bg = C.bg, style = "bold" }, - TabLine = { fg = C.white, bg = C.alt_bg }, - TabLineSel = { fg = C.white, bg = C.alt_bg }, - TabLineFill = { fg = C.white, bg = C.alt_bg }, -} - -return highlights diff --git a/.config/nvim/lua/dark/init.lua b/.config/nvim/lua/dark/init.lua deleted file mode 100644 index dd24d95..0000000 --- a/.config/nvim/lua/dark/init.lua +++ /dev/null @@ -1,30 +0,0 @@ -vim.api.nvim_command "hi clear" -if vim.fn.exists "syntax_on" then - vim.api.nvim_command "syntax reset" -end -vim.o.background = "dark" -vim.o.termguicolors = true -vim.g.colors_name = "dark" - -local util = require "dark.util" -Config = require "dark.config" -C = require "dark.palette" -local highlights = require "dark.highlights" -local Treesitter = require "dark.Treesitter" -local markdown = require "dark.markdown" -local Whichkey = require "dark.Whichkey" -local Git = require "dark.Git" -local LSP = require "dark.LSP" - -local skeletons = { - highlights, - Treesitter, - markdown, - Whichkey, - Git, - LSP, -} - -for _, skeleton in ipairs(skeletons) do - util.initialise(skeleton) -end diff --git a/.config/nvim/lua/dark/markdown.lua b/.config/nvim/lua/dark/markdown.lua deleted file mode 100644 index 2b83e05..0000000 --- a/.config/nvim/lua/dark/markdown.lua +++ /dev/null @@ -1,27 +0,0 @@ -local markdown = { - markdownBlockquote = { fg = C.accent }, - markdownBold = { fg = C.yellow, style = "bold" }, - markdownCode = { fg = C.green }, - markdownCodeBlock = { fg = C.green }, - markdownCodeDelimiter = { fg = C.green }, - markdownH1 = { fg = C.blue }, - markdownH2 = { fg = C.blue }, - markdownH3 = { fg = C.blue }, - markdownH4 = { fg = C.blue }, - markdownH5 = { fg = C.blue }, - markdownH6 = { fg = C.blue }, - markdownHeadingDelimiter = { fg = C.red }, - markdownHeadingRule = { fg = C.accent }, - markdownId = { fg = C.purple }, - markdownIdDeclaration = { fg = C.blue }, - markdownIdDelimiter = { fg = C.light_gray }, - markdownLinkDelimiter = { fg = C.light_gray }, - markdownItalic = { style = "italic" }, - markdownLinkText = { fg = C.blue }, - markdownListMarker = { fg = C.red }, - markdownOrderedListMarker = { fg = C.red }, - markdownRule = { fg = C.accent }, - markdownUrl = { fg = C.cyan, style = "underline" }, -} - -return markdown diff --git a/.config/nvim/lua/dark/palette.lua b/.config/nvim/lua/dark/palette.lua deleted file mode 100644 index 92ff012..0000000 --- a/.config/nvim/lua/dark/palette.lua +++ /dev/null @@ -1,33 +0,0 @@ -local colors = { - fg = "#F2F6F3", - bg = "#151515", - alt_bg = "#171717", - accent = "#202020", - white = "#F2F6F3", - gray = "#606060", - light_gray = "#D0D0D0", - blue = "#A5D6FF", - gray_blue = "#5F819D", - cyan = "#75B5AA", - red = "#CC6666", - green = "#90A959", - light_green = "#90A959", - yellow = "#F4BF75", - orange = "#FFA557", - purple = "#AA749F", - pale_purple = "#A5D6FF", - magenta = "#AA759F", - cursor_fg = "#D0D0D0", - cursor_bg = "#151515", - sign_add = "#A1B56C", - sign_change = "#A5D6FF", - sign_delete = "#AA4142", - error_red = "#AC4142", - warning_orange = "#F4BF75", - info_yellow = "#F4BF75", - hint_blue = "#A5D6FF", - purple_test = "#ff00ff", - cyan_test = "#00ffff", -} - -return colors diff --git a/.config/nvim/lua/dark/util.lua b/.config/nvim/lua/dark/util.lua deleted file mode 100644 index dbac18a..0000000 --- a/.config/nvim/lua/dark/util.lua +++ /dev/null @@ -1,25 +0,0 @@ -local M = {} - -local function highlight(group, properties) - local bg = properties.bg == nil and "" or "guibg=" .. properties.bg - local fg = properties.fg == nil and "" or "guifg=" .. properties.fg - local style = properties.style == nil and "" or "gui=" .. properties.style - - local cmd = table.concat({ - "highlight", - group, - bg, - fg, - style, - }, " ") - - vim.api.nvim_command(cmd) -end - -function M.initialise(skeleton) - for group, properties in pairs(skeleton) do - highlight(group, properties) - end -end - -return M diff --git a/.config/nvim/lua/extra/colorizer.lua b/.config/nvim/lua/extra/colorizer.lua deleted file mode 100644 index 04b7367..0000000 --- a/.config/nvim/lua/extra/colorizer.lua +++ /dev/null @@ -1,22 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - local status_ok, colorizer = pcall(require, "colorizer") - if not status_ok then - Log:get_default().error "Failed to load colorizer" - return - end - - colorizer.setup({ "*" }, { - RGB = true, -- #RGB hex codes - RRGGBB = true, -- #RRGGBB hex codes - RRGGBBAA = true, -- #RRGGBBAA hex codes - rgb_fn = true, -- CSS rgb() and rgba() functions - hsl_fn = true, -- CSS hsl() and hsla() functions - css = true, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB - css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn - }) -end - -return M diff --git a/.config/nvim/lua/extra/hop.lua b/.config/nvim/lua/extra/hop.lua deleted file mode 100644 index 834f97a..0000000 --- a/.config/nvim/lua/extra/hop.lua +++ /dev/null @@ -1,15 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - local status_ok, hop = pcall(require, "hop") - if not status_ok then - Log:get_default().error "Failed to load hop" - return - end - hop.setup() - vim.api.nvim_set_keymap("n", "s", ":HopChar2<cr>", { silent = true }) - vim.api.nvim_set_keymap("n", "S", ":HopWord<cr>", { silent = true }) -end - -return M diff --git a/.config/nvim/lua/extra/lir.lua b/.config/nvim/lua/extra/lir.lua deleted file mode 100644 index 271afb1..0000000 --- a/.config/nvim/lua/extra/lir.lua +++ /dev/null @@ -1,96 +0,0 @@ -local status_ok, lir = pcall(require, "lir") -if not status_ok then - return -end -local actions = require "lir.actions" -local mark_actions = require "lir.mark.actions" -local clipboard_actions = require "lir.clipboard.actions" - -lir.setup { - show_hidden_files = false, - devicons_enable = true, - mappings = { - ["l"] = actions.edit, - ["<cr>"] = actions.edit, - ["<C-s>"] = actions.split, - ["v"] = actions.vsplit, - ["<C-t>"] = actions.tabedit, - - ["h"] = actions.up, - ["q"] = actions.quit, - - ["A"] = actions.mkdir, - ["a"] = actions.newfile, - ["r"] = actions.rename, - ["@"] = actions.cd, - ["Y"] = actions.yank_path, - ["."] = actions.toggle_show_hidden, - ["D"] = actions.delete, - - ["J"] = function() - mark_actions.toggle_mark() - vim.cmd "normal! j" - end, - ["C"] = clipboard_actions.copy, - ["X"] = clipboard_actions.cut, - ["P"] = clipboard_actions.paste, - }, - float = { - winblend = 0, - - -- -- You can define a function that returns a table to be passed as the third - -- -- argument of nvim_open_win(). - win_opts = function() - -- local width = math.floor(vim.o.columns * 0.8) - -- local height = math.floor(vim.o.lines * 0.8) - return { - border = "single", - -- border = require("lir.float.helper").make_border_opts({ - -- "+", - -- "─", - -- "+", - -- "│", - -- "+", - -- "─", - -- "+", - -- "│", - -- }, "Normal"), - -- width = width, - -- height = height, - -- row = 1, - -- col = math.floor((vim.o.columns - width) / 2), - } - end, - }, - hide_cursor = false, -} - --- custom folder icon -require("nvim-web-devicons").setup { - override = { - lir_folder_icon = { - icon = "", - color = "#569CD6", - name = "LirFolderNode", - }, - }, -} - --- use visual mode -function _G.LirSettings() - vim.api.nvim_buf_set_keymap( - 0, - "x", - "J", - ':<C-u>lua require"lir.mark.actions".toggle_mark("v")<CR>', - { noremap = true, silent = true } - ) - - -- echo cwd - vim.api.nvim_echo({ { vim.fn.expand "%:p", "Normal" } }, false, {}) -end - -vim.cmd [[augroup lir-settings]] -vim.cmd [[ autocmd!]] -vim.cmd [[ autocmd Filetype lir :lua LirSettings()]] -vim.cmd [[augroup END]] diff --git a/.config/nvim/lua/extra/lsp_signature.lua b/.config/nvim/lua/extra/lsp_signature.lua deleted file mode 100644 index 7e67a4d..0000000 --- a/.config/nvim/lua/extra/lsp_signature.lua +++ /dev/null @@ -1,14 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - local status_ok, lsp_signature = pcall(require, "lsp_signature") - if not status_ok then - Log:get_default().error "Failed to load lsp_signature" - return - end - - lsp_signature.on_attach() -end - -return M diff --git a/.config/nvim/lua/extra/neoscroll.lua b/.config/nvim/lua/extra/neoscroll.lua deleted file mode 100644 index 65f486b..0000000 --- a/.config/nvim/lua/extra/neoscroll.lua +++ /dev/null @@ -1,25 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - local status_ok, neoscroll = pcall(require, "neoscroll") - if not status_ok then - Log:get_default().error "Failed to load hop" - return - end - - neoscroll.setup { - -- All these keys will be mapped to their corresponding default scrolling animation - mappings = { "<C-u>", "<C-d>", "<C-b>", "<C-f>", "<C-y>", "<C-e>", "zt", "zz", "zb" }, - hide_cursor = true, -- Hide cursor while scrolling - stop_eof = true, -- Stop at <EOF> when scrolling downwards - use_local_scrolloff = false, -- Use the local scope of scrolloff instead of the global scope - respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file - cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further - easing_function = nil, -- Default easing function - pre_hook = nil, -- Function to run before the scrolling animation starts - post_hook = nil, -- Function to run after the scrolling animation ends - } -end - -return M diff --git a/.config/nvim/lua/extra/numb.lua b/.config/nvim/lua/extra/numb.lua deleted file mode 100644 index 17d9f6b..0000000 --- a/.config/nvim/lua/extra/numb.lua +++ /dev/null @@ -1,17 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - local status_ok, numb = pcall(require, "numb") - if not status_ok then - Log:get_default().error "Failed to load numb" - return - end - - numb.setup { - show_numbers = true, -- Enable 'number' for the window while peeking - show_cursorline = true, -- Enable 'cursorline' for the window while peeking - } -end - -return M diff --git a/.config/nvim/lua/extra/octo.lua b/.config/nvim/lua/extra/octo.lua deleted file mode 100644 index f4d177c..0000000 --- a/.config/nvim/lua/extra/octo.lua +++ /dev/null @@ -1,139 +0,0 @@ -local M = {} - -local Log = require "core.log" - -M.config = function() - local status_ok, octo = pcall(require, "octo") - if not status_ok then - Log:get_default().error "Failed to load octo" - return - end - - octo.setup { - default_remote = { "upstream", "origin" }, -- order to try remotes - reaction_viewer_hint_icon = "", -- marker for user reactions - user_icon = " ", -- user icon - timeline_marker = "", -- timeline marker - timeline_indent = "2", -- timeline indentation - right_bubble_delimiter = "", -- Bubble delimiter - left_bubble_delimiter = "", -- Bubble delimiter - github_hostname = "", -- GitHub Enterprise host - snippet_context_lines = 4, -- number or lines around commented lines - file_panel = { - size = 10, -- changed files panel rows - use_icons = true, -- use web-devicons in file panel - }, - mappings = { - issue = { - close_issue = "<space>ic", -- close issue - reopen_issue = "<space>io", -- reopen issue - list_issues = "<space>il", -- list open issues on same repo - reload = "<C-r>", -- reload issue - open_in_browser = "<C-b>", -- open issue in browser - copy_url = "<C-y>", -- copy url to system clipboard - add_assignee = "<space>aa", -- add assignee - remove_assignee = "<space>ad", -- remove assignee - create_label = "<space>lc", -- create label - add_label = "<space>la", -- add label - remove_label = "<space>ld", -- remove label - goto_issue = "<space>gi", -- navigate to a local repo issue - add_comment = "<space>ca", -- add comment - delete_comment = "<space>cd", -- delete comment - next_comment = "]c", -- go to next comment - prev_comment = "[c", -- go to previous comment - react_hooray = "<space>rp", -- add/remove 🎉 reaction - react_heart = "<space>rh", -- add/remove ❤️ reaction - react_eyes = "<space>re", -- add/remove 👀 reaction - react_thumbs_up = "<space>r+", -- add/remove 👍 reaction - react_thumbs_down = "<space>r-", -- add/remove 👎 reaction - react_rocket = "<space>rr", -- add/remove 🚀 reaction - react_laugh = "<space>rl", -- add/remove 😄 reaction - react_confused = "<space>rc", -- add/remove 😕 reaction - }, - pull_request = { - checkout_pr = "<space>po", -- checkout PR - merge_pr = "<space>pm", -- merge PR - list_commits = "<space>pc", -- list PR commits - list_changed_files = "<space>pf", -- list PR changed files - show_pr_diff = "<space>pd", -- show PR diff - add_reviewer = "<space>va", -- add reviewer - remove_reviewer = "<space>vd", -- remove reviewer request - close_issue = "<space>ic", -- close PR - reopen_issue = "<space>io", -- reopen PR - list_issues = "<space>il", -- list open issues on same repo - reload = "<C-r>", -- reload PR - open_in_browser = "<C-b>", -- open PR in browser - copy_url = "<C-y>", -- copy url to system clipboard - add_assignee = "<space>aa", -- add assignee - remove_assignee = "<space>ad", -- remove assignee - create_label = "<space>lc", -- create label - add_label = "<space>la", -- add label - remove_label = "<space>ld", -- remove label - goto_issue = "<space>gi", -- navigate to a local repo issue - add_comment = "<space>ca", -- add comment - delete_comment = "<space>cd", -- delete comment - next_comment = "]c", -- go to next comment - prev_comment = "[c", -- go to previous comment - react_hooray = "<space>rp", -- add/remove 🎉 reaction - react_heart = "<space>rh", -- add/remove ❤️ reaction - react_eyes = "<space>re", -- add/remove 👀 reaction - react_thumbs_up = "<space>r+", -- add/remove 👍 reaction - react_thumbs_down = "<space>r-", -- add/remove 👎 reaction - react_rocket = "<space>rr", -- add/remove 🚀 reaction - react_laugh = "<space>rl", -- add/remove 😄 reaction - react_confused = "<space>rc", -- add/remove 😕 reaction - }, - review_thread = { - goto_issue = "<space>gi", -- navigate to a local repo issue - add_comment = "<space>ca", -- add comment - add_suggestion = "<space>sa", -- add suggestion - delete_comment = "<space>cd", -- delete comment - next_comment = "]c", -- go to next comment - prev_comment = "[c", -- go to previous comment - select_next_entry = "]q", -- move to previous changed file - select_prev_entry = "[q", -- move to next changed file - close_review_tab = "<C-c>", -- close review tab - react_hooray = "<space>rp", -- add/remove 🎉 reaction - react_heart = "<space>rh", -- add/remove ❤️ reaction - react_eyes = "<space>re", -- add/remove 👀 reaction - react_thumbs_up = "<space>r+", -- add/remove 👍 reaction - react_thumbs_down = "<space>r-", -- add/remove 👎 reaction - react_rocket = "<space>rr", -- add/remove 🚀 reaction - react_laugh = "<space>rl", -- add/remove 😄 reaction - react_confused = "<space>rc", -- add/remove 😕 reaction - }, - submit_win = { - approve_review = "<C-a>", -- approve review - comment_review = "<C-m>", -- comment review - request_changes = "<C-r>", -- request changes review - close_review_tab = "<C-c>", -- close review tab - }, - review_diff = { - add_review_comment = "<space>ca", -- add a new review comment - add_review_suggestion = "<space>sa", -- add a new review suggestion - focus_files = "<leader>e", -- move focus to changed file panel - toggle_files = "<leader>b", -- hide/show changed files panel - next_thread = "]t", -- move to next thread - prev_thread = "[t", -- move to previous thread - select_next_entry = "]q", -- move to previous changed file - select_prev_entry = "[q", -- move to next changed file - close_review_tab = "<C-c>", -- close review tab - toggle_viewed = "<leader><space>", -- toggle viewer viewed state - }, - file_panel = { - next_entry = "j", -- move to next changed file - prev_entry = "k", -- move to previous changed file - select_entry = "<cr>", -- show selected changed file diffs - refresh_files = "R", -- refresh changed files panel - focus_files = "<leader>e", -- move focus to changed file panel - toggle_files = "<leader>b", -- hide/show changed files panel - select_next_entry = "]q", -- move to previous changed file - select_prev_entry = "[q", -- move to next changed file - close_review_tab = "<C-c>", -- close review tab - toggle_viewed = "<leader><space>", -- toggle viewer viewed state - }, - }, - } -end - -return M diff --git a/.config/nvim/lua/extra/quickscope.lua b/.config/nvim/lua/extra/quickscope.lua deleted file mode 100644 index 99b4196..0000000 --- a/.config/nvim/lua/extra/quickscope.lua +++ /dev/null @@ -1,3 +0,0 @@ -vim.cmd [[ - let g:qs_highlight_on_keys = ['f', 'F', 't', 'T'] - ]] diff --git a/.config/nvim/lua/extra/spectre.lua b/.config/nvim/lua/extra/spectre.lua deleted file mode 100644 index 12133d8..0000000 --- a/.config/nvim/lua/extra/spectre.lua +++ /dev/null @@ -1,144 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - local status_ok, spectre = pcall(require, "spectre") - if not status_ok then - Log:get_default().error "Failed to load hop" - return - end - - spectre.setup { - - color_devicons = true, - highlight = { - ui = "String", - search = "DiffChange", - replace = "DiffDelete", - }, - mapping = { - ["toggle_line"] = { - map = "t", - cmd = "<cmd>lua require('spectre').toggle_line()<CR>", - desc = "toggle current item", - }, - ["enter_file"] = { - map = "<cr>", - cmd = "<cmd>lua require('spectre.actions').select_entry()<CR>", - desc = "goto current file", - }, - ["send_to_qf"] = { - map = "Q", - cmd = "<cmd>lua require('spectre.actions').send_to_qf()<CR>", - desc = "send all item to quickfix", - }, - ["replace_cmd"] = { - map = "c", - cmd = "<cmd>lua require('spectre.actions').replace_cmd()<CR>", - desc = "input replace vim command", - }, - ["show_option_menu"] = { - map = "o", - cmd = "<cmd>lua require('spectre').show_options()<CR>", - desc = "show option", - }, - ["run_replace"] = { - map = "R", - cmd = "<cmd>lua require('spectre.actions').run_replace()<CR>", - desc = "replace all", - }, - ["change_view_mode"] = { - map = "m", - cmd = "<cmd>lua require('spectre').change_view()<CR>", - desc = "change result view mode", - }, - ["toggle_ignore_case"] = { - map = "I", - cmd = "<cmd>lua require('spectre').change_options('ignore-case')<CR>", - desc = "toggle ignore case", - }, - ["toggle_ignore_hidden"] = { - map = "H", - cmd = "<cmd>lua require('spectre').change_options('hidden')<CR>", - desc = "toggle search hidden", - }, - -- you can put your mapping here it only use normal mode - }, - find_engine = { - -- rg is map with finder_cmd - ["rg"] = { - cmd = "rg", - -- default args - args = { - "--color=never", - "--no-heading", - "--with-filename", - "--line-number", - "--column", - }, - options = { - ["ignore-case"] = { - value = "--ignore-case", - icon = "[I]", - desc = "ignore case", - }, - ["hidden"] = { - value = "--hidden", - desc = "hidden file", - icon = "[H]", - }, - -- you can put any option you want here it can toggle with - -- show_option function - }, - }, - ["ag"] = { - cmd = "ag", - args = { - "--vimgrep", - "-s", - }, - options = { - ["ignore-case"] = { - value = "-i", - icon = "[I]", - desc = "ignore case", - }, - ["hidden"] = { - value = "--hidden", - desc = "hidden file", - icon = "[H]", - }, - }, - }, - }, - replace_engine = { - ["sed"] = { - cmd = "sed", - args = nil, - }, - options = { - ["ignore-case"] = { - value = "--ignore-case", - icon = "[I]", - desc = "ignore case", - }, - }, - }, - default = { - find = { - --pick one of item in find_engine - cmd = "rg", - options = { "ignore-case" }, - }, - replace = { - --pick one of item in replace_engine - cmd = "sed", - }, - }, - replace_vim_cmd = "cdo", - is_open_target_win = true, --open file on opener window - is_insert_mode = false, -- start open panel on is_insert_mode - } -end - -return M diff --git a/.config/nvim/lua/extra/zen.lua b/.config/nvim/lua/extra/zen.lua deleted file mode 100644 index 9bfaf1a..0000000 --- a/.config/nvim/lua/extra/zen.lua +++ /dev/null @@ -1,48 +0,0 @@ -local M = {} -local Log = require "core.log" - -M.config = function() - local status_ok, zen_mode = pcall(require, "zen-mode") - if not status_ok then - Log:get_default().error "Failed to load zen-mode" - return - end - - zen_mode.setup { - window = { - backdrop = 1, - height = 0.9, -- height of the Zen window - width = 0.65, - options = { - signcolumn = "no", -- disable signcolumn - number = false, -- disable number column - relativenumber = false, -- disable relative numbers - -- cursorline = false, -- disable cursorline - -- cursorcolumn = false, -- disable cursor column - -- foldcolumn = "0", -- disable fold column - -- list = false, -- disable whitespace characters - }, - }, - plugins = { - gitsigns = { enabled = false }, -- disables git signs - tmux = { enabled = true }, - twilight = { enabled = true }, - }, - -- on_open = function() - -- vim.lsp.diagnostic.disable() - -- vim.cmd [[ - -- set foldlevel=10 - -- IndentBlanklineDisable - -- ]] - -- end, - -- on_close = function() - -- vim.lsp.diagnostic.enable() - -- vim.cmd [[ - -- set foldlevel=5 - -- IndentBlanklineEnable - -- ]] - -- end, - } -end - -return M diff --git a/.config/nvim/lua/impatient.lua b/.config/nvim/lua/impatient.lua deleted file mode 100644 index e428c7e..0000000 --- a/.config/nvim/lua/impatient.lua +++ /dev/null @@ -1,359 +0,0 @@ --- modified version from https://github.com/lewis6991/impatient.nvim - -local vim = vim -local uv = vim.loop -local impatient_load_start = uv.hrtime() -local api = vim.api -local ffi = require "ffi" - -local get_option, set_option = api.nvim_get_option, api.nvim_set_option -local get_runtime_file = api.nvim_get_runtime_file - -local impatient_dur - -local M = { - cache = {}, - profile = nil, - dirty = false, - path = nil, - log = {}, -} - -_G.__luacache = M - ---{{{ -local cachepack = {} - --- using double for packing/unpacking numbers has no conversion overhead --- 32-bit ARM causes a bus error when casting to double, so use int there -local number_t = jit.arch ~= "arm" and "double" or "int" -ffi.cdef("typedef " .. number_t .. " number_t;") - -local c_number_t = ffi.typeof "number_t[1]" -local c_sizeof_number_t = ffi.sizeof "number_t" - -local out_buf = {} - -function out_buf.write_number(buf, num) - buf[#buf + 1] = ffi.string(c_number_t(num), c_sizeof_number_t) -end - -function out_buf.write_string(buf, str) - out_buf.write_number(buf, #str) - buf[#buf + 1] = str -end - -function out_buf.to_string(buf) - return table.concat(buf) -end - -local in_buf = {} - -function in_buf.read_number(buf) - if buf.size < buf.pos then - error "buffer access violation" - end - local res = ffi.cast("number_t*", buf.ptr + buf.pos)[0] - buf.pos = buf.pos + c_sizeof_number_t - return res -end - -function in_buf.read_string(buf) - local len = in_buf.read_number(buf) - local res = ffi.string(buf.ptr + buf.pos, len) - buf.pos = buf.pos + len - - return res -end - -function cachepack.pack(cache) - local total_keys = vim.tbl_count(cache) - local buf = {} - - out_buf.write_number(buf, total_keys) - for k, v in pairs(cache) do - out_buf.write_string(buf, k) - out_buf.write_string(buf, v[1] or "") - out_buf.write_number(buf, v[2] or 0) - out_buf.write_string(buf, v[3] or "") - end - - return out_buf.to_string(buf) -end - -function cachepack.unpack(str, raw_buf_size) - if raw_buf_size == 0 or str == nil or (raw_buf_size == nil and #str == 0) then - return {} - end - - local buf = { - ptr = raw_buf_size and str or ffi.new("const char[?]", #str, str), - pos = 0, - size = raw_buf_size or #str, - } - local cache = {} - - local total_keys = in_buf.read_number(buf) - for _ = 1, total_keys do - local k = in_buf.read_string(buf) - local v = { - in_buf.read_string(buf), - in_buf.read_number(buf), - in_buf.read_string(buf), - } - cache[k] = v - end - - return cache -end ---}}} - -local function log(...) - M.log[#M.log + 1] = table.concat({ string.format(...) }, " ") -end - -function M.print_log() - for _, l in ipairs(M.log) do - print(l) - end -end - -function M.enable_profile() - M.profile = {} - M.print_profile = function() - M.profile["impatient"] = { - resolve = 0, - load = impatient_dur, - loader = "standard", - } - require("impatient.profile").print_profile(M.profile) - end - vim.cmd [[command! LuaCacheProfile lua _G.__luacache.print_profile()]] -end - -local function is_cacheable(path) - -- Don't cache files in /tmp since they are not likely to persist. - -- Note: Appimage versions of Neovim mount $VIMRUNTIME in /tmp in a unique - -- directory on each launch. - return not vim.startswith(path, "/tmp/") -end - -local function hash(modpath) - local stat = uv.fs_stat(modpath) - if stat then - return stat.mtime.sec - end -end - -local function hrtime() - if M.profile then - return uv.hrtime() - end -end - -local function load_package_with_cache(name, loader) - local resolve_start = hrtime() - - local basename = name:gsub("%.", "/") - local paths = { "lua/" .. basename .. ".lua", "lua/" .. basename .. "/init.lua" } - - for _, path in ipairs(paths) do - local modpath = get_runtime_file(path, false)[1] - if modpath then - local load_start = hrtime() - local chunk, err = loadfile(modpath) - - if M.profile then - M.profile[name] = { - resolve = load_start - resolve_start, - load = hrtime() - load_start, - loader = loader or "standard", - } - end - - if chunk == nil then - return err - end - - if is_cacheable(modpath) then - log("Creating cache for module %s", name) - M.cache[name] = { modpath, hash(modpath), string.dump(chunk) } - M.dirty = true - else - log("Unable to cache module %s", name) - end - - return chunk - end - end - return nil -end - -local reduced_rtp - --- Speed up non-cached loads by reducing the rtp path during requires -function M.update_reduced_rtp() - local luadirs = get_runtime_file("lua/", true) - - for i = 1, #luadirs do - luadirs[i] = luadirs[i]:sub(1, -6) - end - - reduced_rtp = table.concat(luadirs, ",") -end - -local function load_package_with_cache_reduced_rtp(name) - local orig_rtp = get_option "runtimepath" - local orig_ei = get_option "eventignore" - - if not reduced_rtp then - M.update_reduced_rtp() - end - - set_option("eventignore", "all") - set_option("rtp", reduced_rtp) - - local found = load_package_with_cache(name, "reduced") - - set_option("rtp", orig_rtp) - set_option("eventignore", orig_ei) - - return found -end - -local function load_from_cache(name) - local resolve_start = hrtime() - if M.cache[name] == nil then - log("No cache for module %s", name) - return "No cache entry" - end - - local modpath, mhash, codes = unpack(M.cache[name]) - - if mhash ~= hash(modpath) then - log("Stale cache for module %s", name) - M.cache[name] = nil - M.dirty = true - return "Stale cache" - end - - local load_start = hrtime() - local chunk = loadstring(codes) - - if M.profile then - M.profile[name] = { - resolve = load_start - resolve_start, - load = hrtime() - load_start, - loader = "cache", - } - end - - if not chunk then - M.cache[name] = nil - M.dirty = true - log("Error loading cache for module. Invalidating", name) - return "Cache error" - end - - return chunk -end - -function M.save_cache() - if M.dirty then - log("Updating cache file: %s", M.path) - local f = io.open(M.path, "w+b") - f:write(cachepack.pack(M.cache)) - f:flush() - M.dirty = false - end -end - -function M.clear_cache() - M.cache = {} - os.remove(M.path) -end - -impatient_dur = uv.hrtime() - impatient_load_start - -function M.setup(opts) - opts = opts or {} - M.path = opts.path or vim.fn.stdpath "cache" .. "/nvim_cache" - - if opts.enable_profiling then - M.enable_profile() - end - - local impatient_setup_start = uv.hrtime() - local stat = uv.fs_stat(M.path) - if stat then - log("Loading cache file %s", M.path) - local ok - -- Linux/macOS lets us easily mmap the cache file for faster reads without passing to Lua - if jit.os == "Linux" or jit.os == "OSX" then - local size = stat.size - - local C = ffi.C - local O_RDONLY = 0x00 - local PROT_READ = 0x01 - local MAP_PRIVATE = 0x02 - - ffi.cdef [[ - int open(const char *pathname, int flags); - int close(int fd); - void *mmap(void *addr, size_t length, int prot, int flags, int fd, long int offset); - int munmap(void *addr, size_t length); - ]] - local f = C.open(M.path, O_RDONLY) - - local addr = C.mmap(nil, size, PROT_READ, MAP_PRIVATE, f, 0) - ok = ffi.cast("intptr_t", addr) ~= -1 - - if ok then - M.cache = cachepack.unpack(ffi.cast("char *", addr), size) - C.munmap(addr, size) - end - - C.close(f) - else - local f = io.open(M.path, "rb") - ok, M.cache = pcall(function() - return cachepack.unpack(f:read "*a") - end) - end - - if not ok then - log("Corrupted cache file, %s. Invalidating...", M.path) - os.remove(M.path) - M.cache = {} - end - M.dirty = not ok - end - - local insert = table.insert - local package = package - - -- Fix the position of the preloader. This also makes loading modules like 'ffi' - -- and 'bit' quicker - if package.loaders[1] == vim._load_package then - -- Move vim._load_package to the second position - local vim_load = table.remove(package.loaders, 1) - insert(package.loaders, 2, vim_load) - end - - insert(package.loaders, 2, load_from_cache) - insert(package.loaders, 3, load_package_with_cache_reduced_rtp) - insert(package.loaders, 4, load_package_with_cache) - - vim.cmd [[ - augroup impatient - autocmd VimEnter,VimLeave * lua _G.__luacache.save_cache() - autocmd OptionSet runtimepath lua _G.__luacache.update_reduced_rtp(true) - augroup END - command! LuaCacheClear lua _G.__luacache.clear_cache() - command! LuaCacheLog lua _G.__luacache.print_log() - ]] - - impatient_dur = impatient_dur + (uv.hrtime() - impatient_setup_start) -end - -return M diff --git a/.config/nvim/lua/impatient/profile.lua b/.config/nvim/lua/impatient/profile.lua deleted file mode 100644 index d057386..0000000 --- a/.config/nvim/lua/impatient/profile.lua +++ /dev/null @@ -1,156 +0,0 @@ -local M = {} - -local api = vim.api - -function M.print_profile(profile) - if not profile then - print "Error: profiling was not enabled" - return - end - - local total_resolve = 0 - local total_load = 0 - local name_pad = 0 - local modules = {} - local plugins = {} - - for module, p in pairs(profile) do - p.resolve = p.resolve / 1000000 - p.load = p.load / 1000000 - p.total = p.resolve + p.load - p.module = module:gsub("/", ".") - - local plugin = p.module:match "([^.]+)" - if plugin then - if not plugins[plugin] then - plugins[plugin] = { - module = plugin, - resolve = 0, - load = 0, - total = 0, - } - end - local r = plugins[plugin] - - r.resolve = r.resolve + p.resolve - r.load = r.load + p.load - r.total = r.total + p.total - - if not r.loader then - r.loader = p.loader - elseif r.loader ~= p.loader then - r.loader = "mixed" - end - end - - total_resolve = total_resolve + p.resolve - total_load = total_load + p.load - - if #module > name_pad then - name_pad = #module - end - - modules[#modules + 1] = p - end - - table.sort(modules, function(a, b) - return a.module > b.module - end) - - do - local plugins_a = {} - for _, v in pairs(plugins) do - plugins_a[#plugins_a + 1] = v - end - plugins = plugins_a - end - - table.sort(plugins, function(a, b) - return a.total > b.total - end) - - local lines = {} - local function add(...) - lines[#lines + 1] = string.format(...) - end - - local l = string.rep("─", name_pad + 1) - - add( - "%s┬───────────┬────────────┬────────────┬────────────┐", - l - ) - add( - "%-" - .. name_pad - .. "s │ Loader │ Resolve │ Load │ Total │", - "" - ) - add( - "%s┼───────────┼────────────┼────────────┼────────────┤", - l - ) - add( - "%-" .. name_pad .. "s │ │ %8.4fms │ %8.4fms │ %8.4fms │", - "Total", - total_resolve, - total_load, - total_resolve + total_load - ) - add( - "%s┴───────────┴────────────┴────────────┴────────────┤", - l - ) - add( - "%-" .. name_pad .. "s │", - "By Plugin" - ) - add( - "%s┬───────────┬────────────┬────────────┬────────────┤", - l - ) - for _, p in ipairs(plugins) do - add( - "%-" .. name_pad .. "s │ %9s │ %8.4fms │ %8.4fms │ %8.4fms │", - p.module, - p.loader, - p.resolve, - p.load, - p.total - ) - end - add( - "%s┴───────────┴────────────┴────────────┴────────────┤", - l - ) - add( - "%-" .. name_pad .. "s │", - "By Module" - ) - add( - "%s┬───────────┬────────────┬────────────┬────────────┤", - l - ) - for _, p in pairs(modules) do - add( - "%-" .. name_pad .. "s │ %9s │ %8.4fms │ %8.4fms │ %8.4fms │", - p.module, - p.loader, - p.resolve, - p.load, - p.total - ) - end - add( - "%s┴───────────┴────────────┴────────────┴────────────┘", - l - ) - - local bufnr = api.nvim_create_buf(false, false) - api.nvim_buf_set_lines(bufnr, 0, 0, false, lines) - api.nvim_buf_set_option(bufnr, "buftype", "nofile") - api.nvim_buf_set_name(bufnr, "Impatient Profile Report") - api.nvim_set_current_buf(bufnr) -end - -return M diff --git a/.config/nvim/lua/interface/popup.lua b/.config/nvim/lua/interface/popup.lua deleted file mode 100644 index b628125..0000000 --- a/.config/nvim/lua/interface/popup.lua +++ /dev/null @@ -1,62 +0,0 @@ -local Popup = {} - ---- Create a new floating window --- @param config The configuration passed to vim.api.nvim_open_win --- @param win_opts The options registered with vim.api.nvim_win_set_option --- @param buf_opts The options registered with vim.api.nvim_buf_set_option --- @return A new popup -function Popup:new(opts) - opts = opts or {} - opts.layout = opts.layout or {} - opts.win_opts = opts.win_opts or {} - opts.buf_opts = opts.buf_opts or {} - - Popup.__index = Popup - - local editor_layout = { - height = vim.o.lines - vim.o.cmdheight - 2, -- Add margin for status and buffer line - width = vim.o.columns, - } - local popup_layout = { - relative = "editor", - height = math.floor(editor_layout.height * 0.9), - width = math.floor(editor_layout.width * 0.8), - style = "minimal", - border = "rounded", - } - popup_layout.row = math.floor((editor_layout.height - popup_layout.height) / 2) - popup_layout.col = math.floor((editor_layout.width - popup_layout.width) / 2) - - local obj = { - buffer = vim.api.nvim_create_buf(false, true), - layout = vim.tbl_deep_extend("force", popup_layout, opts.layout), - win_opts = opts.win_opts, - buf_opts = opts.buf_opts, - } - - setmetatable(obj, Popup) - - return obj -end - ---- Display the popup with the provided content --- @param content_provider A function accepting the popup's layout and returning the content to display -function Popup:display(content_provider) - self.win_id = vim.api.nvim_open_win(self.buffer, true, self.layout) - vim.lsp.util.close_preview_autocmd({ "BufHidden", "BufLeave" }, self.win_id) - - local lines = content_provider(self.layout) - vim.api.nvim_buf_set_lines(self.bufnr, 0, -1, false, lines) - - -- window options - for key, value in pairs(self.win_opts) do - vim.api.nvim_win_set_option(self.win_id, key, value) - end - - -- buffer options - for key, value in pairs(self.buf_opts) do - vim.api.nvim_buf_set_option(self.buffer, key, value) - end -end - -return Popup diff --git a/.config/nvim/lua/interface/text.lua b/.config/nvim/lua/interface/text.lua deleted file mode 100644 index c17d403..0000000 --- a/.config/nvim/lua/interface/text.lua +++ /dev/null @@ -1,98 +0,0 @@ -local M = {} - -local function max_len_line(lines) - local max_len = 0 - - for _, line in ipairs(lines) do - local line_len = line:len() - if line_len > max_len then - max_len = line_len - end - end - - return max_len -end - ---- Center align lines relatively to the parent container --- @param container The container where lines will be displayed --- @param lines The text to align --- @param alignment The alignment value, range: [0-1] -function M.align_left(container, lines, alignment) - local max_len = max_len_line(lines) - local indent_amount = math.ceil(math.max(container.width - max_len, 0) * alignment) - return M.shift_right(lines, indent_amount) -end - ---- Center align lines relatively to the parent container --- @param container The container where lines will be displayed --- @param lines The text to align --- @param alignment The alignment value, range: [0-1] -function M.align_center(container, lines, alignment) - local output = {} - local max_len = max_len_line(lines) - - for _, line in ipairs(lines) do - local padding = string.rep( - " ", - (math.max(container.width, max_len) - line:len()) * alignment - ) - table.insert(output, padding .. line) - end - - return output -end - ---- Shift lines by a given amount --- @params lines The lines the shift --- @param amount The amount of spaces to add -function M.shift_right(lines, amount) - local output = {} - local padding = string.rep(" ", amount) - - for _, line in ipairs(lines) do - table.insert(output, padding .. line) - end - - return output -end - ---- Pretty format tables --- @param entries The table to format --- @param col_count The number of column to span the table on --- @param col_sep The separator between each colummn, default: " " -function M.format_table(entries, col_count, col_sep) - col_sep = col_sep or " " - - local col_rows = math.ceil(vim.tbl_count(entries) / col_count) - local cols = {} - local count = 0 - - for i, entry in ipairs(entries) do - if ((i - 1) % col_rows) == 0 then - table.insert(cols, {}) - count = count + 1 - end - table.insert(cols[count], entry) - end - - local col_max_len = {} - for _, col in ipairs(cols) do - table.insert(col_max_len, max_len_line(col)) - end - - local output = {} - for i, col in ipairs(cols) do - for j, entry in ipairs(col) do - if not output[j] then - output[j] = entry - else - local padding = string.rep(" ", col_max_len[i - 1] - cols[i - 1][j]:len()) - output[j] = output[j] .. padding .. col_sep .. entry - end - end - end - - return output -end - -return M diff --git a/.config/nvim/lua/keymappings.lua b/.config/nvim/lua/keymappings.lua deleted file mode 100644 index 8319ab3..0000000 --- a/.config/nvim/lua/keymappings.lua +++ /dev/null @@ -1,203 +0,0 @@ -local M = {} -local Log = require "core.log" - -local generic_opts_any = { noremap = true, silent = true } - -local generic_opts = { - insert_mode = generic_opts_any, - normal_mode = generic_opts_any, - visual_mode = generic_opts_any, - visual_block_mode = generic_opts_any, - command_mode = generic_opts_any, - term_mode = { silent = true }, -} - -local mode_adapters = { - insert_mode = "i", - normal_mode = "n", - term_mode = "t", - visual_mode = "v", - visual_block_mode = "x", - command_mode = "c", -} - -local defaults = { - ---@usage change or add keymappings for insert mode - insert_mode = { - -- 'jk' for quitting insert mode - ["jk"] = "<ESC>", - -- 'kj' for quitting insert mode - ["kj"] = "<ESC>", - -- 'jj' for quitting insert mode - ["jj"] = "<ESC>", - -- Move current line / block with Alt-j/k ala vscode. - ["<A-j>"] = "<Esc>:m .+1<CR>==gi", - -- Move current line / block with Alt-j/k ala vscode. - ["<A-k>"] = "<Esc>:m .-2<CR>==gi", - -- navigation - ["<A-Up>"] = "<C-\\><C-N><C-w>k", - ["<A-Down>"] = "<C-\\><C-N><C-w>j", - ["<A-Left>"] = "<C-\\><C-N><C-w>h", - ["<A-Right>"] = "<C-\\><C-N><C-w>l", - }, - - ---@usage change or add keymappings for normal mode - normal_mode = { - -- Better window movement - ["<C-h>"] = "<C-w>h", - ["<C-j>"] = "<C-w>j", - ["<C-k>"] = "<C-w>k", - ["<C-l>"] = "<C-w>l", - - -- Resize with arrows - ["<C-Up>"] = ":resize -2<CR>", - ["<C-Down>"] = ":resize +2<CR>", - ["<C-Left>"] = ":vertical resize -2<CR>", - ["<C-Right>"] = ":vertical resize +2<CR>", - - -- Tab switch buffer - ["<S-l>"] = ":BufferNext<CR>", - ["<S-h>"] = ":BufferPrevious<CR>", - - -- Move current line / block with Alt-j/k a la vscode. - ["<A-j>"] = ":m .+1<CR>==", - ["<A-k>"] = ":m .-2<CR>==", - - -- QuickFix - ["]q"] = ":cnext<CR>", - ["[q"] = ":cprev<CR>", - ["<C-q>"] = ":call QuickFixToggle()<CR>", - }, - - ---@usage change or add keymappings for terminal mode - term_mode = { - -- Terminal window navigation - ["<C-h>"] = "<C-\\><C-N><C-w>h", - ["<C-j>"] = "<C-\\><C-N><C-w>j", - ["<C-k>"] = "<C-\\><C-N><C-w>k", - ["<C-l>"] = "<C-\\><C-N><C-w>l", - }, - - ---@usage change or add keymappings for visual mode - visual_mode = { - -- Better indenting - ["<"] = "<gv", - [">"] = ">gv", - - -- ["p"] = '"0p', - -- ["P"] = '"0P', - }, - - ---@usage change or add keymappings for visual block mode - visual_block_mode = { - -- Move selected line / block of text in visual mode - ["K"] = ":move '<-2<CR>gv-gv", - ["J"] = ":move '>+1<CR>gv-gv", - - -- Move current line / block with Alt-j/k ala vscode. - ["<A-j>"] = ":m '>+1<CR>gv-gv", - ["<A-k>"] = ":m '<-2<CR>gv-gv", - }, - - ---@usage change or add keymappings for command mode - command_mode = { - -- navigate tab completion with <c-j> and <c-k> - -- runs conditionally - ["<C-j>"] = { - 'pumvisible() ? "\\<C-n>" : "\\<C-j>"', - { expr = true, noremap = true }, - }, - ["<C-k>"] = { - 'pumvisible() ? "\\<C-p>" : "\\<C-k>"', - { expr = true, noremap = true }, - }, - }, -} - -if vim.fn.has "mac" == 1 then - defaults.normal_mode["<A-Up>"] = defaults.normal_mode["<C-Up>"] - defaults.normal_mode["<A-Down>"] = defaults.normal_mode["<C-Down>"] - defaults.normal_mode["<A-Left>"] = defaults.normal_mode["<C-Left>"] - defaults.normal_mode["<A-Right>"] = defaults.normal_mode["<C-Right>"] - Log:debug "Activated mac keymappings" -end - --- Append key mappings to lunarvim's defaults for a given mode --- @param keymaps The table of key mappings containing a list per mode (normal_mode, insert_mode, ..) -function M.append_to_defaults(keymaps) - for mode, mappings in pairs(keymaps) do - for k, v in pairs(mappings) do - defaults[mode][k] = v - end - end -end - --- Unsets all keybindings defined in keymaps --- @param keymaps The table of key mappings containing a list per mode (normal_mode, insert_mode, ..) -function M.clear(keymaps) - local default = M.get_defaults() - for mode, mappings in pairs(keymaps) do - local translated_mode = mode_adapters[mode] or mode - for key, _ in pairs(mappings) do - -- some plugins may override default bindings that the user hasn't manually overriden - if - default[mode][key] ~= nil - or (default[translated_mode] ~= nil and default[translated_mode][key] ~= nil) - then - pcall(vim.api.nvim_del_keymap, translated_mode, key) - end - end - end -end - --- Set key mappings individually --- @param mode The keymap mode, can be one of the keys of mode_adapters --- @param key The key of keymap --- @param val Can be form as a mapping or tuple of mapping and user defined opt -function M.set_keymaps(mode, key, val) - local opt = generic_opts[mode] or generic_opts_any - if type(val) == "table" then - opt = val[2] - val = val[1] - end - if val then - vim.api.nvim_set_keymap(mode, key, val, opt) - else - pcall(vim.api.nvim_del_keymap, mode, key) - end -end - --- Load key mappings for a given mode --- @param mode The keymap mode, can be one of the keys of mode_adapters --- @param keymaps The list of key mappings -function M.load_mode(mode, keymaps) - mode = mode_adapters[mode] or mode - for k, v in pairs(keymaps) do - M.set_keymaps(mode, k, v) - end -end - --- Load key mappings for all provided modes --- @param keymaps A list of key mappings for each mode -function M.load(keymaps) - keymaps = keymaps or {} - for mode, mapping in pairs(keymaps) do - M.load_mode(mode, mapping) - end -end - --- Load the default keymappings -function M.load_defaults() - M.load(M.get_defaults()) - options.keys = {} - for idx, _ in pairs(defaults) do - options.keys[idx] = {} - end -end - --- Get the default keymappings -function M.get_defaults() - return defaults -end - -return M diff --git a/.config/nvim/lua/lsp/config.lua b/.config/nvim/lua/lsp/config.lua deleted file mode 100644 index 61428aa..0000000 --- a/.config/nvim/lua/lsp/config.lua +++ /dev/null @@ -1,67 +0,0 @@ -return { - templates_dir = join_paths(get_runtime_dir(), "site", "after", "ftplugin"), - diagnostics = { - signs = { - active = true, - values = { - { name = "LspDiagnosticsSignError", text = "" }, - { name = "LspDiagnosticsSignWarning", text = "" }, - { name = "LspDiagnosticsSignHint", text = "" }, - { name = "LspDiagnosticsSignInformation", text = "" }, - }, - }, - virtual_text = true, - update_in_insert = false, - underline = true, - severity_sort = true, - }, - document_highlight = true, - code_lens_refresh = true, - popup_border = "single", - on_attach_callback = nil, - on_init_callback = nil, - automatic_servers_installation = true, - buffer_mappings = { - normal_mode = { - ["K"] = { "<cmd>lua vim.lsp.buf.hover()<CR>", "Show hover" }, - ["gd"] = { "<cmd>lua vim.lsp.buf.definition()<CR>", "Goto Definition" }, - ["gD"] = { "<cmd>lua vim.lsp.buf.declaration()<CR>", "Goto declaration" }, - ["gr"] = { "<cmd>lua vim.lsp.buf.references()<CR>", "Goto references" }, - ["gI"] = { "<cmd>lua vim.lsp.buf.implementation()<CR>", "Goto Implementation" }, - ["gs"] = { "<cmd>lua vim.lsp.buf.signature_help()<CR>", "show signature help" }, - ["gp"] = { "<cmd>lua require'lsp.peek'.Peek('definition')<CR>", "Peek definition" }, - ["gl"] = { - "<cmd>lua require'lsp.handlers'.show_line_diagnostics()<CR>", - "Show line diagnostics", - }, - }, - insert_mode = {}, - visual_mode = {}, - }, - null_ls = { - setup = {}, - config = {}, - }, - override = { - "angularls", - "ansiblels", - "denols", - "ember", - "emmet_ls", - "eslint", - "eslintls", - "graphql", - "jedi_language_server", - "ltex", - "phpactor", - "pylsp", - "rome", - "sorbet", - "sqlls", - "sqls", - "stylelint_lsp", - "tailwindcss", - "tflint", - "volar", - }, -} diff --git a/.config/nvim/lua/lsp/handlers.lua b/.config/nvim/lua/lsp/handlers.lua deleted file mode 100644 index fcf7630..0000000 --- a/.config/nvim/lua/lsp/handlers.lua +++ /dev/null @@ -1,187 +0,0 @@ --- Set Default Prefix. --- Note: You can set a prefix per lsp server in the lv-globals.lua file -local M = {} - -function M.setup() - local config = { -- your config - virtual_text = options.lsp.diagnostics.virtual_text, - signs = options.lsp.diagnostics.signs, - underline = options.lsp.diagnostics.underline, - update_in_insert = options.lsp.diagnostics.update_in_insert, - severity_sort = options.lsp.diagnostics.severity_sort, - } - if vim.fn.has "nvim-0.5.1" > 0 then - vim.lsp.handlers["textDocument/publishDiagnostics"] = function(_, result, ctx, _) - local uri = result.uri - local bufnr = vim.uri_to_bufnr(uri) - if not bufnr then - return - end - - local diagnostics = result.diagnostics - local ok, vim_diag = pcall(require, "vim.diagnostic") - if ok then - -- FIX: why can't we just use vim.diagnostic.get(buf_id)? - config.signs = true - for i, diagnostic in ipairs(diagnostics) do - local rng = diagnostic.range - diagnostics[i].lnum = rng["start"].line - diagnostics[i].end_lnum = rng["end"].line - diagnostics[i].col = rng["start"].character - diagnostics[i].end_col = rng["end"].character - end - local namespace = vim.lsp.diagnostic.get_namespace(ctx.client_id) - - vim_diag.set(namespace, bufnr, diagnostics, config) - if not vim.api.nvim_buf_is_loaded(bufnr) then - return - end - - vim_diag.show(namespace, bufnr, diagnostics, config) - else - vim.lsp.diagnostic.save(diagnostics, bufnr, ctx.client_id) - if not vim.api.nvim_buf_is_loaded(bufnr) then - return - end - vim.lsp.diagnostic.display(diagnostics, bufnr, ctx.client_id, config) - end - end - else - vim.lsp.handlers["textDocument/publishDiagnostics"] = - function(_, _, params, client_id, _) - local uri = params.uri - local bufnr = vim.uri_to_bufnr(uri) - if not bufnr then - return - end - - local diagnostics = params.diagnostics - vim.lsp.diagnostic.save(diagnostics, bufnr, client_id) - if not vim.api.nvim_buf_is_loaded(bufnr) then - return - end - vim.lsp.diagnostic.display(diagnostics, bufnr, client_id, config) - end - end - - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { - border = options.lsp.popup_border, - }) - - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( - vim.lsp.handlers.signature_help, - { - border = options.lsp.popup_border, - } - ) -end - -local function split_by_chunk(text, chunkSize) - local s = {} - for i = 1, #text, chunkSize do - s[#s + 1] = text:sub(i, i + chunkSize - 1) - end - return s -end - -function M.show_line_diagnostics() - -- TODO: replace all this with vim.diagnostic.show_position_diagnostics() - local diagnostics = vim.lsp.diagnostic.get_line_diagnostics() - local severity_highlight = { - "LspDiagnosticsFloatingError", - "LspDiagnosticsFloatingWarning", - "LspDiagnosticsFloatingInformation", - "LspDiagnosticsFloatingHint", - } - local ok, vim_diag = pcall(require, "vim.diagnostic") - if ok then - local buf_id = vim.api.nvim_win_get_buf(0) - local win_id = vim.api.nvim_get_current_win() - local cursor_position = vim.api.nvim_win_get_cursor(win_id) - severity_highlight = { - "DiagnosticFloatingError", - "DiagnosticFloatingWarn", - "DiagnosticFloatingInfo", - "DiagnosticFloatingHint", - } - diagnostics = vim_diag.get(buf_id, { lnum = cursor_position[1] - 1 }) - end - local lines = {} - local max_width = vim.fn.winwidth(0) - 5 - local height = #diagnostics - local width = 0 - local opts = {} - local close_events = { "CursorMoved", "CursorMovedI", "BufHidden", "InsertCharPre" } - if height == 0 then - return - end - local bufnr = vim.api.nvim_create_buf(false, true) - local diag_message - table.sort(diagnostics, function(a, b) - return a.severity < b.severity - end) - - local hash = {} - local diagnostics_no_dupes = {} - for _, v in ipairs(diagnostics) do - if not hash[v["message"]] then - diagnostics_no_dupes[#diagnostics_no_dupes + 1] = v -- you could print here instead of saving to result table if you wanted - hash[v["message"]] = true - end - end - -- print(vim.inspect(diagnostics_no_dupes)) - - for i, diagnostic in ipairs(diagnostics_no_dupes) do - local source = diagnostic.source - diag_message = diagnostic.message:gsub("[\n\r]", " ") - if source then - if string.find(source, "/") then - source = string.sub( - diagnostic.source, - string.find(diagnostic.source, "([%w-_]+)$") - ) - end - diag_message = string.format("%d. %s: %s", i, source, diag_message) - else - diag_message = string.format("%d. %s", i, diag_message) - end - if diagnostic.code then - diag_message = string.format("%s [%s]", diag_message, diagnostic.code) - end - local msgs = split_by_chunk(diag_message, max_width) - for _, diag in ipairs(msgs) do - table.insert(lines, { message = diag, severity = diagnostic.severity }) - width = math.max(diag:len(), width) - end - end - height = #lines - opts = vim.lsp.util.make_floating_popup_options(width, height, opts) - opts["style"] = "minimal" - opts["border"] = "rounded" - opts["focusable"] = true - - vim.api.nvim_buf_set_option(bufnr, "bufhidden", "wipe") - local winnr = vim.api.nvim_open_win(bufnr, false, opts) - vim.api.nvim_win_set_option(winnr, "winblend", 0) - vim.api.nvim_buf_set_var(bufnr, "lsp_floating_window", winnr) - for i, diag in ipairs(lines) do - vim.api.nvim_buf_set_lines(bufnr, i - 1, i - 1, 0, { diag.message }) - vim.api.nvim_buf_add_highlight( - bufnr, - -1, - severity_highlight[diag.severity], - i - 1, - 0, - diag.message:len() - ) - end - - vim.api.nvim_command( - "autocmd QuitPre <buffer> ++nested ++once lua pcall(vim.api.nvim_win_close, " - .. winnr - .. ", true)" - ) - vim.lsp.util.close_preview_autocmd(close_events, winnr) -end - -return M diff --git a/.config/nvim/lua/lsp/init.lua b/.config/nvim/lua/lsp/init.lua deleted file mode 100644 index 9cb3e78..0000000 --- a/.config/nvim/lua/lsp/init.lua +++ /dev/null @@ -1,198 +0,0 @@ -local M = {} -local Log = require "core.log" -local utils = require "utils" - -local function lsp_highlight_document(client) - if options.lsp.document_highlight == false then - return -- we don't need further - end - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec( - [[ - augroup lsp_document_highlight - autocmd! * <buffer> - autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() - autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() - augroup END - ]], - false - ) - end -end - -local function lsp_code_lens_refresh(client) - if options.lsp.code_lens_refresh == false then - return - end - - if client.resolved_capabilities.code_lens then - vim.api.nvim_exec( - [[ - augroup lsp_code_lens_refresh - autocmd! * <buffer> - autocmd InsertLeave <buffer> lua vim.lsp.codelens.refresh() - autocmd InsertLeave <buffer> lua vim.lsp.codelens.display() - augroup END - ]], - false - ) - end -end - -local function add_lsp_buffer_keybindings(bufnr) - local mappings = { - normal_mode = "n", - insert_mode = "i", - visual_mode = "v", - } - - if options.builtin.which_key.active then - -- Remap using which_key - local status_ok, wk = pcall(require, "which-key") - if not status_ok then - return - end - for mode_name, mode_char in pairs(mappings) do - wk.register( - options.lsp.buffer_mappings[mode_name], - { mode = mode_char, buffer = bufnr } - ) - end - else - -- Remap using nvim api - for mode_name, mode_char in pairs(mappings) do - for key, remap in pairs(options.lsp.buffer_mappings[mode_name]) do - vim.api.nvim_buf_set_keymap( - bufnr, - mode_char, - key, - remap[1], - { noremap = true, silent = true } - ) - end - end - end -end - -function M.common_capabilities() - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true - capabilities.textDocument.completion.completionItem.resolveSupport = { - properties = { - "documentation", - "detail", - "additionalTextEdits", - }, - } - - local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") - if status_ok then - capabilities = cmp_nvim_lsp.update_capabilities(capabilities) - end - - return capabilities -end - -local function select_default_formater(client) - if - client.name == "null-ls" or not client.resolved_capabilities.document_formatting - then - return - end - Log:debug("Checking for formatter overriding for " .. client.name) - local formatters = require "lvim.lsp.null-ls.formatters" - local client_filetypes = client.config.filetypes or {} - for _, filetype in ipairs(client_filetypes) do - if #vim.tbl_keys(formatters.list_registered_providers(filetype)) > 0 then - Log:debug( - "Formatter overriding detected. Disabling formatting capabilities for " - .. client.name - ) - client.resolved_capabilities.document_formatting = false - client.resolved_capabilities.document_range_formatting = false - end - end -end - -function M.common_on_init(client, bufnr) - if options.lsp.on_init_callback then - options.lsp.on_init_callback(client, bufnr) - Log:debug "Called lsp.on_init_callback" - return - end - select_default_formater(client) -end - -function M.common_on_attach(client, bufnr) - if options.lsp.on_attach_callback then - options.lsp.on_attach_callback(client, bufnr) - Log:debug "Called lsp.on_attach_callback" - end - lsp_highlight_document(client) - lsp_code_lens_refresh(client) - add_lsp_buffer_keybindings(bufnr) -end - -local function bootstrap_nlsp(opts) - opts = opts or {} - local lsp_settings_status_ok, lsp_settings = pcall(require, "nlspsettings") - if lsp_settings_status_ok then - lsp_settings.setup(opts) - end -end - -function M.get_common_opts() - return { - on_attach = M.common_on_attach, - on_init = M.common_on_init, - capabilities = M.common_capabilities(), - } -end - -local LSP_DEPRECATED_SIGN_MAP = { - ["LspDiagnosticsSignError"] = "DiagnosticSignError", - ["LspDiagnosticsSignWarning"] = "DiagnosticSignWarn", - ["LspDiagnosticsSignHint"] = "DiagnosticSignHint", - ["LspDiagnosticsSignInformation"] = "DiagnosticSignInfo", -} - -function M.setup() - Log:debug "Setting up LSP support" - - local lsp_status_ok, _ = pcall(require, "lspconfig") - if not lsp_status_ok then - return - end - - local is_neovim_nightly = vim.fn.has "nvim-0.5.1" > 0 - - for _, sign in ipairs(options.lsp.diagnostics.signs.values) do - local lsp_sign_name = LSP_DEPRECATED_SIGN_MAP[sign.name] - if is_neovim_nightly and lsp_sign_name then - vim.fn.sign_define( - lsp_sign_name, - { texthl = lsp_sign_name, text = sign.text, numhl = lsp_sign_name } - ) - end - vim.fn.sign_define( - sign.name, - { texthl = sign.name, text = sign.text, numhl = sign.name } - ) - end - require("lsp.handlers").setup() - - if not utils.is_directory(options.lsp.templates_dir) then - require("lsp.templates").generate_templates() - end - - Log:info(string.format("%s", options.lsp.templates_dir)) - - bootstrap_nlsp { config_home = utils.join_paths(get_config_dir(), "lsp-settings") } - - require("lsp.null-ls").setup() - - require("core.autocmds").configure_format_on_save() -end - -return M diff --git a/.config/nvim/lua/lsp/manager.lua b/.config/nvim/lua/lsp/manager.lua deleted file mode 100644 index 268e90d..0000000 --- a/.config/nvim/lua/lsp/manager.lua +++ /dev/null @@ -1,95 +0,0 @@ -local M = {} - -local Log = require "core.log" -local lsp_utils = require "lsp.utils" - -function M.init_defaults(languages) - for _, entry in ipairs(languages) do - if not options.lang[entry] then - options.lang[entry] = { - formatters = {}, - linters = {}, - lsp = {}, - } - end - end -end - ----Resolve the configuration for a server based on both common and user configuration ----@param name string ----@param user_config table [optional] ----@return table -local function resolve_config(name, user_config) - local config = { - on_attach = require("lsp").common_on_attach, - on_init = require("lsp").common_on_init, - capabilities = require("lsp").common_capabilities(), - } - - local has_custom_provider, custom_config = pcall(require, "lsp/providers/" .. name) - if has_custom_provider then - Log:debug("Using custom configuration for requested server: " .. name) - config = vim.tbl_deep_extend("force", config, custom_config) - end - - if user_config then - config = vim.tbl_deep_extend("force", config, user_config) - end - - return config -end - --- manually start the server and don't wait for the usual filetype trigger from lspconfig -local function buf_try_add(server_name, bufnr) - bufnr = bufnr or vim.api.nvim_get_current_buf() - require("lspconfig")[server_name].manager.try_add_wrapper(bufnr) -end - ----Setup a language server by providing a name ----@param server_name string name of the language server ----@param user_config table [optional] when available it will take predence over any default configurations -function M.setup(server_name, user_config) - vim.validate { name = { server_name, "string" } } - - if lsp_utils.is_client_active(server_name) then - return - end - - local config = resolve_config(server_name, user_config) - local servers = require "nvim-lsp-installer.servers" - local server_available, requested_server = servers.get_server(server_name) - - local is_overridden = vim.tbl_contains(options.lsp.override, server_name) - if not server_available or is_overridden then - pcall(function() - require("lspconfig")[server_name].setup(config) - buf_try_add(server_name) - end) - return - end - - local install_notification = false - - if not requested_server:is_installed() then - if options.lsp.automatic_servers_installation then - Log:debug "Automatic server installation detected" - requested_server:install() - install_notification = true - else - Log:debug(requested_server.name .. " is not managed by the automatic installer") - end - end - - requested_server:on_ready(function() - if install_notification then - vim.notify( - string.format("Installation complete for [%s] server", requested_server.name), - vim.log.levels.INFO - ) - end - install_notification = false - requested_server:setup(config) - end) -end - -return M diff --git a/.config/nvim/lua/lsp/null-ls/code_actions.lua b/.config/nvim/lua/lsp/null-ls/code_actions.lua deleted file mode 100644 index 70cecda..0000000 --- a/.config/nvim/lua/lsp/null-ls/code_actions.lua +++ /dev/null @@ -1,81 +0,0 @@ -local M = {} - -local null_ls = require "null-ls" -local services = require "lsp.null-ls.services" -local Log = require "core.log" - -local METHOD = null_ls.methods.CODE_ACTION - -local is_registered = function(name) - local query = { - name = name, - method = METHOD, - } - return require("null-ls.sources").is_registered(query) -end - -function M.list_registered_providers(filetype) - local registered_providers = services.list_registered_providers_names(filetype) - return registered_providers[METHOD] or {} -end - -function M.list_available(filetype) - local availables = require("null-ls.sources").get_available(filetype, METHOD) - local actors = vim.tbl_map(function(src) - return src.name - end, availables) - table.sort(actors) - return actors -end - -function M.list_configured(actions_configs) - local actors, errors = {}, {} - - for _, config in ipairs(actions_configs) do - vim.validate { - ["config.name"] = { config.name, "string" }, - } - - local name = config.name:gsub("-", "_") - local actor = null_ls.builtins.code_actions[name] - - if not actor then - Log:error("Not a valid code_actions: " .. config.name) - errors[name] = {} -- Add data here when necessary - elseif is_registered(config.name) then - Log:trace "Skipping registering the source more than once" - else - local command - if actor._opts.command then - command = services.find_command(actor._opts.command) - end - if not command and actor._opts.command ~= nil then - Log:warn("Not found: " .. actor._opts.command) - errors[name] = {} -- Add data here when necessary - else - Log:debug("Using code_actions: " .. (command or config.name)) - table.insert( - actors, - actor.with { - command = command, -- could be nil - extra_args = config.args, - filetypes = config.filetypes, - } - ) - end - end - end - - return { supported = actors, unsupported = errors } -end - -function M.setup(actions_configs) - if vim.tbl_isempty(actions_configs) then - return - end - - local actions = M.list_configured(actions_configs) - null_ls.register { sources = actions.supported } -end - -return M diff --git a/.config/nvim/lua/lsp/null-ls/formatters.lua b/.config/nvim/lua/lsp/null-ls/formatters.lua deleted file mode 100644 index 72d622a..0000000 --- a/.config/nvim/lua/lsp/null-ls/formatters.lua +++ /dev/null @@ -1,82 +0,0 @@ -local M = {} - -local null_ls = require "null-ls" -local services = require "lsp.null-ls.services" -local Log = require "core.log" - -local is_registered = function(name) - local query = { - name = name, - method = require("null-ls").methods.FORMATTING, - } - return require("null-ls.sources").is_registered(query) -end - -function M.list_registered_providers(filetype) - local null_ls_methods = require "null-ls.methods" - local formatter_method = null_ls_methods.internal["FORMATTING"] - local registered_providers = services.list_registered_providers_names(filetype) - return registered_providers[formatter_method] or {} -end - -function M.list_available(filetype) - local formatters = {} - local tbl = require "utils.table" - for _, provider in pairs(null_ls.builtins.formatting) do - if - tbl.contains(provider.filetypes or {}, function(ft) - return ft == "*" or ft == filetype - end) - then - table.insert(formatters, provider.name) - end - end - - table.sort(formatters) - return formatters -end - -function M.list_configured(formatter_configs) - local formatters, errors = {}, {} - - for _, fmt_config in ipairs(formatter_configs) do - local name = fmt_config.exe:gsub("-", "_") - local formatter = null_ls.builtins.formatting[name] - - if not formatter then - Log:error("Not a valid formatter: " .. fmt_config.exe) - errors[name] = {} -- Add data here when necessary - elseif is_registered(fmt_config.exe) then - Log:trace "Skipping registering the source more than once" - else - local formatter_cmd = services.find_command(formatter._opts.command) - if not formatter_cmd then - Log:warn("Not found: " .. formatter._opts.command) - errors[name] = {} -- Add data here when necessary - else - Log:debug("Using formatter: " .. formatter_cmd) - table.insert( - formatters, - formatter.with { - command = formatter_cmd, - extra_args = fmt_config.args, - filetypes = fmt_config.filetypes, - } - ) - end - end - end - - return { supported = formatters, unsupported = errors } -end - -function M.setup(formatter_configs) - if vim.tbl_isempty(formatter_configs) then - return - end - - local formatters = M.list_configured(formatter_configs) - null_ls.register { sources = formatters.supported } -end - -return M diff --git a/.config/nvim/lua/lsp/null-ls/init.lua b/.config/nvim/lua/lsp/null-ls/init.lua deleted file mode 100644 index adbc5b2..0000000 --- a/.config/nvim/lua/lsp/null-ls/init.lua +++ /dev/null @@ -1,22 +0,0 @@ -local M = {} - -local Log = require "core.log" - -function M:setup() - local status_ok, null_ls = pcall(require, "null-ls") - if not status_ok then - Log:error "Missing null-ls dependency" - return - end - - null_ls.config(options.lsp.null_ls.config) - local default_opts = require("lsp").get_common_opts() - - if vim.tbl_isempty(options.lsp.null_ls.setup or {}) then - options.lsp.null_ls.setup = default_opts - end - - require("lspconfig")["null-ls"].setup(options.lsp.null_ls.setup) -end - -return M diff --git a/.config/nvim/lua/lsp/null-ls/linters.lua b/.config/nvim/lua/lsp/null-ls/linters.lua deleted file mode 100644 index ec5e25a..0000000 --- a/.config/nvim/lua/lsp/null-ls/linters.lua +++ /dev/null @@ -1,82 +0,0 @@ -local M = {} - -local null_ls = require "null-ls" -local services = require "lsp.null-ls.services" -local Log = require "core.log" - -local is_registered = function(name) - local query = { - name = name, - method = require("null-ls").methods.DIAGNOSTICS, - } - return require("null-ls.sources").is_registered(query) -end - -function M.list_registered_providers(filetype) - local null_ls_methods = require "null-ls.methods" - local linter_method = null_ls_methods.internal["DIAGNOSTICS"] - local registered_providers = services.list_registered_providers_names(filetype) - return registered_providers[linter_method] or {} -end - -function M.list_available(filetype) - local linters = {} - local tbl = require "utils.table" - for _, provider in pairs(null_ls.builtins.diagnostics) do - if - tbl.contains(provider.filetypes or {}, function(ft) - return ft == "*" or ft == filetype - end) - then - table.insert(linters, provider.name) - end - end - - table.sort(linters) - return linters -end - -function M.list_configured(linter_configs) - local linters, errors = {}, {} - - for _, lnt_config in pairs(linter_configs) do - local name = lnt_config.exe:gsub("-", "_") - local linter = null_ls.builtins.diagnostics[name] - - if not linter then - Log:error("Not a valid linter: " .. lnt_config.exe) - errors[lnt_config.exe] = {} -- Add data here when necessary - elseif is_registered(lnt_config.exe) then - Log:trace "Skipping registering the source more than once" - else - local linter_cmd = services.find_command(linter._opts.command) - if not linter_cmd then - Log:warn("Not found: " .. linter._opts.command) - errors[name] = {} -- Add data here when necessary - else - Log:debug("Using linter: " .. linter_cmd) - table.insert( - linters, - linter.with { - command = linter_cmd, - extra_args = lnt_config.args, - filetypes = lnt_config.filetypes, - } - ) - end - end - end - - return { supported = linters, unsupported = errors } -end - -function M.setup(linter_configs) - if vim.tbl_isempty(linter_configs) then - return - end - - local linters = M.list_configured(linter_configs) - null_ls.register { sources = linters.supported } -end - -return M diff --git a/.config/nvim/lua/lsp/null-ls/services.lua b/.config/nvim/lua/lsp/null-ls/services.lua deleted file mode 100644 index 6a52520..0000000 --- a/.config/nvim/lua/lsp/null-ls/services.lua +++ /dev/null @@ -1,61 +0,0 @@ -local M = {} - -local function find_root_dir() - local util = require "lspconfig/util" - local lsp_utils = require "lsp.utils" - - local ts_client = lsp_utils.is_client_active "typescript" - if ts_client then - return ts_client.config.root_dir - end - local dirname = vim.fn.expand "%:p:h" - return util.root_pattern "package.json"(dirname) -end - -local function from_node_modules(command) - local root_dir = find_root_dir() - - if not root_dir then - return nil - end - - return root_dir .. "/node_modules/.bin/" .. command -end - -local local_providers = { - prettier = { find = from_node_modules }, - prettierd = { find = from_node_modules }, - prettier_d_slim = { find = from_node_modules }, - eslint_d = { find = from_node_modules }, - eslint = { find = from_node_modules }, - stylelint = { find = from_node_modules }, -} - -function M.find_command(command) - if local_providers[command] then - local local_command = local_providers[command].find(command) - if local_command and vim.fn.executable(local_command) == 1 then - return local_command - end - end - - if vim.fn.executable(command) == 1 then - return command - end - return nil -end - -function M.list_registered_providers_names(filetype) - local s = require "null-ls.sources" - local available_sources = s.get_available(filetype) - local registered = {} - for _, source in ipairs(available_sources) do - for method in pairs(source.methods) do - registered[method] = registered[method] or {} - table.insert(registered[method], source.name) - end - end - return registered -end - -return M diff --git a/.config/nvim/lua/lsp/peek.lua b/.config/nvim/lua/lsp/peek.lua deleted file mode 100644 index 151c967..0000000 --- a/.config/nvim/lua/lsp/peek.lua +++ /dev/null @@ -1,166 +0,0 @@ -local M = { - floating_buf = nil, - floating_win = nil, - prev_result = nil, -} - -local function create_floating_file(location, opts) - vim.validate { - location = { location, "t" }, - opts = { opts, "t", true }, - } - - -- Set some defaults - opts = opts or {} - local close_events = opts.close_events - or { "CursorMoved", "CursorMovedI", "BufHidden", "InsertCharPre" } - - -- location may be LocationLink or Location - local uri = location.targetUri or location.uri - if uri == nil then - return - end - local bufnr = vim.uri_to_bufnr(uri) - if not vim.api.nvim_buf_is_loaded(bufnr) then - vim.fn.bufload(bufnr) - end - - local range = location.targetRange or location.range - - local contents = vim.api.nvim_buf_get_lines( - bufnr, - range.start.line, - math.min( - range["end"].line + 1 + (opts.context or 10), - range.start.line + (opts.max_height or 15) - ), -- Don't let the window be more that 15 lines long(height) - false - ) - local width, height = vim.lsp.util._make_floating_popup_size(contents, opts) - opts = vim.lsp.util.make_floating_popup_options(width, height, opts) - -- Don't make it minimal as it is meant to be fully featured - opts["style"] = nil - - vim.api.nvim_buf_set_option(bufnr, "bufhidden", "wipe") - - local winnr = vim.api.nvim_open_win(bufnr, false, opts) - vim.api.nvim_win_set_option(winnr, "winblend", 0) - - vim.api.nvim_win_set_cursor(winnr, { range.start.line + 1, range.start.character }) - vim.api.nvim_buf_set_var(bufnr, "lsp_floating_window", winnr) - - -- Set some autocmds to close the window - vim.api.nvim_command( - "autocmd QuitPre <buffer> ++nested ++once lua pcall(vim.api.nvim_win_close, " - .. winnr - .. ", true)" - ) - vim.lsp.util.close_preview_autocmd(close_events, winnr) - - return bufnr, winnr -end - -local function preview_location_callback(result) - if result == nil or vim.tbl_isempty(result) then - return nil - end - - local opts = { - border = "rounded", - context = 10, - } - - if vim.tbl_islist(result) then - M.prev_result = result[1] - M.floating_buf, M.floating_win = create_floating_file(result[1], opts) - else - M.prev_result = result - M.floating_buf, M.floating_win = create_floating_file(result, opts) - end -end - -local function preview_location_callback_old_signature(_, _, result) - return preview_location_callback(result) -end - -local function preview_location_callback_new_signature(_, result) - return preview_location_callback(result) -end - -function M.open_file() - -- Get the file currently open in the floating window - local filepath = vim.fn.expand "%:." - - if not filepath then - print "peek: Unable to open the file!" - return - end - - -- Close the floating window - pcall(vim.api.nvim_win_close, M.floating_win, true) - - -- Edit the file - vim.cmd("edit " .. filepath) - - local winnr = vim.api.nvim_get_current_win() - - -- Set the cursor at the right position - M.set_cursor_to_prev_pos(winnr) -end - -function M.set_cursor_to_prev_pos(winnr) - -- Get position of the thing to peek at - local location = M.prev_result - local range = location.targetRange or location.range - local cursor_pos = { range.start.line + 1, range.start.character } - - -- Set the winnr to the floating window if none was passed in - winnr = winnr or M.floating_win - -- Set the cursor at the correct position in the floating window - vim.api.nvim_win_set_cursor(winnr, cursor_pos) -end - -function M.Peek(what) - -- If a window already exists, focus it at the right position! - if vim.tbl_contains(vim.api.nvim_list_wins(), M.floating_win) then - local success_1, _ = pcall(vim.api.nvim_set_current_win, M.floating_win) - if not success_1 then - print "peek: You cannot edit the current file in a preview!" - return - end - - -- Set the cursor at the correct position in the floating window - M.set_cursor_to_prev_pos() - - vim.api.nvim_buf_set_keymap( - M.floating_buf, - "n", - "<CR>", - ":lua require('lsp.peek').open_file()<CR>", - { noremap = true, silent = true } - ) - else - -- Make a new request and then create the new window in the callback - local params = vim.lsp.util.make_position_params() - local preview_callback = preview_location_callback_old_signature - if vim.fn.has "nvim-0.5.1" > 0 then - preview_callback = preview_location_callback_new_signature - end - local success, _ = pcall( - vim.lsp.buf_request, - 0, - "textDocument/" .. what, - params, - preview_callback - ) - if not success then - print( - 'peek: Error calling LSP method "textDocument/' - .. what - .. '". The current language lsp might not support it.' - ) - end - end -end - -return M diff --git a/.config/nvim/lua/lsp/providers/jsonls.lua b/.config/nvim/lua/lsp/providers/jsonls.lua deleted file mode 100644 index e81b2c3..0000000 --- a/.config/nvim/lua/lsp/providers/jsonls.lua +++ /dev/null @@ -1,198 +0,0 @@ - -local default_schemas = nil -local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls") -if status_ok then - default_schemas = jsonls_settings.get_default_schemas() -end - -local schemas = { - { - description = "TypeScript compiler configuration file", - fileMatch = { - "tsconfig.json", - "tsconfig.*.json", - }, - url = "https://json.schemastore.org/tsconfig.json", - }, - { - description = "Lerna config", - fileMatch = { "lerna.json" }, - url = "https://json.schemastore.org/lerna.json", - }, - { - description = "Babel configuration", - fileMatch = { - ".babelrc.json", - ".babelrc", - "babel.config.json", - }, - url = "https://json.schemastore.org/babelrc.json", - }, - { - description = "ESLint config", - fileMatch = { - ".eslintrc.json", - ".eslintrc", - }, - url = "https://json.schemastore.org/eslintrc.json", - }, - { - description = "Bucklescript config", - fileMatch = { "bsconfig.json" }, - url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json", - }, - { - description = "Prettier config", - fileMatch = { - ".prettierrc", - ".prettierrc.json", - "prettier.config.json", - }, - url = "https://json.schemastore.org/prettierrc", - }, - { - description = "Vercel Now config", - fileMatch = { "now.json" }, - url = "https://json.schemastore.org/now", - }, - { - description = "Stylelint config", - fileMatch = { - ".stylelintrc", - ".stylelintrc.json", - "stylelint.config.json", - }, - url = "https://json.schemastore.org/stylelintrc", - }, - { - description = "A JSON schema for the ASP.NET LaunchSettings.json files", - fileMatch = { "launchsettings.json" }, - url = "https://json.schemastore.org/launchsettings.json", - }, - { - description = "Schema for CMake Presets", - fileMatch = { - "CMakePresets.json", - "CMakeUserPresets.json", - }, - url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json", - }, - { - description = "Configuration file as an alternative for configuring your repository in the settings page.", - fileMatch = { - ".codeclimate.json", - }, - url = "https://json.schemastore.org/codeclimate.json", - }, - { - description = "LLVM compilation database", - fileMatch = { - "compile_commands.json", - }, - url = "https://json.schemastore.org/compile-commands.json", - }, - { - description = "Config file for Command Task Runner", - fileMatch = { - "commands.json", - }, - url = "https://json.schemastore.org/commands.json", - }, - { - description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.", - fileMatch = { - "*.cf.json", - "cloudformation.json", - }, - url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json", - }, - { - description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.", - fileMatch = { - "serverless.template", - "*.sam.json", - "sam.json", - }, - url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json", - }, - { - description = "Json schema for properties json file for a GitHub Workflow template", - fileMatch = { - ".github/workflow-templates/**.properties.json", - }, - url = "https://json.schemastore.org/github-workflow-template-properties.json", - }, - { - description = "golangci-lint configuration file", - fileMatch = { - ".golangci.toml", - ".golangci.json", - }, - url = "https://json.schemastore.org/golangci-lint.json", - }, - { - description = "JSON schema for the JSON Feed format", - fileMatch = { - "feed.json", - }, - url = "https://json.schemastore.org/feed.json", - versions = { - ["1"] = "https://json.schemastore.org/feed-1.json", - ["1.1"] = "https://json.schemastore.org/feed.json", - }, - }, - { - description = "Packer template JSON configuration", - fileMatch = { - "packer.json", - }, - url = "https://json.schemastore.org/packer.json", - }, - { - description = "NPM configuration file", - fileMatch = { - "package.json", - }, - url = "https://json.schemastore.org/package.json", - }, - { - description = "JSON schema for Visual Studio component configuration files", - fileMatch = { - "*.vsconfig", - }, - url = "https://json.schemastore.org/vsconfig.json", - }, - { - description = "Resume json", - fileMatch = { "resume.json" }, - url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json", - }, -} - -local function extend(tab1, tab2) - for _, value in ipairs(tab2) do - table.insert(tab1, value) - end - return tab1 -end - -local extended_schemas = extend(schemas, default_schemas) - -local opts = { - settings = { - json = { - schemas = extended_schemas, - }, - }, - setup = { - commands = { - Format = { - function() - vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 }) - end, - }, - }, - }, -} - -return opts diff --git a/.config/nvim/lua/lsp/providers/sumneko_lua.lua b/.config/nvim/lua/lsp/providers/sumneko_lua.lua deleted file mode 100644 index 25693a9..0000000 --- a/.config/nvim/lua/lsp/providers/sumneko_lua.lua +++ /dev/null @@ -1,19 +0,0 @@ -local opts = { - settings = { - Lua = { - diagnostics = { - globals = { "vim", "nvim" }, - }, - workspace = { - library = { - [require("utils").join_paths(get_runtime_dir(), "lua")] = true, - [vim.fn.expand "$VIMRUNTIME/lua"] = true, - [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true, - }, - maxPreload = 100000, - preloadFileSize = 10000, - }, - }, - }, -} -return opts diff --git a/.config/nvim/lua/lsp/providers/vuels.lua b/.config/nvim/lua/lsp/providers/vuels.lua deleted file mode 100644 index 0d93c61..0000000 --- a/.config/nvim/lua/lsp/providers/vuels.lua +++ /dev/null @@ -1,28 +0,0 @@ -local opts = { - setup = { - root_dir = function(fname) - local util = require "lspconfig/util" - return util.root_pattern "package.json"(fname) - or util.root_pattern "vue.config.js"(fname) - or vim.fn.getcwd() - end, - init_options = { - config = { - vetur = { - completion = { - autoImport = true, - tagCasing = "kebab", - useScaffoldSnippets = true, - }, - useWorkspaceDependencies = true, - validation = { - script = true, - style = true, - template = true, - }, - }, - }, - }, - }, -} -return opts diff --git a/.config/nvim/lua/lsp/providers/yamlls.lua b/.config/nvim/lua/lsp/providers/yamlls.lua deleted file mode 100644 index 156a35b..0000000 --- a/.config/nvim/lua/lsp/providers/yamlls.lua +++ /dev/null @@ -1,30 +0,0 @@ -local opts = { - settings = { - yaml = { - hover = true, - completion = true, - validate = true, - schemaStore = { - enable = true, - url = "https://www.schemastore.org/api/json/catalog.json", - }, - schemas = { - kubernetes = { - "daemon.{yml,yaml}", - "manager.{yml,yaml}", - "restapi.{yml,yaml}", - "role.{yml,yaml}", - "role_binding.{yml,yaml}", - "*onfigma*.{yml,yaml}", - "*ngres*.{yml,yaml}", - "*ecre*.{yml,yaml}", - "*eployment*.{yml,yaml}", - "*ervic*.{yml,yaml}", - "kubectl-edit*.yaml", - }, - }, - }, - }, -} - -return opts diff --git a/.config/nvim/lua/lsp/templates.lua b/.config/nvim/lua/lsp/templates.lua deleted file mode 100644 index 084c1f9..0000000 --- a/.config/nvim/lua/lsp/templates.lua +++ /dev/null @@ -1,74 +0,0 @@ -local M = {} - -local Log = require "core.log" -local utils = require "utils" -local lsp_utils = require "lsp.utils" - -local ftplugin_dir = options.lsp.templates_dir - -local join_paths = _G.join_paths - -function M.remove_template_files() - -- remove any outdated files - for _, file in ipairs(vim.fn.glob(ftplugin_dir .. "/*.lua", 1, 1)) do - vim.fn.delete(file) - end -end - ----Generates an ftplugin file based on the server_name in the selected directory ----@param server_name string name of a valid language server, e.g. pyright, gopls, tsserver, etc. ----@param dir string the full path to the desired directory -function M.generate_ftplugin(server_name, dir) - local has_custom_provider, _ = pcall(require, "lsp/providers/" .. server_name) - if - vim.tbl_contains(options.lsp.override, server_name) and not has_custom_provider - then - return - end - - -- we need to go through lspconfig to get the corresponding filetypes currently - local filetypes = lsp_utils.get_supported_filetypes(server_name) or {} - if not filetypes then - return - end - - for _, filetype in ipairs(filetypes) do - local filename = join_paths(dir, filetype .. ".lua") - local setup_cmd = string.format([[require("lsp.manager").setup(%q)]], server_name) - -- print("using setup_cmd: " .. setup_cmd) - -- overwrite the file completely - utils.write_file(filename, setup_cmd .. "\n", "a") - end -end - ----Generates ftplugin files based on a list of server_names ----The files are generated to a runtimepath: "$LUNARVIM_RUNTIME_DIR/site/after/ftplugin/template.lua" ----@param servers_names table list of servers to be enabled. Will add all by default -function M.generate_templates(servers_names) - servers_names = servers_names or {} - - Log:debug "Templates installation in progress" - - M.remove_template_files() - - if vim.tbl_isempty(servers_names) then - local available_servers = - require("nvim-lsp-installer.servers").get_available_servers() - - for _, server in pairs(available_servers) do - table.insert(servers_names, server.name) - end - end - - -- create the directory if it didn't exist - if not utils.is_directory(options.lsp.templates_dir) then - vim.fn.mkdir(ftplugin_dir, "p") - end - - for _, server in ipairs(servers_names) do - M.generate_ftplugin(server, ftplugin_dir) - end - Log:debug "Templates installation is complete" -end - -return M diff --git a/.config/nvim/lua/lsp/utils.lua b/.config/nvim/lua/lsp/utils.lua deleted file mode 100644 index afc3eba..0000000 --- a/.config/nvim/lua/lsp/utils.lua +++ /dev/null @@ -1,67 +0,0 @@ -local M = {} - -local tbl = require "utils.table" - -function M.is_client_active(name) - local clients = vim.lsp.get_active_clients() - return tbl.find_first(clients, function(client) - return client.name == name - end) -end - -function M.get_active_clients_by_ft(filetype) - local matches = {} - local clients = vim.lsp.get_active_clients() - for _, client in pairs(clients) do - local supported_filetypes = client.config.filetypes or {} - if client.name ~= "null-ls" and vim.tbl_contains(supported_filetypes, filetype) then - table.insert(matches, client) - end - end - return matches -end - -function M.get_client_capabilities(client_id) - if not client_id then - local buf_clients = vim.lsp.buf_get_clients() - for _, buf_client in ipairs(buf_clients) do - if buf_client.name ~= "null-ls" then - client_id = buf_client.id - break - end - end - end - if not client_id then - error "Unable to determine client_id" - return - end - - local client = vim.lsp.get_client_by_id(tonumber(client_id)) - - local enabled_caps = {} - for capability, status in pairs(client.resolved_capabilities) do - if status == true then - table.insert(enabled_caps, capability) - end - end - - return enabled_caps -end - -function M.get_supported_filetypes(server_name) - -- temporary workaround: https://github.com/neovim/nvim-lspconfig/pull/1358 - if server_name == "dockerls" then - return { "dockerfile" } - end - local lsp_installer_servers = require "nvim-lsp-installer.servers" - local server_available, requested_server = lsp_installer_servers.get_server( - server_name - ) - if not server_available then - return {} - end - - return requested_server:get_supported_filetypes() -end - -return M diff --git a/.config/nvim/lua/plugin-loader.lua b/.config/nvim/lua/plugin-loader.lua deleted file mode 100644 index 9c83e46..0000000 --- a/.config/nvim/lua/plugin-loader.lua +++ /dev/null @@ -1,110 +0,0 @@ -local plugin_loader = {} - -local utils = require "utils" -local Log = require "core.log" --- we need to reuse this outside of init() -local compile_path = get_config_dir() .. "/plugin/packer_compiled.lua" - -function plugin_loader.init(opts) - opts = opts or {} - - local install_path = opts.install_path - or vim.fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim" - local package_root = opts.package_root or vim.fn.stdpath "data" .. "/site/pack" - - if vim.fn.empty(vim.fn.glob(install_path)) > 0 then - vim.fn.system { - "git", - "clone", - "--depth", - "1", - "https://github.com/wbthomason/packer.nvim", - install_path, - } - vim.cmd "packadd packer.nvim" - end - - if options.log and options.log.level then - log_level = options.log.level - end - - local _, packer = pcall(require, "packer") - packer.init { - package_root = package_root, - compile_path = compile_path, - log = { level = log_level }, - git = { clone_timeout = 300 }, - max_jobs = 50, - display = { - open_fn = function() - return require("packer.util").float { border = "rounded" } - end, - }, - } -end - --- packer expects a space separated list -local function pcall_packer_command(cmd, kwargs) - local status_ok, msg = pcall(function() - require("packer")[cmd](unpack(kwargs or {})) - end) - if not status_ok then - Log:warn(cmd .. " failed with: " .. vim.inspect(msg)) - Log:trace(vim.inspect(vim.fn.eval "v:errmsg")) - end -end - -function plugin_loader.cache_clear() - if vim.fn.delete(compile_path) == 0 then - Log:debug "deleted packer_compiled.lua" - end -end - -function plugin_loader.recompile() - plugin_loader.cache_clear() - pcall_packer_command "compile" - if utils.is_file(compile_path) then - Log:debug "generated packer_compiled.lua" - end -end - -function plugin_loader.load(configurations) - Log:debug "loading plugins configuration" - local packer_available, packer = pcall(require, "packer") - if not packer_available then - Log:warn "skipping loading plugins until Packer is installed" - return - end - local status_ok, _ = xpcall(function() - packer.startup(function(use) - for _, plugins in ipairs(configurations) do - for _, plugin in ipairs(plugins) do - use(plugin) - end - end - end) - end, debug.traceback) - if not status_ok then - Log:warn "problems detected while loading plugins' configurations" - Log:trace(debug.traceback()) - end -end - -function plugin_loader.get_core_plugins() - local list = {} - local plugins = require "plugins" - for _, item in pairs(plugins) do - table.insert(list, item[1]:match "/(%S*)") - end - return list -end - -function plugin_loader.sync_core_plugins() - local core_plugins = plugin_loader.get_core_plugins() - Log:trace( - string.format("Syncing core plugins: [%q]", table.concat(core_plugins, ", ")) - ) - pcall_packer_command("sync", core_plugins) -end - -return plugin_loader diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua deleted file mode 100644 index a83fdf9..0000000 --- a/.config/nvim/lua/plugins.lua +++ /dev/null @@ -1,241 +0,0 @@ -local commit = { - barbar = "6e638309efcad2f308eb9c5eaccf6f62b794bbab", - cmp_buffer = "a706dc69c49110038fe570e5c9c33d6d4f67015b", - cmp_luasnip = "16832bb50e760223a403ffa3042859845dd9ef9d", - cmp_nvim_lsp = "134117299ff9e34adde30a735cd8ca9cf8f3db81", - cmp_nvim_lua = "d276254e7198ab7d00f117e88e223b4bd8c02d21", - cmp_path = "e30d3fdee650a07330654efab1951b2f1b91435e", - comment = "a6e1c127fa7f19ec4e3edbffab1aacb2852b6db3", - fixcursorhold = "0e4e22d21975da60b0fd2d302285b3b603f9f71e", - friendly_snippets = "e3506d575e120253b4aa47ec2100786fd1e9c38d", - gitsigns = "9678750f209671551c335c4f22658a6554c2f439", - lualine = "1ae4f0aa74f0b34222c5ef3281b34602a76b2b00", - luasnip = "7fc3cc24f3c1f1a43e861f589ca48ff3dff0b213", - nlsp_settings = "199bc1b2859206488423b676da4a7d010b1a3373", - null_ls = "128b8d85506e44f1e7e0f4acd9f2ba02fc7cee05", - nvim_autopairs = "fba2503bd8cd0d8861054523aae39c4ac0680c07", - nvim_cmp = "d17d41bdbd4731759d1b3d368204dc18ce3c84f3", - nvim_lsp_installer = "a4016db22296e4eefbcda2e8b94de74db2d7cb65", - nvim_lspconfig = "5b8624c1bcd332e9fd7ae33a2ca910adb31a7ae7", - nvim_tree = "e842f088847c98da59e14eb543bde11c45c87ef7", - nvim_treesitter = "8d1547f0bcd0831876678eeb238c3ba9a528189b", - nvim_ts_context_commentstring = "9f5e422e1030e7073e593ad32c5354aa0bcb0176", - nvim_web_devicons = "8df4988ecf8599fc1f8f387bbf2eae790e4c5ffb", - packer = "db3c3e3379613443d94e677a6ac3f61278e36e47", - plenary = "1c31adb35fcebe921f65e5c6ff6d5481fa5fa5ac", - popup = "b7404d35d5d3548a82149238289fa71f7f6de4ac", - project = "71d0e23dcfc43cfd6bb2a97dc5a7de1ab47a6538", - structlog = "6f1403a192791ff1fa7ac845a73de9e860f781f1", - telescope = "ef245548a858690fa8f2db1f1a0eaf41b93a6ef6", - telescope_fzf_native = "b8662b076175e75e6497c59f3e2799b879d7b954", - toggleterm = "265bbff68fbb8b2a5fb011272ec469850254ec9f", - which_key = "d3032b6d3e0adb667975170f626cb693bfc66baa", -} - -return { - -- Packer can manage itself as an optional plugin - { "wbthomason/packer.nvim", commit = commit.packer }, - { "neovim/nvim-lspconfig", commit = commit.nvim_lspconfig }, - { "tamago324/nlsp-settings.nvim", commit = commit.nlsp_settings }, - { - "jose-elias-alvarez/null-ls.nvim", - commit = commit.null_ls, - }, - { "antoinemadec/FixCursorHold.nvim", commit = commit.fixcursorhold }, -- Needed while issue https://github.com/neovim/neovim/issues/12587 is still open - { - "williamboman/nvim-lsp-installer", - commit = commit.nvim_lsp_installer, - }, - { "Tastyep/structlog.nvim", commit = commit.structlog }, - - { "nvim-lua/popup.nvim", commit = commit.popup }, - { "nvim-lua/plenary.nvim", commit = commit.plenary }, - -- Telescope - { - "nvim-telescope/telescope.nvim", - commit = commit.telescope, - config = function() - require("core.telescope").setup() - end, - disable = not options.builtin.telescope.active, - }, - { - "nvim-telescope/telescope-fzf-native.nvim", - commit = commit.telescope_fzf_native, - run = "make", - disable = not options.builtin.telescope.active, - }, - -- Install nvim-cmp, and buffer source as a dependency - { - "hrsh7th/nvim-cmp", - commit = commit.nvim_cmp, - config = function() - if options.builtin.cmp then - require("core.cmp").setup() - end - end, - requires = { - "L3MON4D3/LuaSnip", - "rafamadriz/friendly-snippets", - }, - }, - { - "rafamadriz/friendly-snippets", - commit = commit.friendly_snippets, - }, - { - "L3MON4D3/LuaSnip", - config = function() - require("luasnip/loaders/from_vscode").lazy_load() - end, - commit = commit.luasnip, - }, - { - "hrsh7th/cmp-nvim-lsp", - commit = commit.cmp_nvim_lsp, - }, - { - "saadparwaiz1/cmp_luasnip", - commit = commit.cmp_luasnip, - }, - { - "hrsh7th/cmp-buffer", - commit = commit.cmp_buffer, - }, - { - "hrsh7th/cmp-path", - commit = commit.cmp_path, - }, - { - "hrsh7th/cmp-nvim-lua", - commit = commit.cmp_nvim_lua, - }, - - -- Autopairs - { - "windwp/nvim-autopairs", - commit = commit.nvim_autopairs, - -- event = "InsertEnter", - config = function() - require("core.autopairs").setup() - end, - disable = not options.builtin.autopairs.active, - }, - - -- Treesitter - { - "nvim-treesitter/nvim-treesitter", - commit = commit.treesitter, - branch = "0.5-compat", - -- run = ":TSUpdate", - config = function() - require("core.treesitter").setup() - end, - }, - { - "JoosepAlviste/nvim-ts-context-commentstring", - commit = commit.nvim_ts_context_commentstring, - event = "BufReadPost", - }, - - -- NvimTree - { - "kyazdani42/nvim-tree.lua", - -- event = "BufWinOpen", - -- cmd = "NvimTreeToggle", - commit = commit.nvim_tree, - config = function() - require("core.nvimtree").setup() - end, - disable = not options.builtin.nvimtree.active, - }, - - { - "lewis6991/gitsigns.nvim", - commit = commit.gitsigns, - - config = function() - require("core.gitsigns").setup() - end, - event = "BufRead", - disable = not options.builtin.gitsigns.active, - }, - - -- Whichkey - { - "folke/which-key.nvim", - commit = commit.which_key, - config = function() - require("core.which-key").setup() - end, - event = "BufWinEnter", - disable = not options.builtin.which_key.active, - }, - - -- Comments - { - "numToStr/Comment.nvim", - commit = commit.comment, - event = "BufRead", - config = function() - require("core.comment").setup() - end, - disable = not options.builtin.comment.active, - }, - - -- project.nvim - { - "ahmedkhalf/project.nvim", - commit = commit.project, - config = function() - require("core.project").setup() - end, - disable = not options.builtin.project.active, - }, - - -- Icons - { "kyazdani42/nvim-web-devicons", commit = commit.nvim_web_devicons }, - - -- Status Line and Bufferline - { - -- "hoob3rt/lualine.nvim", - "nvim-lualine/lualine.nvim", - commit = commit.lualine, - -- "Lunarvim/lualine.nvim", - config = function() - require("core.lualine").setup() - end, - disable = not options.builtin.lualine.active, - }, - - { - "romgrk/barbar.nvim", - commit = commit.barbar, - config = function() - require("core.bufferline").setup() - end, - event = "BufWinEnter", - disable = not options.builtin.bufferline.active, - }, - - -- Dashboard - { - "ChristianChiarulli/dashboard-nvim", - event = "BufWinEnter", - config = function() - require("core.dashboard").setup() - end, - disable = not options.builtin.dashboard.active, - }, - - -- Terminal - { - "akinsho/toggleterm.nvim", - commit = commit.toggleterm, - event = "BufWinEnter", - config = function() - require("core.terminal").setup() - end, - disable = not options.builtin.terminal.active, - }, -} diff --git a/.config/nvim/lua/utils/hooks.lua b/.config/nvim/lua/utils/hooks.lua deleted file mode 100644 index fa667cf..0000000 --- a/.config/nvim/lua/utils/hooks.lua +++ /dev/null @@ -1,33 +0,0 @@ -local M = {} - -local Log = require "core.log" -local in_headless = #vim.api.nvim_list_uis() == 0 - -function M.run_pre_update() - Log:debug "Starting pre-update hook" -end - ----Reset any startup cache files used by Packer and Impatient ----Tip: Useful for clearing any outdated settings -function M.reset_cache() - _G.__luacache.clear_cache() - require("plugin-loader"):cache_reset() -end - -function M.run_post_update() - M.reset_cache() - Log:debug "Starting post-update hook" - package.loaded["lsp.templates"] = nil - require("lsp.templates").generate_templates() - - if not in_headless then - vim.schedule(function() - require("packer").install() - -- TODO: add a changelog - vim.notify("Update complete", vim.log.levels.INFO) - vim.cmd "LspStart" - end) - end -end - -return M diff --git a/.config/nvim/lua/utils/init.lua b/.config/nvim/lua/utils/init.lua deleted file mode 100644 index 0d06b1f..0000000 --- a/.config/nvim/lua/utils/init.lua +++ /dev/null @@ -1,179 +0,0 @@ -local utils = {} -local uv = vim.loop - --- recursive Print (structure, limit, separator) -local function r_inspect_settings(structure, limit, separator) - limit = limit or 100 -- default item limit - separator = separator or "." -- indent string - if limit < 1 then - print "ERROR: Item limit reached." - return limit - 1 - end - if structure == nil then - io.write("-- O", separator:sub(2), " = nil\n") - return limit - 1 - end - local ts = type(structure) - - if ts == "table" then - for k, v in pairs(structure) do - -- replace non alpha keys with ["key"] - if tostring(k):match "[^%a_]" then - k = '["' .. tostring(k) .. '"]' - end - limit = r_inspect_settings(v, limit, separator .. "." .. tostring(k)) - if limit < 0 then - break - end - end - return limit - end - - if ts == "string" then - -- escape sequences - structure = string.format("%q", structure) - end - separator = separator:gsub("%.%[", "%[") - if type(structure) == "function" then - -- don't print functions - io.write("-- options", separator:sub(2), " = function ()\n") - else - io.write("options", separator:sub(2), " = ", tostring(structure), "\n") - end - return limit - 1 -end - -function utils.generate_settings() - -- Opens a file in append mode - local file = io.open("lv-settings.lua", "w") - - -- sets the default output file as test.lua - io.output(file) - - -- write all `options` related settings to `lv-settings.lua` file - r_inspect_settings(options, 10000, ".") - - -- closes the open file - io.close(file) -end - -function utils.unrequire(m) - package.loaded[m] = nil - _G[m] = nil -end - -function utils.gsub_args(args) - if args == nil or type(args) ~= "table" then - return args - end - local buffer_filepath = vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) - for i = 1, #args do - args[i] = string.gsub(args[i], "${FILEPATH}", buffer_filepath) - end - return args -end - ---- Returns a table with the default values that are missing. ---- either paramter can be empty. ---@param config (table) table containing entries that take priority over defaults ---@param default_config (table) table contatining default values if found -function utils.apply_defaults(config, default_config) - config = config or {} - default_config = default_config or {} - local new_config = vim.tbl_deep_extend("keep", vim.empty_dict(), config) - new_config = vim.tbl_deep_extend("keep", new_config, default_config) - return new_config -end - ---- Checks whether a given path exists and is a file. ---@param path (string) path to check ---@returns (bool) -function utils.is_file(path) - local stat = uv.fs_stat(path) - return stat and stat.type == "file" or false -end - ---- Checks whether a given path exists and is a directory ---@param path (string) path to check ---@returns (bool) -function utils.is_directory(path) - local stat = uv.fs_stat(path) - return stat and stat.type == "directory" or false -end - -utils.join_paths = _G.join_paths - -function utils.write_file(path, txt, flag) - uv.fs_open(path, flag, 438, function(open_err, fd) - assert(not open_err, open_err) - uv.fs_write(fd, txt, -1, function(write_err) - assert(not write_err, write_err) - uv.fs_close(fd, function(close_err) - assert(not close_err, close_err) - end) - end) - end) -end - -function utils.debounce(ms, fn) - local timer = vim.loop.new_timer() - return function(...) - local argv = { ... } - timer:start(ms, 0, function() - timer:stop() - vim.schedule_wrap(fn)(unpack(argv)) - end) - end -end - -function utils.search_file(file, args) - local Job = require "plenary.job" - local stderr = {} - local stdout, ret = Job - :new({ - command = "grep", - args = { args, file }, - cwd = get_cache_dir(), - on_stderr = function(_, data) - table.insert(stderr, data) - end, - }) - :sync() - return stdout, ret, stderr -end - -function utils.file_contains(file, query) - local stdout, ret, stderr = utils.search_file(file, query) - if ret == 0 then - return true - end - if not vim.tbl_isempty(stderr) then - error(vim.inspect(stderr)) - end - if not vim.tbl_isempty(stdout) then - error(vim.inspect(stdout)) - end - return false -end - -function utils.log_contains(query) - local logfile = require("core.log"):get_path() - local stdout, ret, stderr = utils.search_file(logfile, query) - if ret == 0 then - return true - end - if not vim.tbl_isempty(stderr) then - error(vim.inspect(stderr)) - end - if not vim.tbl_isempty(stdout) then - error(vim.inspect(stdout)) - end - if not vim.tbl_isempty(stderr) then - error(vim.inspect(stderr)) - end - return false -end - -return utils - --- TODO: find a new home for these autocommands diff --git a/.config/nvim/lua/utils/table.lua b/.config/nvim/lua/utils/table.lua deleted file mode 100644 index 1ac5949..0000000 --- a/.config/nvim/lua/utils/table.lua +++ /dev/null @@ -1,24 +0,0 @@ -local Table = {} - ---- Find the first entry for which the predicate returns true. --- @param t The table --- @param predicate The function called for each entry of t --- @return The entry for which the predicate returned True or nil -function Table.find_first(t, predicate) - for _, entry in pairs(t) do - if predicate(entry) then - return entry - end - end - return nil -end - ---- Check if the predicate returns True for at least one entry of the table. --- @param t The table --- @param predicate The function called for each entry of t --- @return True if predicate returned True at least once, false otherwise -function Table.contains(t, predicate) - return Table.find_first(t, predicate) ~= nil -end - -return Table diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add deleted file mode 100644 index a4f2f9c..0000000 --- a/.config/nvim/spell/en.utf-8.add +++ /dev/null @@ -1,6 +0,0 @@ -emnist -json -num -np -#qvae -#qvae diff --git a/.config/nvim/spell/en.utf-8.add.spl b/.config/nvim/spell/en.utf-8.add.spl Binary files differdeleted file mode 100644 index a68894b..0000000 --- a/.config/nvim/spell/en.utf-8.add.spl +++ /dev/null |