diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ad27647..1a64c5f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,6 +18,22 @@ jobs: run: make bootstrap env: DOTFILES_CI: 1 + - name: Install neovim + uses: rhysd/action-setup-vim@v1 + with: + neovim: true + - name: Install packer + if: ${{ matrix.platform != 'windows-latest' }} + run: | + git clone https://github.com/wbthomason/packer.nvim ~/.local/share/nvim/site/pack/packer/start/packer.nvim + - name: Install packer on Windows + if: ${{ matrix.platform == 'windows-latest' }} + run: | + git clone https://github.com/wbthomason/packer.nvim "$env:LOCALAPPDATA\nvim-data\site\pack\packer\start\packer.nvim" + - name: Run neovim checks + run: make check_neovim + env: + DOTFILES_CI: 1 create-key: strategy: matrix: @@ -29,3 +45,12 @@ jobs: run: echo "test\n\n" | make create_personal_ssh_github_key env: DOTFILES_CI: 1 + stylua: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Run stylua + uses: JohnnyMorganz/stylua-action@1.0.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + args: --check . diff --git a/.github/workflows/neovim-nightly-test.yml b/.github/workflows/neovim-nightly-test.yml new file mode 100644 index 0000000..b37ea76 --- /dev/null +++ b/.github/workflows/neovim-nightly-test.yml @@ -0,0 +1,31 @@ +name: Neovim Nightly compatibility test +on: + schedule: + - cron: '0 12 * * *' + + workflow_dispatch: + + +jobs: + bootstrap-and-check-nightly: + strategy: + matrix: + platform: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v2 + - name: Run bootstrap + run: make bootstrap + env: + DOTFILES_CI: 1 + - name: Install neovim + uses: rhysd/action-setup-vim@v1 + with: + neovim: true + version: nightly + - name: Install packer + run: git clone https://github.com/wbthomason/packer.nvim $HOME/.local/share/nvim/site/pack/packer/start/packer.nvim + - name: Run neovim checks + run: make check_neovim + env: + DOTFILES_CI: 1 diff --git a/Makefile b/Makefile index b3ef849..fb6527f 100644 --- a/Makefile +++ b/Makefile @@ -262,8 +262,8 @@ install_brew_basics: homebrew check_os .PHONY: install_asdf install_asdf: check_os @echo "Installing ASDF VM..." - @git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.0 - @echo "Installed ASDF Version 0.8.0" + @git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0 + @echo "Installed ASDF Version 0.10.0" @echo "To install latest version:" @echo "" @echo "cd ~/.asdf" @@ -312,6 +312,14 @@ install_vim: check_os link_vim @echo "For NeoVim: :PackerInstall" @echo "For Vim: :PlugInstall" +.PHONY: check_neovim +check_neovim: check_os + @echo "This expects that packer is already installed" + @echo "Installing packer packages" + @nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerInstall' + @echo "Doing a basic neovim startup and quit" + @nvim --headless -c 'quitall' + .PHONY: oh_my_zsh oh_my_zsh: check_os @echo "Installing oh-my-zsh..." diff --git a/symlinks/config/nvim/init.lua b/symlinks/config/nvim/init.lua index cdf20f2..6c28aa4 100644 --- a/symlinks/config/nvim/init.lua +++ b/symlinks/config/nvim/init.lua @@ -1,11 +1,11 @@ if require("init.first_load")() then - return + return end -- Allow `require('impatient')` to fail, in case plugins are not yet installed _ = pcall(require, "impatient") -vim.cmd [[filetype plugin indent on]] +vim.cmd([[filetype plugin indent on]]) vim.api.nvim_exec('let $OVIMHOME = $HOME."/.vim"', false) vim.api.nvim_exec('let $VIMHOME = $HOME."/.config/nvim"', false) @@ -25,7 +25,7 @@ require("lsp") vim.cmd("syntax on") require("init.colors") -vim.keymap.set("n", "Q", "gq", {noremap = false}) +vim.keymap.set("n", "Q", "gq", { noremap = false }) vim.keymap.set("i", "", "u") vim.cmd("command! Wq :wq") diff --git a/symlinks/config/nvim/lua/common/projects.lua b/symlinks/config/nvim/lua/common/projects.lua index 9bfca44..2cdf457 100644 --- a/symlinks/config/nvim/lua/common/projects.lua +++ b/symlinks/config/nvim/lua/common/projects.lua @@ -6,14 +6,14 @@ local M = {} -- Gets project root directory based on projectionist function M.get_project_root() - return vim.fn['projectionist#path']() + return vim.fn["projectionist#path"]() end -- Get unique project ID based on git repository function M.get_project_id() - local remote_url = vim.fn['fugitive#RemoteUrl']() - remote_url = remote_url:gsub("/", ":") - return remote_url + local remote_url = vim.fn["fugitive#RemoteUrl"]() + remote_url = remote_url:gsub("/", ":") + return remote_url end return M diff --git a/symlinks/config/nvim/lua/direnv_vimrc_local.lua b/symlinks/config/nvim/lua/direnv_vimrc_local.lua index c62f499..2723478 100644 --- a/symlinks/config/nvim/lua/direnv_vimrc_local.lua +++ b/symlinks/config/nvim/lua/direnv_vimrc_local.lua @@ -4,32 +4,32 @@ local M = {} function M.get_local_vimrc() - local extra_vimrc_location = vim.env.DIRENV_EXTRA_VIMRC + local extra_vimrc_location = vim.env.DIRENV_EXTRA_VIMRC - return extra_vimrc_location + return extra_vimrc_location end function M.open_local_vimrc() - local local_vimrc = M.get_local_vimrc() + local local_vimrc = M.get_local_vimrc() - if local_vimrc == nil then - local_vimrc = vim.fn.input("Local vimrc filename: ", ".vimrc") - local save = vim.fn.input("Save to .envrc? [y/N]", "y") - if save == "y" then - local existing_envrc = vim.fn.readfile(".envrc") - local write = true - for line in existing_envrc do - if string.find(line, "export DIRENV_EXTRA_VIMRC") then - write = false - end - end - if write then - vim.fn.writefile({"export DIRENV_EXTRA_VIMRC=" .. local_vimrc}, ".envrc", "a") - end - end - end + if local_vimrc == nil then + local_vimrc = vim.fn.input("Local vimrc filename: ", ".vimrc") + local save = vim.fn.input("Save to .envrc? [y/N]", "y") + if save == "y" then + local existing_envrc = vim.fn.readfile(".envrc") + local write = true + for line in existing_envrc do + if string.find(line, "export DIRENV_EXTRA_VIMRC") then + write = false + end + end + if write then + vim.fn.writefile({ "export DIRENV_EXTRA_VIMRC=" .. local_vimrc }, ".envrc", "a") + end + end + end - vim.cmd("edit " .. local_vimrc) + vim.cmd("edit " .. local_vimrc) end return M diff --git a/symlinks/config/nvim/lua/fugitive_extensions.lua b/symlinks/config/nvim/lua/fugitive_extensions.lua index 6a35a79..1df98c3 100644 --- a/symlinks/config/nvim/lua/fugitive_extensions.lua +++ b/symlinks/config/nvim/lua/fugitive_extensions.lua @@ -7,28 +7,28 @@ -- Works regardless of ssh or https for origin config -- Hardcoded to use 'origin' remote local function get_pr_url(...) - local origin_url = vim.fn["fugitive#RemoteUrl"]("origin") - origin_url = string.gsub(origin_url, ".git$", "") - origin_url = string.gsub(origin_url, ":", "/") - origin_url = string.gsub(origin_url, "git@", "https://") + local origin_url = vim.fn["fugitive#RemoteUrl"]("origin") + origin_url = string.gsub(origin_url, ".git$", "") + origin_url = string.gsub(origin_url, ":", "/") + origin_url = string.gsub(origin_url, "git@", "https://") - -- Remove prefix if it is available, for some of common git services - local common_services = {"github.com", "bitbucket.org", "gitlab.com"} - for k, service in pairs(common_services) do - if (string.find(origin_url, service, 1, true)) then - -- Common mechanism for managing multiple SSH keys - origin_url = string.gsub(origin_url, "://.*" .. service, "://" .. service) - end - end + -- Remove prefix if it is available, for some of common git services + local common_services = { "github.com", "bitbucket.org", "gitlab.com" } + for k, service in pairs(common_services) do + if string.find(origin_url, service, 1, true) then + -- Common mechanism for managing multiple SSH keys + origin_url = string.gsub(origin_url, "://.*" .. service, "://" .. service) + end + end - -- This part probably only works on github - local pr_url - if (select("#", ...) == 0) then - pr_url = origin_url .. "/compare/" .. vim.fn.FugitiveHead() .. "?expand=1" - else - pr_url = origin_url .. "/compare/" .. select(1, ...) .. "..." .. vim.fn.FugitiveHead() .. "?expand=1" - end - return pr_url + -- This part probably only works on github + local pr_url + if select("#", ...) == 0 then + pr_url = origin_url .. "/compare/" .. vim.fn.FugitiveHead() .. "?expand=1" + else + pr_url = origin_url .. "/compare/" .. select(1, ...) .. "..." .. vim.fn.FugitiveHead() .. "?expand=1" + end + return pr_url end ------------------------------------------------------------------------------- @@ -40,41 +40,41 @@ local M = {} -- Shorcut to push directly to current branch on origin -- Similar to `ggpush` in fish config function M.push_origin() - vim.cmd("Git push origin " .. vim.fn.FugitiveHead()) + vim.cmd("Git push origin " .. vim.fn.FugitiveHead()) end -- Shorcut to pull directly from current branch on origin -- Similar to `ggpull` in fish config function M.pull_origin() - vim.cmd("Git pull origin " .. vim.fn.FugitiveHead()) + vim.cmd("Git pull origin " .. vim.fn.FugitiveHead()) end -- Prints current branches PR url (not saved to :messages) -- Makes it easy to use terminal for opening url on click function M.print_pr_url(...) - vim.cmd('echo "' .. get_pr_url(...) .. '"') + vim.cmd('echo "' .. get_pr_url(...) .. '"') end -- Copies current branches PR url to system clipboard function M.copy_pr_url(...) - vim.cmd('let @+ = "' .. get_pr_url(...) .. '"') + vim.cmd('let @+ = "' .. get_pr_url(...) .. '"') end -- Opens current banches PR url in default browser -- Utilizes netrw browse, meaning it should behave same as netrw function M.open_new_pr(...) - vim.fn["netrw#BrowseX"](get_pr_url(...), 0) + vim.fn["netrw#BrowseX"](get_pr_url(...), 0) end -- Creates new branch and checks out to it -- Similar to `gcb` in fish config function M.create_branch(branch) - vim.cmd("Git checkout -b " .. branch) + vim.cmd("Git checkout -b " .. branch) end -- Switches to branch function M.checkout_branch(branch) - vim.cmd("Git checkout " .. branch) + vim.cmd("Git checkout " .. branch) end return M diff --git a/symlinks/config/nvim/lua/init/first_load.lua b/symlinks/config/nvim/lua/init/first_load.lua index d69c1f1..c67add9 100644 --- a/symlinks/config/nvim/lua/init/first_load.lua +++ b/symlinks/config/nvim/lua/init/first_load.lua @@ -1,31 +1,30 @@ -- Adopted from https://github.com/tjdevries/config_manager/blob/master/xdg_config/nvim/lua/tj/first_load.lua local download_packer = function() - if vim.fn.input("Download Packer? (y for yes)") ~= "y" then - return - end + if vim.fn.input("Download Packer? (y for yes)") ~= "y" then + return + end - local directory = string.format("%s/site/pack/packer/start/", vim.fn.stdpath("data")) + local directory = string.format("%s/site/pack/packer/start/", vim.fn.stdpath("data")) - vim.fn.mkdir(directory, "p") + vim.fn.mkdir(directory, "p") - local out = - vim.fn.system( - string.format("git clone %s %s", "https://github.com/wbthomason/packer.nvim", directory .. "/packer.nvim") - ) + local out = vim.fn.system( + string.format("git clone %s %s", "https://github.com/wbthomason/packer.nvim", directory .. "/packer.nvim") + ) - print(out) - print("Downloading packer.nvim...") - vim.api.nvim_command("PackerCompile") - vim.api.nvim_command("PackerInstall") - print("( You'll need to restart now )") + print(out) + print("Downloading packer.nvim...") + vim.api.nvim_command("PackerCompile") + vim.api.nvim_command("PackerInstall") + print("( You'll need to restart now )") end return function() - if not pcall(require, "packer") then - download_packer() + if not pcall(require, "packer") then + download_packer() - return true - end + return true + end - return false + return false end diff --git a/symlinks/config/nvim/lua/init/options.lua b/symlinks/config/nvim/lua/init/options.lua index 5fb1885..88b2f3f 100644 --- a/symlinks/config/nvim/lua/init/options.lua +++ b/symlinks/config/nvim/lua/init/options.lua @@ -1,7 +1,7 @@ local opt = vim.opt opt.wildignore = "__pycache__" -opt.wildignore = opt.wildignore + {"*.o", "*~", "*.pyc", "*pycache*"} +opt.wildignore = opt.wildignore + { "*.o", "*~", "*.pyc", "*pycache*" } -- Indentation config opt.tabstop = 2 diff --git a/symlinks/config/nvim/lua/init/plugins.lua b/symlinks/config/nvim/lua/init/plugins.lua index ae83784..1703251 100644 --- a/symlinks/config/nvim/lua/init/plugins.lua +++ b/symlinks/config/nvim/lua/init/plugins.lua @@ -1,95 +1,95 @@ -return require("packer").startup { - function(use) - use "wbthomason/packer.nvim" +return require("packer").startup({ + function(use) + use("wbthomason/packer.nvim") - -- Tpope general improvements - use "tpope/vim-sensible" -- Sane defaults - use "tpope/vim-endwise" -- Add closing statements automatically for if, function etc - use "tpope/vim-surround" -- Surround with ', ", etc - use "tpope/vim-fugitive" -- Git integration - use "tpope/vim-vinegar" -- Netrw improvements - use "tpope/vim-obsession" -- Session.vim management - use "tpope/vim-dadbod" -- Database access - use "kristijanhusak/vim-dadbod-ui" -- UI For Dadbod - use "tpope/vim-speeddating" -- and for dates - use "tpope/vim-dispatch" -- Dispatch command - use "tpope/vim-projectionist" -- Project config file! - use "tpope/vim-unimpaired" -- Additional [ and ] mappings - use "tpope/vim-repeat" -- Better . repeat - use "tpope/vim-commentary" -- Commenting motion - use "tpope/vim-sleuth" -- Intendation heuristics + -- Tpope general improvements + use("tpope/vim-sensible") -- Sane defaults + use("tpope/vim-endwise") -- Add closing statements automatically for if, function etc + use("tpope/vim-surround") -- Surround with ', ", etc + use("tpope/vim-fugitive") -- Git integration + use("tpope/vim-vinegar") -- Netrw improvements + use("tpope/vim-obsession") -- Session.vim management + use("tpope/vim-dadbod") -- Database access + use("kristijanhusak/vim-dadbod-ui") -- UI For Dadbod + use("tpope/vim-speeddating") -- and for dates + use("tpope/vim-dispatch") -- Dispatch command + use("tpope/vim-projectionist") -- Project config file! + use("tpope/vim-unimpaired") -- Additional [ and ] mappings + use("tpope/vim-repeat") -- Better . repeat + use("tpope/vim-commentary") -- Commenting motion + use("tpope/vim-sleuth") -- Intendation heuristics - -- General improvements - use "lewis6991/gitsigns.nvim" -- Git signs - use "godlygeek/tabular" -- Tabular command for alignment - use "vim-scripts/utl.vim" -- Universal text linking - use {"mbbill/undotree", cmd = "UndotreeToggle"} -- Undos in a tree for easy access - use "mhinz/vim-grepper" -- Grepper command - improved grepping throughout project - use "radenling/vim-dispatch-neovim" -- vim-dispatch for neovim - uses terminal - use "wellle/targets.vim" -- Additional targets for inside and around motions - use "flazz/vim-colorschemes" -- All popular colorschemes - use "romainl/vim-qf" -- Quickfix list upgrades - use "romainl/vim-devdocs" -- Quick DevDocs.io search using :DD - use "gpanders/editorconfig.nvim" -- .editorconfig support - use "lewis6991/impatient.nvim" -- Caching lua modules for faster startup + -- General improvements + use("lewis6991/gitsigns.nvim") -- Git signs + use("godlygeek/tabular") -- Tabular command for alignment + use("vim-scripts/utl.vim") -- Universal text linking + use({ "mbbill/undotree", cmd = "UndotreeToggle" }) -- Undos in a tree for easy access + use("mhinz/vim-grepper") -- Grepper command - improved grepping throughout project + use("radenling/vim-dispatch-neovim") -- vim-dispatch for neovim - uses terminal + use("wellle/targets.vim") -- Additional targets for inside and around motions + use("flazz/vim-colorschemes") -- All popular colorschemes + use("romainl/vim-qf") -- Quickfix list upgrades + use("romainl/vim-devdocs") -- Quick DevDocs.io search using :DD + use("gpanders/editorconfig.nvim") -- .editorconfig support + use("lewis6991/impatient.nvim") -- Caching lua modules for faster startup - -- Tools - use "direnv/direnv.vim" -- Integration with Direnv - use "vim-test/vim-test" -- Running tests from vim - use "mfussenegger/nvim-dap" -- Debug Adapter Protocol - use "rcarriga/nvim-dap-ui" -- UI components for DAP - use "theHamsta/nvim-dap-virtual-text" -- Virtual text display for DAP - use "diepm/vim-rest-console" -- REST console for vim - use "jamestthompson3/nvim-remote-containers" -- devcontainer.json support - use "jbyuki/one-small-step-for-vimkind" -- Debugger for Nvim-Lua + -- Tools + use("direnv/direnv.vim") -- Integration with Direnv + use("vim-test/vim-test") -- Running tests from vim + use("mfussenegger/nvim-dap") -- Debug Adapter Protocol + use("rcarriga/nvim-dap-ui") -- UI components for DAP + use("theHamsta/nvim-dap-virtual-text") -- Virtual text display for DAP + use("diepm/vim-rest-console") -- REST console for vim + use("jamestthompson3/nvim-remote-containers") -- devcontainer.json support + use("jbyuki/one-small-step-for-vimkind") -- Debugger for Nvim-Lua - -- Snippets - use "L3MON4D3/LuaSnip" -- snippets support - use "rafamadriz/friendly-snippets" -- Collection of snippets - use "saadparwaiz1/cmp_luasnip" -- cmp snippets support + -- Snippets + use("L3MON4D3/LuaSnip") -- snippets support + use("rafamadriz/friendly-snippets") -- Collection of snippets + use("saadparwaiz1/cmp_luasnip") -- cmp snippets support - -- Language support - use "tpope/vim-rails" -- Enables all rails command through vim and integrates with projectionist - use "c-brenn/phoenix.vim" -- Similar to vim-rails, but for phoenix - use "tpope/vim-salve" -- Clojure integration with projectionist - use "tpope/vim-fireplace" -- Clojure REPL and integration - use "vimwiki/vimwiki" -- Vimwiki - personal wiki in vim - use "esensar/vimwiki-reviews-lua" -- Vimwiki extension for periodic reviews - use "ledger/vim-ledger" -- Support for ledger-cli format - use "tandrewnichols/vim-docile" -- Support for vim doc.txt format - use "habamax/vim-godot" -- Godot engine (and script) support - use "guns/vim-sexp" -- Precision editing for S-expressions - use("tpope/vim-sexp-mappings-for-regular-people") -- Simpler keymaps for vim-sexp - use "tridactyl/vim-tridactyl" -- Tridactyl config file support - use "aklt/plantuml-syntax" -- PlantUML support - use "cdelledonne/vim-cmake" -- CMake integration + -- Language support + use("tpope/vim-rails") -- Enables all rails command through vim and integrates with projectionist + use("c-brenn/phoenix.vim") -- Similar to vim-rails, but for phoenix + use("tpope/vim-salve") -- Clojure integration with projectionist + use("tpope/vim-fireplace") -- Clojure REPL and integration + use("vimwiki/vimwiki") -- Vimwiki - personal wiki in vim + use("esensar/vimwiki-reviews-lua") -- Vimwiki extension for periodic reviews + use("ledger/vim-ledger") -- Support for ledger-cli format + use("tandrewnichols/vim-docile") -- Support for vim doc.txt format + use("habamax/vim-godot") -- Godot engine (and script) support + use("guns/vim-sexp") -- Precision editing for S-expressions + use("tpope/vim-sexp-mappings-for-regular-people") -- Simpler keymaps for vim-sexp + use("tridactyl/vim-tridactyl") -- Tridactyl config file support + use("aklt/plantuml-syntax") -- PlantUML support + use("cdelledonne/vim-cmake") -- CMake integration - -- Treesitter - use {"nvim-treesitter/nvim-treesitter", run = ":TSUpdate"} -- Treesitter integration - use "nvim-treesitter/playground" -- TSPlaygroundToggle - access treesitter data + -- Treesitter + use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }) -- Treesitter integration + use("nvim-treesitter/playground") -- TSPlaygroundToggle - access treesitter data - -- LSP - use "neovim/nvim-lspconfig" -- Easy LSP Config - use "alexaandru/nvim-lspupdate" -- Easy install and update for many LSP servers - use "hrsh7th/cmp-nvim-lsp" -- LSP source for cmp - use "hrsh7th/cmp-buffer" -- Buffer source for nvim-cmp - use "hrsh7th/cmp-path" -- Path source for nvim-cmp - use "hrsh7th/cmp-nvim-lua" -- Nvim-Lua source for nvim-cmp - use "hrsh7th/nvim-cmp" -- completion integration - use "nvim-lua/lsp_extensions.nvim" -- LSP extensions (like closing labels for Dart) - use "jose-elias-alvarez/null-ls.nvim" -- Linting and formatting + -- LSP + use("neovim/nvim-lspconfig") -- Easy LSP Config + use("alexaandru/nvim-lspupdate") -- Easy install and update for many LSP servers + use("hrsh7th/cmp-nvim-lsp") -- LSP source for cmp + use("hrsh7th/cmp-buffer") -- Buffer source for nvim-cmp + use("hrsh7th/cmp-path") -- Path source for nvim-cmp + use("hrsh7th/cmp-nvim-lua") -- Nvim-Lua source for nvim-cmp + use("hrsh7th/nvim-cmp") -- completion integration + use("nvim-lua/lsp_extensions.nvim") -- LSP extensions (like closing labels for Dart) + use("jose-elias-alvarez/null-ls.nvim") -- Linting and formatting - -- LSP language specific - use "tjdevries/nlua.nvim" -- Built-in Lua integration with LSP - use "akinsho/flutter-tools.nvim" -- Additional flutter integrations - use "mfussenegger/nvim-jdtls" -- Additional java integrations + -- LSP language specific + use("tjdevries/nlua.nvim") -- Built-in Lua integration with LSP + use("akinsho/flutter-tools.nvim") -- Additional flutter integrations + use("mfussenegger/nvim-jdtls") -- Additional java integrations - -- Lua support - use "nvim-lua/popup.nvim" -- Popup API integration - needed for some plugins - use "nvim-lua/plenary.nvim" -- Lua helpers + -- Lua support + use("nvim-lua/popup.nvim") -- Popup API integration - needed for some plugins + use("nvim-lua/plenary.nvim") -- Lua helpers - -- Telescope - use "nvim-telescope/telescope.nvim" -- Fuzzy searcher - use "nvim-telescope/telescope-dap.nvim" -- DAP integration for Telescope - end -} + -- Telescope + use("nvim-telescope/telescope.nvim") -- Fuzzy searcher + use("nvim-telescope/telescope-dap.nvim") -- DAP integration for Telescope + end, +}) diff --git a/symlinks/config/nvim/lua/lsp/completion.lua b/symlinks/config/nvim/lua/lsp/completion.lua index 41fefcf..1509f20 100644 --- a/symlinks/config/nvim/lua/lsp/completion.lua +++ b/symlinks/config/nvim/lua/lsp/completion.lua @@ -4,50 +4,55 @@ -- Set completeopt to have a better completion experience vim.o.completeopt = "menu,menuone,noselect" -local cmp = require "cmp" +local cmp = require("cmp") local luasnip = require("luasnip") -cmp.setup { - snippet = { - expand = function(args) require'luasnip'.lsp_expand(args.body) end - }, - mapping = { - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.close(), - [""] = cmp.mapping.confirm({select = true}), - [""] = function(fallback) - if cmp.visible() then - cmp.select_next_item() - else - fallback() - end - end, - [""] = function(fallback) - if cmp.visible() then - cmp.select_prev_item() - else - fallback() - end - end, - [""] = cmp.mapping(function(fallback) - if luasnip.jumpable(1) then - luasnip.jump(1) - else - fallback() - end - end, {"i", "s"}), - [""] = cmp.mapping(function(fallback) - if luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, {"i", "s"}) - }, - sources = { - {name = "nvim_lsp"}, {name = "nvim_lua"}, {name = "path"}, - {name = "luasnip"}, {name = "buffer"} - } -} +cmp.setup({ + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + mapping = { + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.close(), + [""] = cmp.mapping.confirm({ select = true }), + [""] = function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + fallback() + end + end, + [""] = function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() + end + end, + [""] = cmp.mapping(function(fallback) + if luasnip.jumpable(1) then + luasnip.jump(1) + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }, + sources = { + { name = "nvim_lsp" }, + { name = "nvim_lua" }, + { name = "path" }, + { name = "luasnip" }, + { name = "buffer" }, + }, +}) diff --git a/symlinks/config/nvim/lua/lsp/diagnostic.lua b/symlinks/config/nvim/lua/lsp/diagnostic.lua index 4be71e8..f307fd1 100644 --- a/symlinks/config/nvim/lua/lsp/diagnostic.lua +++ b/symlinks/config/nvim/lua/lsp/diagnostic.lua @@ -2,56 +2,56 @@ -- - LSP diagnostics config - ------------------------------------------------------------------------------- -local null_ls = require('null-ls') +local null_ls = require("null-ls") null_ls.setup({ - sources = { - -- Python - null_ls.builtins.diagnostics.flake8, - null_ls.builtins.formatting.isort, - null_ls.builtins.formatting.autopep8, + sources = { + -- Python + null_ls.builtins.diagnostics.flake8, + null_ls.builtins.formatting.isort, + null_ls.builtins.formatting.autopep8, - -- Kotlin - null_ls.builtins.formatting.ktlint, - null_ls.builtins.diagnostics.ktlint, + -- Kotlin + null_ls.builtins.formatting.ktlint, + null_ls.builtins.diagnostics.ktlint, - -- C++ and C - null_ls.builtins.formatting.clang_format, + -- C++ and C + null_ls.builtins.formatting.clang_format, - -- Cmake - null_ls.builtins.formatting.cmake_format, + -- Cmake + null_ls.builtins.formatting.cmake_format, - -- Lua - null_ls.builtins.formatting.lua_format, + -- Lua + null_ls.builtins.formatting.stylua, - -- Dart - null_ls.builtins.formatting.dart_format, + -- Dart + null_ls.builtins.formatting.dart_format, - -- Go - null_ls.builtins.formatting.gofmt, + -- Go + null_ls.builtins.formatting.gofmt, - -- Rust - null_ls.builtins.formatting.rustfmt, + -- Rust + null_ls.builtins.formatting.rustfmt, - -- Java - null_ls.builtins.formatting.google_java_format, + -- Java + null_ls.builtins.formatting.google_java_format, - -- General - null_ls.builtins.formatting.trim_newlines, - null_ls.builtins.formatting.trim_whitespace, - null_ls.builtins.hover.dictionary, - null_ls.builtins.code_actions.gitsigns, - }, - on_attach = function(client) - if client.resolved_capabilities.document_formatting then - vim.cmd([[ + -- General + null_ls.builtins.formatting.trim_newlines, + null_ls.builtins.formatting.trim_whitespace, + null_ls.builtins.hover.dictionary, + null_ls.builtins.code_actions.gitsigns, + }, + on_attach = function(client) + if client.resolved_capabilities.document_formatting then + vim.cmd([[ augroup LspFormatting autocmd! * autocmd BufWritePre lua vim.lsp.buf.formatting_seq_sync() augroup END ]]) - end - end + end + end, }) vim.keymap.set("n", "]w", vim.diagnostic.goto_next) diff --git a/symlinks/config/nvim/lua/lsp/jdtls_setup.lua b/symlinks/config/nvim/lua/lsp/jdtls_setup.lua index 2df8a28..f1fbeb4 100644 --- a/symlinks/config/nvim/lua/lsp/jdtls_setup.lua +++ b/symlinks/config/nvim/lua/lsp/jdtls_setup.lua @@ -6,56 +6,56 @@ local common_config = require("lsp.server_config") local M = {} function M.setup() - require "jdtls".setup_dap() - require "jdtls.setup".add_commands() - local on_attach = function(client, bufnr) - vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" + require("jdtls").setup_dap() + require("jdtls.setup").add_commands() + local on_attach = function(client, bufnr) + vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" - common_config.on_attach(client, bufnr) + common_config.on_attach(client, bufnr) - local code_action_fun = function() - require "jdtls".code_action() - end - vim.keymap.set("n", "", code_action_fun) - vim.keymap.set("n", "ac", code_action_fun) - end + local code_action_fun = function() + require("jdtls").code_action() + end + vim.keymap.set("n", "", code_action_fun) + vim.keymap.set("n", "ac", code_action_fun) + end - local root_markers = {"gradlew", "pom.xml"} - local root_dir = require("jdtls.setup").find_root(root_markers) - local home = os.getenv("HOME") + local root_markers = { "gradlew", "pom.xml" } + local root_dir = require("jdtls.setup").find_root(root_markers) + local home = os.getenv("HOME") - local workspace_folder = home .. "/.workspace" .. vim.fn.fnamemodify(root_dir, ":p:h:t") - local config = { - flags = { - allow_incremental_sync = true - }, - on_attach = on_attach - } - config.settings = { - java = { - signatureHelp = {enabled = true}, - sources = { - organizeImports = { - starThreshold = 9999, - staticStarThreshold = 9999 - } - } - } - } - config.cmd = {"jdtls-start.sh", workspace_folder} - config.on_init = function(client, _) - client.notify("workspace/didChangeConfiguration", {settings = config.settings}) - end + local workspace_folder = home .. "/.workspace" .. vim.fn.fnamemodify(root_dir, ":p:h:t") + local config = { + flags = { + allow_incremental_sync = true, + }, + on_attach = on_attach, + } + config.settings = { + java = { + signatureHelp = { enabled = true }, + sources = { + organizeImports = { + starThreshold = 9999, + staticStarThreshold = 9999, + }, + }, + }, + } + config.cmd = { "jdtls-start.sh", workspace_folder } + config.on_init = function(client, _) + client.notify("workspace/didChangeConfiguration", { settings = config.settings }) + end - local extendedClientCapabilities = require "jdtls".extendedClientCapabilities - extendedClientCapabilities.resolveAdditionalTextEditsSupport = true - config.init_options = { - -- bundles = bundles; - extendedClientCapabilities = extendedClientCapabilities - } + local extendedClientCapabilities = require("jdtls").extendedClientCapabilities + extendedClientCapabilities.resolveAdditionalTextEditsSupport = true + config.init_options = { + -- bundles = bundles; + extendedClientCapabilities = extendedClientCapabilities, + } - -- Server - require("jdtls").start_or_attach(config) + -- Server + require("jdtls").start_or_attach(config) end return M diff --git a/symlinks/config/nvim/lua/lsp/server_config.lua b/symlinks/config/nvim/lua/lsp/server_config.lua index 740ffb0..fee9854 100644 --- a/symlinks/config/nvim/lua/lsp/server_config.lua +++ b/symlinks/config/nvim/lua/lsp/server_config.lua @@ -5,64 +5,19 @@ local M = {} M.on_attach = function(client, bufnr) - vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" + vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" - -- Lsp keymaps - local opts = {buffer = bufnr} - vim.keymap.set( - "n", - "", - vim.lsp.buf.definition, - opts - ) - vim.keymap.set( - "n", - "gD", - vim.lsp.buf.declaration, - opts - ) - vim.keymap.set( - "n", - "gr", - vim.lsp.buf.references, - opts - ) - vim.keymap.set( - "n", - "gi", - vim.lsp.buf.implementation, - opts - ) - vim.keymap.set( - "n", - "rn", - vim.lsp.buf.rename, - opts - ) - vim.keymap.set( - "n", - "", - vim.lsp.buf.signature_help, - opts - ) - vim.keymap.set( - "n", - "K", - vim.lsp.buf.hover, - opts - ) - vim.keymap.set( - "n", - "", - vim.lsp.buf.code_action, - opts - ) - vim.keymap.set( - "n", - "ac", - vim.lsp.buf.code_action, - opts - ) + -- Lsp keymaps + local opts = { buffer = bufnr } + vim.keymap.set("n", "", vim.lsp.buf.definition, opts) + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) + vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) + vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) + vim.keymap.set("n", "", vim.lsp.buf.signature_help, opts) + vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) + vim.keymap.set("n", "", vim.lsp.buf.code_action, opts) + vim.keymap.set("n", "ac", vim.lsp.buf.code_action, opts) end return M diff --git a/symlinks/config/nvim/lua/lsp/servers.lua b/symlinks/config/nvim/lua/lsp/servers.lua index 6b58ae5..7b2ca29 100644 --- a/symlinks/config/nvim/lua/lsp/servers.lua +++ b/symlinks/config/nvim/lua/lsp/servers.lua @@ -9,72 +9,69 @@ local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protoco -- Lsp default language servers local servers = { - "bashls", - "clangd", - "clojure_lsp", - "cmake", - "crystalline", - "cucumber_language_server", - "dockerls", - "gopls", - "hls", - "jsonls", - "kotlin_language_server", - "mint", - "pyright", - "rust_analyzer", - "solang", - "terraformls", - "tsserver", - "vimls", + "bashls", + "clangd", + "clojure_lsp", + "cmake", + "crystalline", + "cucumber_language_server", + "dockerls", + "gopls", + "hls", + "jsonls", + "kotlin_language_server", + "mint", + "pyright", + "rust_analyzer", + "solang", + "terraformls", + "tsserver", + "vimls", } for _, lsp in ipairs(servers) do - lspconfig[lsp].setup { - on_attach = common_config.on_attach, - capabilities = capabilities - } + lspconfig[lsp].setup({ + on_attach = common_config.on_attach, + capabilities = capabilities, + }) end -lspconfig["gdscript"].setup { - on_attach = common_config.on_attach, - capabilities = capabilities, - flags = { - -- Slow Godot LS - debounce_text_changes = 600 - } -} +lspconfig["gdscript"].setup({ + on_attach = common_config.on_attach, + capabilities = capabilities, + flags = { + -- Slow Godot LS + debounce_text_changes = 600, + }, +}) -- Lua bultin lsp -require("nlua.lsp.nvim").setup( - lspconfig, - { - on_attach = common_config.on_attach, - capabilities = capabilities, - -- Include globals you want to tell the LSP are real :) - globals = {} - } -) +require("nlua.lsp.nvim").setup(lspconfig, { + on_attach = common_config.on_attach, + capabilities = capabilities, + -- Include globals you want to tell the LSP are real :) + globals = {}, +}) -- Flutter tools -require("flutter-tools").setup { - lsp = { - on_attach = common_config.on_attach, - capabilities = capabilities - } -} +require("flutter-tools").setup({ + lsp = { + on_attach = common_config.on_attach, + capabilities = capabilities, + }, +}) -- Dotnet LS local pid = vim.fn.getpid() local omnisharp_bin = vim.fn.glob("$HOME") .. "/lsp/dotnet/omnisharp/run" -lspconfig.omnisharp.setup { - cmd = {omnisharp_bin, "--languageserver", "--hostPID", tostring(pid)}, - on_attach = common_config.on_attach, - capabilities = capabilities -} +lspconfig.omnisharp.setup({ + cmd = { omnisharp_bin, "--languageserver", "--hostPID", tostring(pid) }, + on_attach = common_config.on_attach, + capabilities = capabilities, +}) -- Leminx (XML Language server) -lspconfig.lemminx.setup { - cmd = {"lemminx"}, - on_attach = common_config.on_attach, - capabilities = capabilities -} +lspconfig.lemminx.setup({ + cmd = { "lemminx" }, + on_attach = common_config.on_attach, + capabilities = capabilities, +}) diff --git a/symlinks/config/nvim/lua/vim_rest_console_extensions.lua b/symlinks/config/nvim/lua/vim_rest_console_extensions.lua index e6748a7..f029941 100644 --- a/symlinks/config/nvim/lua/vim_rest_console_extensions.lua +++ b/symlinks/config/nvim/lua/vim_rest_console_extensions.lua @@ -3,30 +3,30 @@ ------------------------------------------------------------------------------- local function get_vim_rest_home_dir() - vim.fn.mkdir(vim.env.NVIMHOME .. "/vim-rest-console", "p") - return vim.env.NVIMHOME .. "/vim-rest-console" + vim.fn.mkdir(vim.env.NVIMHOME .. "/vim-rest-console", "p") + return vim.env.NVIMHOME .. "/vim-rest-console" end -- Opens up a new tab if current buffer is not empty local function new_tab_if_needed() - if vim.api.nvim_buf_get_name("%") ~= "" then - -- Current buffer is not empty, open up a new tab - vim.cmd("tabnew") - end + if vim.api.nvim_buf_get_name("%") ~= "" then + -- Current buffer is not empty, open up a new tab + vim.cmd("tabnew") + end end local function open_rest_console(file) - new_tab_if_needed() - local ending = ".rest" - if file:sub(-(#ending)) ~= ending then - file = file .. ".rest" - end - vim.cmd("e " .. file) + new_tab_if_needed() + local ending = ".rest" + if file:sub(-#ending) ~= ending then + file = file .. ".rest" + end + vim.cmd("e " .. file) end local function open_cached_rest_console(name) - local dir = get_vim_rest_home_dir() - open_rest_console(dir .. "/" .. name) + local dir = get_vim_rest_home_dir() + open_rest_console(dir .. "/" .. name) end ------------------------------------------------------------------------------- @@ -37,32 +37,32 @@ local M = {} -- Opens us a scratch rest console (not saved) function M.open_scratch_rest_console() - new_tab_if_needed() - vim.cmd("set ft=rest") + new_tab_if_needed() + vim.cmd("set ft=rest") end -- Opens up a rest console which can be saved -- cached by name function M.open_cached_rest_console(...) - local name = select(1, ...) - if (select("#", ...) == 0) then - name = require "common.projects".get_project_id() - end - open_cached_rest_console(name) + local name = select(1, ...) + if select("#", ...) == 0 then + name = require("common.projects").get_project_id() + end + open_cached_rest_console(name) end -- Opens up a rest console which can be saved -- cached by name function M.open_named_cached_rest_console(name) - name = require "common.projects".get_project_id() .. name - open_cached_rest_console(name) + name = require("common.projects").get_project_id() .. name + open_cached_rest_console(name) end -- Opens up a rest console based on local file path function M.open_local_rest_console(...) - local file = select(1, ...) - if (select("#", ...) == 0) then - file = "default" - end - open_rest_console(file) + local file = select(1, ...) + if select("#", ...) == 0 then + file = "default" + end + open_rest_console(file) end return M diff --git a/symlinks/config/nvim/lua/vimwiki_extensions.lua b/symlinks/config/nvim/lua/vimwiki_extensions.lua index 366aeab..f92c98a 100644 --- a/symlinks/config/nvim/lua/vimwiki_extensions.lua +++ b/symlinks/config/nvim/lua/vimwiki_extensions.lua @@ -12,69 +12,65 @@ local M = {} -- Gets path to any dir of provided vimwiki (by index) function M.get_vimwiki_subdir(vimwiki_index, directory) - vimwiki_index = api.normalize_vimwiki_index(vimwiki_index) - local vimwiki = vim.g.vimwiki_list[vimwiki_index] + vimwiki_index = api.normalize_vimwiki_index(vimwiki_index) + local vimwiki = vim.g.vimwiki_list[vimwiki_index] - return vimwiki.path .. directory .. "/" + return vimwiki.path .. directory .. "/" end function M.get_directory_index(vimwiki_index, directory) - local dir = M.get_vimwiki_subdir(vimwiki_index, directory) - local path = Path:new(dir):expand() + local dir = M.get_vimwiki_subdir(vimwiki_index, directory) + local path = Path:new(dir):expand() - local entries = - scandir.scan_dir( - path, - { - hidden = false, - add_dirs = false, - respect_gitignore = true, - depth = 1 - } - ) + local entries = scandir.scan_dir(path, { + hidden = false, + add_dirs = false, + respect_gitignore = true, + depth = 1, + }) - local index = {} + local index = {} - for _, entry in pairs(entries) do - local filename = utils.get_filename_from_path(entry) - local ext = api.get_vimwiki_extension(vimwiki_index) - local noext = string.gsub(filename, ext, "") + for _, entry in pairs(entries) do + local filename = utils.get_filename_from_path(entry) + local ext = api.get_vimwiki_extension(vimwiki_index) + local noext = string.gsub(filename, ext, "") - index[noext] = filename - end + index[noext] = filename + end - table.sort(index) - return index + table.sort(index) + return index end -- Open subdirectory index file function M.open_subdirectory_index_file(vimwiki_index, subdirectory) - local dir = M.get_vimwiki_subdir(vimwiki_index, subdirectory) - local ext = api.get_vimwiki_extension(vimwiki_index) - local filename = dir .. "index" .. ext - vim.cmd("edit " .. filename) + local dir = M.get_vimwiki_subdir(vimwiki_index, subdirectory) + local ext = api.get_vimwiki_extension(vimwiki_index) + local filename = dir .. "index" .. ext + vim.cmd("edit " .. filename) - local index = M.get_directory_index(vimwiki_index, subdirectory) + local index = M.get_directory_index(vimwiki_index, subdirectory) - local builder = templates.for_vimwiki(vimwiki_index) + local builder = templates.for_vimwiki(vimwiki_index) - local lines = { - builder.header(1, subdirectory:sub(1, 1):upper() .. subdirectory:sub(2)), - "" - } + local lines = { + builder.header(1, subdirectory:sub(1, 1):upper() .. subdirectory:sub(2)), + "", + } - -- Add items - for title, fname in pairs(index) do - if (title ~= "index") then - title = string.gsub(title, "-", " ") - title = title:sub(1, 1):upper() .. title:sub(2) - table.insert(lines, builder.list_item(builder.link(fname, title))) - end - end + -- Add items + for title, fname in pairs(index) do + if title ~= "index" then + title = string.gsub(title, "-", " ") + title = title:sub(1, 1):upper() .. title:sub(2) + table.insert(lines, builder.list_item(builder.link(fname, title))) + end + end - local buf = vim.api.nvim_get_current_buf() - vim.api.nvim_buf_set_lines(buf, 0, -1, false, {}) -- Clear out - vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines) -- Put new contents + local buf = vim.api.nvim_get_current_buf() + vim.api.nvim_buf_set_lines(buf, 0, -1, false, {}) -- Clear out + vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines) -- Put new contents end return M diff --git a/symlinks/config/nvim/plugin/dap.lua b/symlinks/config/nvim/plugin/dap.lua index f27ebd0..b09784d 100644 --- a/symlinks/config/nvim/plugin/dap.lua +++ b/symlinks/config/nvim/plugin/dap.lua @@ -4,40 +4,21 @@ local dap = require("dap") -vim.api.nvim_create_autocmd( - "FileType", - { - pattern = "dap-repl", - callback = function(args) - require("dap.ext.autocompl").attach() - end - } -) +vim.api.nvim_create_autocmd("FileType", { + pattern = "dap-repl", + callback = function(args) + require("dap.ext.autocompl").attach() + end, +}) -- Nvim DAP Treesitter integration require("nvim-dap-virtual-text").setup() -- Keymaps -vim.keymap.set( - "n", - "db", - dap.toggle_breakpoint -) -vim.keymap.set( - "n", - "dc", - dap.continue -) -vim.keymap.set( - "n", - "dso", - dap.step_over -) -vim.keymap.set( - "n", - "dsi", - dap.step_into -) +vim.keymap.set("n", "db", dap.toggle_breakpoint) +vim.keymap.set("n", "dc", dap.continue) +vim.keymap.set("n", "dso", dap.step_over) +vim.keymap.set("n", "dsi", dap.step_into) -- Nvim DAP UI local dapui = require("dapui") @@ -47,111 +28,107 @@ dapui.setup() local api = vim.api local keymap_restore = {} dap.listeners.after["event_initialized"]["me"] = function() - for _, buf in pairs(api.nvim_list_bufs()) do - local keymaps = api.nvim_buf_get_keymap(buf, "n") - for _, keymap in pairs(keymaps) do - if keymap.lhs == "K" then - table.insert(keymap_restore, keymap) - vim.keymap.del("n", "K", {buffer = buf}) - end - end - end - vim.keymap.set( - {"n", "v"}, - "K", - function() - dapui.eval() - end - ) + for _, buf in pairs(api.nvim_list_bufs()) do + local keymaps = api.nvim_buf_get_keymap(buf, "n") + for _, keymap in pairs(keymaps) do + if keymap.lhs == "K" then + table.insert(keymap_restore, keymap) + vim.keymap.del("n", "K", { buffer = buf }) + end + end + end + vim.keymap.set({ "n", "v" }, "K", function() + dapui.eval() + end) end dap.listeners.after["event_terminated"]["me"] = function() - for _, keymap in pairs(keymap_restore) do - vim.keymap.set(keymap.mode, keymap.lhs, keymap.rhs, {silent = keymap.silent == 1, buffer = keymap.buffer}) - end - keymap_restore = {} + for _, keymap in pairs(keymap_restore) do + vim.keymap.set(keymap.mode, keymap.lhs, keymap.rhs, { silent = keymap.silent == 1, buffer = keymap.buffer }) + end + keymap_restore = {} end -- Additional servers dap.adapters.lldb = { - type = "executable", - command = "lldb-vscode", - name = "lldb" + type = "executable", + command = "lldb-vscode", + name = "lldb", } dap.configurations.cpp = { - { - name = "Launch", - type = "lldb", - request = "launch", - program = function() - return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") - end, - cwd = "${workspaceFolder}", - stopOnEntry = false, - args = {}, - -- 💀 - -- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting: - -- - -- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope - -- - -- Otherwise you might get the following error: - -- - -- Error on launch: Failed to attach to the target process - -- - -- But you should be aware of the implications: - -- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html + { + name = "Launch", + type = "lldb", + request = "launch", + program = function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end, + cwd = "${workspaceFolder}", + stopOnEntry = false, + args = {}, + -- 💀 + -- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting: + -- + -- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope + -- + -- Otherwise you might get the following error: + -- + -- Error on launch: Failed to attach to the target process + -- + -- But you should be aware of the implications: + -- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html - runInTerminal = false, - -- 💀 - -- If you use `runInTerminal = true` and resize the terminal window, - -- lldb-vscode will receive a `SIGWINCH` signal which can cause problems - -- To avoid that uncomment the following option - -- See https://github.com/mfussenegger/nvim-dap/issues/236#issuecomment-1066306073 - postRunCommands = {"process handle -p true -s false -n false SIGWINCH"} - }, - { - name = "Launch with args", - type = "lldb", - request = "launch", - program = function() - return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") - end, - cwd = "${workspaceFolder}", - stopOnEntry = false, - args = function() - return vim.split(vim.fn.input("Args: "), " ") - end, - runInTerminal = false, - postRunCommands = {"process handle -p true -s false -n false SIGWINCH"} - }, - { - name = "Attach to process", - type = "lldb", - request = "attach", - pid = require("dap.utils").pick_process, - args = {} - }, - { - name = "Attach to PID", - type = "lldb", - request = "attach", - pid = function() - return tonumber(vim.fn.input("PID: ")) - end, - args = {} - } + runInTerminal = false, + -- 💀 + -- If you use `runInTerminal = true` and resize the terminal window, + -- lldb-vscode will receive a `SIGWINCH` signal which can cause problems + -- To avoid that uncomment the following option + -- See https://github.com/mfussenegger/nvim-dap/issues/236#issuecomment-1066306073 + postRunCommands = { "process handle -p true -s false -n false SIGWINCH" }, + }, + { + name = "Launch with args", + type = "lldb", + request = "launch", + program = function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end, + cwd = "${workspaceFolder}", + stopOnEntry = false, + args = function() + return vim.split(vim.fn.input("Args: "), " ") + end, + runInTerminal = false, + postRunCommands = { "process handle -p true -s false -n false SIGWINCH" }, + }, + { + name = "Attach to process", + type = "lldb", + request = "attach", + pid = require("dap.utils").pick_process, + args = {}, + }, + { + name = "Attach to PID", + type = "lldb", + request = "attach", + pid = function() + return tonumber(vim.fn.input("PID: ")) + end, + args = {}, + }, } dap.configurations.c = dap.configurations.cpp dap.configurations.rust = dap.configurations.cpp dap.listeners.after.event_initialized["dapui_config"] = function() - dapui.open() + dapui.open() end dap.listeners.before.event_terminated["dapui_config"] = function() - dapui.close() + dapui.close() end dap.listeners.before.event_exited["dapui_config"] = function() - dapui.close() + dapui.close() end diff --git a/symlinks/config/nvim/plugin/fugitive.lua b/symlinks/config/nvim/plugin/fugitive.lua index c6f260a..e4448aa 100644 --- a/symlinks/config/nvim/plugin/fugitive.lua +++ b/symlinks/config/nvim/plugin/fugitive.lua @@ -2,15 +2,15 @@ -- - Fugitive.vim setup and extra commands - ------------------------------------------------------------------------------- -vim.cmd [[command! -nargs=0 Ggpush :lua require('fugitive_extensions').push_origin()]] -vim.cmd [[command! -nargs=0 Ggpull :lua require('fugitive_extensions').pull_origin()]] -vim.cmd [[command! -nargs=? Gpropen :lua require('fugitive_extensions').open_new_pr()]] -vim.cmd [[command! -nargs=? Gpr Gpropen ]] -vim.cmd [[command! -nargs=? Gprprint :lua require('fugitive_extensions').print_pr_url()]] -vim.cmd [[command! -nargs=? Gprcopy :lua require('fugitive_extensions').copy_pr_url()]] -vim.cmd [[command! -nargs=1 Gcbranch :lua require('fugitive_extensions').create_branch()]] -vim.cmd [[command! -nargs=0 Gcmaster :lua require('fugitive_extensions').checkout_branch('main')]] -vim.cmd [[command! -nargs=0 Gcm Gcmaster]] -vim.cmd [[command! -nargs=0 Gcdev :lua require('fugitive_extensions').checkout_branch('develop')]] -vim.cmd [[command! -nargs=1 Gcheckout :lua require('fugitive_extensions').checkout_branch()]] -vim.cmd [[command! -nargs=1 Gc Gcheckout ]] +vim.cmd([[command! -nargs=0 Ggpush :lua require('fugitive_extensions').push_origin()]]) +vim.cmd([[command! -nargs=0 Ggpull :lua require('fugitive_extensions').pull_origin()]]) +vim.cmd([[command! -nargs=? Gpropen :lua require('fugitive_extensions').open_new_pr()]]) +vim.cmd([[command! -nargs=? Gpr Gpropen ]]) +vim.cmd([[command! -nargs=? Gprprint :lua require('fugitive_extensions').print_pr_url()]]) +vim.cmd([[command! -nargs=? Gprcopy :lua require('fugitive_extensions').copy_pr_url()]]) +vim.cmd([[command! -nargs=1 Gcbranch :lua require('fugitive_extensions').create_branch()]]) +vim.cmd([[command! -nargs=0 Gcmaster :lua require('fugitive_extensions').checkout_branch('main')]]) +vim.cmd([[command! -nargs=0 Gcm Gcmaster]]) +vim.cmd([[command! -nargs=0 Gcdev :lua require('fugitive_extensions').checkout_branch('develop')]]) +vim.cmd([[command! -nargs=1 Gcheckout :lua require('fugitive_extensions').checkout_branch()]]) +vim.cmd([[command! -nargs=1 Gc Gcheckout ]]) diff --git a/symlinks/config/nvim/plugin/gitsigns.lua b/symlinks/config/nvim/plugin/gitsigns.lua index 2a6cb44..74ea522 100644 --- a/symlinks/config/nvim/plugin/gitsigns.lua +++ b/symlinks/config/nvim/plugin/gitsigns.lua @@ -1,40 +1,52 @@ -require('gitsigns').setup { - on_attach = function(bufnr) - local gs = package.loaded.gitsigns +require("gitsigns").setup({ + on_attach = function(bufnr) + local gs = package.loaded.gitsigns - local function map(mode, l, r, opts) - opts = opts or {} - opts.buffer = bufnr - vim.keymap.set(mode, l, r, opts) - end + 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 return ']c' end - vim.schedule(function() gs.next_hunk() end) - return '' - end, {expr=true}) + -- Navigation + map("n", "]c", function() + if vim.wo.diff then + return "]c" + end + vim.schedule(function() + gs.next_hunk() + end) + return "" + end, { expr = true }) - map('n', '[c', function() - if vim.wo.diff then return '[c' end - vim.schedule(function() gs.prev_hunk() end) - return '' - end, {expr=true}) + map("n", "[c", function() + if vim.wo.diff then + return "[c" + end + vim.schedule(function() + gs.prev_hunk() + end) + return "" + end, { expr = true }) - -- Actions - map({'n', 'v'}, 'hs', ':Gitsigns stage_hunk') - map({'n', 'v'}, 'hr', ':Gitsigns reset_hunk') - map('n', 'hS', gs.stage_buffer) - map('n', 'hu', gs.undo_stage_hunk) - map('n', 'hR', gs.reset_buffer) - map('n', 'hp', gs.preview_hunk) - map('n', 'hb', function() gs.blame_line{full=true} end) - map('n', 'tb', gs.toggle_current_line_blame) - map('n', 'hd', gs.diffthis) - map('n', 'hD', function() gs.diffthis('~') end) - map('n', 'td', gs.toggle_deleted) + -- Actions + map({ "n", "v" }, "hs", ":Gitsigns stage_hunk") + map({ "n", "v" }, "hr", ":Gitsigns reset_hunk") + map("n", "hS", gs.stage_buffer) + map("n", "hu", gs.undo_stage_hunk) + map("n", "hR", gs.reset_buffer) + map("n", "hp", gs.preview_hunk) + map("n", "hb", function() + gs.blame_line({ full = true }) + end) + map("n", "tb", gs.toggle_current_line_blame) + map("n", "hd", gs.diffthis) + map("n", "hD", function() + gs.diffthis("~") + end) + map("n", "td", gs.toggle_deleted) - -- Text object - map({'o', 'x'}, 'ih', ':Gitsigns select_hunk') - end -} + -- Text object + map({ "o", "x" }, "ih", ":Gitsigns select_hunk") + end, +}) diff --git a/symlinks/config/nvim/plugin/local_vimrc.lua b/symlinks/config/nvim/plugin/local_vimrc.lua index 9124c62..bafe793 100644 --- a/symlinks/config/nvim/plugin/local_vimrc.lua +++ b/symlinks/config/nvim/plugin/local_vimrc.lua @@ -2,4 +2,6 @@ -- - Local vimrc commands - ------------------------------------------------------------------------------- -vim.api.nvim_create_user_command("EditLocalVimrc", function(_) require"direnv_vimrc_local".open_local_vimrc() end, { nargs = 0 }) +vim.api.nvim_create_user_command("EditLocalVimrc", function(_) + require("direnv_vimrc_local").open_local_vimrc() +end, { nargs = 0 }) diff --git a/symlinks/config/nvim/plugin/projectionist.lua b/symlinks/config/nvim/plugin/projectionist.lua index 9342ce5..fd75683 100644 --- a/symlinks/config/nvim/plugin/projectionist.lua +++ b/symlinks/config/nvim/plugin/projectionist.lua @@ -1,481 +1,481 @@ local vim_readme_template = { - "# Name", - "", - "## Requirements", - "", - "## Installation", - "", - "## Usage", - "", - "### Commands", - "", - "### Keymaps", - "", - "## License", - "", - "[LICENSE NAME](LICENSE)" + "# Name", + "", + "## Requirements", + "", + "## Installation", + "", + "## Usage", + "", + "### Commands", + "", + "### Keymaps", + "", + "## License", + "", + "[LICENSE NAME](LICENSE)", } local vim_doc_template = { - "*{}.txt* Description", - "", - "INTRODUCTION *{}*", - "", - "Description", - "", - "CONTENTS *{}-contents*", - "", - " 1. Overview |{}-overview|", - " 2. Requirements |{}-requirements|", - " 3. Installation |{}-installation|", - " 4. Usage |{}-usage|", - " 5. Commands |{}-commands|", - " 6. Functions |{}-functions|", - " 7. Mappings |{}-mappings|", - " 8. Plugs |{}-plugs|", - " 9. Options |{}-options|", - " 10. Issues |{}-issues|", - " 11. Contributing |{}-contributing|", - " 12. Version |{}-version|", - " 13. License |{}-license|", - "", - "OVERVIEW *{}-overview*", - "", - "REQUIREMENTS *{}-requirements*", - "", - "INSTALLATION *{}-installation*", - "", - " 1. Plug ", - "", - " Add the following to your vimrc, or something sourced therein: >", - "", - " Plug 'esensar/{}'", - "<", - " Then install via `:PlugInstall`", - "", - " 2. Pathogen >", - "", - " cd ~/.vim/bundle", - " git clone https://github.com/esensar/{}.git", - "<", - " Then run `:Helptags`", - "", - " 3. Manual", - "", - " Clone this repository and copy the files in plugin/, autoload/, and doc/", - " to their respective directories in your vimfiles, or copy the text from", - " the github repository into new files in those directories. Make sure to", - " run `:helptags`.", - "", - "USAGE *{}-usage*", - "", - "COMMANDS *{}-commands*", - "", - "FUNCTIONS *{}-functions*", - "", - "MAPPINGS *{}-mappings*", - "", - "PLUGS *{}-plugs*", - "", - "OPTIONS *{}-options*", - "", - "ISSUES *{}-issues*", - "", - "If you experience issues using {}, please report them at", - ".", - "", - "CONTRIBUTING *{}-contributing*", - "", - "Feel free to look at already reported issues at ", - ".", - "If available, check out CONTRIBUTING.md in the repository.", - "Otherwise, feel free to create a new issue or pull request.", - "", - "VERSION *{}-version*", - "", - "Version 1.0.0", - "", - "LICENSE *{}-license*", - "", - "vim:tw=78:ts=2:ft=help:norl:" + "*{}.txt* Description", + "", + "INTRODUCTION *{}*", + "", + "Description", + "", + "CONTENTS *{}-contents*", + "", + " 1. Overview |{}-overview|", + " 2. Requirements |{}-requirements|", + " 3. Installation |{}-installation|", + " 4. Usage |{}-usage|", + " 5. Commands |{}-commands|", + " 6. Functions |{}-functions|", + " 7. Mappings |{}-mappings|", + " 8. Plugs |{}-plugs|", + " 9. Options |{}-options|", + " 10. Issues |{}-issues|", + " 11. Contributing |{}-contributing|", + " 12. Version |{}-version|", + " 13. License |{}-license|", + "", + "OVERVIEW *{}-overview*", + "", + "REQUIREMENTS *{}-requirements*", + "", + "INSTALLATION *{}-installation*", + "", + " 1. Plug ", + "", + " Add the following to your vimrc, or something sourced therein: >", + "", + " Plug 'esensar/{}'", + "<", + " Then install via `:PlugInstall`", + "", + " 2. Pathogen >", + "", + " cd ~/.vim/bundle", + " git clone https://github.com/esensar/{}.git", + "<", + " Then run `:Helptags`", + "", + " 3. Manual", + "", + " Clone this repository and copy the files in plugin/, autoload/, and doc/", + " to their respective directories in your vimfiles, or copy the text from", + " the github repository into new files in those directories. Make sure to", + " run `:helptags`.", + "", + "USAGE *{}-usage*", + "", + "COMMANDS *{}-commands*", + "", + "FUNCTIONS *{}-functions*", + "", + "MAPPINGS *{}-mappings*", + "", + "PLUGS *{}-plugs*", + "", + "OPTIONS *{}-options*", + "", + "ISSUES *{}-issues*", + "", + "If you experience issues using {}, please report them at", + ".", + "", + "CONTRIBUTING *{}-contributing*", + "", + "Feel free to look at already reported issues at ", + ".", + "If available, check out CONTRIBUTING.md in the repository.", + "Otherwise, feel free to create a new issue or pull request.", + "", + "VERSION *{}-version*", + "", + "Version 1.0.0", + "", + "LICENSE *{}-license*", + "", + "vim:tw=78:ts=2:ft=help:norl:", } local flutter_config = { - ["*"] = { - start = "flutter run" - }, - ["lib/*.dart"] = { - alternate = "test/{}_test.dart", - type = "source" - }, - ["test/*_test.dart"] = { - alternate = "lib/{}.dart", - type = "test", - template = { - "import 'package:flutter_test/flutter_test.dart';", - "", - "import 'package:flutter_template/{}.dart';", - "", - "void main() {", - " testWidgets('', (WidgetTester tester) async {", - " });", - "}" - } - } + ["*"] = { + start = "flutter run", + }, + ["lib/*.dart"] = { + alternate = "test/{}_test.dart", + type = "source", + }, + ["test/*_test.dart"] = { + alternate = "lib/{}.dart", + type = "test", + template = { + "import 'package:flutter_test/flutter_test.dart';", + "", + "import 'package:flutter_template/{}.dart';", + "", + "void main() {", + " testWidgets('', (WidgetTester tester) async {", + " });", + "}", + }, + }, } local python_config = { - ["*.py"] = { - alternate = "tests/{dirname}/test_{basename}.py", - type = "source" - }, - ["tests/**/test_*.py"] = { - alternate = "{dirname}/{basename}.py", - type = "test", - template = { - "import unittest", - "from unittest import mock", - "", - "class {dirname|underscore|camelcase|capitalize}{basename|camelcase|capitalize}Test(unittest.TestCase):", - " pass", - "", - "", - 'if __name__ == "__main__":', - " unittest.main()" - } - } + ["*.py"] = { + alternate = "tests/{dirname}/test_{basename}.py", + type = "source", + }, + ["tests/**/test_*.py"] = { + alternate = "{dirname}/{basename}.py", + type = "test", + template = { + "import unittest", + "from unittest import mock", + "", + "class {dirname|underscore|camelcase|capitalize}{basename|camelcase|capitalize}Test(unittest.TestCase):", + " pass", + "", + "", + 'if __name__ == "__main__":', + " unittest.main()", + }, + }, } local dotnet_solution_config = { - ["src/**/Controllers/*.cs"] = { - type = "controller", - alternate = { - "tests/{dirname}.Tests/Controllers/{basename}Tests.cs", - "tests/{dirname}.IntegrationTests/Controllers/{basename}Tests.cs" - } - }, - ["src/**/Models/*.cs"] = { - type = "model", - alternate = "tests/{dirname}.Tests/Models/{basename}Tests.cs" - }, - ["src/**/Views/*.cshtml"] = { - type = "view", - alternate = "tests/{dirname}.Tests/Views/{basename}Tests.cs" - }, - ["src/**/Services/*.cs"] = { - type = "service", - alternate = "tests/{dirname}.Tests/Services/{basename}Tests.cs" - }, - ["src/**/Extensions/*.cs"] = { - type = "extension", - alternate = "tests/{dirname}.Tests/Extensions/{basename}Tests.cs" - }, - ["*.csproj"] = { - type = "project" - }, - ["src/**/appsettings*json"] = { - type = "appsettings" - }, - ["src/*.cs"] = { - type = "source", - alternate = "tests/{dirname}.Tests/{basename}Tests.cs", - template = { - "using System;", - "", - "namespace {dirname|dot}", - "{", - " public class {basename}", - " {", - " }", - "}" - } - }, - ["tests/**.IntegrationTests/Controllers/*Tests.cs"] = { - type = "test", - alternate = "src/{dirname}/Controllers/{basename}.cs" - }, - ["tests/**.Tests/Controllers/*Tests.cs"] = { - type = "test", - alternate = "src/{dirname}/Controllers/{basename}.cs" - }, - ["tests/**.Tests/Views/*Tests.cs"] = { - type = "test", - alternate = "src/{dirname}/Views/{basename}.cs" - }, - ["tests/**.Tests/Models/*Tests.cs"] = { - type = "test", - alternate = "src/{dirname}/Models/{basename}.cs" - }, - ["tests/**.Tests/Services/*Tests.cs"] = { - type = "test", - alternate = "src/{dirname}/Services/{basename}.cs" - }, - ["tests/**.Tests/Extensions/*Tests.cs"] = { - type = "test", - alternate = "src/{dirname}/Extensions/{basename}.cs" - }, - ["tests/*Tests.cs"] = { - type = "test", - alternate = "src/{dirname}/{basename}.cs", - template = { - "using System;", - "", - "namespace {dirname|dot}", - "{", - " public class {basename}Tests", - " {", - " }", - "}" - } - } + ["src/**/Controllers/*.cs"] = { + type = "controller", + alternate = { + "tests/{dirname}.Tests/Controllers/{basename}Tests.cs", + "tests/{dirname}.IntegrationTests/Controllers/{basename}Tests.cs", + }, + }, + ["src/**/Models/*.cs"] = { + type = "model", + alternate = "tests/{dirname}.Tests/Models/{basename}Tests.cs", + }, + ["src/**/Views/*.cshtml"] = { + type = "view", + alternate = "tests/{dirname}.Tests/Views/{basename}Tests.cs", + }, + ["src/**/Services/*.cs"] = { + type = "service", + alternate = "tests/{dirname}.Tests/Services/{basename}Tests.cs", + }, + ["src/**/Extensions/*.cs"] = { + type = "extension", + alternate = "tests/{dirname}.Tests/Extensions/{basename}Tests.cs", + }, + ["*.csproj"] = { + type = "project", + }, + ["src/**/appsettings*json"] = { + type = "appsettings", + }, + ["src/*.cs"] = { + type = "source", + alternate = "tests/{dirname}.Tests/{basename}Tests.cs", + template = { + "using System;", + "", + "namespace {dirname|dot}", + "{", + " public class {basename}", + " {", + " }", + "}", + }, + }, + ["tests/**.IntegrationTests/Controllers/*Tests.cs"] = { + type = "test", + alternate = "src/{dirname}/Controllers/{basename}.cs", + }, + ["tests/**.Tests/Controllers/*Tests.cs"] = { + type = "test", + alternate = "src/{dirname}/Controllers/{basename}.cs", + }, + ["tests/**.Tests/Views/*Tests.cs"] = { + type = "test", + alternate = "src/{dirname}/Views/{basename}.cs", + }, + ["tests/**.Tests/Models/*Tests.cs"] = { + type = "test", + alternate = "src/{dirname}/Models/{basename}.cs", + }, + ["tests/**.Tests/Services/*Tests.cs"] = { + type = "test", + alternate = "src/{dirname}/Services/{basename}.cs", + }, + ["tests/**.Tests/Extensions/*Tests.cs"] = { + type = "test", + alternate = "src/{dirname}/Extensions/{basename}.cs", + }, + ["tests/*Tests.cs"] = { + type = "test", + alternate = "src/{dirname}/{basename}.cs", + template = { + "using System;", + "", + "namespace {dirname|dot}", + "{", + " public class {basename}Tests", + " {", + " }", + "}", + }, + }, } local vim_plugin_config = { - ["doc/*.txt"] = { - type = "help", - template = vim_doc_template - }, - ["autoload/*.vim"] = { - type = "autoload", - alternate = "test/{}.vader" - }, - ["test/*.vader"] = { - type = "test", - altername = "autoload/{}.vim" - }, - ["plugin/*.vim"] = { - type = "plugin", - template = { - 'if exists("g:loaded_{}") || &cp | finish | endif', - "", - "let g:loaded_{} = 1" - } - }, - ["README.md"] = { - template = vim_readme_template - } + ["doc/*.txt"] = { + type = "help", + template = vim_doc_template, + }, + ["autoload/*.vim"] = { + type = "autoload", + alternate = "test/{}.vader", + }, + ["test/*.vader"] = { + type = "test", + altername = "autoload/{}.vim", + }, + ["plugin/*.vim"] = { + type = "plugin", + template = { + 'if exists("g:loaded_{}") || &cp | finish | endif', + "", + "let g:loaded_{} = 1", + }, + }, + ["README.md"] = { + template = vim_readme_template, + }, } local lua_vim_plugin_config = { - ["doc/*.txt"] = { - type = "help", - template = vim_doc_template - }, - ["plugin/*.vim"] = { - type = "plugin", - template = { - 'if exists("g:loaded_{}") || &cp | finish | endif', - "", - "let g:loaded_{} = 1" - } - }, - ["lua/*.lua"] = { - type = "source", - alternate = "test/{}.lua" - }, - ["test/*.lua"] = { - type = "test", - alternate = "lua/{}.lua" - }, - ["README.md"] = { - template = vim_readme_template - } + ["doc/*.txt"] = { + type = "help", + template = vim_doc_template, + }, + ["plugin/*.vim"] = { + type = "plugin", + template = { + 'if exists("g:loaded_{}") || &cp | finish | endif', + "", + "let g:loaded_{} = 1", + }, + }, + ["lua/*.lua"] = { + type = "source", + alternate = "test/{}.lua", + }, + ["test/*.lua"] = { + type = "test", + alternate = "lua/{}.lua", + }, + ["README.md"] = { + template = vim_readme_template, + }, } local csharp_project_config = { - ["*"] = { - start = "dotnet run", - console = "dotnet fsi" - } + ["*"] = { + start = "dotnet run", + console = "dotnet fsi", + }, } local java_project_config = { - ["src/main/java/*.java"] = { - type = "source", - template = { - "package {dirname|dot};", - "", - "public class {basename} {open}", - "{close}" - }, - alternate = "src/test/java/{}Test.java" - }, - ["src/test/java/*Test.java"] = { - type = "test", - template = { - "package {dirname|dot};", - "", - "public class {basename}Test {open}", - "{close}" - }, - alternate = "src/main/java/{}.java" - }, - ["src/main/java/module-info.java"] = { - type = "moduleinfo" - }, - ["src/main/java/**/package-info.java"] = { - type = "packageinfo" - }, - ["src/main/resources/*"] = { - type = "resource" - }, - ["src/test/resources/*"] = { - type = "testresource" - } + ["src/main/java/*.java"] = { + type = "source", + template = { + "package {dirname|dot};", + "", + "public class {basename} {open}", + "{close}", + }, + alternate = "src/test/java/{}Test.java", + }, + ["src/test/java/*Test.java"] = { + type = "test", + template = { + "package {dirname|dot};", + "", + "public class {basename}Test {open}", + "{close}", + }, + alternate = "src/main/java/{}.java", + }, + ["src/main/java/module-info.java"] = { + type = "moduleinfo", + }, + ["src/main/java/**/package-info.java"] = { + type = "packageinfo", + }, + ["src/main/resources/*"] = { + type = "resource", + }, + ["src/test/resources/*"] = { + type = "testresource", + }, } local kotlin_project_config = { - ["src/main/kotlin/*.kt"] = { - type = "source", - template = { - "package {dirname|dot}", - "", - "class {basename} {open}", - "{close}" - }, - alternate = "src/test/kotlin/{}Test.kt" - }, - ["src/main/java/*.kt"] = { - type = "source", - template = { - "package {dirname|dot}", - "", - "class {basename} {open}", - "{close}" - }, - alternate = "src/test/java/{}Test.kt" - }, - ["src/test/kotlin/*Test.kt"] = { - type = "test", - template = { - "package {dirname|dot}", - "", - "class {basename}Test {open}", - "{close}" - }, - alternate = "src/main/kotlin/{}.kt" - }, - ["src/test/java/*Test.kt"] = { - type = "test", - template = { - "package {dirname|dot}", - "", - "class {basename}Test {open}", - "{close}" - }, - alternate = "src/main/java/{}.kt" - }, - ["src/main/resources/*"] = { - type = "resource" - }, - ["src/test/resources/*"] = { - type = "testresource" - } + ["src/main/kotlin/*.kt"] = { + type = "source", + template = { + "package {dirname|dot}", + "", + "class {basename} {open}", + "{close}", + }, + alternate = "src/test/kotlin/{}Test.kt", + }, + ["src/main/java/*.kt"] = { + type = "source", + template = { + "package {dirname|dot}", + "", + "class {basename} {open}", + "{close}", + }, + alternate = "src/test/java/{}Test.kt", + }, + ["src/test/kotlin/*Test.kt"] = { + type = "test", + template = { + "package {dirname|dot}", + "", + "class {basename}Test {open}", + "{close}", + }, + alternate = "src/main/kotlin/{}.kt", + }, + ["src/test/java/*Test.kt"] = { + type = "test", + template = { + "package {dirname|dot}", + "", + "class {basename}Test {open}", + "{close}", + }, + alternate = "src/main/java/{}.kt", + }, + ["src/main/resources/*"] = { + type = "resource", + }, + ["src/test/resources/*"] = { + type = "testresource", + }, } local mint_config = { - ["*"] = { - start = "mint start" - }, - ["source/*.mint"] = { - type = "source", - template = { - "component {basename} {open}", - " style {basename|camelcase} {open}", - " {close}", - "", - " fun render : Html {open}", - " {close}", - "{close}" - }, - alternate = "tests/{}.mint" - }, - ["tests/*.mint"] = { - type = "test", - template = { - 'suite "{basename}" {open}', - ' test "A test" {open}', - " with Test.Html {open}", - " {close}", - " {close}", - "{close}" - }, - alternate = "source/{}.mint" - } + ["*"] = { + start = "mint start", + }, + ["source/*.mint"] = { + type = "source", + template = { + "component {basename} {open}", + " style {basename|camelcase} {open}", + " {close}", + "", + " fun render : Html {open}", + " {close}", + "{close}", + }, + alternate = "tests/{}.mint", + }, + ["tests/*.mint"] = { + type = "test", + template = { + 'suite "{basename}" {open}', + ' test "A test" {open}', + " with Test.Html {open}", + " {close}", + " {close}", + "{close}", + }, + alternate = "source/{}.mint", + }, } local crystal_config = { - ["*"] = { - start = "crystal run" - }, - ["src/*.cr"] = { - type = "source", - template = { - "module {capitalize|colons}", - "end" - }, - alternate = "spec/{}_spec.cr" - }, - ["spec/*_spec.cr"] = { - type = "spec", - template = { - "describe {capitalize|colons} do", - " # TODO Write tests", - "", - ' it "works" do', - " false.should eq(true)", - " end", - "end" - }, - alternate = "src/{}.cr" - } + ["*"] = { + start = "crystal run", + }, + ["src/*.cr"] = { + type = "source", + template = { + "module {capitalize|colons}", + "end", + }, + alternate = "spec/{}_spec.cr", + }, + ["spec/*_spec.cr"] = { + type = "spec", + template = { + "describe {capitalize|colons} do", + " # TODO Write tests", + "", + ' it "works" do', + " false.should eq(true)", + " end", + "end", + }, + alternate = "src/{}.cr", + }, } local function c_project_config(source_extension, header_extension) - return { - ["*"] = { - start = "make run" - }, - ["src/*." .. source_extension] = { - type = "source", - alternate = { - "src/{}." .. header_extension, - "test/{}." .. source_extension, - "include/{project|basename}/{}." .. header_extension - } - }, - ["test/*." .. source_extension] = { - type = "test", - alternate = { - "src/{}." .. header_extension - } - }, - ["src/*." .. header_extension] = { - type = "header", - alternate = { - "src/{}." .. source_extension - } - }, - ["include/{project|basename}/*." .. header_extension] = { - type = "header", - alternate = { - "src/{}." .. header_extension - } - } - } + return { + ["*"] = { + start = "make run", + }, + ["src/*." .. source_extension] = { + type = "source", + alternate = { + "src/{}." .. header_extension, + "test/{}." .. source_extension, + "include/{project|basename}/{}." .. header_extension, + }, + }, + ["test/*." .. source_extension] = { + type = "test", + alternate = { + "src/{}." .. header_extension, + }, + }, + ["src/*." .. header_extension] = { + type = "header", + alternate = { + "src/{}." .. source_extension, + }, + }, + ["include/{project|basename}/*." .. header_extension] = { + type = "header", + alternate = { + "src/{}." .. header_extension, + }, + }, + } end vim.g.projectionist_heuristics = { - ["pubspec.yaml"] = flutter_config, - ["requirements.txt|pyproject.toml"] = python_config, - ["*.sln"] = dotnet_solution_config, - ["*.csproj"] = csharp_project_config, - ["plugin/|autoload/"] = vim_plugin_config, - ["src/*.cpp|test/*.cpp"] = c_project_config("cpp", "hpp"), - ["src/*.c|test/*.c"] = c_project_config("c", "h"), - ["lua/"] = lua_vim_plugin_config, - ["build.gradle|pom.xml"] = java_project_config, - ["build.gradle|build.gradle.kts"] = kotlin_project_config, - ["mint.json"] = mint_config, - ["shard.yml"] = crystal_config + ["pubspec.yaml"] = flutter_config, + ["requirements.txt|pyproject.toml"] = python_config, + ["*.sln"] = dotnet_solution_config, + ["*.csproj"] = csharp_project_config, + ["plugin/|autoload/"] = vim_plugin_config, + ["src/*.cpp|test/*.cpp"] = c_project_config("cpp", "hpp"), + ["src/*.c|test/*.c"] = c_project_config("c", "h"), + ["lua/"] = lua_vim_plugin_config, + ["build.gradle|pom.xml"] = java_project_config, + ["build.gradle|build.gradle.kts"] = kotlin_project_config, + ["mint.json"] = mint_config, + ["shard.yml"] = crystal_config, } diff --git a/symlinks/config/nvim/plugin/rest.lua b/symlinks/config/nvim/plugin/rest.lua index 710cd28..8328c52 100644 --- a/symlinks/config/nvim/plugin/rest.lua +++ b/symlinks/config/nvim/plugin/rest.lua @@ -2,7 +2,15 @@ -- - Vim REST Console setup and extra commands - ------------------------------------------------------------------------------- -vim.cmd [[command! -nargs=0 ScratchRestConsole :lua require('vim_rest_console_extensions').open_scratch_rest_console()]] -vim.cmd [[command! -nargs=? RestConsole :lua require('vim_rest_console_extensions').open_cached_rest_console()]] -vim.cmd [[command! -nargs=? RestConsoleLocal :lua require('vim_rest_console_extensions').open_local_rest_console()]] -vim.cmd [[command! -nargs=1 RestConsoleCached :lua require('vim_rest_console_extensions').open_named_cached_rest_console()]] +vim.cmd( + [[command! -nargs=0 ScratchRestConsole :lua require('vim_rest_console_extensions').open_scratch_rest_console()]] +) +vim.cmd( + [[command! -nargs=? RestConsole :lua require('vim_rest_console_extensions').open_cached_rest_console()]] +) +vim.cmd( + [[command! -nargs=? RestConsoleLocal :lua require('vim_rest_console_extensions').open_local_rest_console()]] +) +vim.cmd( + [[command! -nargs=1 RestConsoleCached :lua require('vim_rest_console_extensions').open_named_cached_rest_console()]] +) diff --git a/symlinks/config/nvim/plugin/snippets.lua b/symlinks/config/nvim/plugin/snippets.lua index 8c8c8b0..b9293e9 100644 --- a/symlinks/config/nvim/plugin/snippets.lua +++ b/symlinks/config/nvim/plugin/snippets.lua @@ -3,9 +3,15 @@ local s = luasnip.snippet local f = luasnip.function_node luasnip.add_snippets("all", { - s("date", {f(function(_, _) return os.date("%Y-%m-%d") end)}), - s("datetime", {f(function(_, _) return os.date("%Y-%m-%d %H:%M:%S") end)}), - s("diso", {f(function(_, _) return os.date("%Y-%m-%dT%H:%M:%S") end)}) + s("date", { f(function(_, _) + return os.date("%Y-%m-%d") + end) }), + s("datetime", { f(function(_, _) + return os.date("%Y-%m-%d %H:%M:%S") + end) }), + s("diso", { f(function(_, _) + return os.date("%Y-%m-%dT%H:%M:%S") + end) }), }) require("luasnip.loaders.from_vscode").lazy_load() diff --git a/symlinks/config/nvim/plugin/telescope.lua b/symlinks/config/nvim/plugin/telescope.lua index 97f95f2..577c16c 100644 --- a/symlinks/config/nvim/plugin/telescope.lua +++ b/symlinks/config/nvim/plugin/telescope.lua @@ -3,36 +3,28 @@ ------------------------------------------------------------------------------- local actions = require("telescope.actions") -require("telescope").setup { - defaults = { - mappings = { - i = { - -- Switch out M-q and C-q since C-q will be used more often - [""] = actions.send_to_qflist + actions.open_qflist, - [""] = actions.send_selected_to_qflist + actions.open_qflist - }, - n = { - -- Switch out M-q and C-q since C-q will be used more often - [""] = actions.send_to_qflist + actions.open_qflist, - [""] = actions.send_selected_to_qflist + actions.open_qflist - } - } - } -} +require("telescope").setup({ + defaults = { + mappings = { + i = { + -- Switch out M-q and C-q since C-q will be used more often + [""] = actions.send_to_qflist + actions.open_qflist, + [""] = actions.send_selected_to_qflist + actions.open_qflist, + }, + n = { + -- Switch out M-q and C-q since C-q will be used more often + [""] = actions.send_to_qflist + actions.open_qflist, + [""] = actions.send_selected_to_qflist + actions.open_qflist, + }, + }, + }, +}) require("telescope").load_extension("dap") -vim.keymap.set( - "n", - "", - function() - require("telescope.builtin").find_files() - end -) -vim.keymap.set( - "n", - "", - function() - require("telescope.builtin").live_grep() - end -) +vim.keymap.set("n", "", function() + require("telescope.builtin").find_files() +end) +vim.keymap.set("n", "", function() + require("telescope.builtin").live_grep() +end) diff --git a/symlinks/config/nvim/plugin/treesitter.lua b/symlinks/config/nvim/plugin/treesitter.lua index 905f617..ba3b5f4 100644 --- a/symlinks/config/nvim/plugin/treesitter.lua +++ b/symlinks/config/nvim/plugin/treesitter.lua @@ -1,48 +1,45 @@ -require "nvim-treesitter.configs".setup { - ensure_installed = "all", -- "all" or a list of languages - highlight = { - enable = true -- false will disable the whole extension - }, - indent = { - enable = true - }, - playground = { - enable = true, - disable = {}, - updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code - persist_queries = false -- Whether the query persists across vim sessions - }, - textobjects = { - select = { - enable = true, - lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ['af'] = '@function.outer', - ['if'] = '@function.inner', - ['ac'] = '@class.outer', - ['ic'] = '@class.inner', - }, - }, - move = { - enable = true, - set_jumps = true, -- whether to set jumps in the jumplist - goto_next_start = { - [']m'] = '@function.outer', - [']]'] = '@class.outer', - }, - goto_next_end = { - [']M'] = '@function.outer', - [']['] = '@class.outer', - }, - goto_previous_start = { - ['[m'] = '@function.outer', - ['[['] = '@class.outer', - }, - goto_previous_end = { - ['[M'] = '@function.outer', - ['[]'] = '@class.outer', - }, - }, - }, -} +require("nvim-treesitter.configs").setup({ + ensure_installed = "all", -- "all" or a list of languages + highlight = { + enable = true, -- false will disable the whole extension + }, + playground = { + enable = true, + disable = {}, + updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code + persist_queries = false, -- Whether the query persists across vim sessions + }, + textobjects = { + select = { + enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + ["]m"] = "@function.outer", + ["]]"] = "@class.outer", + }, + goto_next_end = { + ["]M"] = "@function.outer", + ["]["] = "@class.outer", + }, + goto_previous_start = { + ["[m"] = "@function.outer", + ["[["] = "@class.outer", + }, + goto_previous_end = { + ["[M"] = "@function.outer", + ["[]"] = "@class.outer", + }, + }, + }, +})