From 4b64e3d37ece2d7251347b3df8551e98363f845f Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 7 Sep 2024 03:09:26 +0800 Subject: config(nvim): create new file structure. --- configs/copy-nvim-config.ps1 | 2 - configs/copy-nvim-config.sh | 5 - configs/nvim/config-root/cspell.yaml | 13 ++ configs/nvim/config-root/init.lua | 60 ++++++++ configs/nvim/config-root/lazy-lock.json | 22 +++ .../nvim/config-root/lua/crupest/nvim/keymap.lua | 9 ++ .../nvim/config-root/lua/crupest/nvim/lsp/c.lua | 29 ++++ .../nvim/config-root/lua/crupest/nvim/lsp/init.lua | 34 +++++ .../nvim/config-root/lua/crupest/nvim/lsp/lua.lua | 31 +++++ .../config-root/lua/crupest/nvim/plugins/cmp.lua | 31 +++++ .../lua/crupest/nvim/plugins/gitsign.lua | 51 +++++++ .../config-root/lua/crupest/nvim/plugins/init.lua | 11 ++ .../config-root/lua/crupest/nvim/plugins/lint.lua | 81 +++++++++++ .../lua/crupest/nvim/plugins/others.lua | 20 +++ .../config-root/lua/crupest/nvim/plugins/snip.lua | 73 ++++++++++ .../lua/crupest/nvim/plugins/telescope.lua | 11 ++ .../nvim/config-root/lua/crupest/utils/find.lua | 152 +++++++++++++++++++++ configs/nvim/config-root/lua/crupest/utils/fs.lua | 101 ++++++++++++++ .../nvim/config-root/lua/crupest/utils/nvim.lua | 44 ++++++ .../nvim/config-root/lua/crupest/utils/table.lua | 42 ++++++ configs/nvim/config-root/lua/plugins.lua | 32 +++++ configs/nvim/config-root/nvim-words.txt | 48 +++++++ configs/nvim/copy-nvim-config | 6 + configs/nvim/cspell.yaml | 13 -- configs/nvim/init.lua | 60 -------- configs/nvim/lazy-lock.json | 22 --- configs/nvim/lua/crupest/nvim/keymap.lua | 9 -- configs/nvim/lua/crupest/nvim/lsp/c.lua | 29 ---- configs/nvim/lua/crupest/nvim/lsp/init.lua | 34 ----- configs/nvim/lua/crupest/nvim/lsp/lua.lua | 31 ----- configs/nvim/lua/crupest/nvim/plugins/cmp.lua | 31 ----- configs/nvim/lua/crupest/nvim/plugins/gitsign.lua | 51 ------- configs/nvim/lua/crupest/nvim/plugins/init.lua | 11 -- configs/nvim/lua/crupest/nvim/plugins/lint.lua | 81 ----------- configs/nvim/lua/crupest/nvim/plugins/others.lua | 20 --- configs/nvim/lua/crupest/nvim/plugins/snip.lua | 73 ---------- .../nvim/lua/crupest/nvim/plugins/telescope.lua | 11 -- configs/nvim/lua/crupest/utils/find.lua | 152 --------------------- configs/nvim/lua/crupest/utils/fs.lua | 101 -------------- configs/nvim/lua/crupest/utils/nvim.lua | 44 ------ configs/nvim/lua/crupest/utils/table.lua | 42 ------ configs/nvim/lua/plugins.lua | 32 ----- configs/nvim/nvim-words.txt | 48 ------- 43 files changed, 901 insertions(+), 902 deletions(-) delete mode 100644 configs/copy-nvim-config.ps1 delete mode 100755 configs/copy-nvim-config.sh create mode 100644 configs/nvim/config-root/cspell.yaml create mode 100644 configs/nvim/config-root/init.lua create mode 100644 configs/nvim/config-root/lazy-lock.json create mode 100644 configs/nvim/config-root/lua/crupest/nvim/keymap.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/lsp/c.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/lsp/init.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/lsp/lua.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/plugins/cmp.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/plugins/gitsign.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/plugins/init.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/plugins/lint.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/plugins/others.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/plugins/snip.lua create mode 100644 configs/nvim/config-root/lua/crupest/nvim/plugins/telescope.lua create mode 100644 configs/nvim/config-root/lua/crupest/utils/find.lua create mode 100644 configs/nvim/config-root/lua/crupest/utils/fs.lua create mode 100644 configs/nvim/config-root/lua/crupest/utils/nvim.lua create mode 100644 configs/nvim/config-root/lua/crupest/utils/table.lua create mode 100644 configs/nvim/config-root/lua/plugins.lua create mode 100644 configs/nvim/config-root/nvim-words.txt create mode 100755 configs/nvim/copy-nvim-config delete mode 100644 configs/nvim/cspell.yaml delete mode 100644 configs/nvim/init.lua delete mode 100644 configs/nvim/lazy-lock.json delete mode 100644 configs/nvim/lua/crupest/nvim/keymap.lua delete mode 100644 configs/nvim/lua/crupest/nvim/lsp/c.lua delete mode 100644 configs/nvim/lua/crupest/nvim/lsp/init.lua delete mode 100644 configs/nvim/lua/crupest/nvim/lsp/lua.lua delete mode 100644 configs/nvim/lua/crupest/nvim/plugins/cmp.lua delete mode 100644 configs/nvim/lua/crupest/nvim/plugins/gitsign.lua delete mode 100644 configs/nvim/lua/crupest/nvim/plugins/init.lua delete mode 100644 configs/nvim/lua/crupest/nvim/plugins/lint.lua delete mode 100644 configs/nvim/lua/crupest/nvim/plugins/others.lua delete mode 100644 configs/nvim/lua/crupest/nvim/plugins/snip.lua delete mode 100644 configs/nvim/lua/crupest/nvim/plugins/telescope.lua delete mode 100644 configs/nvim/lua/crupest/utils/find.lua delete mode 100644 configs/nvim/lua/crupest/utils/fs.lua delete mode 100644 configs/nvim/lua/crupest/utils/nvim.lua delete mode 100644 configs/nvim/lua/crupest/utils/table.lua delete mode 100644 configs/nvim/lua/plugins.lua delete mode 100644 configs/nvim/nvim-words.txt diff --git a/configs/copy-nvim-config.ps1 b/configs/copy-nvim-config.ps1 deleted file mode 100644 index 799b766..0000000 --- a/configs/copy-nvim-config.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -cp -Recurse -Force -Path ~/AppData/Local/nvim -Destination ~\codes\crupest\configs - diff --git a/configs/copy-nvim-config.sh b/configs/copy-nvim-config.sh deleted file mode 100755 index 2b2e75c..0000000 --- a/configs/copy-nvim-config.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env sh - -MYDIR="$(dirname "$(realpath "$0")")" - -cp -R ~/.config/nvim ${MYDIR} diff --git a/configs/nvim/config-root/cspell.yaml b/configs/nvim/config-root/cspell.yaml new file mode 100644 index 0000000..2a716e2 --- /dev/null +++ b/configs/nvim/config-root/cspell.yaml @@ -0,0 +1,13 @@ +dictionaryDefinitions: + - name: nvim-words + path: './nvim-words.txt' + addWords: true + +dictionaries: + - nvim-words + +words: + - crupest + +ignorePaths: + - lazy-lock.json diff --git a/configs/nvim/config-root/init.lua b/configs/nvim/config-root/init.lua new file mode 100644 index 0000000..a2b84aa --- /dev/null +++ b/configs/nvim/config-root/init.lua @@ -0,0 +1,60 @@ +if vim.g.neovide then + -- spellchecker: disable-next-line + vim.opt.guifont = "FiraCode Nerd Font"; + vim.g.neovide_window_blurred = true; + vim.g.neovide_transparency = 0.85; + vim.g.neovide_input_ime = false; + vim.g.neovide_cursor_animate_in_insert_mode = false + vim.g.neovide_cursor_vfx_mode = "pixiedust"; +end + +local is_win = vim.fn.has("win32") ~= 0 + +-- spellchecker: disable +if is_win then + vim.cmd([[ + let &shell = executable('pwsh') ? 'pwsh' : 'powershell' + let &shellcmdflag = '-NoLogo -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues[''Out-File:Encoding'']=''utf8'';Remove-Alias -Force -ErrorAction SilentlyContinue tee;' + let &shellredir = '2>&1 | %%{ "$_" } | Out-File %s; exit $LastExitCode' + let &shellpipe = '2>&1 | %%{ "$_" } | tee %s; exit $LastExitCode' + set shellquote= shellxquote= + ]]) + vim.opt.completeslash = 'slash' +end +-- spellchecker: enable + +-- spellchecker: disable +vim.opt.termguicolors = true; +vim.opt.fileformats = "unix,dos"; +vim.opt.softtabstop = 4; +vim.opt.shiftwidth = 4; +vim.opt.expandtab = true; +vim.opt.wrap = false; +vim.opt.number = true; +-- spellchecker: enable + +vim.g.load_doxygen_syntax = true; +vim.g.doxygen_javadoc_autobrief = false; + +-- Init lazy.nvim +local lazy_path = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.uv.fs_stat(lazy_path) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazy_path, + }) +end +vim.opt.rtp:prepend(lazy_path) + +-- Use lazy.nvim +require("lazy").setup("plugins") + +vim.cmd("colorscheme catppuccin-macchiato") + +require("crupest.nvim.lsp").setup() +require("crupest.nvim.plugins").setup() +require("crupest.nvim.keymap").setup() diff --git a/configs/nvim/config-root/lazy-lock.json b/configs/nvim/config-root/lazy-lock.json new file mode 100644 index 0000000..59f5473 --- /dev/null +++ b/configs/nvim/config-root/lazy-lock.json @@ -0,0 +1,22 @@ +{ + "LuaSnip": { "branch": "master", "commit": "45db5addf8d0a201e1cf247cae4cdce605ad3768" }, + "catppuccin": { "branch": "main", "commit": "4fd72a9ab64b393c2c22b168508fd244877fec96" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, + "gitsigns.nvim": { "branch": "main", "commit": "1ef74b546732f185d0f806860fa5404df7614f28" }, + "lazy.nvim": { "branch": "main", "commit": "48b52b5cfcf8f88ed0aff8fde573a5cc20b1306d" }, + "lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" }, + "neo-tree.nvim": { "branch": "main", "commit": "0774fa2085c62a147fcc7b56f0ac37053cc80217" }, + "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, + "nvim-autopairs": { "branch": "master", "commit": "fd2badc24e675f947162a16c124d395bde80dbd6" }, + "nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" }, + "nvim-lint": { "branch": "master", "commit": "a7ce9c78a7c710c28bee56dfab10a5c0c80b7fb5" }, + "nvim-lspconfig": { "branch": "master", "commit": "bdbc65aadc708ce528efb22bca5f82a7cca6b54d" }, + "nvim-web-devicons": { "branch": "master", "commit": "9793801f974bba70e4ac5d7eae6c4f5659993d8e" }, + "plenary.nvim": { "branch": "master", "commit": "ec289423a1693aeae6cd0d503bac2856af74edaa" }, + "telescope.nvim": { "branch": "master", "commit": "5972437de807c3bc101565175da66a1aa4f8707a" }, + "toggleterm.nvim": { "branch": "main", "commit": "137d06fb103952a0fb567882bb8527e2f92d327d" } +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/keymap.lua b/configs/nvim/config-root/lua/crupest/nvim/keymap.lua new file mode 100644 index 0000000..624c04c --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/keymap.lua @@ -0,0 +1,9 @@ +local function setup() + vim.keymap.set("n", "", "bnext") + vim.keymap.set("n", "", "bNext") + vim.keymap.set("n", "", require("crupest.utils.nvim").close_float) +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/lsp/c.lua b/configs/nvim/config-root/lua/crupest/nvim/lsp/c.lua new file mode 100644 index 0000000..e0466b1 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/lsp/c.lua @@ -0,0 +1,29 @@ +local lspconfig = require("lspconfig") +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +local get_exe = require("crupest.utils.find").get_exe + +local brew_clangd_path = "/usr/local/opt/llvm/bin/clangd" + +local function setup() + local clangd = "clangd" + + if get_exe(brew_clangd_path) then + clangd = brew_clangd_path + end + + -- setup lsp clangd + lspconfig.clangd.setup { + cmd = { clangd }, + capabilities = capabilities, + on_attach = function(_, bufnr) + vim.keymap.set('n', 's', "ClangdSwitchSourceHeader", { + buffer = bufnr + }) + end + } +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/lsp/init.lua b/configs/nvim/config-root/lua/crupest/nvim/lsp/init.lua new file mode 100644 index 0000000..464d7ef --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/lsp/init.lua @@ -0,0 +1,34 @@ +local function setup() + require("crupest.nvim.lsp.c").setup() + require("crupest.nvim.lsp.lua").setup() + + -- Use LspAttach autocommand to only map the following keys + -- after the language server attaches to the current buffer + vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(ev) + -- Buffer local mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local opts = { buffer = ev.buf } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) + vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) + vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) + vim.keymap.set('n', 'wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, opts) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) + vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) + vim.keymap.set('n', 'f', vim.lsp.buf.format, opts) + end, + }) +end + + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/lsp/lua.lua b/configs/nvim/config-root/lua/crupest/nvim/lsp/lua.lua new file mode 100644 index 0000000..1785515 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/lsp/lua.lua @@ -0,0 +1,31 @@ +local lspconfig = require("lspconfig") +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +local function setup() + lspconfig.lua_ls.setup { + capabilities = capabilities, + settings = { + Lua = { + runtime = { + version = "LuaJIT" + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = { + [vim.fn.expand "$VIMRUNTIME/lua"] = true, + [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true, + [vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy"] = true, + }, + maxPreload = 100000, + preloadFileSize = 10000, + }, + }, + }, + } +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/plugins/cmp.lua b/configs/nvim/config-root/lua/crupest/nvim/plugins/cmp.lua new file mode 100644 index 0000000..9b1d876 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/plugins/cmp.lua @@ -0,0 +1,31 @@ +local function setup() + local cmp = require("cmp") + local luasnip = require("luasnip") + + cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + window = { + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, { + { name = 'buffer' }, + }) + } +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/plugins/gitsign.lua b/configs/nvim/config-root/lua/crupest/nvim/plugins/gitsign.lua new file mode 100644 index 0000000..220c91a --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/plugins/gitsign.lua @@ -0,0 +1,51 @@ +local function setup() + local gitsigns = require('gitsigns') + gitsigns.setup { + on_attach = function(bufnr) + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map('n', ']c', function() + if vim.wo.diff then + vim.cmd.normal({ ']c', bang = true }) + else + gitsigns.nav_hunk('next') + end + end) + + map('n', '[c', function() + if vim.wo.diff then + vim.cmd.normal({ '[c', bang = true }) + else + gitsigns.nav_hunk('prev') + end + end) + + -- Actions + map('n', 'hs', gitsigns.stage_hunk) + map('n', 'hr', gitsigns.reset_hunk) + map('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end) + map('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end) + map('n', 'hS', gitsigns.stage_buffer) + map('n', 'hu', gitsigns.undo_stage_hunk) + map('n', 'hR', gitsigns.reset_buffer) + map('n', 'hp', gitsigns.preview_hunk) + map('n', 'hb', function() gitsigns.blame_line { full = true } end) + map('n', 'tb', gitsigns.toggle_current_line_blame) + map('n', 'hd', gitsigns.diffthis) + map('n', 'hD', function() gitsigns.diffthis('~') end) + map('n', 'td', gitsigns.toggle_deleted) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk') + end + } +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/plugins/init.lua b/configs/nvim/config-root/lua/crupest/nvim/plugins/init.lua new file mode 100644 index 0000000..637c8e5 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/plugins/init.lua @@ -0,0 +1,11 @@ +local function setup() + require("crupest.nvim.plugins.lint").setup() + require("crupest.nvim.plugins.snip").setup() + require("crupest.nvim.plugins.cmp").setup() + require("crupest.nvim.plugins.telescope").setup() + require("crupest.nvim.plugins.gitsign").setup() +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/plugins/lint.lua b/configs/nvim/config-root/lua/crupest/nvim/plugins/lint.lua new file mode 100644 index 0000000..6649e74 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/plugins/lint.lua @@ -0,0 +1,81 @@ +local lint = require("lint") +local find = require('crupest.utils.find') +local is_win = vim.fn.has("win32") ~= 0 + +local cspell_config_patterns = { + ".cspell.json", + "cspell.json", + ".cSpell.json", + "cSpell.json", + "cspell.config.js", + "cspell.config.cjs", + "cspell.config.json", + "cspell.config.yaml", + "cspell.config.yml", + "cspell.yaml", + "cspell.yml", +} + +local my_linters = { + { + name = "cspell", + exe_places = { "npm", "global" }, + config_files = cspell_config_patterns, + }, +} + +local function run(opt) + if not opt then + opt = {} + end + + if not opt.buf then + opt.buf = 0 + end + + local linters = {} + + for _, l in ipairs(my_linters) do + local linter = find.find_exe_for_buf(opt.buf, l) + if linter then table.insert(linters, linter) end + end + + + local linter_names = {} + + for _, linter in ipairs(linters) do + table.insert(linter_names, linter.name) + require('lint.linters.' .. linter.name).cmd = linter.exe_path + end + + lint.try_lint(linter_names) +end + +local function setup() + if is_win then + for _, l in ipairs(my_linters) do + local name = l.name + local linter = require('lint.linters.' .. name) + if linter.cmd == 'cmd.exe' then + linter.cmd = linter.args[2] + end + table.remove(linter.args, 1) + table.remove(linter.args, 1) + end + end + + vim.api.nvim_create_autocmd({ "BufWritePost" }, { + callback = function(opt) + run({ + buf = opt.buffer + }) + end, + }) + + vim.keymap.set('n', 'lr', run) +end + +return { + setup = setup, + run = run +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/plugins/others.lua b/configs/nvim/config-root/lua/crupest/nvim/plugins/others.lua new file mode 100644 index 0000000..2d728ae --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/plugins/others.lua @@ -0,0 +1,20 @@ +local function setup() + require("neo-tree").setup { + filesystem = { + filtered_items = { + hide_dotfiles = false, + hide_gitignored = false, + hide_hidden = false, -- only works on Windows for hidden files/directories + }, + use_libuv_file_watcher = true + } + } + + require('lualine').setup {} + + require("nvim-autopairs").setup {} +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/plugins/snip.lua b/configs/nvim/config-root/lua/crupest/nvim/plugins/snip.lua new file mode 100644 index 0000000..1cf9800 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/plugins/snip.lua @@ -0,0 +1,73 @@ +local luasnip = require("luasnip") + +local ls = luasnip +-- some shorthands... +local s = ls.snippet +local sn = ls.snippet_node +local t = ls.text_node +local i = ls.insert_node +local f = ls.function_node +local c = ls.choice_node +local d = ls.dynamic_node +local r = ls.restore_node +local l = require("luasnip.extras").lambda +local rep = require("luasnip.extras").rep +local p = require("luasnip.extras").partial +local m = require("luasnip.extras").match +local n = require("luasnip.extras").nonempty +local dl = require("luasnip.extras").dynamic_lambda +local fmt = require("luasnip.extras.fmt").fmt +local fmta = require("luasnip.extras.fmt").fmta +local types = require("luasnip.util.types") +local conds = require("luasnip.extras.conditions") +local conds_expand = require("luasnip.extras.conditions.expand") + +local function copy(args) + return args[1] +end + +local function setup() + vim.keymap.set({ "i", "s" }, "", function() luasnip.jump(1) end, { silent = true }) + vim.keymap.set({ "i", "s" }, "", function() luasnip.jump(-1) end, { silent = true }) + + vim.keymap.set({ "i", "s" }, "", function() + if luasnip.choice_active() then + luasnip.change_choice(1) + end + end, { silent = true }) + + luasnip.add_snippets("cpp", { + s("cs", { + i(1, "classname"), + t("::"), + f(copy, 1), + t("("), + i(0), + t(") { }") + }), + + s("ds", { + i(1, "classname"), + t("::~"), + f(copy, 1), + t("() { }") + }), + + s("csds", { + i(1, "classname"), + t("::"), + f(copy, 1), + t("("), + i(0), + t({ ") { }", "", "" }), + f(copy, 1), + t("::~"), + f(copy, 1), + t("() { }") + }), + }) +end + +return { + setup = setup, +} diff --git a/configs/nvim/config-root/lua/crupest/nvim/plugins/telescope.lua b/configs/nvim/config-root/lua/crupest/nvim/plugins/telescope.lua new file mode 100644 index 0000000..d68b7f2 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/nvim/plugins/telescope.lua @@ -0,0 +1,11 @@ +local function setup() + local builtin = require('telescope.builtin') + vim.keymap.set('n', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'fb', builtin.buffers, {}) + vim.keymap.set('n', 'fh', builtin.help_tags, {}) +end + +return { + setup = setup +} diff --git a/configs/nvim/config-root/lua/crupest/utils/find.lua b/configs/nvim/config-root/lua/crupest/utils/find.lua new file mode 100644 index 0000000..83968d2 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/utils/find.lua @@ -0,0 +1,152 @@ +local fs = require("crupest.utils.fs"); +local is_win = vim.fn.has("win32") ~= 0 + +local win_exe_exts = { "exe", "CMD", "cmd", "ps1" } + +local function get_exe(path) + if is_win then + for _, ext in ipairs(win_exe_exts) do + if string.find(path, "%." .. ext .. "$") and fs.isfile(path) then + return path + end + end + for _, ext in ipairs(win_exe_exts) do + local p = path .. "." .. ext + if fs.isfile(p) then return p end + end + return nil + end + + if vim.fn.executable(path) ~= 0 then + return path + end + + return nil +end + +local function find_global_exe(name) + if vim.fn.executable(name) ~= 0 then + return name + end + + return nil +end + +local function first_exe(paths) + for _, v in ipairs(paths) do + local exe = get_exe(v) + if exe then return exe end + end + + return nil +end + +local function find_file_or_directory(path, name) + return fs.walk_up(path, function(current_path) + local p = current_path .. "/" .. name + if fs.isdir(p) then + return p, "directory" + elseif fs.isfile(p) then + return p, "file" + end + return nil + end) +end + +local function find_file(path, name) + return fs.walk_up(path, function(current_path) + local p = current_path .. "/" .. name + if fs.isfile(p) then + return p + end + return nil + end) +end + +local function find_files_or_directories(path, names) + for _, name in ipairs(names) do + local p, type = find_file_or_directory(path, name) + if p then return p, type end + end + return nil +end + +local function find_files(path, names) + for _, name in ipairs(names) do + local p = find_file(path, name) + if p then return p end + end + return nil +end + +local function find_node_modules(path) + return fs.walk_up(path, function(current_path) + local node_modules_path = current_path .. "/node_modules" + if fs.isdir(node_modules_path) then + return node_modules_path + end + return nil + end) +end + +local function find_npm_exe(path, exe) + local node_modules_path = find_node_modules(path) + if not node_modules_path then return nil end + local try_exe_path = node_modules_path .. "/.bin/" .. exe + local exe_path = get_exe(try_exe_path) + if exe_path then return exe_path end + return nil +end + +local function find_exe(path, exe, places) + for _, place in ipairs(places) do + if place == "npm" then + local r = find_npm_exe(path, exe) + if r then return r end + end + if place == "global" then + local r = find_global_exe(exe) + if r then return r end + end + end + return nil +end + +local function find_exe_for_buf(buf, opts) + local r = {} + r.name = opts.name + r.file = vim.api.nvim_buf_get_name(buf) + r.filetype = vim.api.nvim_buf_get_option(buf, "filetype") + r.exe_name = opts.name + r.exe_places = opts.exe_places or { "global" } + + if opts.config_files then + r.config_file = find_files(r.file, opts.config_files) + if r.config_file == nil then return nil end + end + + if opts.filetypes then + if not require("crupest.table").includes(opts.filetypes, r.filetype) then + return nil + end + end + + r.exe_path = find_exe(r.file, r.exe_name, r.exe_places) + if r.exe_path == nil then return nil end + + return r +end + +return { + get_exe = get_exe, + find_global_exe = find_global_exe, + first_exe = first_exe, + find_file_or_directory = find_file_or_directory, + find_files_or_directories = find_files_or_directories, + find_file = find_file, + find_files = find_files, + find_node_modules = find_node_modules, + find_npm_exe = find_npm_exe, + find_exe = find_exe, + find_exe_for_buf = find_exe_for_buf, +} diff --git a/configs/nvim/config-root/lua/crupest/utils/fs.lua b/configs/nvim/config-root/lua/crupest/utils/fs.lua new file mode 100644 index 0000000..d34c2f6 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/utils/fs.lua @@ -0,0 +1,101 @@ +local function clean_path(path) + if path == "/" then return path end + path = string.gsub(path, "[/\\]+", "/") + if string.sub(path, string.len(path)) == '/' then + path = string.sub(path, 1, string.len(path) - 1) + end + return path +end + +local function full_path(name) + local path = vim.fn.fnamemodify(name, ":p") + return clean_path(path) +end + +local function escape_space(str) + return (string.gsub(str, " ", "\\ ")) +end + +local function path_get_dir(path) + return full_path(vim.fn.fnamemodify(clean_path(path), ":h")) +end + +local function walk_up(path, func) + local current_path = full_path(path) + while true do + local result = func(current_path) + if result ~= nil then + return result + end + local new_path = path_get_dir(current_path) + if new_path == current_path then + break + end + current_path = new_path + end + return nil +end + +local function exist(path) + return vim.uv.fs_stat(path) +end + +local function isfile(path) + local s = vim.uv.fs_stat(path) + if not s then return false end + return s.type == "file" +end + +local function isdir(path) + local s = vim.uv.fs_stat(path) + if not s then return false end + return s.type == "directory" +end + +local function mkdir(dir) + local parents = {} + + walk_up(dir, function(p) + table.insert(parents, 1, p) + end) + + for _, v in ipairs(parents) do + if exist(v) and not isdir(v) then + vim.notify(v .. " is not a dir. Can't make dir " .. dir, vim.log.levels.ERROR) + return + end + if not exist(v) then + vim.notify("Creating dir " .. v) + assert(vim.uv.fs_mkdir(v, 504)) -- mode = 0770 + end + end +end + +local function copy(old, new) + mkdir(path_get_dir(new)) + assert(vim.uv.fs_copyfile(old, new)) +end + +local function remove(path) + assert(vim.uv.fs_unlink(path)) +end + +local function move(old, new) + mkdir(path_get_dir(new)) + assert(vim.uv.fs_rename(old, new)) +end + +return { + clean_path = clean_path, + full_path = full_path, + escape_space = escape_space, + path_get_dir = path_get_dir, + walk_up = walk_up, + exist = exist, + isfile = isfile, + isdir = isdir, + mkdir = mkdir, + copy = copy, + remove = remove, + move = move +} diff --git a/configs/nvim/config-root/lua/crupest/utils/nvim.lua b/configs/nvim/config-root/lua/crupest/utils/nvim.lua new file mode 100644 index 0000000..ac732fd --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/utils/nvim.lua @@ -0,0 +1,44 @@ +local function list_listed_bufs() + local bufs = vim.api.nvim_list_bufs() + local result = {} + for _, v in ipairs(bufs) do + if vim.fn.buflisted(v) ~= 0 then + table.insert(result, v) + end + end + return result +end + +-- list the windows that are currently editing the given buffer +local function list_wins_editing_buf(buf) + local wins = vim.api.nvim_list_wins() + local result = {} + for _, win in ipairs(wins) do + if vim.api.nvim_win_get_buf(win) == buf then + table.insert(result, win) + end + end + return result +end + +local function buf_is_normal(buf) + return vim.fn.bufexists(buf) ~= 0 and vim.fn.buflisted(buf) ~= 0 +end + + +local function close_float() + local wins = vim.api.nvim_list_wins() + for _, v in ipairs(wins) do + if vim.api.nvim_win_get_config(v).relative ~= '' then + vim.api.nvim_win_close(v, false) + end + end +end + +return { + list_listed_bufs = list_listed_bufs, + buf_is_normal = buf_is_normal, + list_wins_editing_buf = list_wins_editing_buf, + close_float = close_float, +} + diff --git a/configs/nvim/config-root/lua/crupest/utils/table.lua b/configs/nvim/config-root/lua/crupest/utils/table.lua new file mode 100644 index 0000000..22419b0 --- /dev/null +++ b/configs/nvim/config-root/lua/crupest/utils/table.lua @@ -0,0 +1,42 @@ +local function remove_element(tbl, element) + local index = nil + for i, v in ipairs(tbl) do + if element == v then + index = i + break + end + end + if index then + table.remove(tbl, index) + end + return tbl +end + +local function element_at(tbl, element) + local at = nil + for i, v in ipairs(tbl) do + if element == v then + at = i + break + end + end + return at +end + +local function includes(tbl, element) + for _, v in ipairs(tbl) do + if v == element then return true end + end + return false +end + +local function string_start_with(str, prefix) + return string.find(str, prefix, 0, true) == 1 +end + +return { + remove_element = remove_element, + element_at = element_at, + includes = includes, + string_start_with = string_start_with, +} diff --git a/configs/nvim/config-root/lua/plugins.lua b/configs/nvim/config-root/lua/plugins.lua new file mode 100644 index 0000000..d7d0247 --- /dev/null +++ b/configs/nvim/config-root/lua/plugins.lua @@ -0,0 +1,32 @@ +-- spellchecker: disable +return { + { "catppuccin/nvim", name = "catppuccin", priority = 1000 }, + "neovim/nvim-lspconfig", + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + "L3MON4D3/LuaSnip", + "saadparwaiz1/cmp_luasnip", + { + "nvim-lualine/lualine.nvim", + dependencies = { 'nvim-tree/nvim-web-devicons' } + }, + { + "nvim-telescope/telescope.nvim", + dependencies = { 'nvim-lua/plenary.nvim' } + }, + "windwp/nvim-autopairs", + "mfussenegger/nvim-lint", + "akinsho/toggleterm.nvim", + "lewis6991/gitsigns.nvim", + { + "nvim-neo-tree/neo-tree.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-tree/nvim-web-devicons", + "MunifTanjim/nui.nvim", + }, + }, +} diff --git a/configs/nvim/config-root/nvim-words.txt b/configs/nvim/config-root/nvim-words.txt new file mode 100644 index 0000000..e4a2d60 --- /dev/null +++ b/configs/nvim/config-root/nvim-words.txt @@ -0,0 +1,48 @@ +nvim +neovide +lspconfig +keymap +libuv +omnifunc +autocommand +autocmd +augroup +stdpath +setloclist +bnext +bufs +buflisted +bufexists +getjumplist +bufnr +fnamemodify +isfile +isdir +fargs +nargs +vimruntime +copyfile +isdirectory +lnum + +# plugins +dotfiles +lualine +luasnip +toggleterm +everforest +autopairs +neotree +gitsigns + +# languages +clangd +omnisharp +omni +codebases +rulesets +unimported +prereleases +cssls +deno +denols diff --git a/configs/nvim/copy-nvim-config b/configs/nvim/copy-nvim-config new file mode 100755 index 0000000..92863a9 --- /dev/null +++ b/configs/nvim/copy-nvim-config @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +MYDIR="$(dirname "$(realpath "$0")")/config-root" + +mkdir -p ${MYDIR} +cp -R ~/.config/nvim/. ${MYDIR} diff --git a/configs/nvim/cspell.yaml b/configs/nvim/cspell.yaml deleted file mode 100644 index 2a716e2..0000000 --- a/configs/nvim/cspell.yaml +++ /dev/null @@ -1,13 +0,0 @@ -dictionaryDefinitions: - - name: nvim-words - path: './nvim-words.txt' - addWords: true - -dictionaries: - - nvim-words - -words: - - crupest - -ignorePaths: - - lazy-lock.json diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua deleted file mode 100644 index a2b84aa..0000000 --- a/configs/nvim/init.lua +++ /dev/null @@ -1,60 +0,0 @@ -if vim.g.neovide then - -- spellchecker: disable-next-line - vim.opt.guifont = "FiraCode Nerd Font"; - vim.g.neovide_window_blurred = true; - vim.g.neovide_transparency = 0.85; - vim.g.neovide_input_ime = false; - vim.g.neovide_cursor_animate_in_insert_mode = false - vim.g.neovide_cursor_vfx_mode = "pixiedust"; -end - -local is_win = vim.fn.has("win32") ~= 0 - --- spellchecker: disable -if is_win then - vim.cmd([[ - let &shell = executable('pwsh') ? 'pwsh' : 'powershell' - let &shellcmdflag = '-NoLogo -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues[''Out-File:Encoding'']=''utf8'';Remove-Alias -Force -ErrorAction SilentlyContinue tee;' - let &shellredir = '2>&1 | %%{ "$_" } | Out-File %s; exit $LastExitCode' - let &shellpipe = '2>&1 | %%{ "$_" } | tee %s; exit $LastExitCode' - set shellquote= shellxquote= - ]]) - vim.opt.completeslash = 'slash' -end --- spellchecker: enable - --- spellchecker: disable -vim.opt.termguicolors = true; -vim.opt.fileformats = "unix,dos"; -vim.opt.softtabstop = 4; -vim.opt.shiftwidth = 4; -vim.opt.expandtab = true; -vim.opt.wrap = false; -vim.opt.number = true; --- spellchecker: enable - -vim.g.load_doxygen_syntax = true; -vim.g.doxygen_javadoc_autobrief = false; - --- Init lazy.nvim -local lazy_path = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.uv.fs_stat(lazy_path) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazy_path, - }) -end -vim.opt.rtp:prepend(lazy_path) - --- Use lazy.nvim -require("lazy").setup("plugins") - -vim.cmd("colorscheme catppuccin-macchiato") - -require("crupest.nvim.lsp").setup() -require("crupest.nvim.plugins").setup() -require("crupest.nvim.keymap").setup() diff --git a/configs/nvim/lazy-lock.json b/configs/nvim/lazy-lock.json deleted file mode 100644 index 59f5473..0000000 --- a/configs/nvim/lazy-lock.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "LuaSnip": { "branch": "master", "commit": "45db5addf8d0a201e1cf247cae4cdce605ad3768" }, - "catppuccin": { "branch": "main", "commit": "4fd72a9ab64b393c2c22b168508fd244877fec96" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, - "gitsigns.nvim": { "branch": "main", "commit": "1ef74b546732f185d0f806860fa5404df7614f28" }, - "lazy.nvim": { "branch": "main", "commit": "48b52b5cfcf8f88ed0aff8fde573a5cc20b1306d" }, - "lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" }, - "neo-tree.nvim": { "branch": "main", "commit": "0774fa2085c62a147fcc7b56f0ac37053cc80217" }, - "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, - "nvim-autopairs": { "branch": "master", "commit": "fd2badc24e675f947162a16c124d395bde80dbd6" }, - "nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" }, - "nvim-lint": { "branch": "master", "commit": "a7ce9c78a7c710c28bee56dfab10a5c0c80b7fb5" }, - "nvim-lspconfig": { "branch": "master", "commit": "bdbc65aadc708ce528efb22bca5f82a7cca6b54d" }, - "nvim-web-devicons": { "branch": "master", "commit": "9793801f974bba70e4ac5d7eae6c4f5659993d8e" }, - "plenary.nvim": { "branch": "master", "commit": "ec289423a1693aeae6cd0d503bac2856af74edaa" }, - "telescope.nvim": { "branch": "master", "commit": "5972437de807c3bc101565175da66a1aa4f8707a" }, - "toggleterm.nvim": { "branch": "main", "commit": "137d06fb103952a0fb567882bb8527e2f92d327d" } -} diff --git a/configs/nvim/lua/crupest/nvim/keymap.lua b/configs/nvim/lua/crupest/nvim/keymap.lua deleted file mode 100644 index 624c04c..0000000 --- a/configs/nvim/lua/crupest/nvim/keymap.lua +++ /dev/null @@ -1,9 +0,0 @@ -local function setup() - vim.keymap.set("n", "", "bnext") - vim.keymap.set("n", "", "bNext") - vim.keymap.set("n", "", require("crupest.utils.nvim").close_float) -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/lsp/c.lua b/configs/nvim/lua/crupest/nvim/lsp/c.lua deleted file mode 100644 index e0466b1..0000000 --- a/configs/nvim/lua/crupest/nvim/lsp/c.lua +++ /dev/null @@ -1,29 +0,0 @@ -local lspconfig = require("lspconfig") -local capabilities = require("cmp_nvim_lsp").default_capabilities() - -local get_exe = require("crupest.utils.find").get_exe - -local brew_clangd_path = "/usr/local/opt/llvm/bin/clangd" - -local function setup() - local clangd = "clangd" - - if get_exe(brew_clangd_path) then - clangd = brew_clangd_path - end - - -- setup lsp clangd - lspconfig.clangd.setup { - cmd = { clangd }, - capabilities = capabilities, - on_attach = function(_, bufnr) - vim.keymap.set('n', 's', "ClangdSwitchSourceHeader", { - buffer = bufnr - }) - end - } -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/lsp/init.lua b/configs/nvim/lua/crupest/nvim/lsp/init.lua deleted file mode 100644 index 464d7ef..0000000 --- a/configs/nvim/lua/crupest/nvim/lsp/init.lua +++ /dev/null @@ -1,34 +0,0 @@ -local function setup() - require("crupest.nvim.lsp.c").setup() - require("crupest.nvim.lsp.lua").setup() - - -- Use LspAttach autocommand to only map the following keys - -- after the language server attaches to the current buffer - vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('UserLspConfig', {}), - callback = function(ev) - -- Buffer local mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local opts = { buffer = ev.buf } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, opts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) - vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) - vim.keymap.set('n', 'f', vim.lsp.buf.format, opts) - end, - }) -end - - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/lsp/lua.lua b/configs/nvim/lua/crupest/nvim/lsp/lua.lua deleted file mode 100644 index 1785515..0000000 --- a/configs/nvim/lua/crupest/nvim/lsp/lua.lua +++ /dev/null @@ -1,31 +0,0 @@ -local lspconfig = require("lspconfig") -local capabilities = require("cmp_nvim_lsp").default_capabilities() - -local function setup() - lspconfig.lua_ls.setup { - capabilities = capabilities, - settings = { - Lua = { - runtime = { - version = "LuaJIT" - }, - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = { - [vim.fn.expand "$VIMRUNTIME/lua"] = true, - [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true, - [vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy"] = true, - }, - maxPreload = 100000, - preloadFileSize = 10000, - }, - }, - }, - } -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/plugins/cmp.lua b/configs/nvim/lua/crupest/nvim/plugins/cmp.lua deleted file mode 100644 index 9b1d876..0000000 --- a/configs/nvim/lua/crupest/nvim/plugins/cmp.lua +++ /dev/null @@ -1,31 +0,0 @@ -local function setup() - local cmp = require("cmp") - local luasnip = require("luasnip") - - cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - window = { - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - }, { - { name = 'buffer' }, - }) - } -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/plugins/gitsign.lua b/configs/nvim/lua/crupest/nvim/plugins/gitsign.lua deleted file mode 100644 index 220c91a..0000000 --- a/configs/nvim/lua/crupest/nvim/plugins/gitsign.lua +++ /dev/null @@ -1,51 +0,0 @@ -local function setup() - local gitsigns = require('gitsigns') - gitsigns.setup { - on_attach = function(bufnr) - local function map(mode, l, r, opts) - opts = opts or {} - opts.buffer = bufnr - vim.keymap.set(mode, l, r, opts) - end - - -- Navigation - map('n', ']c', function() - if vim.wo.diff then - vim.cmd.normal({ ']c', bang = true }) - else - gitsigns.nav_hunk('next') - end - end) - - map('n', '[c', function() - if vim.wo.diff then - vim.cmd.normal({ '[c', bang = true }) - else - gitsigns.nav_hunk('prev') - end - end) - - -- Actions - map('n', 'hs', gitsigns.stage_hunk) - map('n', 'hr', gitsigns.reset_hunk) - map('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end) - map('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end) - map('n', 'hS', gitsigns.stage_buffer) - map('n', 'hu', gitsigns.undo_stage_hunk) - map('n', 'hR', gitsigns.reset_buffer) - map('n', 'hp', gitsigns.preview_hunk) - map('n', 'hb', function() gitsigns.blame_line { full = true } end) - map('n', 'tb', gitsigns.toggle_current_line_blame) - map('n', 'hd', gitsigns.diffthis) - map('n', 'hD', function() gitsigns.diffthis('~') end) - map('n', 'td', gitsigns.toggle_deleted) - - -- Text object - map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk') - end - } -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/plugins/init.lua b/configs/nvim/lua/crupest/nvim/plugins/init.lua deleted file mode 100644 index 637c8e5..0000000 --- a/configs/nvim/lua/crupest/nvim/plugins/init.lua +++ /dev/null @@ -1,11 +0,0 @@ -local function setup() - require("crupest.nvim.plugins.lint").setup() - require("crupest.nvim.plugins.snip").setup() - require("crupest.nvim.plugins.cmp").setup() - require("crupest.nvim.plugins.telescope").setup() - require("crupest.nvim.plugins.gitsign").setup() -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/plugins/lint.lua b/configs/nvim/lua/crupest/nvim/plugins/lint.lua deleted file mode 100644 index 6649e74..0000000 --- a/configs/nvim/lua/crupest/nvim/plugins/lint.lua +++ /dev/null @@ -1,81 +0,0 @@ -local lint = require("lint") -local find = require('crupest.utils.find') -local is_win = vim.fn.has("win32") ~= 0 - -local cspell_config_patterns = { - ".cspell.json", - "cspell.json", - ".cSpell.json", - "cSpell.json", - "cspell.config.js", - "cspell.config.cjs", - "cspell.config.json", - "cspell.config.yaml", - "cspell.config.yml", - "cspell.yaml", - "cspell.yml", -} - -local my_linters = { - { - name = "cspell", - exe_places = { "npm", "global" }, - config_files = cspell_config_patterns, - }, -} - -local function run(opt) - if not opt then - opt = {} - end - - if not opt.buf then - opt.buf = 0 - end - - local linters = {} - - for _, l in ipairs(my_linters) do - local linter = find.find_exe_for_buf(opt.buf, l) - if linter then table.insert(linters, linter) end - end - - - local linter_names = {} - - for _, linter in ipairs(linters) do - table.insert(linter_names, linter.name) - require('lint.linters.' .. linter.name).cmd = linter.exe_path - end - - lint.try_lint(linter_names) -end - -local function setup() - if is_win then - for _, l in ipairs(my_linters) do - local name = l.name - local linter = require('lint.linters.' .. name) - if linter.cmd == 'cmd.exe' then - linter.cmd = linter.args[2] - end - table.remove(linter.args, 1) - table.remove(linter.args, 1) - end - end - - vim.api.nvim_create_autocmd({ "BufWritePost" }, { - callback = function(opt) - run({ - buf = opt.buffer - }) - end, - }) - - vim.keymap.set('n', 'lr', run) -end - -return { - setup = setup, - run = run -} diff --git a/configs/nvim/lua/crupest/nvim/plugins/others.lua b/configs/nvim/lua/crupest/nvim/plugins/others.lua deleted file mode 100644 index 2d728ae..0000000 --- a/configs/nvim/lua/crupest/nvim/plugins/others.lua +++ /dev/null @@ -1,20 +0,0 @@ -local function setup() - require("neo-tree").setup { - filesystem = { - filtered_items = { - hide_dotfiles = false, - hide_gitignored = false, - hide_hidden = false, -- only works on Windows for hidden files/directories - }, - use_libuv_file_watcher = true - } - } - - require('lualine').setup {} - - require("nvim-autopairs").setup {} -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/nvim/plugins/snip.lua b/configs/nvim/lua/crupest/nvim/plugins/snip.lua deleted file mode 100644 index 1cf9800..0000000 --- a/configs/nvim/lua/crupest/nvim/plugins/snip.lua +++ /dev/null @@ -1,73 +0,0 @@ -local luasnip = require("luasnip") - -local ls = luasnip --- some shorthands... -local s = ls.snippet -local sn = ls.snippet_node -local t = ls.text_node -local i = ls.insert_node -local f = ls.function_node -local c = ls.choice_node -local d = ls.dynamic_node -local r = ls.restore_node -local l = require("luasnip.extras").lambda -local rep = require("luasnip.extras").rep -local p = require("luasnip.extras").partial -local m = require("luasnip.extras").match -local n = require("luasnip.extras").nonempty -local dl = require("luasnip.extras").dynamic_lambda -local fmt = require("luasnip.extras.fmt").fmt -local fmta = require("luasnip.extras.fmt").fmta -local types = require("luasnip.util.types") -local conds = require("luasnip.extras.conditions") -local conds_expand = require("luasnip.extras.conditions.expand") - -local function copy(args) - return args[1] -end - -local function setup() - vim.keymap.set({ "i", "s" }, "", function() luasnip.jump(1) end, { silent = true }) - vim.keymap.set({ "i", "s" }, "", function() luasnip.jump(-1) end, { silent = true }) - - vim.keymap.set({ "i", "s" }, "", function() - if luasnip.choice_active() then - luasnip.change_choice(1) - end - end, { silent = true }) - - luasnip.add_snippets("cpp", { - s("cs", { - i(1, "classname"), - t("::"), - f(copy, 1), - t("("), - i(0), - t(") { }") - }), - - s("ds", { - i(1, "classname"), - t("::~"), - f(copy, 1), - t("() { }") - }), - - s("csds", { - i(1, "classname"), - t("::"), - f(copy, 1), - t("("), - i(0), - t({ ") { }", "", "" }), - f(copy, 1), - t("::~"), - f(copy, 1), - t("() { }") - }), - }) -end - -return { - setup = setup, -} diff --git a/configs/nvim/lua/crupest/nvim/plugins/telescope.lua b/configs/nvim/lua/crupest/nvim/plugins/telescope.lua deleted file mode 100644 index d68b7f2..0000000 --- a/configs/nvim/lua/crupest/nvim/plugins/telescope.lua +++ /dev/null @@ -1,11 +0,0 @@ -local function setup() - local builtin = require('telescope.builtin') - vim.keymap.set('n', 'ff', builtin.find_files, {}) - vim.keymap.set('n', 'fg', builtin.live_grep, {}) - vim.keymap.set('n', 'fb', builtin.buffers, {}) - vim.keymap.set('n', 'fh', builtin.help_tags, {}) -end - -return { - setup = setup -} diff --git a/configs/nvim/lua/crupest/utils/find.lua b/configs/nvim/lua/crupest/utils/find.lua deleted file mode 100644 index 83968d2..0000000 --- a/configs/nvim/lua/crupest/utils/find.lua +++ /dev/null @@ -1,152 +0,0 @@ -local fs = require("crupest.utils.fs"); -local is_win = vim.fn.has("win32") ~= 0 - -local win_exe_exts = { "exe", "CMD", "cmd", "ps1" } - -local function get_exe(path) - if is_win then - for _, ext in ipairs(win_exe_exts) do - if string.find(path, "%." .. ext .. "$") and fs.isfile(path) then - return path - end - end - for _, ext in ipairs(win_exe_exts) do - local p = path .. "." .. ext - if fs.isfile(p) then return p end - end - return nil - end - - if vim.fn.executable(path) ~= 0 then - return path - end - - return nil -end - -local function find_global_exe(name) - if vim.fn.executable(name) ~= 0 then - return name - end - - return nil -end - -local function first_exe(paths) - for _, v in ipairs(paths) do - local exe = get_exe(v) - if exe then return exe end - end - - return nil -end - -local function find_file_or_directory(path, name) - return fs.walk_up(path, function(current_path) - local p = current_path .. "/" .. name - if fs.isdir(p) then - return p, "directory" - elseif fs.isfile(p) then - return p, "file" - end - return nil - end) -end - -local function find_file(path, name) - return fs.walk_up(path, function(current_path) - local p = current_path .. "/" .. name - if fs.isfile(p) then - return p - end - return nil - end) -end - -local function find_files_or_directories(path, names) - for _, name in ipairs(names) do - local p, type = find_file_or_directory(path, name) - if p then return p, type end - end - return nil -end - -local function find_files(path, names) - for _, name in ipairs(names) do - local p = find_file(path, name) - if p then return p end - end - return nil -end - -local function find_node_modules(path) - return fs.walk_up(path, function(current_path) - local node_modules_path = current_path .. "/node_modules" - if fs.isdir(node_modules_path) then - return node_modules_path - end - return nil - end) -end - -local function find_npm_exe(path, exe) - local node_modules_path = find_node_modules(path) - if not node_modules_path then return nil end - local try_exe_path = node_modules_path .. "/.bin/" .. exe - local exe_path = get_exe(try_exe_path) - if exe_path then return exe_path end - return nil -end - -local function find_exe(path, exe, places) - for _, place in ipairs(places) do - if place == "npm" then - local r = find_npm_exe(path, exe) - if r then return r end - end - if place == "global" then - local r = find_global_exe(exe) - if r then return r end - end - end - return nil -end - -local function find_exe_for_buf(buf, opts) - local r = {} - r.name = opts.name - r.file = vim.api.nvim_buf_get_name(buf) - r.filetype = vim.api.nvim_buf_get_option(buf, "filetype") - r.exe_name = opts.name - r.exe_places = opts.exe_places or { "global" } - - if opts.config_files then - r.config_file = find_files(r.file, opts.config_files) - if r.config_file == nil then return nil end - end - - if opts.filetypes then - if not require("crupest.table").includes(opts.filetypes, r.filetype) then - return nil - end - end - - r.exe_path = find_exe(r.file, r.exe_name, r.exe_places) - if r.exe_path == nil then return nil end - - return r -end - -return { - get_exe = get_exe, - find_global_exe = find_global_exe, - first_exe = first_exe, - find_file_or_directory = find_file_or_directory, - find_files_or_directories = find_files_or_directories, - find_file = find_file, - find_files = find_files, - find_node_modules = find_node_modules, - find_npm_exe = find_npm_exe, - find_exe = find_exe, - find_exe_for_buf = find_exe_for_buf, -} diff --git a/configs/nvim/lua/crupest/utils/fs.lua b/configs/nvim/lua/crupest/utils/fs.lua deleted file mode 100644 index d34c2f6..0000000 --- a/configs/nvim/lua/crupest/utils/fs.lua +++ /dev/null @@ -1,101 +0,0 @@ -local function clean_path(path) - if path == "/" then return path end - path = string.gsub(path, "[/\\]+", "/") - if string.sub(path, string.len(path)) == '/' then - path = string.sub(path, 1, string.len(path) - 1) - end - return path -end - -local function full_path(name) - local path = vim.fn.fnamemodify(name, ":p") - return clean_path(path) -end - -local function escape_space(str) - return (string.gsub(str, " ", "\\ ")) -end - -local function path_get_dir(path) - return full_path(vim.fn.fnamemodify(clean_path(path), ":h")) -end - -local function walk_up(path, func) - local current_path = full_path(path) - while true do - local result = func(current_path) - if result ~= nil then - return result - end - local new_path = path_get_dir(current_path) - if new_path == current_path then - break - end - current_path = new_path - end - return nil -end - -local function exist(path) - return vim.uv.fs_stat(path) -end - -local function isfile(path) - local s = vim.uv.fs_stat(path) - if not s then return false end - return s.type == "file" -end - -local function isdir(path) - local s = vim.uv.fs_stat(path) - if not s then return false end - return s.type == "directory" -end - -local function mkdir(dir) - local parents = {} - - walk_up(dir, function(p) - table.insert(parents, 1, p) - end) - - for _, v in ipairs(parents) do - if exist(v) and not isdir(v) then - vim.notify(v .. " is not a dir. Can't make dir " .. dir, vim.log.levels.ERROR) - return - end - if not exist(v) then - vim.notify("Creating dir " .. v) - assert(vim.uv.fs_mkdir(v, 504)) -- mode = 0770 - end - end -end - -local function copy(old, new) - mkdir(path_get_dir(new)) - assert(vim.uv.fs_copyfile(old, new)) -end - -local function remove(path) - assert(vim.uv.fs_unlink(path)) -end - -local function move(old, new) - mkdir(path_get_dir(new)) - assert(vim.uv.fs_rename(old, new)) -end - -return { - clean_path = clean_path, - full_path = full_path, - escape_space = escape_space, - path_get_dir = path_get_dir, - walk_up = walk_up, - exist = exist, - isfile = isfile, - isdir = isdir, - mkdir = mkdir, - copy = copy, - remove = remove, - move = move -} diff --git a/configs/nvim/lua/crupest/utils/nvim.lua b/configs/nvim/lua/crupest/utils/nvim.lua deleted file mode 100644 index ac732fd..0000000 --- a/configs/nvim/lua/crupest/utils/nvim.lua +++ /dev/null @@ -1,44 +0,0 @@ -local function list_listed_bufs() - local bufs = vim.api.nvim_list_bufs() - local result = {} - for _, v in ipairs(bufs) do - if vim.fn.buflisted(v) ~= 0 then - table.insert(result, v) - end - end - return result -end - --- list the windows that are currently editing the given buffer -local function list_wins_editing_buf(buf) - local wins = vim.api.nvim_list_wins() - local result = {} - for _, win in ipairs(wins) do - if vim.api.nvim_win_get_buf(win) == buf then - table.insert(result, win) - end - end - return result -end - -local function buf_is_normal(buf) - return vim.fn.bufexists(buf) ~= 0 and vim.fn.buflisted(buf) ~= 0 -end - - -local function close_float() - local wins = vim.api.nvim_list_wins() - for _, v in ipairs(wins) do - if vim.api.nvim_win_get_config(v).relative ~= '' then - vim.api.nvim_win_close(v, false) - end - end -end - -return { - list_listed_bufs = list_listed_bufs, - buf_is_normal = buf_is_normal, - list_wins_editing_buf = list_wins_editing_buf, - close_float = close_float, -} - diff --git a/configs/nvim/lua/crupest/utils/table.lua b/configs/nvim/lua/crupest/utils/table.lua deleted file mode 100644 index 22419b0..0000000 --- a/configs/nvim/lua/crupest/utils/table.lua +++ /dev/null @@ -1,42 +0,0 @@ -local function remove_element(tbl, element) - local index = nil - for i, v in ipairs(tbl) do - if element == v then - index = i - break - end - end - if index then - table.remove(tbl, index) - end - return tbl -end - -local function element_at(tbl, element) - local at = nil - for i, v in ipairs(tbl) do - if element == v then - at = i - break - end - end - return at -end - -local function includes(tbl, element) - for _, v in ipairs(tbl) do - if v == element then return true end - end - return false -end - -local function string_start_with(str, prefix) - return string.find(str, prefix, 0, true) == 1 -end - -return { - remove_element = remove_element, - element_at = element_at, - includes = includes, - string_start_with = string_start_with, -} diff --git a/configs/nvim/lua/plugins.lua b/configs/nvim/lua/plugins.lua deleted file mode 100644 index d7d0247..0000000 --- a/configs/nvim/lua/plugins.lua +++ /dev/null @@ -1,32 +0,0 @@ --- spellchecker: disable -return { - { "catppuccin/nvim", name = "catppuccin", priority = 1000 }, - "neovim/nvim-lspconfig", - "hrsh7th/nvim-cmp", - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-path", - "hrsh7th/cmp-cmdline", - "L3MON4D3/LuaSnip", - "saadparwaiz1/cmp_luasnip", - { - "nvim-lualine/lualine.nvim", - dependencies = { 'nvim-tree/nvim-web-devicons' } - }, - { - "nvim-telescope/telescope.nvim", - dependencies = { 'nvim-lua/plenary.nvim' } - }, - "windwp/nvim-autopairs", - "mfussenegger/nvim-lint", - "akinsho/toggleterm.nvim", - "lewis6991/gitsigns.nvim", - { - "nvim-neo-tree/neo-tree.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-tree/nvim-web-devicons", - "MunifTanjim/nui.nvim", - }, - }, -} diff --git a/configs/nvim/nvim-words.txt b/configs/nvim/nvim-words.txt deleted file mode 100644 index e4a2d60..0000000 --- a/configs/nvim/nvim-words.txt +++ /dev/null @@ -1,48 +0,0 @@ -nvim -neovide -lspconfig -keymap -libuv -omnifunc -autocommand -autocmd -augroup -stdpath -setloclist -bnext -bufs -buflisted -bufexists -getjumplist -bufnr -fnamemodify -isfile -isdir -fargs -nargs -vimruntime -copyfile -isdirectory -lnum - -# plugins -dotfiles -lualine -luasnip -toggleterm -everforest -autopairs -neotree -gitsigns - -# languages -clangd -omnisharp -omni -codebases -rulesets -unimported -prereleases -cssls -deno -denols -- cgit v1.2.3