├── private_dot_config ├── .keep ├── ArchVim │ ├── .keep │ ├── lua │ │ └── plugins │ │ │ ├── precognition-nvim.lua │ │ │ └── treesitter.lua │ └── init.lua ├── broot │ ├── .keep │ └── conf.toml ├── fish │ ├── .keep │ ├── functions │ │ ├── .keep │ │ ├── fish_command_not_found.fish │ │ ├── mkcd.fish │ │ ├── save_history.fish │ │ └── vman.fish │ ├── completions │ │ └── lf.fish │ ├── bindings.fish │ ├── aliases.fish │ ├── extras │ │ └── kanagawa.fish │ ├── config.fish │ ├── abbr.fish │ └── variables.fish ├── focus │ ├── .keep │ └── config.yml ├── nvim │ ├── .keep │ ├── utils │ │ └── .keep │ ├── snippets │ │ ├── lua.lua │ │ ├── css.lua │ │ ├── javascript.lua │ │ ├── go.lua │ │ └── markdown.lua │ ├── lua │ │ ├── plugins │ │ │ ├── fidget.lua │ │ │ ├── neodev.lua │ │ │ ├── tabular.lua │ │ │ ├── vim-repeat.lua │ │ │ ├── nvim-web-devicons.lua │ │ │ ├── vim-unimpaired.lua │ │ │ ├── vim-wakatime.lua │ │ │ ├── glow.lua │ │ │ ├── vim-rails.lua │ │ │ ├── overseer.lua │ │ │ ├── stay-centered.lua │ │ │ ├── hardtime.lua │ │ │ ├── nvim-bqf.lua │ │ │ ├── mini.lua │ │ │ ├── vim-rooter.lua │ │ │ ├── nvim-emmet.lua │ │ │ ├── which-key.lua │ │ │ ├── nvim-surround.lua │ │ │ ├── comment.lua │ │ │ ├── persistent-breakpoints.lua │ │ │ ├── tree-sitter-just.lua │ │ │ ├── vim-gutentags.lua │ │ │ ├── lsp_lines.lua │ │ │ ├── symbol-usage.lua │ │ │ ├── mason-nvim-dap.lua │ │ │ ├── lsp_signature.lua │ │ │ ├── lualine.lua │ │ │ ├── nvim-dap-virtual-text.lua │ │ │ ├── nvim-ts-rainbow.lua │ │ │ ├── nvim-colorizer.lua │ │ │ ├── headlines.lua │ │ │ ├── nvim-bufferline.lua │ │ │ ├── nvim-autopairs.lua │ │ │ ├── mason.lua │ │ │ ├── vim-bbye.lua │ │ │ ├── detour.lua │ │ │ ├── auto-session.lua │ │ │ ├── vim-fugitive.lua │ │ │ ├── todo-comments.lua │ │ │ ├── nvim-dap-ui.lua │ │ │ ├── nightfox.lua │ │ │ ├── nvim-dap-go.lua │ │ │ ├── mason-lspconfig.lua │ │ │ ├── blink.lua │ │ │ ├── nvim-ufo.lua │ │ │ ├── precognition-nvim.lua │ │ │ ├── nvim-lint.lua │ │ │ ├── go-nvim.lua │ │ │ ├── conform-nvim.lua │ │ │ ├── kanagawa.lua │ │ │ ├── trouble.lua │ │ │ ├── luasnip.lua │ │ │ ├── treesitter.lua │ │ │ ├── mason-tool-installer.lua │ │ │ ├── nvim-devdocs.lua │ │ │ ├── gitsigns.lua │ │ │ ├── nvim-dap.lua │ │ │ ├── nvim-lspconfig.lua │ │ │ ├── nvim-treesitter-textobjects.lua │ │ │ ├── octo.lua │ │ │ └── telescope.lua │ │ ├── functions.lua │ │ ├── theme.lua │ │ ├── mappings.lua │ │ ├── autocmds.lua │ │ └── settings.lua │ ├── templates │ │ ├── skeleton.rs │ │ ├── skeleton.svelte │ │ ├── skeleton.prettierrc │ │ ├── skeleton.eslintrc │ │ ├── skeleton.gitignore │ │ ├── skeleton.html │ │ ├── skeleton.stylelintrc │ │ ├── skeleton.scss │ │ └── skeleton.LICENCE │ ├── spell │ │ ├── en.utf-8.add.spl │ │ └── en.utf-8.add │ ├── lsp │ │ ├── lua_ls.lua │ │ ├── ts_ls.lua │ │ ├── solargraph.lua │ │ ├── cssls.lua │ │ ├── emmet.lua │ │ └── gopls.lua │ ├── init.lua │ └── lazy-lock.json ├── kitty │ ├── ssh.conf │ ├── open-actions.conf │ ├── kitty_session.conf │ ├── mappings.conf │ ├── theme.conf │ ├── scrollback.conf │ ├── fonts.conf │ └── mouse.conf ├── yamlfmt │ └── dot_yamlfmt ├── lf-ueberzug │ └── lfrc-ueberzug ├── dot_psqlrc ├── programming │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ └── package.json ├── proselint │ └── config.json ├── wezterm │ └── wezterm.lua ├── zellij │ ├── layouts │ │ ├── f2.kdl │ │ ├── bin-it.kdl │ │ └── stellar-photos.kdl │ └── config.kdl ├── lf │ ├── lfrc │ ├── lf.fish │ ├── colors │ └── icons ├── tilix │ └── schemes │ │ └── kanagawa.json ├── mise │ └── config.toml ├── starship.toml └── run-or-raise │ └── shortcuts.conf ├── dot_rubocop.yml ├── dot_yamllint.yaml ├── README.md ├── dot_erb-lint.yml ├── dot_gitignore_global ├── dot_vimignore ├── dot_markdownlint.yaml ├── LICENCE ├── dot_golangci.yml ├── dot_tmux.conf └── .tags /private_dot_config/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/ArchVim/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/broot/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/fish/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/focus/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/nvim/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/nvim/utils/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/fish/functions/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /private_dot_config/nvim/snippets/lua.lua: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dot_rubocop.yml: -------------------------------------------------------------------------------- 1 | AllCops: 2 | NewCops: enable 3 | -------------------------------------------------------------------------------- /private_dot_config/fish/completions/lf.fish: -------------------------------------------------------------------------------- 1 | ../../lf/lf.fish -------------------------------------------------------------------------------- /private_dot_config/kitty/ssh.conf: -------------------------------------------------------------------------------- 1 | env TERM=xterm-256color 2 | -------------------------------------------------------------------------------- /private_dot_config/yamlfmt/dot_yamlfmt: -------------------------------------------------------------------------------- 1 | formatter: 2 | retain_line_breaks: true 3 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/fidget.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "j-hui/fidget.nvim", 3 | } 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/neodev.lua: -------------------------------------------------------------------------------- 1 | return { "folke/neodev.nvim", opts = {} } 2 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/tabular.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "godlygeek/tabular", 3 | } 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-repeat.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tpope/vim-repeat", 3 | } 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello World!"); 3 | } 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /private_dot_config/ArchVim/lua/plugins/precognition-nvim.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tris203/precognition.nvim", 3 | } 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-web-devicons.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "DaikyXendo/nvim-web-devicons", 3 | } 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/functions.lua: -------------------------------------------------------------------------------- 1 | function P(val) 2 | print(vim.inspect(val)) 3 | return val 4 | end 5 | -------------------------------------------------------------------------------- /private_dot_config/lf-ueberzug/lfrc-ueberzug: -------------------------------------------------------------------------------- 1 | set previewer lf-ueberzug-previewer 2 | set cleaner lf-ueberzug-cleaner 3 | -------------------------------------------------------------------------------- /private_dot_config/dot_psqlrc: -------------------------------------------------------------------------------- 1 | \set QUIET 1 2 | \pset linestyle unicode 3 | \pset border 2 4 | \pset null ∅ 5 | \unset QUIET 6 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-unimpaired.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tpope/vim-unimpaired", 3 | event = "VeryLazy", 4 | } 5 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-wakatime.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "wakatime/vim-wakatime", 3 | event = "VeryLazy", 4 | } 5 | -------------------------------------------------------------------------------- /private_dot_config/programming/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["*.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/glow.lua: -------------------------------------------------------------------------------- 1 | return { "ellisonleao/glow.nvim", config = true, cmd = "Glow", ft = "markdown" } 2 | -------------------------------------------------------------------------------- /private_dot_config/broot/conf.toml: -------------------------------------------------------------------------------- 1 | [[verbs]] 2 | invocation = "edit" 3 | key = "F2" 4 | shortcut = "e" 5 | execution = "nvim {file}" 6 | -------------------------------------------------------------------------------- /private_dot_config/kitty/open-actions.conf: -------------------------------------------------------------------------------- 1 | protocol file 2 | mime image/* 3 | action launch --type=overlay kitten icat --hold ${FILE_PATH} 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-rails.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tpope/vim-rails", 3 | lazy = true, 4 | ft = { "ruby", "eruby" }, 5 | } 6 | -------------------------------------------------------------------------------- /private_dot_config/nvim/spell/en.utf-8.add.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayoisaiah/dotfiles/HEAD/private_dot_config/nvim/spell/en.utf-8.add.spl -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "singleQuote": true, 4 | "trailingComma": "es5" 5 | } 6 | -------------------------------------------------------------------------------- /private_dot_config/fish/functions/fish_command_not_found.fish: -------------------------------------------------------------------------------- 1 | function fish_command_not_found 2 | echo "fish: Unknown command '$argv'" >&2 3 | end 4 | -------------------------------------------------------------------------------- /private_dot_config/fish/functions/mkcd.fish: -------------------------------------------------------------------------------- 1 | # Create a directory and change to it immediately 2 | function mkcd 3 | mkdir -p $argv 4 | cd $argv 5 | end 6 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lsp/lua_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | lua_ls = { 3 | settings = { 4 | Lua = { diagnostics = { globals = { "vim" } } }, 5 | }, 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/overseer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/overseer.nvim", 3 | config = function() 4 | require("overseer").setup() 5 | end, 6 | } 7 | -------------------------------------------------------------------------------- /dot_yamllint.yaml: -------------------------------------------------------------------------------- 1 | rules: 2 | document-start: disable 3 | quoted-strings: 4 | quote-type: double 5 | required: only-when-needed 6 | allow-quoted-quotes: true 7 | -------------------------------------------------------------------------------- /private_dot_config/fish/functions/save_history.fish: -------------------------------------------------------------------------------- 1 | # sync history across all fish instances 2 | function save_history --on-event fish_preexec 3 | history --save 4 | end 5 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/stay-centered.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "arnamak/stay-centered.nvim", 3 | config = function() 4 | require("stay-centered").setup() 5 | end, 6 | } 7 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/hardtime.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "m4xshen/hardtime.nvim", 3 | event = "BufEnter", 4 | dependencies = { "MunifTanjim/nui.nvim" }, 5 | opts = {}, 6 | } 7 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-bqf.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "kevinhwang91/nvim-bqf", 3 | dependencies = { 4 | "nvim-treesitter/nvim-treesitter", 5 | }, 6 | config = true, 7 | } 8 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/mini.lua: -------------------------------------------------------------------------------- 1 | local config = function() end 2 | 3 | return { 4 | "echasnovski/mini.nvim", 5 | version = "*", 6 | config = config, 7 | event = "BufEnter", 8 | } 9 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["airbnb-base", "plugin:prettier/recommended"], 3 | "env": { 4 | "browser": true 5 | }, 6 | "rules": { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | dotfiles 3 |

