#!/usr/bin/env bash # a collection of addition plugins for neovim with lazy DEST=${1:-/etc/skel} LAZY_DEST=${DEST}/.config/nvim/lua/plugins conf-print() { cat <<-EOF EOF } # conf_print > ${DEST} # nvim-dap Debug Adapter Protocol client # https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/ # nvim-dap-python An extension for nvim-dap for python debug, test methods or classes. conf_print_nvim-dap() { cat <<-EOF return { { "mfussenegger/nvim-dap", optional = true, dependencies = { "mfussenegger/nvim-dap-python", keys = { { "dPt", function() require('dap-python').test_method() end, desc = "Debug Method", ft = "python" }, { "dPc", function() require('dap-python').test_class() end, desc = "Debug Class", ft = "python" }, }, config = function() local path = require("mason-registry").get_package("debugpy"):get_install_path() require("dap-python").setup(path .. "/venv/bin/python") end, }, } } EOF } conf_print_nvim-dap >"${LAZY_DEST}/nvim-dap.lua" # https://github.com/folke/lazy.nvim conf-print-nvim-lazygit() { cat <<-EOF require("lazy").setup({ { "kdheepak/lazygit.nvim", cmd = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter", "LazyGitFilterCurrentFile", }, -- optional for floating window border decoration dependencies = { "nvim-lua/plenary.nvim", }, -- setting the keybinding for LazyGit with 'keys' is recommended in -- order to load the plugin when the command is run for the first time keys = { { "lg", "LazyGit", desc = "LazyGit" } } }, }) EOF conf_print_nvim-lazygit >"${LAZY_DEST}/nvim-lazygit.lua" # FIXME: Not sure where we put these settingsm assuming nvim.conf conf_print_nvim-lazygit_map() { cat <<-EOF let g:lazygit_floating_window_winblend = 0 " transparency of floating window let g:lazygit_floating_window_scaling_factor = 0.9 " scaling factor for floating window let g:lazygit_floating_window_border_chars = ['╭','─', '╮', '│', '╯','─', '╰', '│'] " customize lazygit popup window border characters let g:lazygit_floating_window_use_plenary = 0 " use plenary.nvim to manage floating window if available let g:lazygit_use_neovim_remote = 1 " fallback to 0 if neovim-remote is not installed let g:lazygit_use_custom_config_file_path = 0 " config file path is evaluated if this value is 1 let g:lazygit_config_file_path = '' " custom config file path " OR let g:lazygit_config_file_path = [] " list of custom config file paths " setup mapping to call :LazyGit nnoremap gg :LazyGit EOF } # conf_print_nvim-lazygit_map > "${LAZY_DEST}"/ # https://sw.kovidgoyal.net/kitty/overview/ # https://github.com/mikesmithgh/kitty-scrollback.nvim/wiki/kitty_scrollback_nvim # https://github.com/mikesmithgh/kitty-scrollback.nvim?tab=readme-ov-file#-installation conf_print_nvim-kitty-scrollback() { cat <<-EOF { 'mikesmithgh/kitty-scrollback.nvim', enabled = true, lazy = true, cmd = { 'KittyScrollbackGenerateKittens', 'KittyScrollbackCheckHealth' }, event = { 'User KittyScrollbackLaunch' }, -- version = '*', -- latest stable version, may have breaking changes if major version changed -- version = '^4.0.0', -- pin major version, include fixes and features that do not have breaking changes config = function() require('kitty-scrollback').setup() end, } EOF } conf_print_nvim-kitty-scrollback >"${LAZY_DEST}/nvim-kitty-scrollback.lua" # https://github.com/rcarriga/nvim-dap-ui conf_print_nvim-dap-ui() { cat <<-EOF { "rcarriga/nvim-dap-ui", dependencies = {"mfussenegger/nvim-dap", "nvim-neotest/nvim-nio"} } EOF } # the command 'Codeium Chat' will start a chat session with the default browser # the indexing seems not to work but it is new 02-04-2024 conf_print_nvim-codeium_enable-chat() { cat <<-EOF -- ~/.config/nvim/lua/plugins/nvim-codeium_enable-chat.lua -- Assuming you want to configure the codeium plugin return { "Exafunction/codeium.nvim", config = function() -- Require the codeium module local codeium = require("codeium.config") -- Modify the options to enable chat, local search, and index service codeium.options = { enable_chat = true, enable_local_search = true, enable_index_service = true, } -- Call the setup function with the modified options codeium.setup(codeium.options) end, } EOF } conf_print_nvim-codeium_enable-chat >"${LAZY_DEST}/nvim-codeium_enable-chat.lua" # the key for codeium sometimes gets wiped, put it back CODEIUM_KEY_HOME=/home/default/.cache/nvim/codeium/config.json conf_print_nvim-codeium-key() { cat <<-EOF {"api_key": "c8cbca7c-fabb-42bb-95e2-1c86fe71bd45"} EOF } conf_print_nvim-codeium-key >"${CODEIUM_KEY_HOME}" # an example of allowing fix on save conf_print_nvim-lint-markdownlint() { cat <<-EOF return { { "mfussenegger/nvim-lint", opts = { linters = { markdownlint = { args = { "--fix" }, }, }, }, }, } EOF } # conf_print_nvim-lint-markdownlint >"${LAZY_DEST}"/nvim-lint-markdownlint.lua