4 | 5 | Managed by [chezmoi](https://github.com/twpayne/chezmoi). 6 | -------------------------------------------------------------------------------- /private_dot_config/fish/functions/vman.fish: -------------------------------------------------------------------------------- 1 | function vman --wraps man --description 'use nvim for displaying man pages' 2 | man $argv | col -bp | iconv -c | nvim -u NONE -R -c 'set ft=man nomod nolist' -; 3 | end 4 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-rooter.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | vim.g.rooter_patterns = { "!^package.json", ".git" } 3 | end 4 | 5 | return { 6 | "airblade/vim-rooter", 7 | config = config, 8 | } 9 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-emmet.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "olrtg/nvim-emmet", 3 | config = function() 4 | vim.keymap.set({ "n", "v" }, "xe", require("nvim-emmet").wrap_with_abbreviation) 5 | end, 6 | } 7 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/which-key.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("which-key").setup() 3 | end 4 | 5 | return { 6 | "folke/which-key.nvim", 7 | event = "VeryLazy", 8 | config = config, 9 | } 10 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lsp/ts_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | ts_ls = { 3 | filetypes = { "typescript", "javascript" }, 4 | init_options = { 5 | preferences = { 6 | disableSuggestions = true, 7 | }, 8 | }, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-surround.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("nvim-surround").setup({}) 3 | end 4 | 5 | return { 6 | "kylechui/nvim-surround", 7 | config = config, 8 | event = "BufEnter", 9 | } 10 | -------------------------------------------------------------------------------- /private_dot_config/proselint/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "checks": { 3 | "typography.symbols.curly_quotes": false, 4 | "typography.diacritical_marks": false, 5 | "spelling.misc": false, 6 | "lexical_illusions.misc": false 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lsp/solargraph.lua: -------------------------------------------------------------------------------- 1 | return { 2 | solargraph = { 3 | init_options = { 4 | formatting = false, 5 | }, 6 | settings = { 7 | solargraph = { 8 | diagnostics = false, 9 | }, 10 | }, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/comment.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "numtostr/comment.nvim", 3 | config = function() 4 | require("Comment").setup() 5 | local ft = require("Comment.ft") 6 | ft.kdl = { "//%s" } 7 | end, 8 | event = "VeryLazy", 9 | } 10 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/persistent-breakpoints.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "Weissle/persistent-breakpoints.nvim", 3 | config = function() 4 | require("persistent-breakpoints").setup({ 5 | load_breakpoints_event = { "BufReadPost" }, 6 | }) 7 | end, 8 | } 9 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/tree-sitter-just.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "IndianBoy42/tree-sitter-just", 3 | dependencies = { 4 | "nvim-treesitter/nvim-treesitter", 5 | }, 6 | config = function() 7 | require("tree-sitter-just").setup() 8 | end, 9 | } 10 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-gutentags.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "ludovicchabant/vim-gutentags", 3 | config = function() 4 | vim.g.gutentags_file_list_command = 'rg --files --follow --ignore-file "/home/ayo/.vimignore"' 5 | end, 6 | event = "VeryLazy", 7 | } 8 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/lsp_lines.lua: -------------------------------------------------------------------------------- 1 | return { 2 | url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim", 3 | config = function() 4 | require("lsp_lines").setup({}) 5 | 6 | vim.diagnostic.config({ 7 | virtual_text = false, 8 | }) 9 | end, 10 | } 11 | -------------------------------------------------------------------------------- /private_dot_config/wezterm/wezterm.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require("wezterm") 2 | 3 | return { 4 | font = wezterm.font("Delugia"), 5 | font_size = 10.0, 6 | color_scheme = "Sundried", 7 | window_decorations = "RESIZE", 8 | hide_tab_bar_if_only_one_tab = false, 9 | } 10 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/symbol-usage.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "Wansmer/symbol-usage.nvim", 3 | event = "BufReadPre", -- need run before LspAttach if you use nvim 0.9. On 0.10 use 'LspAttach' 4 | -- config = function() 5 | -- require('symbol-usage').setup() 6 | -- end 7 | } 8 | -------------------------------------------------------------------------------- /dot_erb-lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | EnableDefaultLinters: true 3 | linters: 4 | ErbSafety: 5 | enabled: true 6 | # Rubocop: 7 | # enabled: true 8 | # rubocop_config: 9 | # inherit_from: 10 | # - .rubocop.yml 11 | RequireScriptNonce: 12 | enabled: true 13 | -------------------------------------------------------------------------------- /private_dot_config/kitty/kitty_session.conf: -------------------------------------------------------------------------------- 1 | new_tab Base 2 | launch zellij attach -c base 3 | 4 | new_tab Work 5 | launch zellij attach -c work 6 | 7 | new_tab Freshman 8 | launch zellij attach -c freshman 9 | 10 | new_tab Side Projects 11 | launch zellij attach -c side-projects 12 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lsp/cssls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | cssls = { 3 | settings = { 4 | css = { validate = true, lint = { 5 | unknownAtRules = "ignore", 6 | } }, 7 | scss = { validate = true, lint = { 8 | unknownAtRules = "ignore", 9 | } }, 10 | }, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/mason-nvim-dap.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local masonDap = require("mason-nvim-dap") 3 | masonDap.setup({}) 4 | end 5 | 6 | return { 7 | "jay-babu/mason-nvim-dap.nvim", 8 | dependencies = { 9 | "mason-org/mason.nvim", 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/lsp_signature.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "ray-x/lsp_signature.nvim", 3 | config = function() 4 | require("lsp_signature").setup({ 5 | -- fix_pos = true, 6 | -- toggle_key = "", 7 | -- select_signature_key = "", 8 | }) 9 | end, 10 | } 11 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/lualine.lua: -------------------------------------------------------------------------------- 1 | local config = function(_, opts) 2 | require("lualine").setup(opts) 3 | end 4 | 5 | return { 6 | "nvim-lualine/lualine.nvim", 7 | config = config, 8 | opts = { 9 | options = { theme = "onedark" }, 10 | }, 11 | lazy = false, 12 | } 13 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lsp/emmet.lua: -------------------------------------------------------------------------------- 1 | return { 2 | emmet_language_server = { 3 | filetypes = { 4 | "css", 5 | "html", 6 | "markdown", 7 | "javascript", 8 | "javascriptreact", 9 | "scss", 10 | "pug", 11 | "typescriptreact", 12 | "typescript", 13 | }, 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-dap-virtual-text.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "theHamsta/nvim-dap-virtual-text", 3 | dependencies = { 4 | "mfussenegger/nvim-dap", 5 | }, 6 | config = function() 7 | require("nvim-dap-virtual-text").setup({ 8 | only_first_definition = false, 9 | }) 10 | end, 11 | } 12 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-ts-rainbow.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "p00f/nvim-ts-rainbow", 3 | config = function() 4 | require("nvim-treesitter.configs").setup({ 5 | rainbow = { 6 | enable = true, 7 | extended_mode = true, 8 | max_file_lines = 1000, 9 | }, 10 | }) 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-colorizer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "norcalli/nvim-colorizer.lua", 3 | config = function() 4 | require("colorizer").setup({ 5 | "html", "css", "scss", "javascript", "lua", "eruby", 6 | }) 7 | end, 8 | ft = { "html", "css", "scss", "javascript", "lua", "eruby" }, 9 | } 10 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | 4 | # testing 5 | /coverage 6 | 7 | # misc 8 | .DS_Store 9 | *.map 10 | 11 | # Logs 12 | logs 13 | *.log 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | 18 | # Environmental variables 19 | .env 20 | .env.test 21 | -------------------------------------------------------------------------------- /dot_gitignore_global: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | 4 | # testing 5 | /coverage 6 | 7 | # misc 8 | .DS_Store 9 | *.map 10 | .vim 11 | 12 | # Logs 13 | logs 14 | *.log 15 | npm-debug.log* 16 | yarn-debug.log* 17 | yarn-error.log* 18 | 19 | # Environmental variables 20 | .env 21 | .env.test 22 | 23 | # Ctags 24 | tags 25 | -------------------------------------------------------------------------------- /private_dot_config/fish/bindings.fish: -------------------------------------------------------------------------------- 1 | # Set vi bindings as default 2 | function fish_user_key_bindings 3 | fish_default_key_bindings -M insert 4 | fish_vi_key_bindings --no-erase insert 5 | end 6 | 7 | fish_user_key_bindings 8 | 9 | bind \e\[A 'history --merge ; up-or-search' 10 | 11 | fzf_configure_bindings --directory=\cf 12 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/headlines.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "lukas-reineke/headlines.nvim", 3 | dependencies = { "nvim-treesitter" }, 4 | config = function() 5 | require("headlines").setup({}) 6 | vim.cmd([[highlight CodeBlock guibg=#2B3328]]) 7 | vim.cmd([[highlight Dash guibg=#D19A66 gui=bold]]) 8 | end, 9 | event = "BufEnter *.md", 10 | } 11 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-bufferline.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("bufferline").setup({ 3 | options = { 4 | diagnostics = "nvim_lsp", 5 | buffer_close_icon = "", 6 | }, 7 | }) 8 | end 9 | 10 | return { 11 | "akinsho/nvim-bufferline.lua", 12 | tag = "v4.9.1", 13 | event = "BufEnter", 14 | config = config, 15 | } 16 | -------------------------------------------------------------------------------- /private_dot_config/kitty/mappings.conf: -------------------------------------------------------------------------------- 1 | # Select entire command output by right-clicking 2 | mouse_map right press ungrabbed mouse_select_command_output 3 | 4 | map ctrl+1 goto_tab 1 5 | map ctrl+2 goto_tab 2 6 | map ctrl+3 goto_tab 3 7 | map ctrl+4 goto_tab 4 8 | map ctrl+5 goto_tab 5 9 | map ctrl+6 goto_tab 6 10 | map ctrl+7 goto_tab 7 11 | map ctrl+8 goto_tab 8 12 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-autopairs.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("nvim-autopairs").setup({ 3 | disable_filetype = { "TelescopePrompt", "guihua", "guihua_rust", "clap_input" }, 4 | }) 5 | end 6 | 7 | return { 8 | "windwp/nvim-autopairs", 9 | lazy = true, 10 | event = { "BufReadPost", "BufNewFile" }, 11 | config = config, 12 | } 13 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /dot_vimignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | _site/ 3 | node_modules/ 4 | vendor/ 5 | venv/ 6 | __pycache__/ 7 | .pytest_cache/ 8 | *.jpeg 9 | *.jpg 10 | *.JPG 11 | *.png 12 | *.mp4 13 | *.flac 14 | *.webm 15 | *.mp3 16 | *.ogg 17 | *.webp 18 | *.gif 19 | *.woff 20 | *.woff2 21 | *.dng 22 | *.cr2 23 | *.dng 24 | *.keep 25 | *.gz 26 | *.tar 27 | *.zip 28 | yarn.lock 29 | package-lock.json 30 | tags 31 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/mason.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local mason = require("mason") 3 | 4 | mason.setup({ 5 | ui = { 6 | icons = { 7 | package_installed = "✅", 8 | package_pending = "🔜", 9 | package_uninstalled = "❌", 10 | }, 11 | }, 12 | }) 13 | end 14 | 15 | return { 16 | "mason-org/mason.nvim", 17 | config = config, 18 | } 19 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/theme.lua: -------------------------------------------------------------------------------- 1 | local my_colors = { 2 | waveBlue1 = "#363646", 3 | sumiInk1 = "#16161D", 4 | roninYellow = "#F5DD8E", 5 | } 6 | 7 | require("kanagawa").setup({ 8 | dimInactive = true, 9 | colors = my_colors, 10 | functionStyle = { bold = true }, 11 | typeStyle = { bold = true }, 12 | }) 13 | 14 | -- Load the colorscheme 15 | vim.cmd([[colorscheme kanagawa]]) 16 | -------------------------------------------------------------------------------- /private_dot_config/zellij/layouts/f2.kdl: -------------------------------------------------------------------------------- 1 | layout { 2 | pane stacked=true { 3 | pane { 4 | cwd "$HOME/dev/repos/f2" 5 | command "nvim" 6 | name "cli" 7 | } 8 | pane { 9 | cwd "$HOME/dev/repos/f2-docs" 10 | command "nvim" 11 | name "docs" 12 | } 13 | } 14 | pane size=1 borderless=true { 15 | plugin location="zellij:compact-bar" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-bbye.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "moll/vim-bbye", 3 | config = function() 4 | local wk = require("which-key") 5 | 6 | wk.add({ 7 | { "b", group = "Buffer" }, 8 | { "bl", "Bwipeout", desc = "Clear current buffer" }, 9 | { "bx", "bufdo :Bdelete", desc = "Clear all buffers" }, 10 | }) 11 | end, 12 | event = "VeryLazy", 13 | } 14 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/detour.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "carbon-steel/detour.nvim", 3 | config = function() 4 | vim.keymap.set("n", "", ":Detour") 5 | -- local wk = require("which-key") 6 | -- 7 | -- wk.register({ 8 | -- name = "Buffer", 9 | -- x = { "bufdo :Bdelete", "Clear all buffers" }, 10 | -- }, { prefix = "b" }) 11 | end, 12 | event = "VeryLazy", 13 | } 14 | -------------------------------------------------------------------------------- /private_dot_config/zellij/layouts/bin-it.kdl: -------------------------------------------------------------------------------- 1 | layout { 2 | pane stacked=true { 3 | pane { 4 | cwd "$HOME/dev/repos/bin-it" 5 | command "nvim" 6 | name "Code" 7 | } 8 | pane { 9 | cwd "$HOME/dev/repos/bin-it" 10 | command "just test" 11 | name "Tests" 12 | } 13 | } 14 | pane size=1 borderless=true { 15 | plugin location="zellij:compact-bar" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /private_dot_config/nvim/snippets/css.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | 3 | local subtitleComment = s( 4 | "stc", 5 | fmt( 6 | [[ 7 | /* {} 8 | ========================================================================== */ 9 | {} 10 | ]], 11 | { i(1, "Subtitle"), i(2) } 12 | ) 13 | ) 14 | 15 | local snippets = { 16 | subtitleComment, 17 | } 18 | local autosnippets = {} 19 | 20 | return snippets, autosnippets 21 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/auto-session.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal" 3 | 4 | require("auto-session").setup({ 5 | log_level = vim.log.levels.ERROR, 6 | session_lens = { 7 | theme_conf = { border = true }, 8 | }, 9 | }) 10 | end 11 | 12 | return { 13 | "rmagatti/auto-session", 14 | config = config, 15 | lazy = false, 16 | } 17 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/vim-fugitive.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local wk = require("which-key") 3 | 4 | wk.add({ 5 | { "g", group = "Git" }, 6 | { "ga", "Git commit --amend", desc = "Amend commit" }, 7 | { "gc", "Git commit --verbose", desc = "Git commit" }, 8 | }) 9 | end 10 | 11 | return { 12 | "tpope/vim-fugitive", 13 | config = config, 14 | event = "VeryLazy", 15 | } 16 | -------------------------------------------------------------------------------- /private_dot_config/zellij/layouts/stellar-photos.kdl: -------------------------------------------------------------------------------- 1 | layout { 2 | pane stacked=true { 3 | pane { 4 | cwd "$HOME/dev/repos/stellar-photos/extension" 5 | command "nvim" 6 | name "Web Extension" 7 | } 8 | pane { 9 | cwd "$HOME/dev/repos/stellar-photos/server" 10 | command "nvim" 11 | name "Server" 12 | } 13 | } 14 | pane size=1 borderless=true { 15 | plugin location="zellij:compact-bar" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /private_dot_config/nvim/snippets/javascript.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | local consoleLog = s("clg", fmt([[console.log({})]], { i(1) })) 3 | -- local import = s("imp", fmt([[import ]])) 4 | -- local callback = s( 5 | -- "cb", 6 | -- fmt([[({}) => { 7 | -- {} 8 | -- }]]), 9 | -- i(1), 10 | -- i(2) 11 | -- ) 12 | 13 | local snippets = { 14 | -- callback, 15 | } 16 | local autosnippets = { 17 | consoleLog, 18 | } 19 | 20 | return snippets, autosnippets 21 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/todo-comments.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/todo-comments.nvim", 3 | config = function() 4 | require("todo-comments").setup({ 5 | search = { 6 | command = "rg", 7 | args = { 8 | "--color=never", 9 | "--no-heading", 10 | "--with-filename", 11 | "--line-number", 12 | "--column", 13 | "--ignore-file", 14 | "/home/ayo/.vimignore", 15 | }, 16 | }, 17 | }) 18 | end, 19 | event = "VeryLazy", 20 | } 21 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "plugins": ["stylelint-scss"], 4 | "rules": { 5 | "declaration-colon-newline-after": null, 6 | "scss/selector-no-redundant-nesting-selector": true, 7 | "max-empty-lines": 5, 8 | "at-rule-no-unknown": [ 9 | true, 10 | { 11 | "ignoreAtRules": ["mixin", "include", "each", "function", "content"] 12 | } 13 | ] 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-dap-ui.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local dapui = require("dapui") 3 | local wk = require("which-key") 4 | 5 | dapui.setup() 6 | 7 | wk.add({ 8 | { "d", group = "Debugger" }, 9 | { "du", dapui.toggle, desc = "Toggle dap ui" }, 10 | }) 11 | end 12 | 13 | return { 14 | "rcarriga/nvim-dap-ui", 15 | config = config, 16 | dependencies = { 17 | "mfussenegger/nvim-dap", 18 | "nvim-neotest/nvim-nio", 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /private_dot_config/lf/lfrc: -------------------------------------------------------------------------------- 1 | set shell bash 2 | 3 | set ignorecase true 4 | set icons true 5 | 6 | set previewer ~/.config/lf/previewer.sh 7 | set cleaner ~/.config/lf/clear_img.sh 8 | 9 | cmd z %{{ 10 | result="$(zoxide query --exclude "${PWD}" -- "$@")" 11 | lf -remote "send ${id} cd '${result}'" 12 | }} 13 | 14 | cmd zi ${{ 15 | result="$(zoxide query -i -- "$@")" 16 | lf -remote "send ${id} cd '${result}'" 17 | }} 18 | 19 | map quit 20 | 21 | cmd delete IFS="`printf '\n\t'`"; rm $fx 22 | 23 | map D delete 24 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nightfox.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("nightfox").setup({ 3 | palettes = { 4 | carbonfox = { 5 | orange = "#FFA066", 6 | }, 7 | }, 8 | specs = { 9 | carbonfox = { 10 | syntax = { 11 | variable = "orange", 12 | number = "white", 13 | }, 14 | }, 15 | }, 16 | }) 17 | 18 | vim.cmd([[colorscheme carbonfox]]) 19 | end 20 | 21 | return { 22 | "EdenEast/nightfox.nvim", 23 | lazy = false, 24 | enabled = false, 25 | priority = 1000, 26 | config = config, 27 | } 28 | -------------------------------------------------------------------------------- /private_dot_config/focus/config.yml: -------------------------------------------------------------------------------- 1 | display: 2 | dark_theme: true 3 | long_break: 4 | duration: 30m 5 | message: Take a long break 6 | sound: bell 7 | notifications: 8 | enabled: true 9 | settings: 10 | ambient_sound: "" 11 | auto_start_break: true 12 | auto_start_work: false 13 | cmd: "" 14 | long_break_interval: 4 15 | sound_on_break: false 16 | strict: false 17 | short_break: 18 | duration: 10m 19 | message: Take a breather 20 | sound: bell 21 | work: 22 | duration: 50m 23 | message: Focus on your task 24 | sound: loud_bell 25 | -------------------------------------------------------------------------------- /private_dot_config/programming/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noEmit": true, 4 | "sourceMap": true, 5 | "module": "es6", 6 | "strict": true, 7 | "target": "esnext", 8 | "allowJs": false, 9 | "moduleResolution": "node", 10 | "esModuleInterop": true, 11 | "skipLibCheck": true, 12 | "noUnusedParameters": true, 13 | "noUncheckedIndexedAccess": true, 14 | "noUnusedLocals": true, 15 | "noImplicitReturns": true, 16 | "allowSyntheticDefaultImports": true 17 | }, 18 | "include": ["./**/*.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /private_dot_config/tilix/schemes/kanagawa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Kanagawa", 3 | "comment": "Kanagawa Dark Scheme", 4 | "use-theme-colors": false, 5 | "foreground-color": "#DCD7BA", 6 | "background-color": "#1F1F28", 7 | "palette": [ 8 | "#090618", 9 | "#C34043", 10 | "#76946A", 11 | "#C0A36E", 12 | "#7E9CD8", 13 | "#957FB8", 14 | "#6A9589", 15 | "#F8F8F2", 16 | "#727169", 17 | "#E82424", 18 | "#98BB6C", 19 | "#E6C384", 20 | "#7FB4CA", 21 | "#938AA9", 22 | "#7AA89F", 23 | "#F9F8F5" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /private_dot_config/ArchVim/init.lua: -------------------------------------------------------------------------------- 1 | local fn = vim.fn 2 | local opt = vim.opt 3 | 4 | local lazypath = fn.stdpath("data") .. "/lazy/lazy.nvim" 5 | if not vim.loop.fs_stat(lazypath) then 6 | vim.fn.system({ 7 | "git", 8 | "clone", 9 | "--filter=blob:none", 10 | "https://github.com/folke/lazy.nvim.git", 11 | "--branch=stable", -- latest stable release 12 | lazypath, 13 | }) 14 | end 15 | opt.rtp:prepend(lazypath) 16 | 17 | require("lazy").setup("plugins", { 18 | defaults = { 19 | lazy = true, 20 | }, 21 | change_detection = { 22 | notify = false, 23 | }, 24 | }) 25 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | #TITLE 3 | ========================================================================== */ 4 | 5 | /** 6 | * Long-form comment. 7 | * 8 | * This spans multiple lines and is also constrained to no longer than 80 9 | * characters in width. 10 | * 11 | * 1. Provide line-comments like this. 12 | */ 13 | 14 | .x-class { 15 | color: #f00; /* [1] */ 16 | } 17 | 18 | /* Sub-title 19 | ========================================================================== */ 20 | -------------------------------------------------------------------------------- /dot_markdownlint.yaml: -------------------------------------------------------------------------------- 1 | default: true 2 | "MD003": {style: "atx"} # Heading style, use pound marks in front of text 3 | "MD004": {style: "dash"} # UL style, dashed 4 | "MD010": false # Allow hard tabs 5 | "MD013": {code_blocks: false} # Enable line length checks except in code blocks 6 | "MD033": false # Allow inline HTML 7 | "MD041": false # First line in the file may not be a heading 8 | "MD046": {style: "fenced"} # Only allow fenced code blocks 9 | "MD047": false # Disable "file must end with a single newline" check 10 | "MD048": {style: "backtick"} # Only allow backticks for code blocks 11 | "MD052": false 12 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-dap-go.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local dapgo = require("dap-go") 3 | local wk = require("which-key") 4 | 5 | dapgo.setup({ 6 | dap_configurations = {}, 7 | }) 8 | 9 | wk.add({ 10 | { "d", group = "Debugger" }, 11 | { "dT", "lua require('dap-go').debug_last_test()", desc = "Debug last run test" }, 12 | { "dt", "lua require('dap-go').debug_test()", desc = "Debug closest test" }, 13 | }) 14 | end 15 | 16 | return { 17 | "leoluz/nvim-dap-go", 18 | event = { "BufEnter *.go" }, 19 | config = config, 20 | } 21 | -------------------------------------------------------------------------------- /private_dot_config/ArchVim/lua/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | local config = function(_, opts) 2 | require("nvim-treesitter.configs").setup(opts) 3 | end 4 | 5 | return { 6 | "nvim-treesitter/nvim-treesitter", 7 | build = ":TSUpdate", 8 | config = config, 9 | version = false, 10 | dependencies = { 11 | "nvim-treesitter/nvim-treesitter-textobjects", 12 | }, 13 | event = { "BufReadPost", "BufNewFile" }, 14 | opts = { 15 | ensure_installed = "all", 16 | highlight = { 17 | enable = true, 18 | }, 19 | indent = { 20 | enable = true, 21 | }, 22 | matchup = { 23 | enable = true, 24 | }, 25 | }, 26 | } 27 | -------------------------------------------------------------------------------- /private_dot_config/mise/config.toml: -------------------------------------------------------------------------------- 1 | [tools] 2 | bun = "latest" 3 | go = "1.25" 4 | "go:github.com/open-telemetry/opentelemetry-collector-contrib/cmd/telemetrygen" = "latest" 5 | node = "latest" 6 | "npm:@anthropic-ai/claude-code" = "latest" 7 | "npm:@bitwarden/cli" = "latest" 8 | "npm:@google/gemini-cli" = "latest" 9 | "npm:autocannon" = "latest" 10 | "npm:markdownlint-cli" = "latest" 11 | "npm:nodemon" = "latest" 12 | "npm:npm-check-updates" = "latest" 13 | "npm:prettier" = "latest" 14 | python = "3.13" 15 | rust = "latest" 16 | 17 | [settings] 18 | idiomatic_version_file_enable_tools = ["node"] 19 | experimental = true 20 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/mason-lspconfig.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local masonLspConfig = require("mason-lspconfig") 3 | 4 | masonLspConfig.setup({ 5 | ensure_installed = { 6 | "biome", 7 | "lua_ls", 8 | "jsonls", 9 | "rust_analyzer", 10 | "gopls", 11 | "golangci_lint_ls", 12 | "html", 13 | "ts_ls", 14 | "jqls", 15 | "bashls", 16 | "marksman", 17 | "cssls", 18 | "sqlls", 19 | "biome", 20 | "yamlls", 21 | }, 22 | }) 23 | end 24 | 25 | return { 26 | "mason-org/mason-lspconfig.nvim", 27 | dependencies = { 28 | "mason-org/mason.nvim", 29 | }, 30 | } 31 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/blink.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "saghen/blink.cmp", 3 | version = "1.*", 4 | dependencies = { 5 | "L3MON4D3/LuaSnip", 6 | "folke/lazydev.nvim", 7 | }, 8 | opts = { 9 | keymap = { preset = "enter" }, 10 | completion = { documentation = { auto_show = true } }, 11 | sources = { 12 | default = { "lsp", "path", "snippets", "buffer", "lazydev" }, 13 | providers = { 14 | lazydev = { module = "lazydev.integrations.blink", score_offset = 100 }, 15 | }, 16 | }, 17 | snippets = { preset = "luasnip" }, 18 | signature = { enabled = true }, 19 | }, 20 | event = "VimEnter", 21 | } 22 | -------------------------------------------------------------------------------- /private_dot_config/programming/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "devDependencies": { 7 | "eslint": "^8.24.0", 8 | "eslint-config-airbnb-base": "^15.0.0", 9 | "eslint-config-airbnb-typescript": "^17.0.0", 10 | "eslint-config-prettier": "^8.5.0", 11 | "eslint-plugin-import": "^2.26.0", 12 | "eslint-plugin-prettier": "^4.2.1", 13 | "prettier": "^2.7.1", 14 | "typescript": "^4.8.3", 15 | "@types/node": "18", 16 | "@typescript-eslint/eslint-plugin": "^5.38.0", 17 | "@typescript-eslint/parser": "^5.38.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-ufo.lua: -------------------------------------------------------------------------------- 1 | --TODO: Learn about folding workflow 2 | local config = function() 3 | vim.o.foldcolumn = "1" 4 | vim.o.foldlevel = 99 5 | vim.o.foldlevelstart = 99 6 | vim.o.foldenable = true 7 | 8 | vim.keymap.set("n", "zR", require("ufo").openAllFolds) 9 | vim.keymap.set("n", "zM", require("ufo").closeAllFolds) 10 | 11 | local ufo = require("ufo") 12 | ufo.setup({ 13 | close_fold_kinds = { "imports", "comment" }, 14 | provider_selector = function(bufnr, filetype, buftype) 15 | return { "treesitter", "indent" } 16 | end, 17 | }) 18 | end 19 | 20 | return { 21 | "kevinhwang91/nvim-ufo", 22 | dependencies = { 23 | "kevinhwang91/promise-async", 24 | }, 25 | event = "VeryLazy", 26 | -- config = config, 27 | } 28 | -------------------------------------------------------------------------------- /private_dot_config/kitty/theme.conf: -------------------------------------------------------------------------------- 1 | background #111213 2 | foreground #cacecd 3 | cursor #e2be21 4 | # selection_background #303233 5 | color0 #323232 6 | color8 #323232 7 | color1 #c22832 8 | color9 #c22832 9 | color2 #8ec43d 10 | color10 #8ec43d 11 | color3 #e0c64f 12 | color11 #e0c64f 13 | color4 #43a5d5 14 | color12 #43a5d5 15 | color5 #8b57b5 16 | color13 #8b57b5 17 | color6 #8ec43d 18 | color14 #8ec43d 19 | color7 #eeeeee 20 | color15 #ffffff 21 | # selection_foreground #111213 22 | selection_foreground #000000 23 | selection_background #f9c22e 24 | -------------------------------------------------------------------------------- /private_dot_config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- All non-plugin Neovim options 2 | require("settings") 3 | -- auto commands 4 | require("autocmds") 5 | -- Mappings not related to any plugin 6 | require("mappings") 7 | -- Custom functions 8 | require("functions") 9 | 10 | vim.lsp.enable({ "cssls", "gopls", "ts_ls", "lua_ls", "emmet", "solargraph" }) 11 | 12 | local fn = vim.fn 13 | local opt = vim.opt 14 | 15 | local lazypath = fn.stdpath("data") .. "/lazy/lazy.nvim" 16 | if not vim.loop.fs_stat(lazypath) then 17 | vim.fn.system({ 18 | "git", 19 | "clone", 20 | "--filter=blob:none", 21 | "https://github.com/folke/lazy.nvim.git", 22 | "--branch=stable", -- latest stable release 23 | lazypath, 24 | }) 25 | end 26 | opt.rtp:prepend(lazypath) 27 | 28 | require("lazy").setup("plugins", { 29 | defaults = { 30 | lazy = true, 31 | }, 32 | change_detection = { 33 | notify = false, 34 | }, 35 | }) 36 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/precognition-nvim.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tris203/precognition.nvim", 3 | enabled = false, 4 | lazy = false, 5 | config = { 6 | startVisible = true, 7 | showBlankVirtLine = true, 8 | highlightColor = { link = "Comment" }, 9 | hints = { 10 | Caret = { text = "^", prio = 2 }, 11 | Dollar = { text = "$", prio = 1 }, 12 | MatchingPair = { text = "%", prio = 5 }, 13 | Zero = { text = "0", prio = 1 }, 14 | w = { text = "w", prio = 10 }, 15 | b = { text = "b", prio = 9 }, 16 | e = { text = "e", prio = 8 }, 17 | W = { text = "W", prio = 7 }, 18 | B = { text = "B", prio = 6 }, 19 | E = { text = "E", prio = 5 }, 20 | }, 21 | gutterHints = { 22 | G = { text = "G", prio = 10 }, 23 | gg = { text = "gg", prio = 9 }, 24 | PrevParagraph = { text = "{", prio = 8 }, 25 | NextParagraph = { text = "}", prio = 8 }, 26 | }, 27 | }, 28 | } 29 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-lint.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local lint = require("lint") 3 | local golangcilint = require("lint").linters.golangcilint 4 | golangcilint.args = { 5 | "run", 6 | "--fix=true", 7 | "--fast", 8 | "--out-format=json", 9 | } 10 | 11 | lint.linters_by_ft = { 12 | markdown = { "markdownlint" }, 13 | sh = { "shellcheck" }, 14 | dockerfile = { "hadolint" }, 15 | javascript = { "biomejs" }, 16 | typescript = { "biomejs" }, 17 | json = { "jsonlint" }, 18 | go = { "golangcilint" }, 19 | css = { "stylelint" }, 20 | scss = { "stylelint" }, 21 | sql = { "sqlfluff" }, 22 | yaml = { "yamllint" }, 23 | ["yaml.ansible"] = { "ansiblelint" }, 24 | } 25 | 26 | vim.api.nvim_create_autocmd({ "BufWritePost" }, { 27 | callback = function() 28 | lint.try_lint() 29 | end, 30 | }) 31 | end 32 | 33 | return { 34 | "mfussenegger/nvim-lint", 35 | event = { "BufReadPost" }, 36 | config = config, 37 | } 38 | -------------------------------------------------------------------------------- /private_dot_config/starship.toml: -------------------------------------------------------------------------------- 1 | command_timeout = 2000 2 | add_newline = false 3 | 4 | [character] 5 | success_symbol = '✅' 6 | error_symbol = '🔴' 7 | 8 | [aws] 9 | disabled = true 10 | 11 | [gcloud] 12 | disabled = true 13 | 14 | [time] 15 | disabled = true 16 | 17 | [cmd_duration] 18 | disabled = true 19 | 20 | [directory] 21 | truncation_length = 8 22 | 23 | [hostname] 24 | disabled = true 25 | 26 | [nodejs] 27 | symbol = '🟩' 28 | 29 | [golang] 30 | symbol = '🐀' 31 | format = 'via [$symbol($version )($mod_version )]($style)' 32 | 33 | [battery] 34 | disabled = true 35 | 36 | [git_status] 37 | conflicted = '🚩' 38 | ahead = '💨' 39 | behind = '⏩' 40 | diverged = '😵' 41 | untracked = '🤷' 42 | stashed = '📦' 43 | modified = '📝' 44 | staged = '[++\($count\)](green)' 45 | renamed = '👅' 46 | deleted = '💥' 47 | 48 | [shell] 49 | fish_indicator = '🦈' 50 | bash_indicator = '💲' 51 | powershell_indicator = '💪' 52 | unknown_indicator = '💻' 53 | disabled = false 54 | -------------------------------------------------------------------------------- /private_dot_config/fish/aliases.fish: -------------------------------------------------------------------------------- 1 | alias vim="nvim" 2 | 3 | alias vi="/usr/bin/vim" 4 | 5 | # Return to the project root (where .git folder is) 6 | alias gcd="cd (git rev-parse --show-toplevel)" 7 | 8 | alias n="npm" 9 | alias y="yarn" 10 | alias p="pnpm" 11 | 12 | # Replace ls with eza 13 | alias ls="eza --icons --hyperlink" 14 | 15 | alias brl="br -dp" 16 | alias brgs="br -gc :gs" 17 | 18 | # Replace cat with bat 19 | alias cat="bat" 20 | 21 | # gotestfmt 22 | alias gotestfmt="gotestfmt -hide 'empty-packages'" 23 | 24 | alias yt="yt-dlp" 25 | 26 | alias pn="pnpm" 27 | 28 | alias r="bundle exec rails" 29 | 30 | alias py="python3" 31 | 32 | alias grep="grep -H -P --color=auto" 33 | 34 | alias astro="NVIM_APPNAME=AstroNvim nvim" 35 | 36 | alias nv="NVIM_APPNAME=NvChad nvim" 37 | 38 | alias lazy="NVIM_APPNAME=LazyVim nvim" 39 | 40 | alias aa="NVIM_APPNAME=ArchVim nvim" 41 | 42 | # Kitty uses TERM=kitty which causes issues with remote sessions 43 | alias ssh="TERM=xterm-256color command ssh" 44 | 45 | alias lss="/usr/bin/ls" 46 | 47 | alias fresh="NVIM_APPNAME=FreshVim nvim" 48 | -------------------------------------------------------------------------------- /private_dot_config/nvim/spell/en.utf-8.add: -------------------------------------------------------------------------------- 1 | Firefox 2 | filesystem 3 | screenshot 4 | stylesheet 5 | middleware 6 | stylesheets 7 | whitelisted 8 | CSS 9 | whitelist 10 | subdomain 11 | Youtube 12 | inline 13 | minification 14 | fallbacks 15 | Neovim 16 | Ubuntu 17 | Screenshots 18 | Dotfiles 19 | TypeScript 20 | ES5 21 | S5 22 | transpile 23 | transcompiles 24 | IDE 25 | JSON 26 | wildcard 27 | Webpack 28 | ECMAScript 29 | transpiling 30 | codebase 31 | JSDoc 32 | lodash 33 | autocompletion 34 | clickjacking 35 | allowlist 36 | app 37 | YouTube 38 | Webpacker 39 | transpiled 40 | Templating 41 | templating 42 | API 43 | Heroku 44 | GitHub 45 | Unsplash 46 | DevTools 47 | CLI 48 | config 49 | workflow 50 | pandoc 51 | linux 52 | WordPress 53 | plugins 54 | Filmmaking 55 | GPU 56 | familarize 57 | admin 58 | plugin 59 | vim 60 | async 61 | promisified 62 | APIs 63 | unhandled 64 | Nock 65 | hostname 66 | Honeybadger 67 | cachable 68 | leaderboard 69 | exif 70 | fallback 71 | F2 72 | walkthrough 73 | performant 74 | Coreutils 75 | Debian 76 | unsafety 77 | Fluentd 78 | Logtail 79 | schedulable 80 | NGINX 81 | stringified 82 | -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Ayooluwa Isaiah 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /private_dot_config/nvim/templates/skeleton.LICENCE: -------------------------------------------------------------------------------- 1 | MIT Licence 2 | 3 | Copyright (c) 2020 Ayooluwa Isaiah 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/go-nvim.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("go").setup() 3 | 4 | local wk = require("which-key") 5 | 6 | wk.add({ 7 | { "g", group = "go" }, 8 | { "gT", "GoRmTag", desc = "Remove struct tags" }, 9 | { "gr", "GoTestFunc", desc = "Run test under cursor" }, 10 | { "gi", "GoImports", desc = "Run goimports on current file" }, 11 | { "gt", "GoAddTag", desc = "Add struct tags" }, 12 | { "gfs", "GoFillStruct", desc = "Auto fill struct" }, 13 | { "gfw", "GoFillSwitch", desc = "Auto fill switch" }, 14 | { "ge", "GoIfErr", desc = "Add if err" }, 15 | { "gp", "GoFixPlurals", desc = "Fix plurals" }, 16 | }) 17 | end 18 | 19 | return { 20 | "ray-x/go.nvim", 21 | dependencies = { 22 | "ray-x/guihua.lua", 23 | "neovim/nvim-lspconfig", 24 | "nvim-treesitter/nvim-treesitter", 25 | }, 26 | config = config, 27 | event = { "CmdlineEnter" }, 28 | ft = { "go", "gomod" }, 29 | build = ':lua require("go.install").update_all_sync()', 30 | } 31 | -------------------------------------------------------------------------------- /private_dot_config/lf/lf.fish: -------------------------------------------------------------------------------- 1 | # Autocompletion for fish shell. 2 | # 3 | # You may put this file to a directory in $fish_complete_path variable: 4 | # 5 | # mkdir -p ~/.config/fish/completions 6 | # ln -s "/path/to/lf.fish" ~/.config/fish/completions 7 | # 8 | 9 | complete -c lf -o command -r -d 'command to execute on client initialization' 10 | complete -c lf -o config -r -d 'path to the config file (instead of the usual paths)' 11 | complete -c lf -o cpuprofile -r -d 'path to the file to write the CPU profile' 12 | complete -c lf -o doc -d 'show documentation' 13 | complete -c lf -o last-dir-path -r -d 'path to the file to write the last dir on exit (to use for cd)' 14 | complete -c lf -o log -r -d 'path to the log file to write messages' 15 | complete -c lf -o memprofile -r -d 'path to the file to write the memory profile' 16 | complete -c lf -o remote -x -d 'send remote command to server' 17 | complete -c lf -o selection-path -r -d 'path to the file to write selected files on open (to use as open file dialog)' 18 | complete -c lf -o server -d 'start server (automatic)' 19 | complete -c lf -o single -d 'start a client without server' 20 | complete -c lf -o version -d 'show version' 21 | complete -c lf -o help -d 'show help' 22 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/conform-nvim.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local conform = require("conform") 3 | 4 | conform.setup({ 5 | formatters = { 6 | golines = { 7 | command = "golines", 8 | args = { 9 | "-m", 10 | "80", 11 | }, 12 | }, 13 | sqlfluff = { 14 | command = "sqlfluff", 15 | args = { 16 | "fix", 17 | "--dialect", 18 | "postgres", 19 | "--disable-progress-bar", 20 | "-f", 21 | "-n", 22 | "-", 23 | }, 24 | stdin = true, 25 | }, 26 | }, 27 | formatters_by_ft = { 28 | lua = { "stylua" }, 29 | python = { "ruff" }, 30 | javascript = { "biome-check" }, 31 | typescript = { "biome-check" }, 32 | markdown = { "prettier" }, 33 | pug = { "prettier" }, 34 | css = { "biome-check" }, 35 | html = { "djlint" }, 36 | go = { "gofumpt", "golines" }, 37 | json = { "biome-check" }, 38 | jsonc = { "biome-check" }, 39 | sql = { "sqlfluff" }, 40 | fish = { "fish_indent" }, 41 | yaml = { "yamlfmt" }, 42 | ["_"] = { "trim_whitespace" }, 43 | }, 44 | format_on_save = { 45 | timeout_ms = 2000, 46 | lsp_fallback = true, 47 | }, 48 | }) 49 | end 50 | 51 | return { 52 | "stevearc/conform.nvim", 53 | event = { "BufReadPost", "BufNewFile" }, 54 | config = config, 55 | } 56 | -------------------------------------------------------------------------------- /private_dot_config/fish/extras/kanagawa.fish: -------------------------------------------------------------------------------- 1 | #!/usr/bin/fish 2 | 3 | # Kanagawa Fish shell theme 4 | # A template was taken and modified from Tokyonight: 5 | # https://github.com/folke/tokyonight.nvim/blob/main/extras/fish_tokyonight_night.fish 6 | set -l foreground DCD7BA 7 | set -l selection 2D4F67 8 | set -l comment 727169 9 | set -l red C34043 10 | set -l orange FF9E64 11 | set -l yellow C0A36E 12 | set -l green 76946A 13 | set -l purple 957FB8 14 | set -l cyan 7AA89F 15 | set -l pink D27E99 16 | 17 | # Syntax Highlighting Colors 18 | set -g fish_color_normal $foreground 19 | set -g fish_color_command $cyan 20 | set -g fish_color_keyword $pink 21 | set -g fish_color_quote $yellow 22 | set -g fish_color_redirection $foreground 23 | set -g fish_color_end $orange 24 | set -g fish_color_error $red 25 | set -g fish_color_param $purple 26 | set -g fish_color_comment $comment 27 | set -g fish_color_selection --background=$selection 28 | set -g fish_color_search_match --background=$selection 29 | set -g fish_color_operator $green 30 | set -g fish_color_escape $pink 31 | set -g fish_color_autosuggestion $comment 32 | 33 | # Completion Pager Colors 34 | set -g fish_pager_color_progress $comment 35 | set -g fish_pager_color_prefix $cyan 36 | set -g fish_pager_color_completion $foreground 37 | set -g fish_pager_color_description $comment 38 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/kanagawa.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local my_colors = { 3 | waveBlue1 = "#363646", 4 | sumiInk1 = "#16161D", 5 | roninYellow = "#F5DD8E", 6 | } 7 | 8 | require("kanagawa").setup({ 9 | dimInactive = true, 10 | colors = { 11 | palette = my_colors, 12 | theme = { 13 | all = { 14 | ui = { 15 | bg_gutter = "none", 16 | }, 17 | }, 18 | }, 19 | }, 20 | functionStyle = { bold = true }, 21 | typeStyle = { bold = true }, 22 | overrides = function(colors) 23 | local theme = colors.theme 24 | return { 25 | TelescopeTitle = { fg = theme.ui.special, bold = true }, 26 | TelescopeResultsNormal = { fg = theme.ui.fg_dim, bg = theme.ui.bg_m1 }, 27 | TelescopePreviewNormal = { bg = theme.ui.bg_dim }, 28 | 29 | Pmenu = { fg = theme.ui.shade0, bg = theme.ui.bg_p1 }, 30 | PmenuSel = { fg = "NONE", bg = theme.ui.bg_p2 }, 31 | PmenuSbar = { bg = theme.ui.bg_m1 }, 32 | PmenuThumb = { bg = theme.ui.bg_p2 }, 33 | } 34 | end, 35 | }) 36 | 37 | -- vim.api.nvim_set_hl 38 | vim.api.nvim_set_hl(0, "@markdownUrl", { underline = true, italic = true }) 39 | -- Load the colorscheme 40 | vim.cmd([[colorscheme kanagawa-wave]]) 41 | end 42 | 43 | return { 44 | "rebelot/kanagawa.nvim", 45 | lazy = false, 46 | priority = 1000, 47 | config = config, 48 | } 49 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/trouble.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/trouble.nvim", 3 | config = function() 4 | require("trouble").setup({}) 5 | 6 | local wk = require("which-key") 7 | 8 | wk.add({ 9 | { "", "Trouble diagnostics toggle", desc = "Toggle Trouble", group = "LSP" }, 10 | { 11 | "[t", 12 | "lua require('trouble').previous({skip_groups = true, jump = true});", 13 | desc = "Go to previous item in Trouble", 14 | }, 15 | { 16 | "]t", 17 | "lua require('trouble').next({skip_groups = true, jump = true});", 18 | desc = "Go to next item in Trouble", 19 | }, 20 | }) 21 | 22 | -- wk.register({ 23 | -- name = "LSP", 24 | -- 25 | -- [""] = { "TroubleToggle", "Toggle Trouble" }, 26 | -- }) 27 | 28 | -- wk.register({ 29 | -- name = "LSP", 30 | -- ["]"] = { 31 | -- name = "next", 32 | -- t = { 33 | -- "lua require('trouble').next({skip_groups = true, jump = true});", 34 | -- "Go to next item in Trouble", 35 | -- }, 36 | -- }, 37 | -- ["["] = { 38 | -- name = "previous", 39 | -- t = { 40 | -- "lua require('trouble').previous({skip_groups = true, jump = true});", 41 | -- "Go to previous item in Trouble", 42 | -- }, 43 | -- }, 44 | -- }) 45 | end, 46 | event = "VeryLazy", 47 | } 48 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/luasnip.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local ls = require("luasnip") 3 | 4 | ls.config.set_config({ 5 | history = true, 6 | update_events = "TextChanged,TextChangedI", 7 | enable_autosnippets = true, 8 | ext_opts = { 9 | [require("luasnip.util.types").choiceNode] = { 10 | active = { 11 | virt_text = { 12 | { 13 | "🔀", 14 | }, 15 | }, 16 | }, 17 | }, 18 | }, 19 | }) 20 | 21 | require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets" }) 22 | 23 | vim.keymap.set({ "i", "s" }, "", function() 24 | if ls.jumpable(1) then 25 | ls.jump(1) 26 | end 27 | end, { silent = true }) 28 | 29 | vim.keymap.set({ "i", "s" }, "", function() 30 | if ls.jumpable(-1) then 31 | ls.jump(-1) 32 | end 33 | end, { silent = true }) 34 | 35 | vim.keymap.set("i", "", function() 36 | if ls.choice_active() then 37 | ls.change_choice(1) 38 | end 39 | end, { silent = true }) 40 | 41 | vim.keymap.set("i", "", function() 42 | if ls.choice_active() then 43 | ls.change_choice(-1) 44 | end 45 | end, { silent = true }) 46 | 47 | -- reload luasnips file which reloads snippets 48 | vim.keymap.set("n", "s", "source ~/.config/nvim/lua/plugins/luasnip.lua") 49 | end 50 | 51 | return { 52 | "L3MON4D3/LuaSnip", 53 | config = config, 54 | event = "BufEnter", 55 | } 56 | -------------------------------------------------------------------------------- /private_dot_config/nvim/snippets/go.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | 3 | local errCheck = s( 4 | "ife", 5 | fmt( 6 | [[ 7 | if err != nil {{ 8 | {} 9 | }}{} 10 | ]], 11 | { 12 | c(1, { t("return err"), t("return nil, err"), t("t.Fatal(err)"), t("log.Fatal(err)") }), 13 | i(0), 14 | } 15 | ) 16 | ) 17 | 18 | local handlerFunc = s( 19 | "hf", 20 | fmt( 21 | [[ 22 | func {} (w http.ResponseWriter, r *http.Request) {{ 23 | {} 24 | }}{} 25 | ]], 26 | { 27 | i(1), 28 | i(2), 29 | i(0), 30 | } 31 | ) 32 | ) 33 | 34 | local testFunc = s( 35 | "tf", 36 | fmt( 37 | [[ 38 | func Test{} (t *testing.T) {{ 39 | {} 40 | }}{} 41 | ]], 42 | { 43 | i(1), 44 | i(2), 45 | i(0), 46 | } 47 | ) 48 | ) 49 | 50 | local testHelper = s( 51 | "th", 52 | fmt( 53 | [[ 54 | func {}(t *testing.T) {{ 55 | t.Helper(){} 56 | }}{} 57 | ]], 58 | { 59 | i(1), 60 | i(2), 61 | i(0), 62 | } 63 | ) 64 | ) 65 | 66 | local print = s("fl", fmt("fmt.Println({}){}", { i(1, "args"), i(2) })) 67 | local deepPrint = s("fst", fmt('fmt.Printf("%+v\\n", {}){}', { i(1, "args"), i(2) })) 68 | local quotePrint = s("fq", fmt('fmt.Printf("%+q\\n", {}){}', { i(1, "args"), i(2) })) 69 | 70 | local snippets = { 71 | print, 72 | deepPrint, 73 | quotePrint, 74 | testFunc, 75 | testHelper, 76 | handlerFunc, 77 | } 78 | 79 | local autosnippets = { 80 | errCheck, 81 | } 82 | 83 | return snippets, autosnippets 84 | -------------------------------------------------------------------------------- /private_dot_config/nvim/snippets/markdown.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | local codeBlock = s( 3 | "c", 4 | fmt( 5 | [[ 6 | ```{} 7 | {} 8 | ```{} 9 | ]], 10 | { i(1, "text"), i(2), i(3) } 11 | ) 12 | ) 13 | 14 | local codeBlockJS = s( 15 | "cj", 16 | fmt( 17 | [[ 18 | ```{} 19 | {} 20 | ```{} 21 | ]], 22 | { i(1, "javascript"), i(2), i(3) } 23 | ) 24 | ) 25 | 26 | local codeBlockWithLabel = s( 27 | "cl", 28 | fmt( 29 | [[ 30 | ```{} 31 | [label {}] 32 | {} 33 | ```{} 34 | ]], 35 | { 36 | c(1, { t("text"), t("go"), t("javascript"), t("json"), t("php"), t("python") }), 37 | i(2, "file.txt"), 38 | i(3), 39 | i(4), 40 | } 41 | ) 42 | ) 43 | 44 | local codeBlockOutput = s( 45 | "ci", 46 | fmt( 47 | [[ 48 | ```{} 49 | [output] 50 | {} 51 | ```{} 52 | ]], 53 | { i(1, "text"), i(2), i(3) } 54 | ) 55 | ) 56 | 57 | local anchorTag = s("lnk", fmt("[{}]({})", { i(1, "text"), i(2, "http://localhost:3000") })) 58 | local image = s("img", fmt("![{}]({})", { i(1, "alt"), i(2, "todo.png") })) 59 | local bold = s("**", fmt("**{}**", { i(1, "text") })) 60 | local italic = s("__", fmt("_{}_", { i(1, "text") })) 61 | local strikethrough = s("~~", fmt("~{}~", { i(1, "text") })) 62 | 63 | local snippets = { 64 | codeBlock, 65 | codeBlockWithLabel, 66 | codeBlockOutput, 67 | codeBlockJS, 68 | } 69 | 70 | local autosnippets = { 71 | anchorTag, 72 | image, 73 | bold, 74 | italic, 75 | strikethrough, 76 | } 77 | 78 | return snippets, autosnippets 79 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | local config = function(_, opts) 2 | require("nvim-dap-repl-highlights").setup() 3 | require("nvim-treesitter.configs").setup(opts) 4 | end 5 | 6 | return { 7 | "nvim-treesitter/nvim-treesitter", 8 | build = ":TSUpdate", 9 | config = config, 10 | version = false, 11 | dependencies = { 12 | "nvim-treesitter/nvim-treesitter-textobjects", 13 | "LiadOz/nvim-dap-repl-highlights", 14 | }, 15 | event = { "BufReadPost", "BufNewFile" }, 16 | opts = { 17 | ensure_installed = { 18 | "bash", 19 | "comment", 20 | "css", 21 | "csv", 22 | "diff", 23 | "dockerfile", 24 | "dap_repl", 25 | "fish", 26 | "git_config", 27 | "git_rebase", 28 | "gitattributes", 29 | "gitcommit", 30 | "gitignore", 31 | "go", 32 | "gomod", 33 | "gosum", 34 | "gpg", 35 | "html", 36 | "http", 37 | "java", 38 | "javascript", 39 | "json", 40 | "json5", 41 | "jq", 42 | "kdl", 43 | "lua", 44 | "markdown", 45 | "nginx", 46 | "python", 47 | "pug", 48 | "powershell", 49 | "promql", 50 | "regex", 51 | "ruby", 52 | "rust", 53 | "sql", 54 | "scss", 55 | "ssh_config", 56 | "tmux", 57 | "toml", 58 | "typescript", 59 | "vrl", 60 | "vim", 61 | "vimdoc", 62 | "xml", 63 | "yaml", 64 | }, 65 | highlight = { 66 | enable = true, 67 | }, 68 | indent = { 69 | enable = true, 70 | }, 71 | matchup = { 72 | enable = true, 73 | }, 74 | }, 75 | } 76 | -------------------------------------------------------------------------------- /private_dot_config/fish/config.fish: -------------------------------------------------------------------------------- 1 | set LANG en_US.UTF-8 2 | 3 | if test (uname -s) = "Darwin" 4 | eval "$(/opt/homebrew/bin/brew shellenv)" 5 | end 6 | 7 | # Aliases 8 | source $HOME/.config/fish/aliases.fish 9 | 10 | # Abbreviations 11 | source $HOME/.config/fish/abbr.fish 12 | 13 | # Variables 14 | source $HOME/.config/fish/variables.fish 15 | 16 | # Key bindings 17 | source $HOME/.config/fish/bindings.fish 18 | 19 | # Kanagawa theme 20 | source $HOME/.config/fish/extras/kanagawa.fish 21 | 22 | # SHELL 23 | zoxide init fish | source # Better cd 24 | 25 | starship init fish | source 26 | 27 | mise activate fish | source 28 | 29 | if set -q KITTY_INSTALLATION_DIR 30 | set --global KITTY_SHELL_INTEGRATION enabled 31 | source "$KITTY_INSTALLATION_DIR/shell-integration/fish/vendor_conf.d/kitty-shell-integration.fish" 32 | set --prepend fish_complete_path "$KITTY_INSTALLATION_DIR/shell-integration/fish/vendor_completions.d" 33 | end 34 | 35 | # Setup python argcomplete for Ansible 36 | for cmd in ansible ansible-config ansible-console ansible-doc ansible-galaxy ansible-inventory ansible-playbook ansible-pull ansible-vault 37 | register-python-argcomplete --shell fish $cmd | source 38 | end 39 | 40 | function fish_mode_prompt 41 | switch $fish_bind_mode 42 | case default 43 | echo '🟡 ' 44 | case insert 45 | echo '🟢 ' 46 | case replace_one 47 | echo '🔵 ' 48 | case visual 49 | echo '🟣 ' 50 | case '*' 51 | echo '🔴 ' 52 | end 53 | end -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/mason-tool-installer.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("mason-tool-installer").setup({ 3 | ensure_installed = { 4 | -- lua 5 | "lua_ls", 6 | "stylua", 7 | 8 | -- json 9 | "jsonls", 10 | "jsonlint", 11 | "jq-lsp", 12 | "jq", 13 | 14 | -- go 15 | "gopls", 16 | "golangci_lint_ls", 17 | "delve", 18 | "go-debug-adapter", 19 | "golines", 20 | "gofumpt", 21 | "golangci-lint", 22 | "goimports", 23 | 24 | -- web 25 | "ts_ls", 26 | "js-debug-adapter", 27 | "html", 28 | "cssls", 29 | "firefox-debug-adapter", 30 | "prettier", 31 | "biome", 32 | "djlint", 33 | 34 | -- shell 35 | "bashls", 36 | 37 | -- markdown 38 | "marksman", 39 | "markdownlint-cli2", 40 | "markdownlint", 41 | 42 | -- sql 43 | "sqlls", 44 | "pgformatter", 45 | 46 | -- yaml 47 | "yamlls", 48 | "yamlfmt", 49 | "yamllint", 50 | 51 | -- ansible 52 | "ansible-lint", 53 | 54 | -- git 55 | "gitlint", 56 | 57 | -- python 58 | "ruff", 59 | 60 | -- nginx 61 | "nginx-config-formatter", 62 | 63 | -- docker 64 | "hadolint", 65 | 66 | -- other 67 | "tree-sitter-cli", 68 | }, 69 | integrations = { 70 | ["mason-lspconfig"] = true, 71 | ["mason-nvim-dap"] = true, 72 | ["mason-null-ls"] = false, 73 | }, 74 | }) 75 | end 76 | 77 | return { 78 | "WhoIsSethDaniel/mason-tool-installer.nvim", 79 | dependencies = { 80 | "mason-org/mason-lspconfig.nvim", 81 | "jay-babu/mason-nvim-dap.nvim", 82 | }, 83 | config = config, 84 | } 85 | -------------------------------------------------------------------------------- /private_dot_config/fish/abbr.fish: -------------------------------------------------------------------------------- 1 | # Git 2 | abbr g git 3 | abbr ga 'git add' 4 | abbr gaa 'git add -A' 5 | abbr gb 'git branch' 6 | abbr gbd 'git branch -d' 7 | abbr gbdd 'git branch -D' 8 | abbr gbl 'git blame' 9 | abbr gch 'git checkout' 10 | abbr gchb 'git checkout -b' 11 | abbr gc 'git commit' 12 | abbr gcm 'git commit -m' 13 | abbr gcl 'git clone' 14 | abbr gca 'git commit --amend -m' 15 | abbr gcp 'git cherry-pick' 16 | abbr gd 'git diff' 17 | abbr gdc 'git diff --cached' 18 | abbr gf 'git fetch' 19 | abbr gl 'git log' 20 | abbr glp 'git log --patch' 21 | abbr gls 'git log --stat' 22 | abbr glo 'git log --pretty=oneline' 23 | abbr gm 'git merge' 24 | abbr gp 'git push' 25 | abbr gpf 'git push --force-with-lease' 26 | abbr gpl 'git pull' 27 | abbr gr 'git restore' 28 | abbr grs 'git restore --staged' 29 | abbr grm 'git remote' 30 | abbr grb 'git rebase' 31 | abbr gs 'git status --short' 32 | abbr gss 'git status' 33 | abbr gst 'git stash' 34 | 35 | # Ubuntu (apt) 36 | abbr apti 'sudo apt install -y' 37 | abbr aptu 'sudo apt update -y' 38 | abbr aptr 'sudo apt remove -y' 39 | abbr aptf 'sudo apt full-upgrade -y' 40 | abbr aptl 'sudo apt list --upgradable' 41 | abbr di 'sudo dpkg -i' 42 | 43 | # Fedora (dnf) 44 | abbr dnfi 'sudo dnf install -y' 45 | abbr dnfr 'sudo dnf remove -y' 46 | abbr dnfu 'sudo dnf update -y' 47 | 48 | # Show power consumption, battery health and related statistics 49 | abbr b3 'upower -i /org/freedesktop/UPower/devices/battery_BAT0' 50 | 51 | # Reload fish configuration 52 | abbr rf 'source ~/.config/fish/config.fish' 53 | 54 | # Sync current history with history file 55 | abbr hm 'history --merge' 56 | 57 | # Sync local time 58 | abbr ntp 'sudo ntpdate pool.ntp.org' 59 | 60 | # Exa 61 | abbr ll 'eza --long --all --group --git' 62 | 63 | # Kitty 64 | abbr kssh 'kitty +kitten ssh' 65 | 66 | # Fast fetch 67 | abbr ff fastfetch 68 | 69 | # Zellij 70 | abbr zz zellij 71 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-devdocs.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local wk = require("which-key") 3 | local devdocs = require("nvim-devdocs") 4 | 5 | devdocs.setup({ 6 | ensure_installed = { 7 | "html", 8 | "css", 9 | "sass", 10 | "redis", 11 | "javascript", 12 | "go", 13 | "node", 14 | "postgresql-15", 15 | "typescript", 16 | "ansible", 17 | "fish-3.6", 18 | "npm", 19 | "http", 20 | "lua-5.4", 21 | "docker", 22 | "bash", 23 | "eslint", 24 | "esbuild", 25 | "git", 26 | "markdown", 27 | "docker", 28 | "tailwindcss", 29 | "web_extensions", 30 | "dom", 31 | "jq", 32 | }, 33 | previewer_cmd = "glow", 34 | cmd_args = { "-s", "dracula", "-w", "80" }, 35 | }) 36 | 37 | wk.register({ 38 | name = "Docs", 39 | c = { "DevdocsOpen css", "CSS" }, 40 | d = { "DevdocsOpen dom", "DOM" }, 41 | f = { "DevdocsOpen fish-3.6", "Fish" }, 42 | g = { "DevdocsOpen go", "Go" }, 43 | h = { "DevdocsOpen html", "HTML" }, 44 | j = { "DevdocsOpen javascript", "JavaScript" }, 45 | k = { "DevdocsOpen docker", "Docker" }, 46 | n = { "DevdocsOpen node", "Node.js" }, 47 | m = { "DevdocsOpen markdown", "Markdown" }, 48 | t = { "DevdocsOpen typescript", "TypeScript" }, 49 | p = { "DevdocsOpen postgresql-15", "PostgreSQL" }, 50 | w = { "DevdocsOpen web_extensions", "Web extensions" }, 51 | x = { "DevdocsOpen tailwindcss", "Tailwind" }, 52 | z = { "DevdocsOpenCurrent", "Current language" }, 53 | }, { prefix = "z" }) 54 | end 55 | 56 | return { 57 | -- "luckasRanarison/nvim-devdocs", 58 | -- dependencies = { 59 | -- "nvim-lua/plenary.nvim", 60 | -- "nvim-telescope/telescope.nvim", 61 | -- "nvim-treesitter/nvim-treesitter", 62 | -- }, 63 | -- config = config, 64 | -- event = "VeryLazy", 65 | } 66 | -------------------------------------------------------------------------------- /dot_golangci.yml: -------------------------------------------------------------------------------- 1 | linters-settings: 2 | errcheck: 3 | check-type-assertions: true 4 | goconst: 5 | min-len: 2 6 | min-occurrences: 3 7 | gocritic: 8 | enabled-tags: 9 | - diagnostic 10 | - experimental 11 | - opinionated 12 | - performance 13 | - style 14 | goimports: 15 | local-prefixes: github.com/ayoisaiah/focus 16 | gomnd: 17 | settings: 18 | mnd: 19 | # don't include the "operation" and "assign" checks 20 | checks: argument,case,condition,return 21 | govet: 22 | check-shadowing: true 23 | enable: 24 | - fieldalignment 25 | nolintlint: 26 | require-explanation: true 27 | require-specific: true 28 | 29 | linters: 30 | disable-all: true 31 | enable: 32 | - bodyclose 33 | - dogsled 34 | - dupl 35 | - errcheck 36 | - errorlint 37 | - exportloopref 38 | - exhaustive 39 | - goconst 40 | - godot 41 | - gocritic 42 | - gofmt 43 | - goimports 44 | - gomnd 45 | - gocyclo 46 | - goprintffuncname 47 | - gosec 48 | - gosimple 49 | - govet 50 | - ineffassign 51 | - misspell 52 | - nakedret 53 | - nolintlint 54 | - prealloc 55 | - predeclared 56 | - revive 57 | - staticcheck 58 | - stylecheck 59 | - thelper 60 | - tparallel 61 | - unconvert 62 | - unparam 63 | - unused 64 | - whitespace 65 | - wsl 66 | 67 | issues: 68 | fix: true 69 | exclude-rules: 70 | - path: _test\.go # disable some linters for test files 71 | linters: 72 | - gocyclo 73 | - gosec 74 | - dupl 75 | - linters: 76 | - stylecheck 77 | text: 'error strings should not be capitalized' 78 | - linters: 79 | - typecheck 80 | text: 'has no field or method' 81 | - linters: 82 | - typecheck 83 | text: 'undeclared name' 84 | 85 | max-issues-per-linter: 0 86 | max-same-issues: 0 87 | 88 | run: 89 | issues-exit-code: 1 90 | -------------------------------------------------------------------------------- /private_dot_config/fish/variables.fish: -------------------------------------------------------------------------------- 1 | # Force tmux to start in utf8 https://github.com/wernight/powerline-web-fonts/issues/8 2 | set -gx LANG "en_US.UTF-8" 3 | set -gx LC_CTYPE "en_US.UTF-8" 4 | 5 | set -gx EDITOR nvim 6 | set -gx SYSTEMD_EDITOR $EDITOR 7 | set -gx VISUAL $EDITOR 8 | 9 | set -gx FZF_DEFAULT_COMMAND "fd --type file --hidden --follow --ignore-file '/home/ayo/.vimignore'" 10 | 11 | # Path stuff 12 | set PATH /usr/local/bin $PATH 13 | set -gx PATH $PATH "$HOME/bin" # temporary executables 14 | set -gx PATH "$HOME/.local/bin" $PATH 15 | 16 | # Go 17 | set -gx PATH $PATH /usr/local/go/bin 18 | set -gx PATH $PATH "$HOME/go/bin" 19 | set -gx GOBIN "$HOME/go/bin" 20 | set -gx GOPATH "$HOME/go" 21 | set -gx GOROOT /usr/local/go 22 | set -Ux GO111MODULE on 23 | 24 | # Rust 25 | set -gx PATH $PATH "/home/ayo/.cargo/bin" 26 | 27 | # Deno 28 | set -gx DENO_INSTALL "/home/ayo/.deno" 29 | set -gx PATH $PATH "$DENO_INSTALL/bin" 30 | 31 | # Bat 32 | set -gx BAT_THEME gruvbox-dark 33 | 34 | # Volta 35 | set -gx VOLTA_HOME "$HOME/.volta" 36 | set -gx PATH $PATH "$VOLTA_HOME/bin" 37 | 38 | set -gx PAGER less 39 | set -gx PSQL_PAGER "pspg -s 11" 40 | 41 | set -gx PATH $PATH "$HOME/.pub-cache/bin" 42 | 43 | set -gx PATH $PATH "$HOME/.bun/bin" 44 | 45 | # Flutter 46 | set -gx PATH "$HOME/.flutter/bin" $PATH 47 | 48 | # Mise 49 | set -gx MISE_NPM_BUN true 50 | 51 | # NVIM 52 | set -gx PATH "$HOME/.local/share/bob/nvim-bin" $PATH 53 | set -gx SUDO_EDITOR "/home/user/.local/share/bob/nvim-bin/nvim" 54 | 55 | # Android 56 | set -gx ANDROID_HOME "$HOME/Android" 57 | 58 | ## Fzf.fish 59 | set fzf_preview_dir_cmd eza --all --color=always 60 | 61 | set fzf_fd_opts --hidden --follow --ignore-file '/home/ayo/.vimignore' 62 | 63 | # The next line updates PATH for the Google Cloud SDK. 64 | if [ -f '/home/ayo/.local/bin/google-cloud-sdk/path.fish.inc' ] 65 | . '/home/ayo/.local/bin/google-cloud-sdk/path.fish.inc' 66 | end 67 | 68 | set -gx PNPM_HOME "/home/ayo/.local/share/pnpm" 69 | set -gx PATH "$PNPM_HOME" $PATH 70 | 71 | set -gx PATH $PATH "$HOME/.local/bin/depot-tools" 72 | 73 | set -gx PATH /home/ayo/.local/share/mise/shims $PATH 74 | 75 | set -x GPG_TTY (tty) 76 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/gitsigns.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local wk = require("which-key") 3 | local gs = require("gitsigns") 4 | 5 | gs.setup({ 6 | on_attach = function() 7 | local nextHunk = function() 8 | if vim.wo.diff then 9 | return "]h" 10 | end 11 | vim.schedule(function() 12 | gs.next_hunk() 13 | end) 14 | return "" 15 | end 16 | 17 | local prevHunk = function() 18 | if vim.wo.diff then 19 | return "[h" 20 | end 21 | vim.schedule(function() 22 | gs.prev_hunk() 23 | end) 24 | return "" 25 | end 26 | 27 | wk.add({ 28 | { "[", expr = true, group = "previous", replace_keycodes = false }, 29 | { "[h", prevHunk, desc = "Previous hunk", expr = true, replace_keycodes = false }, 30 | { "]", expr = true, group = "next", replace_keycodes = false }, 31 | { "]h", nextHunk, desc = "Next hunk", expr = true, replace_keycodes = false }, 32 | }) 33 | 34 | wk.add({ 35 | { "g", group = "Git" }, 36 | { "gS", gs.undo_stage_hunk, desc = "Undo stage hunk" }, 37 | { "gW", gs.reset_buffer, desc = "Reset stage buffer" }, 38 | { 39 | "gb", 40 | function() 41 | gs.blame_line({ full = true }) 42 | end, 43 | desc = "Blame line", 44 | }, 45 | { "gd", gs.diffthis, desc = "Diff current file" }, 46 | { "gp", gs.preview_hunk, desc = "Preview hunk" }, 47 | { "gr", gs.reset_hunk, desc = "Reset hunk" }, 48 | { "gs", gs.stage_hunk, desc = "Stage hunk" }, 49 | { "gw", gs.stage_buffer, desc = "Stage buffer" }, 50 | }) 51 | 52 | wk.add({ 53 | { 54 | mode = { "v" }, 55 | { "g", group = "Git" }, 56 | { 57 | "gs", 58 | function() 59 | gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) 60 | end, 61 | desc = "Stage hunk", 62 | }, 63 | { 64 | "gr", 65 | function() 66 | gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) 67 | end, 68 | desc = "Reset hunk", 69 | }, 70 | }, 71 | }) 72 | end, 73 | }) 74 | end 75 | 76 | return { 77 | "lewis6991/gitsigns.nvim", 78 | config = config, 79 | event = { "BufReadPost" }, 80 | } 81 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/mappings.lua: -------------------------------------------------------------------------------- 1 | -- This file is for custom key bindings for native vim functions 2 | 3 | local map = vim.api.nvim_set_keymap 4 | 5 | vim.g.mapleader = "," -- Change leader key from \ to , 6 | 7 | local opts = { silent = true } 8 | 9 | map("i", "", "", opts) 10 | map("n", "", "", opts) 11 | map("v", "", "", opts) 12 | 13 | map("i", "jj", "", opts) 14 | 15 | -- A saner way to save files 16 | map("n", "", ":w", opts) 17 | 18 | -- MOVING LINES 19 | map("n", "", ":m .+1==", opts) 20 | map("n", "", ":m .-2==", opts) 21 | map("v", "", ":m '>+1gv=gv", opts) 22 | map("v", "", ":m '<-2gv=gv", opts) 23 | 24 | -- turn off search highlighting 25 | map("n", "", ":nohlsearch", opts) 26 | 27 | -- execute current lua file 28 | map("n", "x", ":source %", opts) 29 | 30 | map("", "gf", ":e ", {}) -- Create the file under cursor 31 | 32 | -- Keep search matches in the middle of the screen 33 | map("n", "n", "nzz", opts) 34 | map("n", "N", "Nzz", opts) 35 | 36 | map("n", "", "h", opts) 37 | map("n", "", "l", opts) 38 | 39 | -- Disable Ex mode mapping 40 | map("n", "Q", "", opts) 41 | 42 | -- ":Q" as ":q" 43 | vim.cmd([[command! Qa :qa]]) 44 | vim.cmd([[command! Q :q]]) 45 | 46 | -- Copy and paste to the system clipboard 47 | map("n", "y", '"+y', opts) 48 | map("v", "y", '"+y', opts) 49 | map("n", "p", '"+p', opts) 50 | map("v", "p", '"+p', opts) 51 | map("n", "P", '"+P', opts) 52 | map("v", "P", '"+P', opts) 53 | 54 | map("n", "t", "PlenaryTestFile", opts) 55 | 56 | -- Tabs 57 | map("n", "1", "1gt", opts) 58 | map("n", "2", "2gt", opts) 59 | map("n", "3", "3gt", opts) 60 | map("n", "4", "4gt", opts) 61 | map("n", "5", "5gt", opts) 62 | map("n", "6", "6gt", opts) 63 | map("n", "", "tabnew", opts) 64 | map("n", "w", "tabclose", opts) 65 | 66 | -- TODO: Organize these sort of functions/mappings 67 | local function confirm_and_delete_buffer() 68 | local confirm = vim.fn.confirm("Delete buffer and file?", "&Yes\n&No", 2) 69 | 70 | if confirm == 1 then 71 | os.remove(vim.fn.expand("%")) 72 | vim.api.nvim_buf_delete(0, { force = true }) 73 | end 74 | end 75 | vim.keymap.set("n", "bd", confirm_and_delete_buffer) 76 | -------------------------------------------------------------------------------- /dot_tmux.conf: -------------------------------------------------------------------------------- 1 | # Remap binding from C-b to C-a 2 | unbind C-a 3 | unbind C-b 4 | set-option -g prefix C-a 5 | bind-key C-a send-prefix 6 | 7 | # Split panes 8 | bind C-v split-window -h -c "#{pane_current_path}" 9 | bind C-h split-window -v -c "#{pane_current_path}" 10 | unbind '"' 11 | unbind % 12 | 13 | # Mouse 14 | set -g mouse on 15 | 16 | # Use wl-copy 17 | set -s copy-command 'wl-copy' 18 | 19 | # Fix slow escape time 20 | set -s escape-time 0 21 | 22 | # Send focus events 23 | set -g focus-events on 24 | 25 | # 256 colours 26 | set-option -g default-terminal "xterm-256color" 27 | 28 | # Reload tmux config on the fly 29 | bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded" 30 | 31 | # Quickly open tmux config file 32 | bind-key M split-window -h "vim ~/.tmux.conf" 33 | 34 | # Switch between panes without using prefix 35 | bind -n M-h select-pane -L 36 | bind -n M-l select-pane -R 37 | bind -n M-k select-pane -U 38 | bind -n M-j select-pane -D 39 | 40 | # Reorder tmux windows 41 | bind-key -n S-Left swap-window -t -1 -d 42 | bind-key -n S-Right swap-window -t +1 -d 43 | 44 | # don't rename windows automatically 45 | set-option -g allow-rename off 46 | 47 | # Make sure window indexes remain sequential 48 | set-option -g renumber-windows on 49 | 50 | # Distinguish the active pane more clearly 51 | set -g pane-border-style 'fg=#666666,bg=default' 52 | set -g pane-active-border-style 'fg=#84C318,bg=default' 53 | 54 | # Start windows and panes at 2 not 0 55 | set -g base-index 1 56 | setw -g pane-base-index 1 57 | 58 | # Prompt to set window name on creation 59 | bind-key c command-prompt -p "window name:" "new-window; rename-window '%%'" 60 | 61 | # Undercurl https://github.com/folke/tokyonight.nvim#making-undercurls-work-properly-in-tmux 62 | set -g default-terminal "${TERM}" 63 | set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support 64 | set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colours - needs tmux-3.0 65 | 66 | set -g status-interval 1 67 | 68 | set -g @onedark_widgets "#(focus status)" 69 | 70 | # List of plugins 71 | set -g @plugin 'tmux-plugins/tpm' 72 | set -g @plugin 'tmux-plugins/tmux-resurrect' 73 | set -g @plugin 'tmux-plugins/tmux-continuum' 74 | set -g @plugin 'odedlaz/tmux-onedark-theme' 75 | 76 | # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) 77 | run -b '~/.tmux/plugins/tpm/tpm' 78 | 79 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lsp/gopls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | cmd = { 3 | "gopls", 4 | }, 5 | settings = { 6 | gopls = { 7 | gofumpt = true, 8 | codelenses = { 9 | gc_details = false, 10 | generate = true, 11 | regenerate_cgo = true, 12 | run_govulncheck = true, 13 | test = true, 14 | tidy = true, 15 | upgrade_dependency = true, 16 | vendor = true, 17 | }, 18 | hints = { 19 | assignVariableTypes = false, 20 | compositeLiteralFields = false, 21 | compositeLiteralTypes = false, 22 | constantValues = false, 23 | functionTypeParameters = false, 24 | parameterNames = false, 25 | rangeVariableTypes = false, 26 | }, 27 | analyses = { 28 | nilness = true, 29 | unusedparams = true, 30 | unusedwrite = true, 31 | useany = true, 32 | unreachable = true, 33 | modernize = true, 34 | stylecheck = true, 35 | appends = true, 36 | asmdecl = true, 37 | assign = true, 38 | atomic = true, 39 | bools = true, 40 | buildtag = true, 41 | cgocall = true, 42 | composite = true, 43 | contextcheck = true, 44 | deba = true, 45 | atomicalign = true, 46 | composites = true, 47 | copylocks = true, 48 | deepequalerrors = true, 49 | defers = true, 50 | deprecated = true, 51 | directive = true, 52 | embed = true, 53 | errorsas = true, 54 | fillreturns = true, 55 | framepointer = true, 56 | gofix = true, 57 | hostport = true, 58 | infertypeargs = true, 59 | lostcancel = true, 60 | httpresponse = true, 61 | ifaceassert = true, 62 | loopclosure = true, 63 | nilfunc = true, 64 | nonewvars = true, 65 | noresultvalues = true, 66 | printf = true, 67 | shadow = true, 68 | shift = true, 69 | sigchanyzer = true, 70 | simplifycompositelit = true, 71 | simplifyrange = true, 72 | simplifyslice = true, 73 | slog = true, 74 | sortslice = true, 75 | stdmethods = true, 76 | stdversion = true, 77 | stringintconv = true, 78 | structtag = true, 79 | testinggoroutine = true, 80 | tests = true, 81 | timeformat = true, 82 | unmarshal = true, 83 | unsafeptr = true, 84 | unusedfunc = true, 85 | unusedresult = true, 86 | waitgroup = true, 87 | yield = true, 88 | unusedvariable = true, 89 | }, 90 | usePlaceholders = true, 91 | completeUnimported = true, 92 | staticcheck = false, 93 | directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" }, 94 | semanticTokens = true, 95 | }, 96 | }, 97 | } 98 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-dap.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local dap = require("dap") 3 | local dapui = require("dapui") 4 | local wk = require("which-key") 5 | 6 | dap.configurations.go = {} 7 | 8 | dapui.setup() 9 | 10 | dap.listeners.after.event_initialized["dapui_config"] = function() 11 | dapui.open() 12 | end 13 | 14 | dap.listeners.before.event_terminated["dapui_config"] = function() 15 | dapui.close() 16 | end 17 | 18 | dap.listeners.before.event_exited["dapui_config"] = function() 19 | dapui.close() 20 | end 21 | 22 | -- TODO: Setup proper highlighting 23 | -- https://github.com/mfussenegger/nvim-dap/discussions/355 24 | 25 | vim.fn.sign_define("DapBreakpoint", { text = "🔴", texthl = "", linehl = "", numhl = "" }) 26 | vim.fn.sign_define("DapLogPoint", { text = "🔶", texthl = "", linehl = "", numhl = "" }) 27 | vim.fn.sign_define("DapRejected", { text = "🚫", texthl = "", linehl = "", numhl = "" }) 28 | vim.fn.sign_define("DapBreakpointCondition", { text = "🟥", texthl = "", linehl = "", numhl = "" }) 29 | vim.fn.sign_define("DapStopped", { text = "🛑", texthl = "", linehl = "", numhl = "" }) 30 | 31 | wk.add({ 32 | { "", "lua require('dap').step_over()", desc = "Step over" }, 33 | { "", "lua require('dap').step_into()", desc = "Step into" }, 34 | { "", "lua require('dap').step_out()", desc = "Step out" }, 35 | { "", "lua require('dap').continue()", desc = "Continue" }, 36 | }) 37 | 38 | wk.add({ 39 | { "d", group = "Debugger" }, 40 | { 41 | "db", 42 | "lua require('persistent-breakpoints.api').toggle_breakpoint()", 43 | desc = "Toggle breakpoint", 44 | }, 45 | { 46 | "dc", 47 | "lua require('persistent-breakpoints.api').set_conditional_breakpoint()", 48 | desc = "Set conditional breakpoint", 49 | }, 50 | { 51 | "dd", 52 | "lua require('persistent-breakpoints.api').clear_all_breakpoints()", 53 | desc = "Clear all breakpoints", 54 | }, 55 | { 56 | "dl", 57 | "lua require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: '))", 58 | desc = "Set logpoint", 59 | }, 60 | { "dr", "lua require('dap').restart()", desc = "Restart the debugging session" }, 61 | { "dx", "lua require('dap').terminate()", desc = "Terminate the debugging session" }, 62 | }) 63 | end 64 | 65 | return { 66 | "mfussenegger/nvim-dap", 67 | config = config, 68 | dependencies = { 69 | "LiadOz/nvim-dap-repl-highlights", 70 | "rcarriga/nvim-dap-ui", 71 | "leoluz/nvim-dap-go", 72 | "Weissle/persistent-breakpoints.nvim", 73 | }, 74 | } 75 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-lspconfig.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local wk = require("which-key") 3 | local builtin = require("telescope.builtin") 4 | 5 | wk.add({ 6 | { "l", group = "LSP" }, 7 | { "lW", builtin.lsp_dynamic_workspace_symbols, desc = "Dynamic workspace symbols" }, 8 | -- { "la", codeAction.code_action, desc = "Code actions" }, 9 | { "ld", vim.lsp.buf.definition, desc = "Go to definition" }, 10 | { "lf", vim.lsp.buf.format, desc = "Format buffer" }, 11 | { "li", builtin.lsp_incoming_calls, desc = "Incoming calls" }, 12 | { "lk", vim.lsp.buf.signature_help, desc = "Signature help" }, 13 | { 14 | "lm", 15 | function() 16 | builtin.lsp_document_symbols({ 17 | show_line = true, 18 | symbols = { "method", "function" }, 19 | }) 20 | end, 21 | desc = "Document methods and functions", 22 | }, 23 | { "lo", builtin.lsp_outgoing_calls, desc = "Outgoing calls" }, 24 | -- { "lp", definition.definition_preview, desc = "Preview symbol definition" }, 25 | { "lr", vim.lsp.buf.rename, desc = "Rename symbol" }, 26 | { 27 | "lt", 28 | function() 29 | builtin.lsp_document_symbols({ 30 | show_line = true, 31 | ignore_symbols = { "field" }, 32 | }) 33 | end, 34 | desc = "Document symbols", 35 | }, 36 | { 37 | "lv", 38 | function() 39 | builtin.lsp_document_symbols({ 40 | show_line = true, 41 | symbols = { "variable" }, 42 | }) 43 | end, 44 | desc = "Variables", 45 | }, 46 | { "lw", builtin.lsp_workspace_symbols, desc = "Workspace symbols" }, 47 | { "lx", builtin.diagnostics, desc = "Diagnostics in all open buffers" }, 48 | { 49 | "ly", 50 | function() 51 | builtin.diagnostics({ bufnr = 0 }) 52 | end, 53 | desc = "Diagnostics in current buffer", 54 | }, 55 | { "lz", builtin.lsp_references, desc = "Symbol references" }, 56 | -- { 57 | -- "la", 58 | -- codeAction.range_code_action, 59 | -- desc = "code action for the visual mode range", 60 | -- mode = "v", 61 | -- }, 62 | }) 63 | 64 | wk.add({ 65 | { "[", group = "previous" }, 66 | { "[c", vim.diagnostic.goto_prev, desc = "previous diagnostic" }, 67 | -- { "[r", ts.goto_prev_usage, desc = "Go to previous usage" }, 68 | { "]", group = "next" }, 69 | { "]c", vim.diagnostic.goto_next, desc = "Next diagnostic" }, 70 | -- { "]r", ts.goto_next_usage, desc = "Go to next usage" }, 71 | }) 72 | end 73 | 74 | return { 75 | "neovim/nvim-lspconfig", 76 | dependencies = { 77 | "mason-org/mason.nvim", 78 | "mason-org/mason-lspconfig.nvim", 79 | "WhoIsSethDaniel/mason-tool-installer.nvim", 80 | "saghen/blink.cmp", 81 | "j-hui/fidget.nvim", 82 | }, 83 | config = config, 84 | } 85 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/nvim-treesitter-textobjects.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("nvim-treesitter.configs").setup({ 3 | textobjects = { 4 | select = { 5 | enable = true, 6 | lookahead = true, 7 | keymaps = { 8 | ["aa"] = { query = "@assignment.outer", desc = "Select outer part of assignment" }, 9 | ["ia"] = { query = "@assignment.inner", desc = "Select inner part of assignment" }, 10 | ["lh"] = { query = "@assignment.lhs", desc = "Select left-hand side of assignment" }, 11 | ["rh"] = { query = "@assignment.rhs", desc = "Select right-hand side of assignment" }, 12 | ["af"] = { query = "@function.outer", desc = "Select outer part of a function" }, 13 | ["if"] = { query = "@function.inner", desc = "Select inner part of a function" }, 14 | ["ac"] = { query = "@class.outer", desc = "Select outer part of a class region" }, 15 | ["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" }, 16 | ["am"] = { query = "@comment.outer", desc = "Select outer part of a comment" }, 17 | ["im"] = { query = "@comment.inner", desc = "Select inner part of a comment" }, 18 | ["ab"] = { query = "@block.outer", desc = "Select outer part of a block" }, 19 | ["ib"] = { query = "@block.inner", desc = "Select inner part of a block" }, 20 | ["al"] = { query = "@loop.outer", desc = "Select outer part of a loop" }, 21 | ["il"] = { query = "@loop.inner", desc = "Select inner part of a loop" }, 22 | ["ap"] = { query = "@parameter.outer", desc = "Select outer part of parameters" }, 23 | ["ip"] = { query = "@parameter.inner", desc = "Select inner part of parameters" }, 24 | ["an"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" }, 25 | ["in"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" }, 26 | ["ar"] = { query = "@regex.outer", desc = "Select outer part of a regular expression" }, 27 | ["ir"] = { query = "@regex.inner", desc = "Select inner part of a regular expression" }, 28 | }, 29 | }, 30 | swap = { 31 | enable = true, 32 | swap_next = { 33 | ["a"] = "@parameter.inner", 34 | }, 35 | swap_previous = { 36 | ["A"] = "@parameter.inner", 37 | }, 38 | }, 39 | move = { 40 | enable = true, 41 | set_jumps = true, 42 | goto_next_start = { 43 | ["]f"] = { query = "@function.outer", desc = "Go to next function" }, 44 | ["]F"] = { query = "@function.inner", desc = "Go to next function inner" }, 45 | }, 46 | goto_previous_start = { 47 | ["[f"] = { query = "@function.outer", desc = "Go to previous function" }, 48 | ["[F"] = { query = "@function.inner", desc = "Go to previous function inner" }, 49 | }, 50 | }, 51 | }, 52 | }) 53 | end 54 | 55 | return { 56 | "nvim-treesitter/nvim-treesitter-textobjects", 57 | config = config, 58 | } 59 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/octo.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | require("octo").setup({ 3 | suppress_missing_scope = { 4 | projects_v2 = true, 5 | }, 6 | }) 7 | 8 | local wk = require("which-key") 9 | 10 | wk.add({ 11 | { "hi", group = "GitHub" }, 12 | { "hib", "Octo issue browser", desc = "Open the current issue in the browser" }, 13 | { "hic", "Octo issue create", desc = "Create a new issue" }, 14 | { "hie", "Octo issue edit", desc = "Edit an issue" }, 15 | { "hil", "Octo issue list", desc = "List current repo issues" }, 16 | { "hio", "Octo issue reopen", desc = "Reopen the current issue" }, 17 | { "hiu", "Octo issue url", desc = "Copy issue URL to clipboard" }, 18 | { "hix", "Octo issue close", desc = "Close the current issue" }, 19 | }) 20 | 21 | wk.add({ 22 | { "hs", group = "GitHub" }, 23 | { "hs+", "Octo reaction +1", desc = "Thumbs up" }, 24 | { "hs-", "Octo reaction -1", desc = "Thumbs down" }, 25 | { "hsc", "Octo reaction confused", desc = "Confused" }, 26 | { "hse", "Octo reaction eyes", desc = "Eyes" }, 27 | { "hsh", "Octo reaction heart", desc = "Heart" }, 28 | { "hsl", "Octo reaction laugh", desc = "Laugh" }, 29 | { "hsp", "Octo reaction party", desc = "Party" }, 30 | }) 31 | 32 | wk.add({ 33 | { "hp", group = "GitHub" }, 34 | { "hpc", "Octo pr changes", desc = "Show all PR changes (diffs)" }, 35 | { "hpe", "Octo label edit", desc = "Edit a PR" }, 36 | { "hph", "Octo pr checks", desc = "Show all PR checks" }, 37 | { "hpl", "Octo pr list", desc = "Select an issue label to add" }, 38 | { "hpr", "Octo pr reopen", desc = "Reopen the current PR" }, 39 | { "hpu", "Octo pr url", desc = "Copy PR url to clipboard" }, 40 | }) 41 | 42 | wk.add({ 43 | { "hl", group = "GitHub" }, 44 | { "hlA", "Octo label add", desc = "Add an issue label" }, 45 | { "hlR", "Octo label remove", desc = "Remove an issue label" }, 46 | { "hla", "Octo label add", desc = "Select an issue label to add" }, 47 | { "hlr", "Octo label remove", desc = "Select an issue label to remove" }, 48 | }) 49 | 50 | wk.add({ 51 | { "hr", group = "GitHub" }, 52 | { "hrc", "Octo review close", desc = "Close review and return to PR" }, 53 | { "hrr", "Octo review resume", desc = "Resume last review" }, 54 | { "hrs", "Octo review start", desc = "Start a review" }, 55 | }) 56 | end 57 | 58 | return { 59 | "pwntester/octo.nvim", 60 | dependencies = { 61 | "nvim-lua/plenary.nvim", 62 | "nvim-telescope/telescope.nvim", 63 | "DaikyXendo/nvim-web-devicons", 64 | }, 65 | config = config, 66 | event = "VeryLazy", 67 | } 68 | -------------------------------------------------------------------------------- /private_dot_config/kitty/scrollback.conf: -------------------------------------------------------------------------------- 1 | #: Scrollback {{{ 2 | 3 | # scrollback_lines 2000 4 | 5 | #: Number of lines of history to keep in memory for scrolling back. 6 | #: Memory is allocated on demand. Negative numbers are (effectively) 7 | #: infinite scrollback. Note that using very large scrollback is not 8 | #: recommended as it can slow down performance of the terminal and 9 | #: also use large amounts of RAM. Instead, consider using 10 | #: scrollback_pager_history_size. Note that on config reload if this 11 | #: is changed it will only affect newly created windows, not existing 12 | #: ones. 13 | 14 | # scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 15 | 16 | #: Program with which to view scrollback in a new window. The 17 | #: scrollback buffer is passed as STDIN to this program. If you change 18 | #: it, make sure the program you use can handle ANSI escape sequences 19 | #: for colors and text formatting. INPUT_LINE_NUMBER in the command 20 | #: line above will be replaced by an integer representing which line 21 | #: should be at the top of the screen. Similarly CURSOR_LINE and 22 | #: CURSOR_COLUMN will be replaced by the current cursor position or 23 | #: set to 0 if there is no cursor, for example, when showing the last 24 | #: command output. 25 | 26 | # scrollback_pager_history_size 0 27 | 28 | #: Separate scrollback history size (in MB), used only for browsing 29 | #: the scrollback buffer with pager. This separate buffer is not 30 | #: available for interactive scrolling but will be piped to the pager 31 | #: program when viewing scrollback buffer in a separate window. The 32 | #: current implementation stores the data in UTF-8, so approximatively 33 | #: 10000 lines per megabyte at 100 chars per line, for pure ASCII, 34 | #: unformatted text. A value of zero or less disables this feature. 35 | #: The maximum allowed size is 4GB. Note that on config reload if this 36 | #: is changed it will only affect newly created windows, not existing 37 | #: ones. 38 | 39 | # scrollback_fill_enlarged_window no 40 | 41 | #: Fill new space with lines from the scrollback buffer after 42 | #: enlarging a window. 43 | 44 | # wheel_scroll_multiplier 5.0 45 | 46 | #: Multiplier for the number of lines scrolled by the mouse wheel. 47 | #: Note that this is only used for low precision scrolling devices, 48 | #: not for high precision scrolling devices on platforms such as macOS 49 | #: and Wayland. Use negative numbers to change scroll direction. See 50 | #: also wheel_scroll_min_lines. 51 | 52 | # wheel_scroll_min_lines 1 53 | 54 | #: The minimum number of lines scrolled by the mouse wheel. The scroll 55 | #: multiplier only takes effect after it 56 | #: reaches this number. Note that this is only used for low precision 57 | #: scrolling devices like wheel mice that scroll by very small amounts 58 | #: when using the wheel. With a negative number, the minimum number of 59 | #: lines will always be added. 60 | 61 | # touch_scroll_multiplier 1.0 62 | 63 | #: Multiplier for the number of lines scrolled by a touchpad. Note 64 | #: that this is only used for high precision scrolling devices on 65 | #: platforms such as macOS and Wayland. Use negative numbers to change 66 | #: scroll direction. 67 | 68 | #: }}} 69 | -------------------------------------------------------------------------------- /private_dot_config/run-or-raise/shortcuts.conf: -------------------------------------------------------------------------------- 1 | # Here you list all the shortcuts. 2 | # 3 | # The shortcuts may be defined in two ways: 4 | # 5 | # 1. Run-or-raise form: shortcut,launch-command,[wm_class],[title] 6 | # * wm_class and title are optional and case sensitive 7 | # * if none is set, lowercased launch-command is compared with lowercased windows wm_classes and titles 8 | # 9 | # 2. Run only form: shortcut,calculate 10 | # 11 | # 12 | # ================= 13 | # Run or raise form 14 | # ================= 15 | # 16 | # 17 | # This line cycles any firefox window (matched by "firefox" in the window title) OR if not found, launches new firefox instance. 18 | #f,firefox,, 19 | # This line cycles any open gnome-terminal (matched by wm_class = Gnome-terminal on Ubuntu 17.10) OR if not found, launches new one. 20 | # If you're using Arch, you may want to match by wm_class = gnome-terminal-server , just check yourself by Alt+F2/lg/Windows 21 | a,chromium-browser,, 22 | b,flatpak run com.microsoft.Edge,Microsoft-edge, 23 | c,cursor-0.42.5-build-24111460bf2loz1-x86_64.AppImage,Cursor, 24 | d,flatpak run com.xnview.XnViewMP,XnViewMP, 25 | e,evince,evince, 26 | f,flatpak run org.mozilla.firefox,org.mozilla.firefox, 27 | g,flatpak run com.obsproject.Studio,com.obsproject.Studio, 28 | h,flatpak run com.github.johnfactotum.Foliate,Foliate, 29 | i,mullvad-browser,Mullvad Browser, 30 | j,flatpak run org.darktable.Darktable,Darktable,darktable 31 | k,flatpak run net.ankiweb.Anki,anki, 32 | l,flatpak run org.gnome.Lollypop,lollypop,, 33 | m,flatpak run com.brave.Browser,Brave-browser, 34 | n,nautilus,org.gnome.Nautilus, 35 | # o not working 36 | # p not working 37 | # q is used for ddterm 38 | r,nicotine,org.nicotine_plus.Nicotine, 39 | s,flatpak run com.spotify.Client,Spotify, 40 | t,flatpak run eu.betterbird.Betterbird,betterbird, 41 | u,gimp,gimp, 42 | v,vlc,, 43 | w,flatpak run com.mattjakeman.ExtensionManager,com.mattjakeman.ExtensionManager, 44 | x,kitty,kitty, 45 | y,gnome-control-center,gnome-control-center, 46 | z,flatpak run org.signal.Signal,Signal, 47 | 0,flatpak run md.obsidian.Obsidian,obsidian, 48 | F2,env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia resolve,resolve, 49 | F3,gnome-boxes,org.gnome.Boxes, 50 | F4,mpv,, 51 | 52 | 53 | # You may use regular expression in title or wm_class. 54 | # Just put the regular expression between slashes. 55 | # E.g. to jump to pidgin conversation window you may use this line 56 | # (that means any windows of wm_class Pidgin, not containing the title Buddy List)" 57 | # KP_1,pidgin,Pidgin,/^((?!Buddy List).)*$/ 58 | 59 | 60 | # Have the mail always at numpad-click. 61 | # KP_2,chromium-browser --app=https://mail.google.com/mail/u/0/#inbox 62 | 63 | 64 | # ============= 65 | # Run only form 66 | # ============= 67 | # 68 | # This line will launch notify-send command. 69 | # h,notify-send Hello world 70 | 71 | 72 | 73 | 74 | # Blank lines are allowed. Line starting with "#" means a comment. 75 | # Now delete these shortcuts and put here yours. 76 | # 77 | #How to know wm_class? Alt+f2, lg, "windows" tab (at least on Ubuntu 17.10) 78 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | local config = function() 2 | local wk = require("which-key") 3 | local telescope = require("telescope") 4 | local actions = require("telescope.actions") 5 | local vimignoreFile = os.getenv("HOME") .. "/.vimignore" 6 | local trouble = require("trouble.sources.telescope") 7 | local builtin = require("telescope.builtin") 8 | 9 | telescope.setup({ 10 | defaults = { 11 | vimgrep_arguments = { 12 | "rg", 13 | "--color=never", 14 | "--no-heading", 15 | "--with-filename", 16 | "--line-number", 17 | "--column", 18 | "--smart-case", 19 | "--ignore-file", 20 | vimignoreFile, 21 | }, 22 | mappings = { 23 | i = { 24 | [""] = actions.close, 25 | [""] = actions.move_selection_next, 26 | [""] = actions.move_selection_previous, 27 | [""] = actions.delete_buffer, 28 | [""] = actions.select_horizontal, 29 | [""] = trouble.open, 30 | }, 31 | n = { 32 | [""] = actions.close, 33 | [""] = trouble.open, 34 | }, 35 | }, 36 | }, 37 | pickers = { 38 | buffers = { 39 | ignore_current_buffer = true, 40 | sort_lastused = true, 41 | }, 42 | }, 43 | extensions = {}, 44 | }) 45 | 46 | telescope.load_extension("fzf") 47 | telescope.load_extension("dap") 48 | 49 | wk.add({ 50 | { "f", group = "Finder" }, 51 | { "f/", builtin.search_history, desc = "Search history" }, 52 | { "f:", builtin.commands, desc = "Search & execute commands" }, 53 | { "fb", builtin.buffers, desc = "Open buffers" }, 54 | { "fc", builtin.command_history, desc = "Command history" }, 55 | { "fd", "TodoTelescope", desc = "Todo items" }, 56 | { "ff", builtin.current_buffer_fuzzy_find, desc = "Fuzzy find in buffer" }, 57 | { "fg", builtin.live_grep, desc = "Live grep" }, 58 | { "fh", builtin.help_tags, desc = "Help tags" }, 59 | { "fk", builtin.keymaps, desc = "Keymaps" }, 60 | { "fl", builtin.loclist, desc = "Location list" }, 61 | { "fo", builtin.oldfiles, desc = "Previously open files" }, 62 | { "fq", builtin.quickfix, desc = "Quickfix list" }, 63 | { "fr", builtin.registers, desc = "Registers" }, 64 | { "fs", builtin.git_status, desc = "Git status" }, 65 | { "ft", builtin.tags, desc = "Project tags" }, 66 | { "fu", builtin.resume, desc = "Open results of last picker" }, 67 | { 68 | "", 69 | function() 70 | builtin.find_files({ 71 | hidden = true, 72 | find_command = { 73 | "fd", 74 | "--type", 75 | "file", 76 | "--hidden", 77 | "--follow", 78 | "--ignore-file", 79 | vimignoreFile, 80 | }, 81 | }) 82 | end, 83 | desc = "Find files", 84 | }, 85 | }) 86 | 87 | wk.add({ 88 | { "d", group = "Debugger" }, 89 | { "df", "Telescope dap frames", desc = "List frames" }, 90 | { "dg", "Telescope dap configurations", desc = "List configurations" }, 91 | { "dm", "Telescope dap commands", desc = "List dap commands" }, 92 | { "dp", "Telescope dap list_breakpoints", desc = "List breakpoints" }, 93 | { "dv", "Telescope dap variables", desc = "List variables" }, 94 | }) 95 | end 96 | 97 | return { 98 | "nvim-telescope/telescope.nvim", 99 | lazy = false, 100 | config = config, 101 | dependencies = { 102 | "nvim-lua/plenary.nvim", 103 | "nvim-treesitter/nvim-treesitter", 104 | "nvim-telescope/telescope-dap.nvim", 105 | "neovim/nvim-lspconfig", 106 | "DaikyXendo/nvim-web-devicons", 107 | { 108 | "nvim-telescope/telescope-fzf-native.nvim", 109 | build = "make", 110 | }, 111 | }, 112 | } 113 | -------------------------------------------------------------------------------- /private_dot_config/lf/colors: -------------------------------------------------------------------------------- 1 | # vim:ft=dircolors 2 | # (This is not a dircolors file but it helps to highlight colors and comments) 3 | 4 | # default values from dircolors 5 | # (entries with a leading # are not implemented in lf) 6 | # #no 00 # NORMAL 7 | # fi 00 # FILE 8 | # #rs 0 # RESET 9 | # di 01;34 # DIR 10 | # ln 01;36 # LINK 11 | # #mh 00 # MULTIHARDLINK 12 | # pi 40;33 # FIFO 13 | # so 01;35 # SOCK 14 | # #do 01;35 # DOOR 15 | # bd 40;33;01 # BLK 16 | # cd 40;33;01 # CHR 17 | # or 40;31;01 # ORPHAN 18 | # #mi 00 # MISSING 19 | # su 37;41 # SETUID 20 | # sg 30;43 # SETGID 21 | # #ca 30;41 # CAPABILITY 22 | # tw 30;42 # STICKY_OTHER_WRITABLE 23 | # ow 34;42 # OTHER_WRITABLE 24 | # st 37;44 # STICKY 25 | # ex 01;32 # EXEC 26 | 27 | # default values from lf (with matching order) 28 | # ln 01;36 # LINK 29 | # or 31;01 # ORPHAN 30 | # tw 01;34 # STICKY_OTHER_WRITABLE 31 | # ow 01;34 # OTHER_WRITABLE 32 | # st 01;34 # STICKY 33 | # di 01;34 # DIR 34 | # pi 33 # FIFO 35 | # so 01;35 # SOCK 36 | # bd 33;01 # BLK 37 | # cd 33;01 # CHR 38 | # su 01;32 # SETUID 39 | # sg 01;32 # SETGID 40 | # ex 01;32 # EXEC 41 | # fi 00 # FILE 42 | 43 | # file types (with matching order) 44 | ln 01;36 # LINK 45 | or 31;01 # ORPHAN 46 | tw 34 # STICKY_OTHER_WRITABLE 47 | ow 34 # OTHER_WRITABLE 48 | st 01;34 # STICKY 49 | di 01;34 # DIR 50 | pi 33 # FIFO 51 | so 01;35 # SOCK 52 | bd 33;01 # BLK 53 | cd 33;01 # CHR 54 | su 01;32 # SETUID 55 | sg 01;32 # SETGID 56 | ex 01;32 # EXEC 57 | fi 00 # FILE 58 | 59 | # archives or compressed (dircolors defaults) 60 | *.tar 01;31 61 | *.tgz 01;31 62 | *.arc 01;31 63 | *.arj 01;31 64 | *.taz 01;31 65 | *.lha 01;31 66 | *.lz4 01;31 67 | *.lzh 01;31 68 | *.lzma 01;31 69 | *.tlz 01;31 70 | *.txz 01;31 71 | *.tzo 01;31 72 | *.t7z 01;31 73 | *.zip 01;31 74 | *.z 01;31 75 | *.dz 01;31 76 | *.gz 01;31 77 | *.lrz 01;31 78 | *.lz 01;31 79 | *.lzo 01;31 80 | *.xz 01;31 81 | *.zst 01;31 82 | *.tzst 01;31 83 | *.bz2 01;31 84 | *.bz 01;31 85 | *.tbz 01;31 86 | *.tbz2 01;31 87 | *.tz 01;31 88 | *.deb 01;31 89 | *.rpm 01;31 90 | *.jar 01;31 91 | *.war 01;31 92 | *.ear 01;31 93 | *.sar 01;31 94 | *.rar 01;31 95 | *.alz 01;31 96 | *.ace 01;31 97 | *.zoo 01;31 98 | *.cpio 01;31 99 | *.7z 01;31 100 | *.rz 01;31 101 | *.cab 01;31 102 | *.wim 01;31 103 | *.swm 01;31 104 | *.dwm 01;31 105 | *.esd 01;31 106 | 107 | # image formats (dircolors defaults) 108 | *.jpg 01;35 109 | *.jpeg 01;35 110 | *.mjpg 01;35 111 | *.mjpeg 01;35 112 | *.gif 01;35 113 | *.bmp 01;35 114 | *.pbm 01;35 115 | *.pgm 01;35 116 | *.ppm 01;35 117 | *.tga 01;35 118 | *.xbm 01;35 119 | *.xpm 01;35 120 | *.tif 01;35 121 | *.tiff 01;35 122 | *.png 01;35 123 | *.svg 01;35 124 | *.svgz 01;35 125 | *.mng 01;35 126 | *.pcx 01;35 127 | *.mov 01;35 128 | *.mpg 01;35 129 | *.mpeg 01;35 130 | *.m2v 01;35 131 | *.mkv 01;35 132 | *.webm 01;35 133 | *.ogm 01;35 134 | *.mp4 01;35 135 | *.m4v 01;35 136 | *.mp4v 01;35 137 | *.vob 01;35 138 | *.qt 01;35 139 | *.nuv 01;35 140 | *.wmv 01;35 141 | *.asf 01;35 142 | *.rm 01;35 143 | *.rmvb 01;35 144 | *.flc 01;35 145 | *.avi 01;35 146 | *.fli 01;35 147 | *.flv 01;35 148 | *.gl 01;35 149 | *.dl 01;35 150 | *.xcf 01;35 151 | *.xwd 01;35 152 | *.yuv 01;35 153 | *.cgm 01;35 154 | *.emf 01;35 155 | *.ogv 01;35 156 | *.ogx 01;35 157 | 158 | # audio formats (dircolors defaults) 159 | *.aac 00;36 160 | *.au 00;36 161 | *.flac 00;36 162 | *.m4a 00;36 163 | *.mid 00;36 164 | *.midi 00;36 165 | *.mka 00;36 166 | *.mp3 00;36 167 | *.mpc 00;36 168 | *.ogg 00;36 169 | *.ra 00;36 170 | *.wav 00;36 171 | *.oga 00;36 172 | *.opus 00;36 173 | *.spx 00;36 174 | *.xspf 00;36 175 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/autocmds.lua: -------------------------------------------------------------------------------- 1 | local autocmd = vim.api.nvim_create_autocmd 2 | local augroup = vim.api.nvim_create_augroup 3 | local map = vim.api.nvim_buf_set_keymap 4 | local fn = vim.fn 5 | local o = vim.opt 6 | 7 | -- Customize buffer behaviour in different scenarios 8 | local bufferGroup = augroup("buffer", { 9 | clear = true, 10 | }) 11 | 12 | local envGroup = augroup("__env", { 13 | clear = true, 14 | }) 15 | 16 | local appearanceGroup = augroup("appearance", { 17 | clear = true, 18 | }) 19 | 20 | -- Terminal group 21 | local terminalGroup = augroup("terminal", { 22 | clear = true, 23 | }) 24 | 25 | autocmd("BufWritePost", { 26 | group = bufferGroup, 27 | pattern = vim.fn.expand("~") .. "/.local/share/chezmoi/*", 28 | command = "silent! !chezmoi apply --force", 29 | desc = "Auto update dotfiles", 30 | }) 31 | 32 | autocmd({ "BufRead", "BufNewFile" }, { 33 | group = bufferGroup, 34 | pattern = { "*.md", "*.txt" }, 35 | command = "setlocal spell", 36 | desc = "Spell check markdown files", 37 | }) 38 | 39 | autocmd("BufWritePre", { 40 | group = bufferGroup, 41 | pattern = "*", 42 | command = "%s/s+$//e", 43 | desc = "Strip trailing whitespace from all files", 44 | }) 45 | 46 | autocmd({ "BufEnter", "FocusGained", "InsertLeave" }, { 47 | group = bufferGroup, 48 | pattern = "*", 49 | command = "set relativenumber", 50 | desc = "Turn relative number on in normal mode", 51 | }) 52 | 53 | autocmd({ "BufLeave", "FocusLost", "InsertEnter" }, { 54 | group = bufferGroup, 55 | pattern = "*", 56 | command = "set norelativenumber", 57 | desc = "Turn relative number off in insert mode or when window loses focus", 58 | }) 59 | 60 | autocmd("FileType", { 61 | group = bufferGroup, 62 | pattern = { "gitcommit", "gitrebase" }, 63 | command = "startinsert | 1", 64 | desc = "Start git messages in insert mode", 65 | }) 66 | 67 | autocmd("TextYankPost", { 68 | group = bufferGroup, 69 | pattern = "*", 70 | callback = function() 71 | vim.highlight.on_yank({ timeout = 500 }) 72 | end, 73 | desc = "Highlight text briefly after yanking", 74 | }) 75 | 76 | autocmd("FileType", { 77 | group = bufferGroup, 78 | pattern = "*.md", 79 | callback = function() 80 | o.spell = true 81 | o.spelllang = { "en_us" } 82 | end, 83 | desc = "Enable spell checking in markdown files", 84 | }) 85 | 86 | autocmd("BufReadPost", { 87 | group = bufferGroup, 88 | pattern = "*", 89 | callback = function() 90 | if fn.line("'\"") > 0 and fn.line("'\"") <= fn.line("$") then 91 | fn.setpos(".", fn.getpos("'\"")) 92 | vim.cmd("normal zz") 93 | vim.cmd("silent! foldopen") 94 | end 95 | end, 96 | desc = "Return to last edit position when opening files", 97 | }) 98 | 99 | autocmd("FocusLost", { 100 | group = bufferGroup, 101 | pattern = "*", 102 | command = "silent! wa", 103 | desc = "Write all unsaved buffers when I unfocus the editor", 104 | }) 105 | 106 | autocmd("ColorScheme", { 107 | group = appearanceGroup, 108 | pattern = "*", 109 | command = "highlight VertSplit cterm=NONE ctermbg=76 ctermfg=16 gui=NONE guibg=#363646 guifg=#000000", 110 | desc = "highlight vertical split with a black on light grey background", 111 | }) 112 | 113 | autocmd("TermOpen", { 114 | group = terminalGroup, 115 | pattern = "term://*", 116 | callback = function() 117 | local opts = { noremap = true } 118 | map(0, "t", "", [[]], opts) 119 | map(0, "t", "jk", [[]], opts) 120 | map(0, "t", "", [[h]], opts) 121 | map(0, "t", "", [[j]], opts) 122 | map(0, "t", "", [[k]], opts) 123 | map(0, "t", "", [[l]], opts) 124 | end, 125 | desc = "Make it easy to move in and out of terminal while keeping it open", 126 | }) 127 | 128 | autocmd({ "BufEnter", "BufNewFile" }, { 129 | group = envGroup, 130 | pattern = "*.env", 131 | callback = function() 132 | vim.diagnostic.disable(0) 133 | vim.diagnostic.hide(nil, 0) 134 | vim.diagnostic.reset(nil, 0) 135 | -- lsp.buf_detach_client(bufnr, client.id) 136 | end, 137 | desc = "Disable diagnostics in .env files", 138 | }) 139 | 140 | autocmd({ "BufEnter", "BufNewFile" }, { 141 | group = bufferGroup, 142 | pattern = ".djlintrc", 143 | command = "set filetype=json", 144 | desc = "Highlight .djlintrc files as JSON", 145 | }) 146 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lua/settings.lua: -------------------------------------------------------------------------------- 1 | -- # ALIASES 2 | local g = vim.g 3 | local o = vim.opt 4 | local exec = vim.api.nvim_exec 5 | local jit = require("jit") 6 | 7 | -- More natural split opening. 8 | o.splitbelow = true 9 | o.splitright = true 10 | 11 | o.timeoutlen = 500 12 | o.cursorline = true 13 | 14 | o.cmdheight = 0 15 | o.shortmess = "nocI" 16 | o.showcmd = true -- Show leader key 17 | 18 | -- Tabs behaviour 19 | o.expandtab = true -- On pressing tab, insert 2 spaces 20 | o.tabstop = 2 -- show existing tab with 2 spaces width 21 | o.softtabstop = 2 22 | o.shiftwidth = 2 -- when indenting with '>', use 2 spaces width 23 | 24 | -- Toggle Hybrid Numbers in insert and normal mode 25 | o.relativenumber = true 26 | o.number = true -- Show line numbers 27 | 28 | g.noswapfile = true -- No swap file 29 | g.nobackup = true 30 | g.nowritebackup = true 31 | 32 | o.textwidth = 80 33 | o.formatoptions = o.formatoptions + "t" 34 | o.colorcolumn = o.colorcolumn + "+1" 35 | o.showmatch = true 36 | o.lazyredraw = true 37 | o.ffs = "unix" 38 | 39 | -- #FINDING FILES 40 | -- Use the `:find` command to fuzzy search files in the working directory 41 | -- The `:b` command can also be used to do the same for open buffers 42 | 43 | -- Search all subfolders 44 | o.path = o.path + "**" 45 | 46 | o.termguicolors = true -- enable 24-bit TUI colours 47 | 48 | -- Display matching files on tab complete 49 | o.wildmenu = true 50 | 51 | -- Ignore node_modules and images from search results 52 | o.wildignore = o.wildignore 53 | + "**/node_modules/**,**/dist/**,**_site/**,*.swp,*.png,*.jpg,*.gif,*.webp,*webm,*.ogg,*.dng,*.jpeg,*.map,*.woff*" 54 | 55 | -- Show Invisibles 56 | -- o.list = true 57 | -- o.listchars = "tab:→→,eol:¬,space:." 58 | o.list = true 59 | o.listchars = { 60 | tab = "⟩ ", 61 | trail = "+", 62 | precedes = "<", 63 | extends = ">", 64 | space = "·", 65 | nbsp = "␣", 66 | leadmultispace = "│ ", 67 | multispace = "│ ", 68 | } 69 | local function update_lead() 70 | local lcs = vim.opt_local.listchars:get() 71 | local tab = vim.fn.str2list(lcs.tab) 72 | local space = vim.fn.str2list(lcs.multispace or lcs.space) 73 | local lead = { tab[1] } 74 | for i = 1, vim.bo.tabstop - 1 do 75 | lead[#lead + 1] = space[i % #space + 1] 76 | end 77 | vim.opt_local.listchars:append({ leadmultispace = vim.fn.list2str(lead) }) 78 | end 79 | vim.api.nvim_create_autocmd("OptionSet", { pattern = { "listchars", "tabstop", "filetype" }, callback = update_lead }) 80 | vim.api.nvim_create_autocmd("VimEnter", { callback = update_lead, once = true }) 81 | 82 | -- Automatically hide buffer with unsaved changes without showing warning 83 | o.hidden = true 84 | 85 | -- Treat all numbers as decimal regardless of whether they are padded with zeros 86 | o.nrformats = "" 87 | 88 | -- Change case sensitivity behaviour 89 | o.ignorecase = true -- needed for smartcase to work 90 | o.smartcase = true -- make searches case insensitive except if uppercase charater is present 91 | 92 | o.updatetime = 100 93 | 94 | o.complete = o.complete + "kspell" -- Enable word completion 95 | o.completeopt = "menu,menuone,noselect" 96 | 97 | local shell = "/bin/bash" 98 | o.shell = shell 99 | g["$SHELL"] = shell 100 | 101 | g.loaded_matchit = 1 -- Disable matchit plugin 102 | 103 | -- Disable Netrw 104 | g.loaded_netrw = 1 105 | g.loaded_netrwPlugin = 1 106 | 107 | -- Disable python2 provider 108 | g.loaded_python_provider = 0 109 | g.python_host_prog = "" 110 | 111 | -- Templates 112 | -- Prefill new files created by vim with contents from the following templates 113 | exec( 114 | [[ 115 | augroup templates 116 | autocmd BufNewFile *.html 0r ~/.config/nvim/templates/skeleton.html 117 | autocmd BufNewFile *.scss 0r ~/.config/nvim/templates/skeleton.scss 118 | autocmd BufNewFile *.css 0r ~/.config/nvim/templates/skeleton.scss 119 | autocmd BufNewFile LICENCE 0r ~/.config/nvim/templates/skeleton.LICENCE 120 | autocmd BufNewFile LICENSE 0r ~/.config/nvim/templates/skeleton.LICENCE 121 | autocmd BufNewFile .gitignore 0r ~/.config/nvim/templates/skeleton.gitignore 122 | autocmd BufNewFile .stylelintrc.json 0r ~/.config/nvim/templates/skeleton.stylelintrc 123 | autocmd BufNewFile .eslintrc.json 0r ~/.config/nvim/templates/skeleton.eslintrc 124 | autocmd BufNewFile .prettierrc.json 0r ~/.config/nvim/templates/skeleton.prettierrc 125 | augroup END 126 | ]], 127 | false 128 | ) 129 | 130 | -- Customise vertical split highlighting 131 | exec( 132 | [[ 133 | :augroup MyColors 134 | : autocmd! 135 | : autocmd ColorScheme * highlight VertSplit cterm=NONE ctermbg=76 ctermfg=16 gui=NONE guibg=#363646 guifg=#000000 136 | augroup END 137 | ]], 138 | false 139 | ) 140 | 141 | vim.diagnostic.config({ float = { source = "always", border = border } }) 142 | -------------------------------------------------------------------------------- /private_dot_config/zellij/config.kdl: -------------------------------------------------------------------------------- 1 | keybinds clear-defaults=true { 2 | normal { 3 | bind "Ctrl a" { SwitchToMode "Tmux"; } 4 | } 5 | 6 | locked { 7 | bind "Ctrl g" { SwitchToMode "Normal"; } 8 | } 9 | 10 | resize { 11 | bind "q" { SwitchToMode "Normal"; } 12 | bind "h" "Left" { Resize "Increase Left"; } 13 | bind "j" "Down" { Resize "Increase Down"; } 14 | bind "k" "Up" { Resize "Increase Up"; } 15 | bind "l" "Right" { Resize "Increase Right"; } 16 | bind "H" { Resize "Decrease Left"; } 17 | bind "J" { Resize "Decrease Down"; } 18 | bind "K" { Resize "Decrease Up"; } 19 | bind "L" { Resize "Decrease Right"; } 20 | bind "=" "+" { Resize "Increase"; } 21 | bind "-" { Resize "Decrease"; } 22 | } 23 | 24 | move { 25 | bind "q" { SwitchToMode "Normal"; } 26 | bind "n" "Tab" { MovePane; } 27 | bind "p" { MovePaneBackwards; } 28 | bind "h" "Left" { MovePane "Left"; } 29 | bind "j" "Down" { MovePane "Down"; } 30 | bind "k" "Up" { MovePane "Up"; } 31 | bind "l" "Right" { MovePane "Right"; } 32 | } 33 | 34 | scroll { 35 | bind "q" { ScrollToBottom; SwitchToMode "Normal"; } 36 | bind "e" { EditScrollback; SwitchToMode "Normal"; } 37 | bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } 38 | bind "G" { ScrollToBottom; } 39 | bind "g" { ScrollToTop; } 40 | bind "j" "Down" { ScrollDown; } 41 | bind "k" "Up" { ScrollUp; } 42 | bind "f" "PageDown" { PageScrollDown; } 43 | bind "b" "PageUp" { PageScrollUp; } 44 | bind "d" { HalfPageScrollDown; } 45 | bind "u" { HalfPageScrollUp; } 46 | } 47 | 48 | search { 49 | bind "q" { SwitchToMode "Normal"; } 50 | bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } 51 | bind "j" "Down" { ScrollDown; } 52 | bind "k" "Up" { ScrollUp; } 53 | bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } 54 | bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } 55 | bind "d" { HalfPageScrollDown; } 56 | bind "u" { HalfPageScrollUp; } 57 | bind "n" { Search "down"; } 58 | bind "p" { Search "up"; } 59 | bind "c" { SearchToggleOption "CaseSensitivity"; } 60 | bind "w" { SearchToggleOption "Wrap"; } 61 | bind "o" { SearchToggleOption "WholeWord"; } 62 | } 63 | 64 | entersearch { 65 | bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } 66 | bind "Enter" { SwitchToMode "Search"; } 67 | } 68 | 69 | renametab { 70 | bind "Ctrl c" { SwitchToMode "Normal"; } 71 | bind "Esc" { UndoRenameTab; SwitchToMode "Tmux"; } 72 | } 73 | 74 | renamepane { 75 | bind "Ctrl c" { SwitchToMode "Normal"; } 76 | bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } 77 | } 78 | 79 | tmux { 80 | bind "[" { SwitchToMode "Scroll"; } 81 | bind "Ctrl a" { Write 2; SwitchToMode "Normal"; } 82 | bind "Ctrl g" { SwitchToMode "Locked"; } 83 | 84 | // Panes 85 | bind "Ctrl h" { NewPane "Down"; SwitchToMode "Normal"; } 86 | bind "Ctrl v" { NewPane "Right"; SwitchToMode "Normal"; } 87 | bind "Left" { MoveFocusOrTab "Left"; } 88 | bind "Right" { MoveFocusOrTab "Right"; } 89 | bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } 90 | bind "x" { CloseFocus; SwitchToMode "Normal"; } 91 | bind "m" { SwitchToMode "Move"; } 92 | bind "Ctrl r" { SwitchToMode "Resize"; } 93 | bind "c" { NewTab; } 94 | bind "o" { FocusNextPane; } 95 | bind "d" { Detach; } 96 | bind "Ctrl q" { Quit; } 97 | bind "r" { SwitchToMode "RenamePane"; PaneNameInput 0;} 98 | bind "t" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } 99 | bind "Space" { NextSwapLayout; } 100 | bind "s" { 101 | LaunchOrFocusPlugin "zellij:session-manager" { 102 | floating true 103 | move_to_focused_tab true 104 | }; 105 | SwitchToMode "Normal" 106 | } 107 | 108 | // Tabs 109 | bind "Tab" { ToggleTab; } 110 | bind "q" { CloseTab; SwitchToMode "Normal"; } 111 | bind "," { SwitchToMode "RenameTab"; TabNameInput 0; } 112 | bind "Ctrl s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } 113 | } 114 | 115 | shared_except "locked" { 116 | // Panes 117 | bind "Alt n" { NewPane; } 118 | bind "Alt w" { ToggleFloatingPanes; } 119 | bind "Alt h" "Alt Left" { MoveFocus "Left"; } 120 | bind "Alt l" "Alt Right" { MoveFocus "Right"; } 121 | bind "Alt j" "Alt Down" { MoveFocus "Down"; } 122 | bind "Alt k" "Alt Up" { MoveFocus "Up"; } 123 | bind "Alt d" { NewPane "Down"; } 124 | bind "Alt r" { NewPane "Right"; } 125 | 126 | // Tabs 127 | bind "Alt 1" { GoToTab 1; } 128 | bind "Alt 2" { GoToTab 2; } 129 | bind "Alt 3" { GoToTab 3; } 130 | bind "Alt 4" { GoToTab 4; } 131 | bind "Alt 5" { GoToTab 5; } 132 | bind "Alt 6" { GoToTab 6; } 133 | bind "Alt 7" { GoToTab 7; } 134 | bind "Alt 8" { GoToTab 8; } 135 | bind "Alt 9" { GoToTab 9; } 136 | bind "Alt i" { MoveTab "Left"; } 137 | bind "Alt o" { MoveTab "Right"; } 138 | bind "Ctrl n" { NewTab; SwitchToMode "RenameTab"; TabNameInput 0; } 139 | 140 | bind "Alt =" "Alt +" { Resize "Increase"; } 141 | bind "Alt -" { Resize "Decrease"; } 142 | bind "Alt [" { PreviousSwapLayout; } 143 | bind "Alt ]" { NextSwapLayout; } 144 | } 145 | 146 | shared_except "normal" "locked" { 147 | bind "Enter" "Esc" { SwitchToMode "Normal"; } 148 | } 149 | 150 | shared_except "tmux" "locked" { 151 | bind "Ctrl a" { SwitchToMode "Tmux"; } 152 | } 153 | } 154 | 155 | plugins { 156 | tab-bar location="zellij:tab-bar" 157 | status-bar location="zellij:status-bar" 158 | strider location="zellij:strider" 159 | compact-bar location="zellij:compact-bar" 160 | session-manager location="zellij:session-manager" 161 | welcome-screen location="zellij:session-manager" { 162 | welcome_screen true 163 | } 164 | filepicker location="zellij:strider" { 165 | cwd "/" 166 | } 167 | } 168 | 169 | themes { 170 | kanagawa { 171 | fg "#DCD7BA" 172 | bg "#1F1F28" 173 | red "#C34043" 174 | green "#76946A" 175 | yellow "#FF9E3B" 176 | blue "#7E9CD8" 177 | magenta "#957FB8" 178 | orange "#FFA066" 179 | cyan "#7FB4CA" 180 | black "#16161D" 181 | white "#DCD7BA" 182 | } 183 | } 184 | 185 | theme "kanagawa" 186 | 187 | default_layout "compact" 188 | -------------------------------------------------------------------------------- /private_dot_config/nvim/lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "LuaSnip": { "branch": "master", "commit": "0df29db3543837f8b41597f2640397c5ec792b7b" }, 3 | "auto-session": { "branch": "main", "commit": "3eb26b949e1b90798e84926848551046e2eb0721" }, 4 | "browser-bookmarks.nvim": { "branch": "main", "commit": "309cbf2cdb9ec04551553acd3dcd759d9e9f3840" }, 5 | "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, 6 | "cmp-fish": { "branch": "main", "commit": "8ae7bfb1b3251d433c4adf4e64396ef929fbd91f" }, 7 | "cmp-fuzzy-buffer": { "branch": "main", "commit": "ada6352bc7e3c32471ab6c08f954001870329de1" }, 8 | "cmp-fuzzy-path": { "branch": "master", "commit": "acdb3d74ff32325b6379e68686fe489c3da29b0a" }, 9 | "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, 10 | "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, 11 | "cmp-tmux": { "branch": "main", "commit": "97ec06b8030b8bf6d1fd83d49bdd16c98e04c845" }, 12 | "cmp-treesitter": { "branch": "master", "commit": "b8bc760dfcc624edd5454f0982b63786a822eed9" }, 13 | "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, 14 | "comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, 15 | "conform.nvim": { "branch": "master", "commit": "b36221f642a66e0813c061aa8a10cf1b533c8a0f" }, 16 | "conoline.vim": { "branch": "master", "commit": "95b6f03d026033e22e89525e4fcc7af30ea339a1" }, 17 | "fuzzy.nvim": { "branch": "master", "commit": "67a42ad2fa6d5ff41f0ef3cf69bb247410da5d7a" }, 18 | "git-messenger.vim": { "branch": "master", "commit": "8a61bdfa351d4df9a9118ee1d3f45edbed617072" }, 19 | "gitsigns.nvim": { "branch": "main", "commit": "ff01d34daaed72f271a8ffa088a7e839a60c640f" }, 20 | "glow.nvim": { "branch": "main", "commit": "5b38fb7b6e806cac62707a4aba8c10c5f14d5bb5" }, 21 | "go.nvim": { "branch": "master", "commit": "000a433b37dbaf43bc236b2f6abc925929a61370" }, 22 | "guihua.lua": { "branch": "master", "commit": "5ad8dba19ce9b9fd8965598984dfdc9c119f97e4" }, 23 | "headlines.nvim": { "branch": "master", "commit": "74a083a3c32a08be24f7dfcc6f448ecf47857f46" }, 24 | "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" }, 25 | "kanagawa.nvim": { "branch": "master", "commit": "c19b9023842697ec92caf72cd3599f7dd7be4456" }, 26 | "lazy.nvim": { "branch": "main", "commit": "276e572f645430bcfd6fd25faa301ea9077f6ab1" }, 27 | "lsp_lines.nvim": { "branch": "main", "commit": "9e3f99fbbd28aaec80dc0158c43be8cca8dd5017" }, 28 | "lsp_signature.nvim": { "branch": "master", "commit": "33250c84c7a552daf28ac607d9d9e82f88cd0907" }, 29 | "lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, 30 | "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, 31 | "neodev.nvim": { "branch": "main", "commit": "a4b6e7ca11ff5be2264d5c169fcedd97d8699ec4" }, 32 | "nvim-autopairs": { "branch": "master", "commit": "748e72c05495a3d30e88a6ef04b21697019a9aa9" }, 33 | "nvim-bqf": { "branch": "main", "commit": "8784eebf34371049b641646d00232c2603215297" }, 34 | "nvim-bufferline.lua": { "branch": "main", "commit": "d24378edc14a675c820a303b4512af3bbc5761e9" }, 35 | "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, 36 | "nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" }, 37 | "nvim-dap": { "branch": "master", "commit": "92dc531eea2c9a3ef504a5c8ac0decd1fa59a6a3" }, 38 | "nvim-dap-go": { "branch": "main", "commit": "a5cc8dcad43f0732585d4793deb02a25c4afb766" }, 39 | "nvim-dap-repl-highlights": { "branch": "master", "commit": "97a2b322c05cf945c5aabaad5e599a20b25e77d9" }, 40 | "nvim-dap-ui": { "branch": "master", "commit": "34160a7ce6072ef332f350ae1d4a6a501daf0159" }, 41 | "nvim-dap-virtual-text": { "branch": "master", "commit": "57f1dbd0458dd84a286b27768c142e1567f3ce3b" }, 42 | "nvim-devdocs": { "branch": "master", "commit": "7414d200c829acb05c1850264ba90232c1726079" }, 43 | "nvim-lint": { "branch": "master", "commit": "6d596b87862909370f4d1e6535cc9fad80c89fe6" }, 44 | "nvim-lspconfig": { "branch": "master", "commit": "8f3ddc448769f563248654a5099c943c7139137e" }, 45 | "nvim-surround": { "branch": "main", "commit": "1c2ef599abeeb98e40706830bcd27e90e259367a" }, 46 | "nvim-treesitter": { "branch": "master", "commit": "ad02fbcdfc391017cad462e04e4740d2887cfa2e" }, 47 | "nvim-treesitter-textobjects": { "branch": "master", "commit": "76c7a89b41de77a4f83fb77fa072c5ad7605fe3b" }, 48 | "nvim-ts-rainbow": { "branch": "master", "commit": "ef95c15a935f97c65a80e48e12fe72d49aacf9b9" }, 49 | "nvim-ufo": { "branch": "main", "commit": "f7eea53e88456403212df074b9aa3148a3908435" }, 50 | "nvim-web-devicons": { "branch": "master", "commit": "383420064dd2091cb3ace2c573daa9fa3cab63f9" }, 51 | "octo.nvim": { "branch": "master", "commit": "2fe8953461395161d15c648fd35042f0ad2c9288" }, 52 | "persistent-breakpoints.nvim": { "branch": "main", "commit": "db2ad5974b0435cb806cd287e7525219d6ac4bd3" }, 53 | "plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" }, 54 | "promise-async": { "branch": "main", "commit": "e94f35161b8c5d4a4ca3b6ff93dd073eb9214c0e" }, 55 | "session-lens": { "branch": "main", "commit": "1b65d8e1bcd1836c5135cce118ba18d662a9dabd" }, 56 | "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" }, 57 | "symbol-usage.nvim": { "branch": "main", "commit": "d1b5c5a5028dc48e3f4ae9978adfaac5b0bd2182" }, 58 | "tabular": { "branch": "master", "commit": "339091ac4dd1f17e225fe7d57b48aff55f99b23a" }, 59 | "telescope-dap.nvim": { "branch": "master", "commit": "4e2d5efb92062f0b865fe59b200b5ed7793833bf" }, 60 | "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, 61 | "telescope.nvim": { "branch": "master", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" }, 62 | "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" }, 63 | "toggleterm.nvim": { "branch": "main", "commit": "c80844fd52ba76f48fabf83e2b9f9b93273f418d" }, 64 | "tree-sitter-just": { "branch": "main", "commit": "4e5f5f3ff37b12a1bbf664eb3966b3019e924594" }, 65 | "trouble.nvim": { "branch": "main", "commit": "02219b557d4726a789be58c5d6bd6e139c46a9fe" }, 66 | "vim-bbye": { "branch": "master", "commit": "25ef93ac5a87526111f43e5110675032dbcacf56" }, 67 | "vim-fugitive": { "branch": "master", "commit": "cbe9dfa162c178946afa689dd3f42d4ea8bf89c1" }, 68 | "vim-gutentags": { "branch": "master", "commit": "aa47c5e29c37c52176c44e61c780032dfacef3dd" }, 69 | "vim-rails": { "branch": "master", "commit": "1ad9663ce31e8c08134849d04184cda94bb42aba" }, 70 | "vim-repeat": { "branch": "master", "commit": "24afe922e6a05891756ecf331f39a1f6743d3d5a" }, 71 | "vim-rooter": { "branch": "master", "commit": "1353fa47ee3a81083c284e28ff4f7d92655d7c9e" }, 72 | "vim-unimpaired": { "branch": "master", "commit": "6d44a6dc2ec34607c41ec78acf81657248580bf1" }, 73 | "vim-wakatime": { "branch": "master", "commit": "8def67a31eed4b4de3144cb8b2fc96b5e002f883" }, 74 | "which-key.nvim": { "branch": "main", "commit": "bf09a25bdc9a83bcc69d2cf078e680368676513b" } 75 | } 76 | -------------------------------------------------------------------------------- /.tags: -------------------------------------------------------------------------------- 1 | !_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/ 2 | !_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/ 3 | !_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/ 4 | !_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/ 5 | !_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/ 6 | !_TAG_FIELD_DESCRIPTION file /File-restricted scoping/ 7 | !_TAG_FIELD_DESCRIPTION input /input file/ 8 | !_TAG_FIELD_DESCRIPTION name /tag name/ 9 | !_TAG_FIELD_DESCRIPTION pattern /pattern/ 10 | !_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/ 11 | !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ 12 | !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ 13 | !_TAG_KIND_DESCRIPTION!Lua f,function /functions/ 14 | !_TAG_OUTPUT_EXCMD number /number, pattern, mixed, or combineV2/ 15 | !_TAG_OUTPUT_FILESEP slash /slash or backslash/ 16 | !_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ 17 | !_TAG_OUTPUT_VERSION 0.0 /current.age/ 18 | !_TAG_PARSER_VERSION!Lua 0.0 /current.age/ 19 | !_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ 20 | !_TAG_PROC_CWD /home/ayo/.local/share/chezmoi/ // 21 | !_TAG_PROGRAM_AUTHOR Universal Ctags Team // 22 | !_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ 23 | !_TAG_PROGRAM_URL https://ctags.io/ /official site/ 24 | !_TAG_PROGRAM_VERSION 6.0.0 // 25 | Lazygit_toggle private_dot_config/nvim/lua/plugins/toggleterm.lua 21;" f 26 | Lazygit_toggle tags 110;" f 27 | P private_dot_config/nvim/lua/functions.lua 1;" f 28 | [""] private_dot_config/nvim/lua/plugins/nvim-cmp.lua 67;" f 29 | [""] tags 113;" f 30 | [""] private_dot_config/nvim/lua/plugins/nvim-cmp.lua 55;" f 31 | [""] tags 114;" f 32 | ["af"] private_dot_config/nvim/lua/plugins/nvim-treesitter-textobjects.lua 9;" f 33 | ["af"] tags 115;" f 34 | ["if"] private_dot_config/nvim/lua/plugins/nvim-treesitter-textobjects.lua 10;" f 35 | ["if"] tags 116;" f 36 | callback private_dot_config/nvim/lua/autocmds.lua 113;" f 37 | callback private_dot_config/nvim/lua/autocmds.lua 57;" f 38 | callback private_dot_config/nvim/lua/autocmds.lua 66;" f 39 | callback private_dot_config/nvim/lua/autocmds.lua 76;" f 40 | callback private_dot_config/nvim/lua/plugins/null-ls.lua 24;" f 41 | callback tags 181;" f 42 | callback tags 182;" f 43 | config private_dot_config/nvim/lua/plugins/auto-session.lua 1;" f 44 | config private_dot_config/nvim/lua/plugins/comment.lua 3;" f 45 | config private_dot_config/nvim/lua/plugins/conform-nvim.lua 1;" f 46 | config private_dot_config/nvim/lua/plugins/gitsigns.lua 1;" f 47 | config private_dot_config/nvim/lua/plugins/go-nvim.lua 1;" f 48 | config private_dot_config/nvim/lua/plugins/headlines.lua 4;" f 49 | config private_dot_config/nvim/lua/plugins/indent-blankline.lua 1;" f 50 | config private_dot_config/nvim/lua/plugins/kanagawa.lua 1;" f 51 | config private_dot_config/nvim/lua/plugins/lsp_lines.lua 3;" f 52 | config private_dot_config/nvim/lua/plugins/lsp_signature.lua 3;" f 53 | config private_dot_config/nvim/lua/plugins/lualine.lua 1;" f 54 | config private_dot_config/nvim/lua/plugins/luasnip.lua 1;" f 55 | config private_dot_config/nvim/lua/plugins/navigator.lua 1;" f 56 | config private_dot_config/nvim/lua/plugins/null-ls.lua 1;" f 57 | config private_dot_config/nvim/lua/plugins/nvim-autopairs.lua 1;" f 58 | config private_dot_config/nvim/lua/plugins/nvim-bufferline.lua 1;" f 59 | config private_dot_config/nvim/lua/plugins/nvim-cmp.lua 1;" f 60 | config private_dot_config/nvim/lua/plugins/nvim-colorizer.lua 3;" f 61 | config private_dot_config/nvim/lua/plugins/nvim-dap-go.lua 1;" f 62 | config private_dot_config/nvim/lua/plugins/nvim-dap-virtual-text.lua 3;" f 63 | config private_dot_config/nvim/lua/plugins/nvim-dap.lua 1;" f 64 | config private_dot_config/nvim/lua/plugins/nvim-devdocs.lua 1;" f 65 | config private_dot_config/nvim/lua/plugins/nvim-surround.lua 1;" f 66 | config private_dot_config/nvim/lua/plugins/nvim-treesitter-textobjects.lua 2;" f 67 | config private_dot_config/nvim/lua/plugins/nvim-ts-rainbow.lua 3;" f 68 | config private_dot_config/nvim/lua/plugins/nvim-ufo.lua 2;" f 69 | config private_dot_config/nvim/lua/plugins/octo.lua 1;" f 70 | config private_dot_config/nvim/lua/plugins/persistent-breakpoints.lua 3;" f 71 | config private_dot_config/nvim/lua/plugins/telescope.lua 1;" f 72 | config private_dot_config/nvim/lua/plugins/todo-comments.lua 3;" f 73 | config private_dot_config/nvim/lua/plugins/toggleterm.lua 1;" f 74 | config private_dot_config/nvim/lua/plugins/treesitter.lua 1;" f 75 | config private_dot_config/nvim/lua/plugins/trouble.lua 3;" f 76 | config private_dot_config/nvim/lua/plugins/vim-bbye.lua 3;" f 77 | config private_dot_config/nvim/lua/plugins/vim-fugitive.lua 1;" f 78 | config private_dot_config/nvim/lua/plugins/vim-gutentags.lua 3;" f 79 | config private_dot_config/nvim/lua/plugins/vim-rooter.lua 1;" f 80 | config private_dot_config/nvim/lua/plugins/which-key.lua 1;" f 81 | config tags 254;" f 82 | config tags 255;" f 83 | config tags 256;" f 84 | config tags 257;" f 85 | config tags 258;" f 86 | config tags 259;" f 87 | config tags 260;" f 88 | config tags 261;" f 89 | config tags 262;" f 90 | config tags 263;" f 91 | config tags 264;" f 92 | config tags 265;" f 93 | config tags 266;" f 94 | config tags 267;" f 95 | config tags 268;" f 96 | config tags 269;" f 97 | config tags 270;" f 98 | config tags 271;" f 99 | config tags 272;" f 100 | config tags 273;" f 101 | config tags 274;" f 102 | config tags 275;" f 103 | config tags 276;" f 104 | config tags 277;" f 105 | config tags 278;" f 106 | config tags 279;" f 107 | config tags 280;" f 108 | config tags 281;" f 109 | config tags 282;" f 110 | config tags 283;" f 111 | config tags 284;" f 112 | config tags 285;" f 113 | config tags 286;" f 114 | config tags 287;" f 115 | config tags 288;" f 116 | config tags 289;" f 117 | config tags 290;" f 118 | config tags 291;" f 119 | confirm_and_delete_buffer private_dot_config/nvim/lua/mappings.lua 65;" f 120 | confirm_and_delete_buffer tags 292;" f 121 | event_exited["dapui_config"] private_dot_config/nvim/lua/plugins/nvim-dap.lua 16;" f unknown:dap.listeners.before 122 | event_exited["dapui_config"] tags 305;" f unknown:dap.listeners.before 123 | event_initialized["dapui_config"] private_dot_config/nvim/lua/plugins/nvim-dap.lua 8;" f unknown:dap.listeners.after 124 | event_initialized["dapui_config"] tags 306;" f unknown:dap.listeners.after 125 | event_terminated["dapui_config"] private_dot_config/nvim/lua/plugins/nvim-dap.lua 12;" f unknown:dap.listeners.before 126 | event_terminated["dapui_config"] tags 307;" f unknown:dap.listeners.before 127 | expand private_dot_config/nvim/lua/plugins/nvim-cmp.lua 46;" f 128 | expand tags 308;" f 129 | filter private_dot_config/nvim/lua/plugins/null-ls.lua 8;" f 130 | filter tags 315;" f 131 | has_words_before private_dot_config/nvim/lua/plugins/nvim-cmp.lua 8;" f 132 | has_words_before tags 323;" f 133 | lsp_formatting private_dot_config/nvim/lua/plugins/null-ls.lua 6;" f 134 | lsp_formatting tags 335;" f 135 | map private_dot_config/nvim/lua/plugins/gitsigns.lua 6;" f 136 | map tags 342;" f 137 | on_attach private_dot_config/nvim/lua/plugins/gitsigns.lua 3;" f 138 | on_attach private_dot_config/nvim/lua/plugins/null-ls.lua 18;" f 139 | on_attach tags 370;" f 140 | on_attach tags 371;" f 141 | overrides private_dot_config/nvim/lua/plugins/kanagawa.lua 22;" f 142 | overrides tags 373;" f 143 | provider_selector private_dot_config/nvim/lua/plugins/nvim-ufo.lua 14;" f 144 | provider_selector tags 383;" f 145 | set_terminal_keymaps private_dot_config/nvim/lua/plugins/toggleterm.lua 25;" f unknown:_G 146 | set_terminal_keymaps tags 386;" f unknown:_G 147 | show_line private_dot_config/nvim/lua/plugins/navigator.lua 93;" f 148 | show_line private_dot_config/nvim/lua/plugins/telescope.lua 59;" f 149 | -------------------------------------------------------------------------------- /private_dot_config/kitty/fonts.conf: -------------------------------------------------------------------------------- 1 | #: Fonts {{{ 2 | 3 | #: kitty has very powerful font management. You can configure 4 | #: individual font faces and even specify special fonts for particular 5 | #: characters. 6 | 7 | font_family JetBrains Mono 8 | # bold_font auto 9 | italic_font Cascadia Code Italic 10 | bold_italic_font Cascadia Code Bold Italic 11 | 12 | #: You can specify different fonts for the bold/italic/bold-italic 13 | #: variants. To get a full list of supported fonts use the `kitty 14 | #: +list-fonts` command. By default they are derived automatically, by 15 | #: the OSes font system. When bold_font or bold_italic_font is set to 16 | #: auto on macOS, the priority of bold fonts is semi-bold, bold, 17 | #: heavy. Setting them manually is useful for font families that have 18 | #: many weight variants like Book, Medium, Thick, etc. For example:: 19 | 20 | #: font_family Operator Mono Book 21 | #: bold_font Operator Mono Medium 22 | #: italic_font Operator Mono Book Italic 23 | #: bold_italic_font Operator Mono Medium Italic 24 | 25 | font_size 10.0 26 | 27 | #: Font size (in pts) 28 | 29 | # force_ltr no 30 | 31 | #: kitty does not support BIDI (bidirectional text), however, for RTL 32 | #: scripts, words are automatically displayed in RTL. That is to say, 33 | #: in an RTL script, the words "HELLO WORLD" display in kitty as 34 | #: "WORLD HELLO", and if you try to select a substring of an RTL- 35 | #: shaped string, you will get the character that would be there had 36 | #: the the string been LTR. For example, assuming the Hebrew word 37 | #: ירושלים, selecting the character that on the screen appears to be ם 38 | #: actually writes into the selection buffer the character י. kitty's 39 | #: default behavior is useful in conjunction with a filter to reverse 40 | #: the word order, however, if you wish to manipulate RTL glyphs, it 41 | #: can be very challenging to work with, so this option is provided to 42 | #: turn it off. Furthermore, this option can be used with the command 43 | #: line program GNU FriBidi 44 | #: to get BIDI 45 | #: support, because it will force kitty to always treat the text as 46 | #: LTR, which FriBidi expects for terminals. 47 | 48 | # adjust_line_height 0 49 | # adjust_column_width 0 50 | 51 | #: Change the size of each character cell kitty renders. You can use 52 | #: either numbers, which are interpreted as pixels or percentages 53 | #: (number followed by %), which are interpreted as percentages of the 54 | #: unmodified values. You can use negative pixels or percentages less 55 | #: than 100% to reduce sizes (but this might cause rendering 56 | #: artifacts). 57 | 58 | # adjust_baseline 0 59 | 60 | #: Adjust the vertical alignment of text (the height in the cell at 61 | #: which text is positioned). You can use either numbers, which are 62 | #: interpreted as pixels or percentages (number followed by %), which 63 | #: are interpreted as the percentage of the line height. A positive 64 | #: value moves the baseline up, and a negative value moves them down. 65 | #: The underline and strikethrough positions are adjusted accordingly. 66 | 67 | # symbol_map 68 | symbol_map U+E5FA-U+E62B,U+E700-U+E7C5,U+F000-U+F2E0,U+E200-U+E2A9,U+E0A3,U+E0B4-U+E0C8,U+E0CA,U+E0CC-U+E0D2,U+E0D4,U+f500-U+fd46 CaskaydiaCove Nerd Font 69 | #: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols 70 | 71 | #: Map the specified Unicode codepoints to a particular font. Useful 72 | #: if you need special rendering for some symbols, such as for 73 | #: Powerline. Avoids the need for patched fonts. Each Unicode code 74 | #: point is specified in the form `U+`. You 75 | #: can specify multiple code points, separated by commas and ranges 76 | #: separated by hyphens. This option can be specified multiple times. 77 | #: The syntax is:: 78 | 79 | #: symbol_map codepoints Font Family Name 80 | 81 | # narrow_symbols 82 | 83 | #: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 84 | 85 | #: Usually, for Private Use Unicode characters and some symbol/dingbat 86 | #: characters, if the character is followed by one or more spaces, 87 | #: kitty will use those extra cells to render the character larger, if 88 | #: the character in the font has a wide aspect ratio. Using this 89 | #: option you can force kitty to restrict the specified code points to 90 | #: render in the specified number of cells (defaulting to one cell). 91 | #: This option can be specified multiple times. The syntax is:: 92 | 93 | #: narrow_symbols codepoints [optionally the number of cells] 94 | 95 | disable_ligatures cursor 96 | 97 | #: Choose how you want to handle multi-character ligatures. The 98 | #: default is to always render them. You can tell kitty to not render 99 | #: them when the cursor is over them by using cursor to make editing 100 | #: easier, or have kitty never render them at all by using always, if 101 | #: you don't like them. The ligature strategy can be set per-window 102 | #: either using the kitty remote control facility or by defining 103 | #: shortcuts for it in kitty.conf, for example:: 104 | 105 | #: map alt+1 disable_ligatures_in active always 106 | #: map alt+2 disable_ligatures_in all never 107 | #: map alt+3 disable_ligatures_in tab cursor 108 | 109 | #: Note that this refers to programming ligatures, typically 110 | #: implemented using the calt OpenType feature. For disabling general 111 | #: ligatures, use the font_features option. 112 | 113 | # font_features 114 | 115 | #: E.g. font_features none 116 | 117 | #: Choose exactly which OpenType features to enable or disable. This 118 | #: is useful as some fonts might have features worthwhile in a 119 | #: terminal. For example, Fira Code includes a discretionary feature, 120 | #: zero, which in that font changes the appearance of the zero (0), to 121 | #: make it more easily distinguishable from Ø. Fira Code also includes 122 | #: other discretionary features known as Stylistic Sets which have the 123 | #: tags ss01 through ss20. 124 | 125 | #: For the exact syntax to use for individual features, see the 126 | #: HarfBuzz documentation . 128 | 129 | #: Note that this code is indexed by PostScript name, and not the font 130 | #: family. This allows you to define very precise feature settings; 131 | #: e.g. you can disable a feature in the italic font but not in the 132 | #: regular font. 133 | 134 | #: On Linux, font features are first read from the FontConfig database 135 | #: and then this option is applied, so they can be configured in a 136 | #: single, central place. 137 | 138 | #: To get the PostScript name for a font, use `kitty +list-fonts 139 | #: --psnames`: 140 | 141 | #: .. code-block:: sh 142 | 143 | #: $ kitty +list-fonts --psnames | grep Fira 144 | #: Fira Code 145 | #: Fira Code Bold (FiraCode-Bold) 146 | #: Fira Code Light (FiraCode-Light) 147 | #: Fira Code Medium (FiraCode-Medium) 148 | #: Fira Code Regular (FiraCode-Regular) 149 | #: Fira Code Retina (FiraCode-Retina) 150 | 151 | #: The part in brackets is the PostScript name. 152 | 153 | #: Enable alternate zero and oldstyle numerals:: 154 | 155 | #: font_features FiraCode-Retina +zero +onum 156 | 157 | #: Enable only alternate zero in the bold font:: 158 | 159 | #: font_features FiraCode-Bold +zero 160 | 161 | #: Disable the normal ligatures, but keep the calt feature which (in 162 | #: this font) breaks up monotony:: 163 | 164 | #: font_features TT2020StyleB-Regular -liga +calt 165 | 166 | #: In conjunction with force_ltr, you may want to disable Arabic 167 | #: shaping entirely, and only look at their isolated forms if they 168 | #: show up in a document. You can do this with e.g.:: 169 | 170 | #: font_features UnifontMedium +isol -medi -fina -init 171 | 172 | # box_drawing_scale 0.001, 1, 1.5, 2 173 | 174 | #: The sizes of the lines used for the box drawing Unicode characters. 175 | #: These values are in pts. They will be scaled by the monitor DPI to 176 | #: arrive at a pixel value. There must be four values corresponding to 177 | #: thin, normal, thick, and very thick lines. 178 | 179 | #: }}} 180 | -------------------------------------------------------------------------------- /private_dot_config/lf/icons: -------------------------------------------------------------------------------- 1 | # vim:ft=conf 2 | 3 | # These examples require Nerd Fonts or a compatible font to be used. 4 | # See https://www.nerdfonts.com for more information. 5 | 6 | # default values from lf (with matching order) 7 | # ln l # LINK 8 | # or l # ORPHAN 9 | # tw t # STICKY_OTHER_WRITABLE 10 | # ow d # OTHER_WRITABLE 11 | # st t # STICKY 12 | # di d # DIR 13 | # pi p # FIFO 14 | # so s # SOCK 15 | # bd b # BLK 16 | # cd c # CHR 17 | # su u # SETUID 18 | # sg g # SETGID 19 | # ex x # EXEC 20 | # fi - # FILE 21 | 22 | # file types (with matching order) 23 | ln  # LINK 24 | or  # ORPHAN 25 | tw t # STICKY_OTHER_WRITABLE 26 | ow  # OTHER_WRITABLE 27 | st t # STICKY 28 | di  # DIR 29 | pi p # FIFO 30 | so s # SOCK 31 | bd b # BLK 32 | cd c # CHR 33 | su u # SETUID 34 | sg g # SETGID 35 | ex  # EXEC 36 | fi  # FILE 37 | 38 | # file extensions (vim-devicons) 39 | *.styl  40 | *.sass  41 | *.scss  42 | *.htm  43 | *.html  44 | *.slim  45 | *.haml  46 | *.ejs  47 | *.css  48 | *.less  49 | *.md  50 | *.mdx  51 | *.markdown  52 | *.rmd  53 | *.json  54 | *.webmanifest  55 | *.js  56 | *.mjs  57 | *.jsx  58 | *.rb  59 | *.gemspec  60 | *.rake  61 | *.php  62 | *.py  63 | *.pyc  64 | *.pyo  65 | *.pyd  66 | *.coffee  67 | *.mustache  68 | *.hbs  69 | *.conf  70 | *.ini  71 | *.yml  72 | *.yaml  73 | *.toml  74 | *.bat  75 | *.mk  76 | *.jpg  77 | *.jpeg  78 | *.bmp  79 | *.png  80 | *.webp  81 | *.gif  82 | *.ico  83 | *.twig  84 | *.cpp  85 | *.c++  86 | *.cxx  87 | *.cc  88 | *.cp  89 | *.c  90 | *.cs  91 | *.h  92 | *.hh  93 | *.hpp  94 | *.hxx  95 | *.hs  96 | *.lhs  97 | *.nix  98 | *.lua  99 | *.java  100 | *.sh  101 | *.fish  102 | *.bash  103 | *.zsh  104 | *.ksh  105 | *.csh  106 | *.awk  107 | *.ps1  108 | *.ml λ 109 | *.mli λ 110 | *.diff  111 | *.db  112 | *.sql  113 | *.dump  114 | *.clj  115 | *.cljc  116 | *.cljs  117 | *.edn  118 | *.scala  119 | *.go  120 | *.dart  121 | *.xul  122 | *.sln  123 | *.suo  124 | *.pl  125 | *.pm  126 | *.t  127 | *.rss  128 | '*.f#'  129 | *.fsscript  130 | *.fsx  131 | *.fs  132 | *.fsi  133 | *.rs  134 | *.rlib  135 | *.d  136 | *.erl  137 | *.hrl  138 | *.ex  139 | *.exs  140 | *.eex  141 | *.leex  142 | *.heex  143 | *.vim  144 | *.ai  145 | *.psd  146 | *.psb  147 | *.ts  148 | *.tsx  149 | *.jl  150 | *.pp  151 | *.vue ﵂ 152 | *.elm  153 | *.swift  154 | *.xcplayground  155 | *.tex ﭨ 156 | *.r ﳒ 157 | *.rproj 鉶 158 | *.sol ﲹ 159 | *.pem  160 | 161 | # file names (vim-devicons) (case-insensitive not supported in lf) 162 | *gruntfile.coffee  163 | *gruntfile.js  164 | *gruntfile.ls  165 | *gulpfile.coffee  166 | *gulpfile.js  167 | *gulpfile.ls  168 | *mix.lock  169 | *dropbox  170 | *.ds_store  171 | *.gitconfig  172 | *.gitignore  173 | *.gitattributes  174 | *.gitlab-ci.yml  175 | *.bashrc  176 | *.zshrc  177 | *.zshenv  178 | *.zprofile  179 | *.vimrc  180 | *.gvimrc  181 | *_vimrc  182 | *_gvimrc  183 | *.bashprofile  184 | *favicon.ico  185 | *license  186 | *node_modules  187 | *react.jsx  188 | *procfile  189 | *dockerfile  190 | *docker-compose.yml  191 | *rakefile  192 | *config.ru  193 | *gemfile  194 | *makefile  195 | *cmakelists.txt  196 | *robots.txt ﮧ 197 | 198 | # file names (case-sensitive adaptations) 199 | *Gruntfile.coffee  200 | *Gruntfile.js  201 | *Gruntfile.ls  202 | *Gulpfile.coffee  203 | *Gulpfile.js  204 | *Gulpfile.ls  205 | *Dropbox  206 | *.DS_Store  207 | *LICENSE  208 | *React.jsx  209 | *Procfile  210 | *Dockerfile  211 | *Docker-compose.yml  212 | *Rakefile  213 | *Gemfile  214 | *Makefile  215 | *CMakeLists.txt  216 | 217 | # file patterns (vim-devicons) (patterns not supported in lf) 218 | # .*jquery.*\.js$  219 | # .*angular.*\.js$  220 | # .*backbone.*\.js$  221 | # .*require.*\.js$  222 | # .*materialize.*\.js$  223 | # .*materialize.*\.css$  224 | # .*mootools.*\.js$  225 | # .*vimrc.*  226 | # Vagrantfile$  227 | 228 | # file patterns (file name adaptations) 229 | *jquery.min.js  230 | *angular.min.js  231 | *backbone.min.js  232 | *require.min.js  233 | *materialize.min.js  234 | *materialize.min.css  235 | *mootools.min.js  236 | *vimrc  237 | Vagrantfile  238 | 239 | # archives or compressed (extensions from dircolors defaults) 240 | *.tar  241 | *.tgz  242 | *.arc  243 | *.arj  244 | *.taz  245 | *.lha  246 | *.lz4  247 | *.lzh  248 | *.lzma  249 | *.tlz  250 | *.txz  251 | *.tzo  252 | *.t7z  253 | *.zip  254 | *.z  255 | *.dz  256 | *.gz  257 | *.lrz  258 | *.lz  259 | *.lzo  260 | *.xz  261 | *.zst  262 | *.tzst  263 | *.bz2  264 | *.bz  265 | *.tbz  266 | *.tbz2  267 | *.tz  268 | *.deb  269 | *.rpm  270 | *.jar  271 | *.war  272 | *.ear  273 | *.sar  274 | *.rar  275 | *.alz  276 | *.ace  277 | *.zoo  278 | *.cpio  279 | *.7z  280 | *.rz  281 | *.cab  282 | *.wim  283 | *.swm  284 | *.dwm  285 | *.esd  286 | 287 | # image formats (extensions from dircolors defaults) 288 | *.jpg  289 | *.jpeg  290 | *.mjpg  291 | *.mjpeg  292 | *.gif  293 | *.bmp  294 | *.pbm  295 | *.pgm  296 | *.ppm  297 | *.tga  298 | *.xbm  299 | *.xpm  300 | *.tif  301 | *.tiff  302 | *.png  303 | *.svg  304 | *.svgz  305 | *.mng  306 | *.pcx  307 | *.mov  308 | *.mpg  309 | *.mpeg  310 | *.m2v  311 | *.mkv  312 | *.webm  313 | *.ogm  314 | *.mp4  315 | *.m4v  316 | *.mp4v  317 | *.vob  318 | *.qt  319 | *.nuv  320 | *.wmv  321 | *.asf  322 | *.rm  323 | *.rmvb  324 | *.flc  325 | *.avi  326 | *.fli  327 | *.flv  328 | *.gl  329 | *.dl  330 | *.xcf  331 | *.xwd  332 | *.yuv  333 | *.cgm  334 | *.emf  335 | *.ogv  336 | *.ogx  337 | 338 | # audio formats (extensions from dircolors defaults) 339 | *.aac  340 | *.au  341 | *.flac  342 | *.m4a  343 | *.mid  344 | *.midi  345 | *.mka  346 | *.mp3  347 | *.mpc  348 | *.ogg  349 | *.ra  350 | *.wav  351 | *.oga  352 | *.opus  353 | *.spx  354 | *.xspf  355 | 356 | # other formats 357 | *.pdf  358 | -------------------------------------------------------------------------------- /private_dot_config/kitty/mouse.conf: -------------------------------------------------------------------------------- 1 | #: Mouse {{{ 2 | 3 | # mouse_hide_wait 3.0 4 | 5 | #: Hide mouse cursor after the specified number of seconds of the 6 | #: mouse not being used. Set to zero to disable mouse cursor hiding. 7 | #: Set to a negative value to hide the mouse cursor immediately when 8 | #: typing text. Disabled by default on macOS as getting it to work 9 | #: robustly with the ever-changing sea of bugs that is Cocoa is too 10 | #: much effort. 11 | 12 | # url_color #0087bd 13 | # url_style curly 14 | 15 | #: The color and style for highlighting URLs on mouse-over. url_style 16 | #: can be one of: none, straight, double, curly, dotted, dashed. 17 | 18 | # open_url_with default 19 | 20 | #: The program to open clicked URLs. The special value default means 21 | #: to use the operating system's default URL handler (open on macOS 22 | #: and xdg-open on Linux). 23 | 24 | # url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh 25 | 26 | #: The set of URL prefixes to look for when detecting a URL under the 27 | #: mouse cursor. 28 | 29 | # detect_urls yes 30 | 31 | #: Detect URLs under the mouse. Detected URLs are highlighted with an 32 | #: underline and the mouse cursor becomes a hand over them. Even if 33 | #: this option is disabled, URLs are still clickable. 34 | 35 | # url_excluded_characters 36 | 37 | #: Additional characters to be disallowed from URLs, when detecting 38 | #: URLs under the mouse cursor. By default, all characters that are 39 | #: legal in URLs are allowed. 40 | 41 | # copy_on_select no 42 | 43 | #: Copy to clipboard or a private buffer on select. With this set to 44 | #: clipboard, selecting text with the mouse will cause the text to be 45 | #: copied to clipboard. Useful on platforms such as macOS that do not 46 | #: have the concept of primary selection. You can instead specify a 47 | #: name such as a1 to copy to a private kitty buffer. Map a shortcut 48 | #: with the paste_from_buffer action to paste from this private 49 | #: buffer. For example:: 50 | 51 | #: copy_on_select a1 52 | #: map shift+cmd+v paste_from_buffer a1 53 | 54 | #: Note that copying to the clipboard is a security risk, as all 55 | #: programs, including websites open in your browser can read the 56 | #: contents of the system clipboard. 57 | 58 | # paste_actions quote-urls-at-prompt 59 | 60 | #: A comma separated list of actions to take when pasting text into 61 | #: the terminal. The supported paste actions are: 62 | 63 | #: quote-urls-at-prompt: 64 | #: If the text being pasted is a URL and the cursor is at a shell prompt, 65 | #: automatically quote the URL (needs shell_integration). 66 | #: confirm: 67 | #: Confirm the paste if bracketed paste mode is not active or there is more 68 | #: a large amount of text being pasted. 69 | #: filter: 70 | #: Run the filter_paste() function from the file paste-actions.py in 71 | #: the kitty config directory on the pasted text. The text returned by the 72 | #: function will be actually pasted. 73 | 74 | strip_trailing_spaces smart 75 | 76 | #: Remove spaces at the end of lines when copying to clipboard. A 77 | #: value of smart will do it when using normal selections, but not 78 | #: rectangle selections. A value of always will always do it. 79 | 80 | # select_by_word_characters @-./_~?&=%+# 81 | 82 | #: Characters considered part of a word when double clicking. In 83 | #: addition to these characters any character that is marked as an 84 | #: alphanumeric character in the Unicode database will be matched. 85 | 86 | # select_by_word_characters_forward 87 | 88 | #: Characters considered part of a word when extending the selection 89 | #: forward on double clicking. In addition to these characters any 90 | #: character that is marked as an alphanumeric character in the 91 | #: Unicode database will be matched. 92 | 93 | #: If empty (default) select_by_word_characters will be used for both 94 | #: directions. 95 | 96 | # click_interval -1.0 97 | 98 | #: The interval between successive clicks to detect double/triple 99 | #: clicks (in seconds). Negative numbers will use the system default 100 | #: instead, if available, or fallback to 0.5. 101 | 102 | # focus_follows_mouse no 103 | 104 | #: Set the active window to the window under the mouse when moving the 105 | #: mouse around. 106 | 107 | # pointer_shape_when_grabbed arrow 108 | 109 | #: The shape of the mouse pointer when the program running in the 110 | #: terminal grabs the mouse. Valid values are: arrow, beam and hand. 111 | 112 | # default_pointer_shape beam 113 | 114 | #: The default shape of the mouse pointer. Valid values are: arrow, 115 | #: beam and hand. 116 | 117 | # pointer_shape_when_dragging beam 118 | 119 | #: The default shape of the mouse pointer when dragging across text. 120 | #: Valid values are: arrow, beam and hand. 121 | 122 | #: Mouse actions {{{ 123 | 124 | #: Mouse buttons can be mapped to perform arbitrary actions. The 125 | #: syntax is: 126 | 127 | #: .. code-block:: none 128 | 129 | #: mouse_map button-name event-type modes action 130 | 131 | #: Where button-name is one of left, middle, right, b1 ... b8 with 132 | #: added keyboard modifiers. For example: ctrl+shift+left refers to 133 | #: holding the Ctrl+Shift keys while clicking with the left mouse 134 | #: button. The value b1 ... b8 can be used to refer to up to eight 135 | #: buttons on a mouse. 136 | 137 | #: event-type is one of press, release, doublepress, triplepress, 138 | #: click, doubleclick. modes indicates whether the action is performed 139 | #: when the mouse is grabbed by the program running in the terminal, 140 | #: or not. The values are grabbed or ungrabbed or a comma separated 141 | #: combination of them. grabbed refers to when the program running in 142 | #: the terminal has requested mouse events. Note that the click and 143 | #: double click events have a delay of click_interval to disambiguate 144 | #: from double and triple presses. 145 | 146 | #: You can run kitty with the kitty --debug-input command line option 147 | #: to see mouse events. See the builtin actions below to get a sense 148 | #: of what is possible. 149 | 150 | #: If you want to unmap an action, map it to no_op. For example, to 151 | #: disable opening of URLs with a plain click:: 152 | 153 | #: mouse_map left click ungrabbed no_op 154 | 155 | #: See all the mappable actions including mouse actions here 156 | #: . 157 | 158 | #: .. note:: 159 | #: Once a selection is started, releasing the button that started it will 160 | #: automatically end it and no release event will be dispatched. 161 | 162 | # clear_all_mouse_actions no 163 | 164 | #: Remove all mouse action definitions up to this point. Useful, for 165 | #: instance, to remove the default mouse actions. 166 | 167 | #: Click the link under the mouse or move the cursor 168 | 169 | # mouse_map left click ungrabbed mouse_handle_click selection link prompt 170 | 171 | #:: First check for a selection and if one exists do nothing. Then 172 | #:: check for a link under the mouse cursor and if one exists, click 173 | #:: it. Finally check if the click happened at the current shell 174 | #:: prompt and if so, move the cursor to the click location. Note 175 | #:: that this requires shell integration 176 | #:: to work. 177 | 178 | #: Click the link under the mouse or move the cursor even when grabbed 179 | 180 | # mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt 181 | 182 | #:: Same as above, except that the action is performed even when the 183 | #:: mouse is grabbed by the program running in the terminal. 184 | 185 | #: Click the link under the mouse cursor 186 | 187 | # mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link 188 | 189 | #:: Variant with Ctrl+Shift is present because the simple click based 190 | #:: version has an unavoidable delay of click_interval, to 191 | #:: disambiguate clicks from double clicks. 192 | 193 | #: Discard press event for link click 194 | 195 | # mouse_map ctrl+shift+left press grabbed discard_event 196 | 197 | #:: Prevent this press event from being sent to the program that has 198 | #:: grabbed the mouse, as the corresponding release event is used to 199 | #:: open a URL. 200 | 201 | #: Paste from the primary selection 202 | 203 | # mouse_map middle release ungrabbed paste_from_selection 204 | 205 | #: Start selecting text 206 | 207 | # mouse_map left press ungrabbed mouse_selection normal 208 | 209 | #: Start selecting text in a rectangle 210 | 211 | # mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle 212 | 213 | #: Select a word 214 | 215 | # mouse_map left doublepress ungrabbed mouse_selection word 216 | 217 | #: Select a line 218 | 219 | # mouse_map left triplepress ungrabbed mouse_selection line 220 | 221 | #: Select line from point 222 | 223 | # mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point 224 | 225 | #:: Select from the clicked point to the end of the line. 226 | 227 | #: Extend the current selection 228 | 229 | # mouse_map right press ungrabbed mouse_selection extend 230 | 231 | #:: If you want only the end of the selection to be moved instead of 232 | #:: the nearest boundary, use move-end instead of extend. 233 | 234 | #: Paste from the primary selection even when grabbed 235 | 236 | # mouse_map shift+middle release ungrabbed,grabbed paste_selection 237 | # mouse_map shift+middle press grabbed discard_event 238 | 239 | #: Start selecting text even when grabbed 240 | 241 | # mouse_map shift+left press ungrabbed,grabbed mouse_selection normal 242 | 243 | #: Start selecting text in a rectangle even when grabbed 244 | 245 | # mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle 246 | 247 | #: Select a word even when grabbed 248 | 249 | # mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word 250 | 251 | #: Select a line even when grabbed 252 | 253 | # mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line 254 | 255 | #: Select line from point even when grabbed 256 | 257 | # mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point 258 | 259 | #:: Select from the clicked point to the end of the line even when 260 | #:: grabbed. 261 | 262 | #: Extend the current selection even when grabbed 263 | 264 | # mouse_map shift+right press ungrabbed,grabbed mouse_selection extend 265 | 266 | #: Show clicked command output in pager 267 | 268 | # mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output 269 | 270 | #:: Requires shell integration 271 | #:: to work. 272 | 273 | #: }}} 274 | 275 | #: }}} 276 | --------------------------------------------------------------------------------