├── .gitignore ├── .config ├── nvim │ ├── init.lua │ ├── lua │ │ └── apo │ │ │ ├── config │ │ │ ├── init.lua │ │ │ ├── options.lua │ │ │ └── keymaps.lua │ │ │ ├── plugins │ │ │ ├── init.lua │ │ │ ├── surround.lua │ │ │ ├── vim-maximizer.lua │ │ │ ├── which-key.lua │ │ │ ├── bufferline.lua │ │ │ ├── comment.lua │ │ │ ├── auto-session.lua │ │ │ ├── lualine.lua │ │ │ ├── autopairs.lua │ │ │ ├── aerial.lua │ │ │ ├── lsp │ │ │ │ ├── mason.lua │ │ │ │ └── lspconfig.lua │ │ │ ├── project.lua │ │ │ ├── conform.lua │ │ │ ├── treesitter.lua │ │ │ ├── colorscheme.lua │ │ │ ├── alpha.lua │ │ │ ├── gitsigns.lua │ │ │ ├── nvim-cmp.lua │ │ │ ├── telescope.lua │ │ │ └── nvim-tree.lua │ │ │ └── lazy.lua │ └── lazy-lock.json ├── ghostty │ └── config ├── starship.toml └── zed │ ├── keymap.json │ ├── settings.json │ └── themes │ └── Tokyo Night.json ├── .gitconfig ├── Brewfile ├── .zshrc └── iterm.json /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.out 3 | *.swp 4 | 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("apo.config") 2 | require("apo.lazy") 3 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/config/init.lua: -------------------------------------------------------------------------------- 1 | require("apo.config.options") 2 | require("apo.config.keymaps") 3 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-lua/plenary.nvim", 3 | "christoomey/vim-tmux-navigator", 4 | } 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/surround.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "kylechui/nvim-surround", 3 | event = "VeryLazy", 4 | version = "*", 5 | config = true, 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/vim-maximizer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "szw/vim-maximizer", 3 | keys = { 4 | { "sm", "MaximizerToggle", desc = "Maximize/Minimize a split" }, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/which-key.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/which-key.nvim", 3 | event = "VeryLazy", 4 | init = function() 5 | vim.o.timeout = true 6 | vim.o.timeoutlen = 500 7 | end, 8 | opts = {}, 9 | } 10 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/bufferline.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "akinsho/bufferline.nvim", 3 | dependencies = { "nvim-tree/nvim-web-devicons" }, 4 | version = "*", 5 | opts = { 6 | options = { 7 | mode = "tabs", 8 | separator_style = "slant", 9 | }, 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/comment.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "numToStr/Comment.nvim", 3 | event = { "BufReadPre", "BufNewFile" }, 4 | dependencies = { 5 | "JoosepAlviste/nvim-ts-context-commentstring", 6 | }, 7 | config = function() 8 | local comment = require("Comment") 9 | local ts_context_commentstring = require("ts_context_commentstring.integrations.comment_nvim") 10 | 11 | comment.setup({ 12 | pre_hook = ts_context_commentstring.create_pre_hook(), 13 | }) 14 | end, 15 | } 16 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/auto-session.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "rmagatti/auto-session", 3 | config = function() 4 | local auto_session = require("auto-session") 5 | 6 | auto_session.setup({ 7 | auto_restore_enabled = false, 8 | auto_session_supress_dirs = { "~/", "~/Downloads", "~/Documents", "~/Desktop" }, 9 | }) 10 | 11 | local keymap = vim.keymap 12 | 13 | keymap.set("n", "wr", "SessionRestore", { desc = "Restore session for cwd" }) 14 | keymap.set("n", "ws", "SessionSave", { desc = "Save session" }) 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /.gitconfig: -------------------------------------------------------------------------------- 1 | [init] 2 | defaultBranch = main 3 | [core] 4 | pager = delta --paging=always 5 | excludesFile = $HOME/.gitignore 6 | [user] 7 | name = Ankit Pokhrel 8 | email = oss@ankit.pl 9 | signingkey = # https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key 10 | [delta] 11 | side-by-side = false 12 | syntax-theme = GitHub 13 | light = true 14 | [commit] 15 | gpgsign = true 16 | [tag] 17 | gpgsign = true 18 | [filter "lfs"] 19 | clean = git-lfs clean -- %f 20 | smudge = git-lfs smudge -- %f 21 | process = git-lfs filter-process 22 | required = true 23 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/lualine.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-lualine/lualine.nvim", 3 | dependencies = { "nvim-tree/nvim-web-devicons" }, 4 | config = function() 5 | require('lualine').setup({ 6 | options = { 7 | theme = 'auto', 8 | }, 9 | sections = { 10 | lualine_b = { 11 | {'branch', color = {fg = '#f8fbf8'}}, -- Git branch 12 | }, 13 | lualine_y = { 14 | {'progress', color = {fg = '#f8fbf8'}}, -- Scroll percent 15 | }, 16 | } 17 | }) 18 | end 19 | } 20 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/autopairs.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "windwp/nvim-autopairs", 3 | event = { "InsertEnter" }, 4 | dependencies = { 5 | "hrsh7th/nvim-cmp", 6 | }, 7 | config = function() 8 | local autopairs = require("nvim-autopairs") 9 | 10 | autopairs.setup({ 11 | check_ts = true, -- Enable treesitter 12 | ts_config = { 13 | lua = { "string" }, 14 | java = false, 15 | }, 16 | }) 17 | 18 | local cmp_autopairs = require("nvim-autopairs.completion.cmp") 19 | local cmp = require("cmp") 20 | 21 | cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) 22 | end, 23 | } 24 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/aerial.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/aerial.nvim", 3 | opts = {}, 4 | dependenceis = { 5 | "nvim-treesitter/nvim-treesitter", 6 | "nvim-tree/nvim-web-devicons", 7 | }, 8 | config = function() 9 | local aerial = require("aerial") 10 | local keymap = vim.keymap 11 | 12 | aerial.setup({ 13 | on_attach = function(bufnr) 14 | keymap.set("n", "{", "AerialPrev", { buffer = bufnr, desc = "Go to previous tag" }) 15 | keymap.set("n", "}", "AerialNext", { buffer = bufnr, desc = "Go to next tag" }) 16 | end, 17 | }) 18 | 19 | keymap.set("n", "tt", "AerialToggle!") 20 | end 21 | } 22 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/lsp/mason.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "williamboman/mason.nvim", 3 | dependencies = { 4 | "williamboman/mason-lspconfig.nvim", 5 | }, 6 | config = function() 7 | local mason = require("mason") 8 | local mason_lspconfig = require("mason-lspconfig") 9 | 10 | mason.setup({ 11 | ui = { 12 | icons = { 13 | package_installed = "✓", 14 | package_pending = "➜", 15 | package_uninstalled = "✗", 16 | }, 17 | }, 18 | }) 19 | 20 | mason_lspconfig.setup({ 21 | ensure_installed = { 22 | "lua_ls", 23 | "superhtml", 24 | "gopls", 25 | "zls", 26 | }, 27 | }) 28 | end, 29 | } 30 | -------------------------------------------------------------------------------- /Brewfile: -------------------------------------------------------------------------------- 1 | # Taps 2 | tap "ankitpokhrel/jira-cli" 3 | tap "homebrew/bundle" 4 | 5 | # CLI tools 6 | cask "1password-cli" 7 | brew "bat" 8 | brew "bash" 9 | brew "coreutils" 10 | brew "curl" 11 | brew "fzf" 12 | brew "gh" 13 | brew "git" 14 | brew "git-delta" 15 | brew "gnupg" 16 | brew "go" 17 | brew "htop" 18 | brew "jira-cli" 19 | brew "jq" 20 | brew "neovim" 21 | brew "ripgrep" 22 | brew "starship" 23 | brew "tmux" 24 | brew "tree" 25 | brew "walk" 26 | brew "wget" 27 | brew "zig" 28 | brew "zoxide" 29 | brew "zsh" 30 | brew "zsh-autosuggestions" 31 | 32 | # Apps 33 | cask "1password" 34 | cask "brave-browser" 35 | cask "docker" 36 | cask "ghostty" 37 | cask "github" 38 | cask "iterm2" 39 | cask "nordvpn" 40 | cask "signal" 41 | cask "sublime-text" 42 | cask "telegram-desktop" 43 | cask "zed" 44 | cask "zen-browser" 45 | 46 | # Fonts 47 | cask "font-fira-code" 48 | cask "font-hack-nerd-font" 49 | -------------------------------------------------------------------------------- /.config/ghostty/config: -------------------------------------------------------------------------------- 1 | # Text 2 | font-size = 13 3 | font-feature = -liga 4 | font-feature = -calt 5 | font-feature = -dlig 6 | font-family = Fira Code 7 | font-style-bold = true 8 | font-thicken = true 9 | font-thicken-strength = 200 10 | adjust-cell-width=5% 11 | adjust-cell-height=50% 12 | 13 | # Colors 14 | background = #1e1d2c 15 | foreground=#e8e8e8 16 | selection-background=#375b79 17 | selection-foreground=#95a0a0 18 | background-opacity = 0.98 19 | bold-is-bright = false 20 | palette = 8=999999 21 | 22 | # Cursor 23 | cursor-style = block 24 | cursor-style-blink = false 25 | shell-integration-features = no-cursor 26 | 27 | # Mouse 28 | mouse-hide-while-typing = true 29 | 30 | # macOS 31 | macos-titlebar-style = tabs 32 | macos-non-native-fullscreen = false 33 | 34 | # Keybindings 35 | keybind = cmd+`=toggle_quick_terminal 36 | 37 | # Window 38 | window-theme = auto 39 | window-colorspace = display-p3 40 | window-padding-x = 8 41 | window-height = 30 42 | window-width = 140 43 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/project.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "zeioth/project.nvim", 3 | event = "User BaseDefered", 4 | cmd = "ProjectRoot", 5 | config = function() 6 | local project = require("project_nvim") 7 | 8 | project.setup({ 9 | patterns = { 10 | ".git", 11 | "Makefile", 12 | "go.mod", 13 | "composer.json", 14 | }, 15 | exclude_dirs = { 16 | "~/" 17 | }, 18 | show_hidden = false, 19 | silent_chdir = true, 20 | manual_mode = false, 21 | 22 | exclude_chdir = { 23 | filetype = {"", "alpha"}, 24 | buftype = {"nofile", "terminal"}, 25 | } 26 | }) 27 | 28 | -- Keymaps 29 | local keymap = vim.keymap 30 | 31 | keymap.set("n", "", "Telescope projects", { desc = "Switch projects" }) 32 | end, 33 | } 34 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/lazy.lua: -------------------------------------------------------------------------------- 1 | -- https://lazy.folke.io/installation 2 | 3 | -- Bootstrap lazy.nvim 4 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 5 | if not (vim.uv or vim.loop).fs_stat(lazypath) then 6 | local lazyrepo = "https://github.com/folke/lazy.nvim.git" 7 | local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) 8 | if vim.v.shell_error ~= 0 then 9 | vim.api.nvim_echo({ 10 | { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, 11 | { out, "WarningMsg" }, 12 | { "\nPress any key to exit..." }, 13 | }, true, {}) 14 | vim.fn.getchar() 15 | os.exit(1) 16 | end 17 | end 18 | vim.opt.rtp:prepend(lazypath) 19 | 20 | -- Setup lazy.nvim 21 | require("lazy").setup({ { import = "apo.plugins" }, { import = "apo.plugins.lsp" } }, { 22 | checker = { 23 | enabled = true, 24 | notify = false, 25 | }, 26 | change_detection = { 27 | notify = false, 28 | }, 29 | }) 30 | -------------------------------------------------------------------------------- /.config/starship.toml: -------------------------------------------------------------------------------- 1 | format = """ 2 | $username\ 3 | $hostname\ 4 | $directory\ 5 | $git_branch\ 6 | $git_state\ 7 | $git_status\ 8 | $cmd_duration\ 9 | $line_break\ 10 | $python\ 11 | $character""" 12 | 13 | [directory] 14 | style = "bright-blue" 15 | 16 | [character] 17 | success_symbol = "[➔](bright-blue)" 18 | error_symbol = "[➔](red)" 19 | vimcmd_symbol = "[❮](green)" 20 | 21 | [git_branch] 22 | format = "[$branch]($style)" 23 | style = "cyan" 24 | 25 | [git_status] 26 | format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](250) ($ahead_behind$stashed)]($style)" 27 | style = "cyan" 28 | conflicted = "​" 29 | untracked = "​" 30 | modified = "​" 31 | staged = "​" 32 | renamed = "​" 33 | deleted = "​" 34 | stashed = "≡" 35 | 36 | [git_state] 37 | format = '\([$state( $progress_current/$progress_total)]($style)\) ' 38 | style = "bright-black" 39 | 40 | [cmd_duration] 41 | format = "[$duration]($style) " 42 | style = "yellow" 43 | 44 | [python] 45 | format = "[$virtualenv]($style) " 46 | style = "bright-black" 47 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/conform.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/conform.nvim", 3 | event = { "BufWritePre" }, 4 | cmd = { "ConformInfo" }, 5 | keys = { 6 | { 7 | "==", 8 | function() 9 | require("conform").format({ async = true }) 10 | end, 11 | mode = "", 12 | desc = "Format buffer", 13 | }, 14 | }, 15 | opts = { 16 | formatters_by_ft = { 17 | lua = { "stylua", lsp_format = "fallback" }, 18 | go = { "gofmt", lsp_format = "fallback" }, 19 | zig = { "zigfmt", lsp_format = "fallback" }, 20 | json = { "jq" }, 21 | yaml = { "yamlfmt" }, 22 | }, 23 | default_format_opts = { 24 | lsp_format = "last", 25 | }, 26 | format_on_save = { timeout_ms = 500 }, 27 | formatters = { 28 | shfmt = { 29 | prepend_args = { "-i", "2" }, 30 | }, 31 | }, 32 | }, 33 | init = function() 34 | vim.o.formatexpr = "v:lua.require'conform'.formatexpr()" 35 | end, 36 | } 37 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/config/options.lua: -------------------------------------------------------------------------------- 1 | local g = vim.g 2 | local opt = vim.opt 3 | 4 | g.netrw_liststyle = 3 5 | 6 | -- Line numbers 7 | opt.number = true 8 | opt.relativenumber = true 9 | opt.numberwidth = 5 10 | opt.colorcolumn = "120" 11 | 12 | -- Editor look and feel 13 | opt.mouse = a 14 | opt.termguicolors = true 15 | opt.background = "dark" 16 | opt.signcolumn = "yes" 17 | opt.cursorline = false 18 | opt.guifont = "Fira Code:h13" 19 | opt.linespace = 8 20 | opt.statuscolumn = "%C%s%{v:relnum?printf('%4s',v:relnum):v:lnum} " 21 | 22 | -- Swap and undo files 23 | opt.swapfile = false 24 | opt.backup = false 25 | opt.undodir = os.getenv("HOME") .. "/.vim/undodir" 26 | opt.undofile = false 27 | 28 | -- Tabs and Indentation 29 | opt.tabstop = 4 30 | opt.softtabstop = 4 31 | opt.shiftwidth = 4 32 | opt.expandtab = true 33 | opt.autoindent = true 34 | opt.smartindent = true 35 | 36 | opt.wrap = false 37 | 38 | -- Search 39 | opt.ignorecase = true 40 | opt.smartcase = true 41 | opt.hlsearch = false 42 | opt.incsearch = true 43 | 44 | opt.backspace = "indent,eol,start" 45 | 46 | opt.clipboard:append("unnamedplus") 47 | 48 | opt.splitright = true 49 | opt.splitbelow = true 50 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-treesitter/nvim-treesitter", 3 | event = { "BufReadPre", "BufNewFile" }, 4 | build = ":TSUpdate", 5 | dependencies = { 6 | "windwp/nvim-ts-autotag", 7 | }, 8 | config = function() 9 | local treesitter = require("nvim-treesitter.configs") 10 | 11 | treesitter.setup({ 12 | highlight = { 13 | enable = true, 14 | additional_vim_regex_highlighting = false, 15 | }, 16 | indent = { enable = true }, 17 | autotag = { enable = true }, 18 | ensure_installed = { 19 | "json", 20 | "yaml", 21 | "markdown", 22 | "markdown_inline", 23 | "bash", 24 | "lua", 25 | "vim", 26 | "dockerfile", 27 | "gitignore", 28 | "query", 29 | "go", 30 | "zig", 31 | }, 32 | sync_install = false, 33 | ignore_install = {}, 34 | auto_install = false, 35 | incremental_selection = { 36 | enable = true, 37 | keymaps = { 38 | init_selection = "", 39 | node_incremental = "", 40 | scope_incremental = false, 41 | node_decremental = "", 42 | }, 43 | }, 44 | }) 45 | end 46 | } 47 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/colorscheme.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/tokyonight.nvim", 3 | priority = 1000, 4 | config = function() 5 | local bg = "#1e1d2c" 6 | local bg_dark = "#1e1d2c" 7 | local bg_highlight = "#074a64" 8 | local bg_search = "#0a64ac" 9 | local bg_visual = "#275378" 10 | local fg = "#cbe0f0" 11 | local fg_dark = "#b4d0e9" 12 | local fg_gutter = "#627e97" 13 | local border = "#547998" 14 | local comment = "#c2c2c2" 15 | 16 | 17 | require("tokyonight").setup({ 18 | style = "night", 19 | on_colors = function(colors) 20 | colors.bg = bg 21 | colors.bg_dark = bg_dark 22 | colors.bg_float = bg_dark 23 | colors.bg_highlight = bg_highlight 24 | colors.bg_popup = bg_dark 25 | colors.bg_search = bg_search 26 | colors.bg_sidebar = bg_dark 27 | colors.bg_statusline = bg_dark 28 | colors.bg_visual = bg_visual 29 | colors.border = border 30 | colors.fg = fg 31 | colors.fg_dark = fg_dark 32 | colors.fg_float = fg 33 | colors.fg_gutter = fg_gutter 34 | colors.fg_sidebar = fg_dark 35 | colors.comment = comment 36 | end 37 | }) 38 | 39 | vim.cmd("colorscheme tokyonight") 40 | vim.cmd("highlight ColorColumn ctermbg=lightgrey guibg=#2a2a40") 41 | end 42 | } 43 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/alpha.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "goolord/alpha-nvim", 3 | event = "VimEnter", 4 | config = function() 5 | local alpha = require("alpha") 6 | local dashboard = require("alpha.themes.dashboard") 7 | 8 | dashboard.section.header.val = { 9 | " ", 10 | " ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ", 11 | " ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ", 12 | " ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ", 13 | " ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ", 14 | " ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ", 15 | " ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ", 16 | " ", 17 | } 18 | 19 | dashboard.section.buttons.val = { 20 | dashboard.button( "e", " > New file" , "ene startinsert "), 21 | dashboard.button( "o", " > Open project", "Telescope projects"), 22 | dashboard.button( "r", " > Recent files" , "Telescope oldfiles"), 23 | dashboard.button( "SPC ff", " > Find file", "Telescope find_files"), 24 | dashboard.button( "SPC wr", "󰁯 > Restore session", "SessionRestore"), 25 | dashboard.button( "s", " > Settings" , "e $MYVIMRC | :cd %:p:h | split . | wincmd k | pwd"), 26 | dashboard.button( "q", " > Quit NVIM", "qa"), 27 | } 28 | 29 | alpha.setup(dashboard.opts) 30 | 31 | vim.cmd([[autocmd FileType alpha setlocal nofoldenable]]) 32 | end, 33 | } 34 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/gitsigns.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "lewis6991/gitsigns.nvim", 3 | event = { "BufReadPre", "BufNewFile" }, 4 | opts = { 5 | on_attach = function(buffnr) 6 | local gs = package.loaded.gitsigns 7 | 8 | local function map(mode, l, r, desc) 9 | vim.keymap.set(mode, l, r, { buffer = buffnr, desc = desc }) 10 | end 11 | 12 | -- Keymaps 13 | map("n", "]h", gs.next_hunk, "Next hunk") 14 | map("n", "[h", gs.prev_hunk, "Prev hunk") 15 | 16 | -- Actions 17 | map("n", "hs", gs.stage_hunk, "Stage hunk") 18 | map("n", "hr", gs.reset_hunk, "Reset hunk") 19 | map("v", "hs", function() 20 | gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) 21 | end, "Stage hunk") 22 | map("v", "hr", function() 23 | gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) 24 | end, "Reset hunk") 25 | 26 | map("n", "hS", gs.stage_buffer, "Stage buffer") 27 | map("n", "hR", gs.reset_buffer, "Reset buffer") 28 | 29 | map("n", "hu", gs.undo_stage_hunk, "undo stage hunk") 30 | map("n", "hp", gs.prev_hunk, "Preview hunk") 31 | 32 | map("n", "hb", function() 33 | gs.blame_line({ full = true }) 34 | end, "Blame line") 35 | map("n", "hB", gs.toggle_current_line_blame, "Toggle line blame") 36 | 37 | map("n", "hd", gs.diffthis, "Diff this") 38 | map("n", "hD", function() 39 | gs.diffthis("~") 40 | end, "Diff this ~") 41 | 42 | map({ "o", "x" }, "ih", ":Gitsigns select_hunk", "Gitsigns select hunk") 43 | end, 44 | }, 45 | } 46 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/nvim-cmp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "hrsh7th/nvim-cmp", 3 | event = "InsertEnter", 4 | dependencies = { 5 | "hrsh7th/cmp-buffer", 6 | "hrsh7th/cmp-path", 7 | { 8 | "L3MON4D3/LuaSnip", 9 | version = "v2.*", 10 | build = "make install_jsregexp", 11 | }, 12 | "saadparwaiz1/cmp_luasnip", 13 | "rafamadriz/friendly-snippets", 14 | "onsails/lspkind.nvim", 15 | }, 16 | config = function() 17 | local cmp = require("cmp") 18 | local luasnip = require("luasnip") 19 | local lspkind = require("lspkind") 20 | 21 | require("luasnip.loaders.from_vscode").lazy_load() 22 | 23 | cmp.setup({ 24 | completion = { 25 | completeopt = "menu,menuone,preview,noselect", 26 | }, 27 | snippet = { 28 | expand = function(args) 29 | luasnip.lsp_expand(args.body) 30 | end 31 | }, 32 | mapping = cmp.mapping.preset.insert({ 33 | [""] = cmp.mapping.select_prev_item(), 34 | [""] = cmp.mapping.select_next_item(), 35 | [""] = cmp.mapping.scroll_docs(-4), 36 | [""] = cmp.mapping.scroll_docs(4), 37 | [""] = cmp.mapping.complete(), 38 | [""] = cmp.mapping.abort(), 39 | [""] = cmp.mapping.confirm({ select = false }), 40 | }), 41 | sources = cmp.config.sources({ 42 | { name = "nvim_lsp" }, 43 | { name = "luasnip" }, 44 | { name = "buffer" }, 45 | { name = "path" }, 46 | }), 47 | formatting = { 48 | format = lspkind.cmp_format({ 49 | maxwidth = 50, 50 | ellipsis_char = "...", 51 | }), 52 | }, 53 | }) 54 | end 55 | } 56 | -------------------------------------------------------------------------------- /.config/zed/keymap.json: -------------------------------------------------------------------------------- 1 | // Zed keymap 2 | // 3 | // For information on binding keys, see the Zed 4 | // documentation: https://zed.dev/docs/key-bindings 5 | // 6 | // To see the default key bindings run `zed: open default keymap` 7 | // from the command palette. 8 | [ 9 | { 10 | "use_key_equivalents": true, 11 | "bindings": { 12 | "ctrl-k": "menu::SelectPrev", 13 | "ctrl-j": "menu::SelectNext" 14 | } 15 | }, 16 | { 17 | "context": "Workspace", 18 | "bindings": { 19 | "cmd-p": "file_finder::Toggle", // Use cmd-p-p to toggle recently open file until #4663 is resolved. 20 | "cmd-shift-p": "command_palette::Toggle", 21 | "ctrl-`": "workspace::NewTerminal", 22 | "cmd-`": "terminal_panel::ToggleFocus", 23 | "cmd-j": "workspace::ToggleBottomDock" 24 | } 25 | }, 26 | { 27 | "context": "Editor", 28 | "bindings": { 29 | "cmd-shift-l": "editor::DeleteLine", 30 | "cmd-shift-k": "workspace::ToggleLeftDock", 31 | "cmd-ctrl-g": "editor::SelectAllMatches", 32 | "cmd-r n": "editor::Rename", 33 | "cmd-shift-up": "editor::MoveLineUp", 34 | "cmd-shift-down": "editor::MoveLineDown", 35 | "alt-shift-up": "editor::DuplicateLineUp", 36 | "alt-shift-down": "editor::DuplicateLineDown", 37 | "cmd-shift-i": "editor::AddSelectionBelow", 38 | "cmd-shift-j": "editor::AddSelectionAbove", 39 | "cmd-e": ["buffer_search::Deploy", { "focus": false }] // Highlight matching words under cursor 40 | } 41 | }, 42 | { 43 | "context": "Editor && mode == full", 44 | "use_key_equivalents": true, 45 | "bindings": { 46 | "cmd-shift-o": "outline::Toggle", 47 | "cmd-l": "go_to_line::Toggle" 48 | } 49 | }, 50 | { 51 | "context": "menu", 52 | "bindings": { 53 | "cmd-shift-k": "workspace::ToggleLeftDock" 54 | } 55 | }, 56 | { 57 | "context": "vim_mode == visual && !menu", 58 | "bindings": { 59 | "shift-k": "editor::MoveLineUp", 60 | "shift-j": "editor::MoveLineDown" 61 | } 62 | }, 63 | { 64 | "context": "vim_mode == normal", 65 | "bindings": { 66 | "zz": "editor::ScrollCursorCenter", 67 | "ctrl-h": "project_panel::ToggleFocus" 68 | } 69 | } 70 | ] 71 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/config/keymaps.lua: -------------------------------------------------------------------------------- 1 | vim.g.mapleader = " " 2 | vim.g.maplocalleader = "\\" 3 | 4 | local keymap = vim.keymap 5 | 6 | -- Skip copying text to default register 7 | keymap.set('n', 'd', '"_d', { noremap = true, silent = true }) 8 | keymap.set('v', 'd', '"_d', { noremap = true, silent = true }) 9 | keymap.set('n', 'D', '"_D', { noremap = true, silent = true }) 10 | keymap.set('v', 'D', '"_D', { noremap = true, silent = true }) 11 | keymap.set('n', 'c', '"_c', { noremap = true, silent = true }) 12 | keymap.set('v', 'c', '"_c', { noremap = true, silent = true }) 13 | keymap.set('n', 'C', '"_C', { noremap = true, silent = true }) 14 | keymap.set('v', 'C', '"_C', { noremap = true, silent = true }) 15 | 16 | keymap.set("i", "jk", "", { desc = "Exit insert mode (ESC)" }) 17 | 18 | -- Window management 19 | keymap.set("n", "sv", "v", { desc = "Split window vertically" }) 20 | keymap.set("n", "sh", "s", { desc = "Split window horizontally" }) 21 | keymap.set("n", "se", "=", { desc = "Re-align split screens" }) 22 | keymap.set("n", "sx", "close", { desc = "Close selected split" }) 23 | 24 | keymap.set("n", "to", "tabnew", { desc = "Open a new tab" }) 25 | keymap.set("n", "tx", "tabclose", { desc = "Close current tab" }) 26 | keymap.set("n", "tn", "tabn", { desc = "Go to the next tab" }) 27 | keymap.set("n", "tp", "tabp", { desc = "Go to the previous tab" }) 28 | keymap.set("n", "tf", "tabnew %", { desc = "Open current buffer in a new tab" }) 29 | 30 | -- Move blocks 31 | keymap.set("v", "J", ":m '>+1gv=gv") 32 | keymap.set("v", "K", ":m '<-2gv=gv") 33 | 34 | -- Keep cursor at the same place 35 | keymap.set("n", "J", "mzJ`z") 36 | keymap.set("n", "", "zz") 37 | keymap.set("n", "", "zz") 38 | keymap.set("n", "n", "nzzzv") 39 | keymap.set("n", "N", "Nzzzv") 40 | 41 | -- Toggle diagnostics on/off 42 | local diagnostics_active = true 43 | keymap.set('n', 'DD', function() 44 | diagnostics_active = not diagnostics_active 45 | if diagnostics_active then 46 | print("Diagnostics enabled") 47 | else 48 | vim.diagnostic.enable(false) 49 | print("Diagnostics disabled") 50 | end 51 | end) 52 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-telescope/telescope.nvim", 3 | branch = "0.1.x", 4 | dependencies = { 5 | "nvim-lua/plenary.nvim", 6 | { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, 7 | "nvim-tree/nvim-web-devicons", 8 | "stevearc/aerial.nvim", 9 | }, 10 | config = function() 11 | local telescope = require("telescope") 12 | local actions = require("telescope.actions") 13 | 14 | telescope.setup({ 15 | defaults = { 16 | path_display = { "smart" }, 17 | mappings = { 18 | i = { 19 | [""] = actions.move_selection_previous, 20 | [""] = actions.move_selection_next, 21 | }, 22 | }, 23 | }, 24 | extensions = { 25 | aerial = { 26 | col1_width = 4, 27 | col2_width = 30, 28 | format_symbol = function(symbol_path, filetype) 29 | if filetype == "json" or filetype == "yaml" then 30 | return table.concat(symbol_path, ".") 31 | else 32 | return symbol_path[#symbol_path] 33 | end 34 | end, 35 | show_columns = "both", 36 | } 37 | } 38 | }) 39 | 40 | telescope.load_extension("fzf") 41 | telescope.load_extension("aerial") 42 | telescope.load_extension("projects") 43 | 44 | -- Keymaps 45 | local keymap = vim.keymap 46 | 47 | keymap.set("n", "ff", "Telescope find_files", { desc = "Fuzzy-find files in cwd" }) 48 | keymap.set("n", "fr", "Telescope oldfiles", { desc = "Fuzzy-find recent files" }) 49 | keymap.set("n", "fs", "Telescope live_grep", { desc = "Find string in cwd" }) 50 | keymap.set("n", "fc", "Telescope grep_string", { desc = "Find string under cursor in cwd" }) 51 | keymap.set("n", "fp", "Telescope git_files", 52 | { desc = "Fuzzy-find project files tracked by git" }) 53 | keymap.set("n", "fu", "Telescope git_status", { desc = "Fuzzy-find changed project files" }) 54 | keymap.set("n", "ft", "Telescope aerial", { desc = "Show ctags" }) 55 | end, 56 | } 57 | -------------------------------------------------------------------------------- /.config/zed/settings.json: -------------------------------------------------------------------------------- 1 | // Zed settings 2 | // 3 | // For information on how to configure Zed, see the Zed 4 | // documentation: https://zed.dev/docs/configuring-zed 5 | // 6 | // To see all of Zed's default settings without changing your 7 | // custom settings, run `zed: open default settings` from the 8 | // command palette (cmd-shift-p / ctrl-shift-p) 9 | { 10 | "vim_mode": true, 11 | "relative_line_numbers": true, 12 | "show_edit_predictions": true, 13 | "assistant": { 14 | "default_model": { 15 | "provider": "zed.dev", 16 | "model": "claude-3-5-sonnet" 17 | }, 18 | "version": "2" 19 | }, 20 | "ui_font_size": 15, 21 | "ui_font_family": "Fira Code", 22 | "ui_font_weight": 500, 23 | "buffer_font_size": 13.5, 24 | "buffer_font_family": "Fira Code", 25 | "buffer_line_height": { 26 | "custom": 1.9 27 | }, 28 | "buffer_font_weight": 500, 29 | "scroll_beyond_last_line": "vertical_scroll_margin", 30 | "indent_guides": { 31 | "enabled": false 32 | }, 33 | "tabs": { 34 | "git_status": true 35 | }, 36 | "autosave": "on_focus_change", 37 | "theme": { 38 | "mode": "system", 39 | "light": "Tokyo Night", 40 | "dark": "Tokyo Night" 41 | }, 42 | "experimental.theme_overrides": { 43 | "border": "#082B39", 44 | "border.variant": "#082B39", 45 | "border.selected": "#082B39", 46 | "border.transparent": "#082B39", 47 | "border.disabled": "#082B39", 48 | "surface.background": "#1E1D2C", 49 | "background": "#092D40", 50 | "element.background": "#092D40", 51 | "drop_target.background": "#082B39", 52 | "ghost_element.background": "#1E1D2C", 53 | "text.muted": "#9da2c9", 54 | "text.placeholder": "#9da2c9", 55 | "icon": "#9da2c9", 56 | "icon.muted": "#9da2c9", 57 | "status_bar.background": "#1E1D2C", 58 | "title_bar.background": "#1E1D2C", 59 | "title_bar.inactive_background": "#1E1D2C", 60 | "toolbar.background": "#1E1D2C", 61 | "tab_bar.background": "#1E1D2C", 62 | "tab.inactive_background": "#1E1D2C", 63 | "panel.background": "#1E1D2C", 64 | "scrollbar.track.background": "#1E1D2C", 65 | "scrollbar.track.border": "#082B39", 66 | "editor.background": "#1E1D2C", 67 | "editor.gutter.background": "#1E1D2C", 68 | "editor.subheader.background": "#1E1D2C", 69 | "editor.active_line.background": "#1C1B2E", 70 | "editor.highlighted_line.background": "#082B39", 71 | "editor.line_number": "#6d89a1", 72 | "editor.wrap_guide": "#082B39", 73 | "editor.active_wrap_guide": "#082B39", 74 | "terminal.background": "#1E1D2C", 75 | "terminal.ansi.white": "#9da2c9", 76 | "conflict.background": "#1E1D2C", 77 | "created.background": "#1E1D2C", 78 | "deleted.background": "#1E1D2C", 79 | "error.background": "#1E1D2C", 80 | "hidden.background": "#1E1D2C", 81 | "hint.background": "#1E1D2C", 82 | "ignored.background": "#1E1D2C", 83 | "info.background": "#1E1D2C", 84 | "modified.background": "#1E1D2C", 85 | "predictive.background": "#1E1D2C", 86 | "renamed.background": "#1E1D2C", 87 | "success.background": "#1E1D2C", 88 | "unreachable.background": "#1E1D2C", 89 | "warning.background": "#1E1D2C", 90 | "players": [ 91 | { 92 | "cursor": "#7c7f93", 93 | "background": "#7c7f93", 94 | "selection": "#03546f" 95 | } 96 | ], 97 | "syntax": { 98 | "comment": { 99 | "color": "#7b7f9d", 100 | "font_style": null, 101 | "font_weight": null 102 | } 103 | } 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /.config/nvim/lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, 3 | "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, 4 | "aerial.nvim": { "branch": "master", "commit": "2e00d1d4248f08dddfceacb8d2996e51e13e00f6" }, 5 | "alpha-nvim": { "branch": "main", "commit": "a35468cd72645dbd52c0624ceead5f301c566dff" }, 6 | "auto-session": { "branch": "main", "commit": "00334ee24b9a05001ad50221c8daffbeedaa0842" }, 7 | "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, 8 | "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, 9 | "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, 10 | "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" }, 11 | "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, 12 | "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, 13 | "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, 14 | "gitsigns.nvim": { "branch": "main", "commit": "8bdaccdb897945a3c99c1ad8df94db0ddf5c8790" }, 15 | "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, 16 | "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" }, 17 | "lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" }, 18 | "mason-lspconfig.nvim": { "branch": "main", "commit": "67da97f8c2fd12d05427bb485ce07ee6418e0a51" }, 19 | "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, 20 | "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" }, 21 | "nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" }, 22 | "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, 23 | "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" }, 24 | "nvim-lspconfig": { "branch": "master", "commit": "03bc581e05e81d33808b42b2d7e76d70adb3b595" }, 25 | "nvim-surround": { "branch": "main", "commit": "8dd9150ca7eae5683660ea20cec86edcd5ca4046" }, 26 | "nvim-tree.lua": { "branch": "master", "commit": "ebcaccda1c575fa19a8087445276e6671e2b9b37" }, 27 | "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, 28 | "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, 29 | "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, 30 | "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, 31 | "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, 32 | "project.nvim": { "branch": "main", "commit": "9cc719f455295e7a2fc7340d4fd87327f3fe15ca" }, 33 | "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, 34 | "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, 35 | "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, 36 | "vim-maximizer": { "branch": "master", "commit": "2e54952fe91e140a2e69f35f22131219fcd9c5f1" }, 37 | "vim-tmux-navigator": { "branch": "master", "commit": "a74836d404c295e799a6ba59794e37fe257509ec" }, 38 | "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } 39 | } 40 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # Basic configuration 2 | export LANG=en_US.UTF-8 3 | export PATH=/opt/homebrew/bin:/usr/local/bin:$HOME/go/bin:$PATH 4 | 5 | # Path to your Oh My Zsh installation 6 | export ZSH="$HOME/.oh-my-zsh" 7 | 8 | setopt HIST_EXPIRE_DUPS_FIRST 9 | setopt HIST_IGNORE_ALL_DUPS 10 | setopt HIST_FIND_NO_DUPS 11 | setopt HIST_SAVE_NO_DUPS 12 | setopt HIST_IGNORE_SPACE 13 | setopt HIST_REDUCE_BLANKS 14 | 15 | # Set name of the theme to load --- if set to "random", it will 16 | # load a random theme each time Oh My Zsh is loaded, in which case, 17 | # to know which specific one was loaded, run: echo $RANDOM_THEME 18 | # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes 19 | ZSH_THEME="avit" 20 | 21 | # Set list of themes to pick from when loading at random 22 | # Setting this variable when ZSH_THEME=random will cause zsh to load 23 | # a theme from this variable instead of looking in $ZSH/themes/ 24 | # If set to an empty array, this variable will have no effect. 25 | # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) 26 | 27 | # Uncomment the following line to use case-sensitive completion. 28 | # CASE_SENSITIVE="true" 29 | 30 | # Uncomment the following line to use hyphen-insensitive completion. 31 | # Case-sensitive completion must be off. _ and - will be interchangeable. 32 | # HYPHEN_INSENSITIVE="true" 33 | 34 | # Uncomment one of the following lines to change the auto-update behavior 35 | # zstyle ':omz:update' mode disabled # disable automatic updates 36 | # zstyle ':omz:update' mode auto # update automatically without asking 37 | zstyle ':omz:update' mode reminder # just remind me to update when it's time 38 | 39 | # Uncomment the following line to change how often to auto-update (in days). 40 | # zstyle ':omz:update' frequency 13 41 | 42 | # Uncomment the following line if pasting URLs and other text is messed up. 43 | # DISABLE_MAGIC_FUNCTIONS="true" 44 | 45 | # Uncomment the following line to disable colors in ls. 46 | # DISABLE_LS_COLORS="true" 47 | 48 | # Uncomment the following line to disable auto-setting terminal title. 49 | DISABLE_AUTO_TITLE="true" 50 | 51 | # Uncomment the following line to enable command auto-correction. 52 | # ENABLE_CORRECTION="true" 53 | 54 | # Uncomment the following line to display red dots whilst waiting for completion. 55 | # You can also set it to another string to have that shown instead of the default red dots. 56 | # e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" 57 | # Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) 58 | # COMPLETION_WAITING_DOTS="true" 59 | 60 | # Uncomment the following line if you want to disable marking untracked files 61 | # under VCS as dirty. This makes repository status check for large repositories 62 | # much, much faster. 63 | # DISABLE_UNTRACKED_FILES_DIRTY="true" 64 | 65 | # Uncomment the following line if you want to change the command execution time 66 | # stamp shown in the history command output. 67 | # You can set one of the optional three formats: 68 | # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" 69 | # or set a custom format using the strftime function format specifications, 70 | # see 'man strftime' for details. 71 | # HIST_STAMPS="mm/dd/yyyy" 72 | 73 | # Would you like to use another custom folder than $ZSH/custom? 74 | # ZSH_CUSTOM=/path/to/new-custom-folder 75 | 76 | # Which plugins would you like to load? 77 | # Standard plugins can be found in $ZSH/plugins/ 78 | # Custom plugins may be added to $ZSH_CUSTOM/plugins/ 79 | # Example format: plugins=(rails git textmate ruby lighthouse) 80 | # Add wisely, as too many plugins slow down shell startup. 81 | plugins=(1password brew docker git golang) 82 | 83 | source $ZSH/oh-my-zsh.sh 84 | 85 | # User configuration 86 | export LANG=en_US.UTF-8 87 | export PATH=/opt/homebrew/bin:/Users/apo/go/bin:$PATH 88 | export LESS="-R +g" 89 | 90 | # Preferred editor for local and remote sessions 91 | if [[ -n $SSH_CONNECTION ]]; then 92 | export EDITOR='vim' 93 | else 94 | export EDITOR='nvim' 95 | fi 96 | 97 | export GPG_TTY=$(tty) 98 | export GOPATH=~/go 99 | export GITHUB_TOKEN= 100 | export JIRA_API_TOKEN= 101 | export OPENAI_API_KEY= 102 | 103 | # Aliases 104 | alias cd="z" 105 | alias ws="cd ~/workspace" 106 | alias wsg="cd ~/go/src/github.com" 107 | 108 | # JiraCLI 109 | alias jv="jira issue view" 110 | alias jls="jira issue list" 111 | alias jo="jira open" 112 | alias jb='jira issue list -q "sprint is empty and issuetype not in (Epic, Sub-task)" --order-by rank -s~Done --reverse' # Jira Backlog 113 | 114 | # Other configs 115 | source <(fzf --zsh) 116 | [[ ! -f "${fpath[1]}/_jira" ]] && jira completion zsh > "${fpath[1]}/_jira" 117 | eval "$(zoxide init zsh)" 118 | eval "$(starship init zsh)" 119 | source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh 120 | 121 | # Utilities 122 | function lk { 123 | cd "$(walk --icons "$@")" 124 | } 125 | source /Users/apo/.config/op/plugins.sh 126 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/lsp/lspconfig.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "neovim/nvim-lspconfig", 3 | event = { "BufReadPre", "BufNewFile" }, 4 | dependencies = { 5 | "hrsh7th/cmp-nvim-lsp", 6 | { "antosha417/nvim-lsp-file-operations", config = true }, 7 | { "folke/neodev.nvim", opts = {} }, 8 | }, 9 | config = function() 10 | local lspconfig = require("lspconfig") 11 | local mason_lspconfig = require("mason-lspconfig") 12 | local cmp_nvim_lsp = require("cmp_nvim_lsp") 13 | 14 | -- Keymaps 15 | local keymap = vim.keymap 16 | 17 | vim.api.nvim_create_autocmd("LspAttach", { 18 | group = vim.api.nvim_create_augroup("UserLspConfig", {}), 19 | callback = function(ev) 20 | local opts = { buffer = ev.buf, silent = true } 21 | 22 | -- set keybinds 23 | opts.desc = "Show LSP references" 24 | keymap.set("n", "gR", "Telescope lsp_references", opts) -- show definition, references 25 | 26 | opts.desc = "Go to declaration" 27 | keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration 28 | 29 | opts.desc = "Show LSP definitions" 30 | keymap.set("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions 31 | 32 | opts.desc = "Show LSP implementations" 33 | keymap.set("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations 34 | 35 | opts.desc = "Show LSP type definitions" 36 | keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions 37 | 38 | opts.desc = "See available code actions" 39 | keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection 40 | 41 | opts.desc = "Smart rename" 42 | keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- smart rename 43 | 44 | opts.desc = "Show buffer diagnostics" 45 | keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file 46 | 47 | opts.desc = "Show line diagnostics" 48 | keymap.set("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line 49 | 50 | opts.desc = "Show all diagnostics" 51 | keymap.set("n", "dd", "Telescope diagnostics", opts) -- show diagnostics accross entire project 52 | 53 | opts.desc = "Go to previous diagnostic" 54 | keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer 55 | 56 | opts.desc = "Go to next diagnostic" 57 | keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer 58 | 59 | opts.desc = "Show documentation for what is under cursor" 60 | keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor 61 | 62 | opts.desc = "Restart LSP" 63 | keymap.set("n", "rs", ":LspRestart", opts) 64 | end, 65 | }) 66 | 67 | -- Autocompletion 68 | local capabilities = cmp_nvim_lsp.default_capabilities() 69 | 70 | -- Diagnostic symbols 71 | local signs = { Error = " ", Warn = " ", Hint = "󰠠 ", Info = " " } 72 | for type, icon in pairs(signs) do 73 | local hl = "DiagnosticSign" .. type 74 | vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) 75 | end 76 | 77 | mason_lspconfig.setup({ 78 | function(server_name) 79 | lspconfig[server_name].setup({ 80 | capabilities = capabilities, 81 | }) 82 | end, 83 | ["lua_ls"] = function() 84 | lspconfig["lua_ls"].setup({ 85 | capabilities = capabilities, 86 | settings = { 87 | Lua = { 88 | diagnostics = { 89 | globals = { "vim" }, 90 | }, 91 | completion = { 92 | callSnippet = "Replace", 93 | }, 94 | }, 95 | }, 96 | }) 97 | end, 98 | ["gopls"] = function() 99 | lspconfig["gopls"].setup({ 100 | capabilities = capabilities, 101 | settings = { 102 | gopls = { 103 | analyses = { 104 | unusedparams = true, 105 | }, 106 | staticcheck = true, 107 | gofumpt = true, 108 | }, 109 | }, 110 | }) 111 | end, 112 | }) 113 | end, 114 | } 115 | -------------------------------------------------------------------------------- /.config/nvim/lua/apo/plugins/nvim-tree.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-tree/nvim-tree.lua", 3 | dependencies = "nvim-tree/nvim-web-devicons", 4 | config = function() 5 | local nvimtree = require("nvim-tree") 6 | 7 | -- Recommended settings 8 | vim.g.loaded_netrw = 1 9 | vim.g.loaded_netrwPlugin = 1 10 | 11 | nvimtree.setup({ 12 | view = { 13 | width = 45, 14 | relativenumber = true, 15 | }, 16 | renderer = { 17 | indent_markers = { 18 | enable = true, 19 | }, 20 | icons = { 21 | glyphs = { 22 | folder = { 23 | arrow_closed = "", 24 | arrow_open = "", 25 | }, 26 | }, 27 | }, 28 | }, 29 | actions = { 30 | open_file = { 31 | window_picker = { 32 | enable = false, 33 | }, 34 | }, 35 | }, 36 | filters = { 37 | custom = { ".DS_Store" }, 38 | }, 39 | git = { 40 | ignore = false, 41 | }, 42 | ui = { 43 | confirm = { 44 | remove = true, 45 | trash = false, 46 | }, 47 | }, 48 | on_attach = function(bufnr) 49 | local api = require("nvim-tree.api") 50 | local opts = function(desc) 51 | return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } 52 | end 53 | 54 | -- mark operation 55 | local mark_move_j = function() 56 | api.marks.toggle() 57 | vim.cmd("norm j") 58 | end 59 | local mark_move_k = function() 60 | api.marks.toggle() 61 | vim.cmd("norm k") 62 | end 63 | 64 | -- marked files operation 65 | local mark_trash = function() 66 | local marks = api.marks.list() 67 | if #marks == 0 then 68 | table.insert(marks, api.tree.get_node_under_cursor()) 69 | end 70 | vim.ui.input({ prompt = string.format("Trash %s files? [y/n] ", #marks) }, function(input) 71 | if input == "y" then 72 | for _, node in ipairs(marks) do 73 | api.fs.trash(node) 74 | end 75 | api.marks.clear() 76 | api.tree.reload() 77 | end 78 | end) 79 | end 80 | local mark_remove = function() 81 | local marks = api.marks.list() 82 | if #marks == 0 then 83 | table.insert(marks, api.tree.get_node_under_cursor()) 84 | end 85 | vim.ui.input({ prompt = string.format("Remove/Delete %s files? [y/n] ", #marks) }, function(input) 86 | if input == "y" then 87 | for _, node in ipairs(marks) do 88 | api.fs.remove(node) 89 | end 90 | api.marks.clear() 91 | api.tree.reload() 92 | end 93 | end) 94 | end 95 | 96 | local mark_copy = function() 97 | local marks = api.marks.list() 98 | if #marks == 0 then 99 | table.insert(marks, api.tree.get_node_under_cursor()) 100 | end 101 | for _, node in pairs(marks) do 102 | api.fs.copy.node(node) 103 | end 104 | api.marks.clear() 105 | api.tree.reload() 106 | end 107 | local mark_cut = function() 108 | local marks = api.marks.list() 109 | if #marks == 0 then 110 | table.insert(marks, api.tree.get_node_under_cursor()) 111 | end 112 | for _, node in pairs(marks) do 113 | api.fs.cut(node) 114 | end 115 | api.marks.clear() 116 | api.tree.reload() 117 | end 118 | 119 | vim.keymap.set("n", "a", api.fs.create, opts("Create")) 120 | vim.keymap.set("n", "p", api.fs.paste, opts("Paste")) 121 | vim.keymap.set("n", "r", api.fs.rename, opts("Rename")) 122 | vim.keymap.set("n", "m", mark_move_j, opts("Toggle Bookmark Down")) 123 | vim.keymap.set("n", "M", mark_move_k, opts("Toggle Bookmark Up")) 124 | 125 | vim.keymap.set("n", "x", mark_cut, opts("Cut File(s)")) 126 | vim.keymap.set("n", "d", mark_trash, opts("Trash File(s)")) 127 | vim.keymap.set("n", "D", mark_remove, opts("Remove File(s)")) 128 | vim.keymap.set("n", "y", mark_copy, opts("Copy File(s)")) 129 | 130 | vim.keymap.set("n", "mv", api.marks.bulk.move, opts("Move Bookmarked")) 131 | vim.keymap.set("n", "", api.node.open.edit, opts("Open file")) 132 | end, 133 | }) 134 | 135 | -- Keymaps 136 | local keymap = vim.keymap 137 | 138 | keymap.set("n", "ee", "NvimTreeToggle", { desc = "Toggle file explorer" }) 139 | keymap.set("n", "ef", "NvimTreeFindFileToggle", 140 | { desc = "Toggle file explorer on current buffer" }) 141 | keymap.set("n", "ec", "NvimTreeCollapse", { desc = "Collapse file explorer" }) 142 | keymap.set("n", "er", "NvimTreeRefresh", { desc = "Refresh file explorer" }) 143 | end 144 | } 145 | -------------------------------------------------------------------------------- /iterm.json: -------------------------------------------------------------------------------- 1 | { 2 | "Badge Text" : "\\(user.badge)", 3 | "Thin Strokes" : 0, 4 | "Working Directory" : "\/Users\/apo\/workspace", 5 | "Prompt Before Closing 2" : 1, 6 | "Selected Text Color" : { 7 | "Red Component" : 0.57647058823529407, 8 | "Color Space" : "sRGB", 9 | "Blue Component" : 0.63137254901960782, 10 | "Green Component" : 0.63137254901960782 11 | }, 12 | "Set Local Environment Vars" : 2, 13 | "Rows" : 37, 14 | "Ansi 11 Color" : { 15 | "Red Component" : 0.8341064453125, 16 | "Color Space" : "sRGB", 17 | "Blue Component" : 0.019091181457042694, 18 | "Alpha Component" : 1, 19 | "Green Component" : 0.63410269958109955 20 | }, 21 | "Use Italic Font" : true, 22 | "HotKey Characters" : "\u001b", 23 | "Foreground Color" : { 24 | "Red Component" : 0.79055145755410194, 25 | "Color Space" : "sRGB", 26 | "Blue Component" : 0.81109619140625, 27 | "Alpha Component" : 1, 28 | "Green Component" : 0.80893358784286584 29 | }, 30 | "HotKey Window Floats" : true, 31 | "Right Option Key Sends" : 0, 32 | "Show Status Bar" : false, 33 | "Character Encoding" : 4, 34 | "Selection Color" : { 35 | "Red Component" : 0.16535898298025131, 36 | "Color Space" : "sRGB", 37 | "Blue Component" : 0.48956298828125, 38 | "Alpha Component" : 1, 39 | "Green Component" : 0.36320772242129351 40 | }, 41 | "Show Mark Indicators" : false, 42 | "Mouse Reporting" : true, 43 | "Cursor Boost" : 0, 44 | "Ansi 4 Color" : { 45 | "Red Component" : 0.37254901960784315, 46 | "Color Space" : "sRGB", 47 | "Blue Component" : 0.88235294117647056, 48 | "Alpha Component" : 1, 49 | "Green Component" : 0.55294117647058827 50 | }, 51 | "Non-ASCII Anti Aliased" : true, 52 | "Sync Title" : false, 53 | "Disable Window Resizing" : true, 54 | "Description" : "Default", 55 | "Custom Locale" : "en_AU.UTF-8", 56 | "Close Sessions On End" : true, 57 | "Jobs to Ignore" : [ 58 | "rlogin", 59 | "ssh", 60 | "slogin", 61 | "telnet" 62 | ], 63 | "Scrollback Lines" : 0, 64 | "HotKey Window Reopens On Activation" : false, 65 | "Status Bar Layout" : { 66 | "components" : [ 67 | { 68 | "class" : "iTermStatusBarBatteryComponent", 69 | "configuration" : { 70 | "knobs" : { 71 | "base: priority" : 5, 72 | "base: compression resistance" : 1 73 | }, 74 | "layout advanced configuration dictionary value" : { 75 | "algorithm" : 0 76 | } 77 | } 78 | }, 79 | { 80 | "class" : "iTermStatusBarCPUUtilizationComponent", 81 | "configuration" : { 82 | "knobs" : { 83 | "base: priority" : 5, 84 | "base: compression resistance" : 1 85 | }, 86 | "layout advanced configuration dictionary value" : { 87 | "algorithm" : 0 88 | } 89 | } 90 | }, 91 | { 92 | "class" : "iTermStatusBarMemoryUtilizationComponent", 93 | "configuration" : { 94 | "knobs" : { 95 | "base: priority" : 5, 96 | "base: compression resistance" : 1 97 | }, 98 | "layout advanced configuration dictionary value" : { 99 | "algorithm" : 0 100 | } 101 | } 102 | }, 103 | { 104 | "class" : "iTermStatusBarNetworkUtilizationComponent", 105 | "configuration" : { 106 | "knobs" : { 107 | "base: priority" : 5, 108 | "base: compression resistance" : 1 109 | }, 110 | "layout advanced configuration dictionary value" : { 111 | "algorithm" : 0 112 | } 113 | } 114 | }, 115 | { 116 | "class" : "iTermStatusBarClockComponent", 117 | "configuration" : { 118 | "knobs" : { 119 | "base: priority" : 5, 120 | "format" : "M\/dd h:mm", 121 | "base: compression resistance" : 1 122 | }, 123 | "layout advanced configuration dictionary value" : { 124 | "algorithm" : 0 125 | } 126 | } 127 | } 128 | ], 129 | "advanced configuration" : { 130 | "font" : ".AppleSystemUIFont 12", 131 | "algorithm" : 0 132 | } 133 | }, 134 | "Flashing Bell" : false, 135 | "Cursor Guide Color" : { 136 | "Red Component" : 0.70213186740875244, 137 | "Color Space" : "sRGB", 138 | "Blue Component" : 1, 139 | "Alpha Component" : 0.25, 140 | "Green Component" : 0.9268307089805603 141 | }, 142 | "BM Growl" : true, 143 | "Ansi 3 Color" : { 144 | "Red Component" : 0.760223388671875, 145 | "Color Space" : "sRGB", 146 | "Blue Component" : 0.020984559785574682, 147 | "Alpha Component" : 1, 148 | "Green Component" : 0.57934580846550199 149 | }, 150 | "Use Non-ASCII Font" : true, 151 | "Link Color" : { 152 | "Red Component" : 0.28704401291906834, 153 | "Color Space" : "sRGB", 154 | "Blue Component" : 0.87115478515625, 155 | "Alpha Component" : 1, 156 | "Green Component" : 0.49533157511217224 157 | }, 158 | "Use Custom Tab Title" : false, 159 | "Shortcut" : "", 160 | "Background Image Location" : "", 161 | "Bold Color" : { 162 | "Red Component" : 0.57647058823529407, 163 | "Color Space" : "sRGB", 164 | "Blue Component" : 0.63137254901960782, 165 | "Alpha Component" : 1, 166 | "Green Component" : 0.63137254901960782 167 | }, 168 | "Use Cursor Guide" : false, 169 | "Unlimited Scrollback" : true, 170 | "Custom Command" : "Yes", 171 | "HotKey Key Code" : 53, 172 | "Keyboard Map" : { 173 | "0xf728-0x80000" : { 174 | "Action" : 10, 175 | "Text" : "d" 176 | }, 177 | "0xf702-0x280000" : { 178 | "Action" : 10, 179 | "Text" : "b" 180 | }, 181 | "0xf70d-0x20000" : { 182 | "Action" : 10, 183 | "Text" : "[21;2~" 184 | }, 185 | "0x7f-0x80000" : { 186 | "Action" : 11, 187 | "Text" : "0x1b 0x7f" 188 | }, 189 | "0xf708-0x20000" : { 190 | "Action" : 10, 191 | "Text" : "[15;2~" 192 | }, 193 | "0x33-0x40000" : { 194 | "Action" : 11, 195 | "Text" : "0x1b" 196 | }, 197 | "0xf703-0x260000" : { 198 | "Action" : 10, 199 | "Text" : "[1;6C" 200 | }, 201 | "0xf729-0x20000" : { 202 | "Action" : 10, 203 | "Text" : "[1;2H" 204 | }, 205 | "0xf702-0x260000" : { 206 | "Action" : 10, 207 | "Text" : "[1;6D" 208 | }, 209 | "0x38-0x40000" : { 210 | "Action" : 11, 211 | "Text" : "0x7f" 212 | }, 213 | "0xf72b-0x40000" : { 214 | "Action" : 10, 215 | "Text" : "[1;5F" 216 | }, 217 | "0xf70c-0x20000" : { 218 | "Action" : 10, 219 | "Text" : "[20;2~" 220 | }, 221 | "0xf701-0x260000" : { 222 | "Action" : 10, 223 | "Text" : "[1;6B" 224 | }, 225 | "0x32-0x40000" : { 226 | "Action" : 11, 227 | "Text" : "0x00" 228 | }, 229 | "0xf707-0x20000" : { 230 | "Action" : 10, 231 | "Text" : "[1;2S" 232 | }, 233 | "0xf703-0x240000" : { 234 | "Action" : 10, 235 | "Text" : "[1;5C" 236 | }, 237 | "0xf700-0x260000" : { 238 | "Action" : 10, 239 | "Text" : "[1;6A" 240 | }, 241 | "0xf702-0x240000" : { 242 | "Action" : 10, 243 | "Text" : "[1;5D" 244 | }, 245 | "0xf703-0x300000" : { 246 | "Action" : 11, 247 | "Text" : "0x5" 248 | }, 249 | "0x37-0x40000" : { 250 | "Action" : 11, 251 | "Text" : "0x1f" 252 | }, 253 | "0x3-0x200000" : { 254 | "Action" : 11, 255 | "Text" : "0xd" 256 | }, 257 | "0xf701-0x240000" : { 258 | "Action" : 10, 259 | "Text" : "[1;5B" 260 | }, 261 | "0xf702-0x300000" : { 262 | "Action" : 11, 263 | "Text" : "0x1" 264 | }, 265 | "0xf703-0x220000" : { 266 | "Action" : 10, 267 | "Text" : "[1;2C" 268 | }, 269 | "0xf739-0x0" : { 270 | "Action" : 13, 271 | "Text" : "" 272 | }, 273 | "0xf70b-0x20000" : { 274 | "Action" : 10, 275 | "Text" : "[19;2~" 276 | }, 277 | "0xf728-0x0" : { 278 | "Action" : 11, 279 | "Text" : "0x4" 280 | }, 281 | "0xf706-0x20000" : { 282 | "Action" : 10, 283 | "Text" : "[1;2R" 284 | }, 285 | "0xf700-0x240000" : { 286 | "Action" : 10, 287 | "Text" : "[1;5A" 288 | }, 289 | "0xf702-0x220000" : { 290 | "Action" : 10, 291 | "Text" : "[1;2D" 292 | }, 293 | "0x36-0x40000" : { 294 | "Action" : 11, 295 | "Text" : "0x1e" 296 | }, 297 | "0xf70f-0x20000" : { 298 | "Action" : 10, 299 | "Text" : "[24;2~" 300 | }, 301 | "0xf701-0x220000" : { 302 | "Action" : 10, 303 | "Text" : "[1;2B" 304 | }, 305 | "0xf70a-0x20000" : { 306 | "Action" : 10, 307 | "Text" : "[18;2~" 308 | }, 309 | "0xf729-0x40000" : { 310 | "Action" : 10, 311 | "Text" : "[1;5H" 312 | }, 313 | "0xf72b-0x20000" : { 314 | "Action" : 10, 315 | "Text" : "[1;2F" 316 | }, 317 | "0xf700-0x220000" : { 318 | "Action" : 10, 319 | "Text" : "[1;2A" 320 | }, 321 | "0x30-0x200000" : { 322 | "Action" : 12, 323 | "Text" : "0" 324 | }, 325 | "0xf705-0x20000" : { 326 | "Action" : 10, 327 | "Text" : "[1;2Q" 328 | }, 329 | "0x31-0x200000" : { 330 | "Action" : 12, 331 | "Text" : "1" 332 | }, 333 | "0x33-0x200000" : { 334 | "Action" : 12, 335 | "Text" : "3" 336 | }, 337 | "0x35-0x40000" : { 338 | "Action" : 11, 339 | "Text" : "0x1d" 340 | }, 341 | "0x34-0x200000" : { 342 | "Action" : 12, 343 | "Text" : "4" 344 | }, 345 | "0x32-0x200000" : { 346 | "Action" : 12, 347 | "Text" : "2" 348 | }, 349 | "0x35-0x200000" : { 350 | "Action" : 12, 351 | "Text" : "5" 352 | }, 353 | "0x36-0x200000" : { 354 | "Action" : 12, 355 | "Text" : "6" 356 | }, 357 | "0x37-0x200000" : { 358 | "Action" : 12, 359 | "Text" : "7" 360 | }, 361 | "0x2d-0x40000" : { 362 | "Action" : 11, 363 | "Text" : "0x1f" 364 | }, 365 | "0x38-0x200000" : { 366 | "Action" : 12, 367 | "Text" : "8" 368 | }, 369 | "0x2a-0x200000" : { 370 | "Action" : 12, 371 | "Text" : "*" 372 | }, 373 | "0x39-0x200000" : { 374 | "Action" : 12, 375 | "Text" : "9" 376 | }, 377 | "0x2b-0x200000" : { 378 | "Action" : 12, 379 | "Text" : "+" 380 | }, 381 | "0xf70e-0x20000" : { 382 | "Action" : 10, 383 | "Text" : "[23;2~" 384 | }, 385 | "0x2e-0x200000" : { 386 | "Action" : 12, 387 | "Text" : "." 388 | }, 389 | "0x2d-0x200000" : { 390 | "Action" : 12, 391 | "Text" : "-" 392 | }, 393 | "0xf709-0x20000" : { 394 | "Action" : 10, 395 | "Text" : "[17;2~" 396 | }, 397 | "0x7f-0x100000" : { 398 | "Action" : 11, 399 | "Text" : "0x15" 400 | }, 401 | "0x2f-0x200000" : { 402 | "Action" : 12, 403 | "Text" : "\/" 404 | }, 405 | "0xf704-0x20000" : { 406 | "Action" : 10, 407 | "Text" : "[1;2P" 408 | }, 409 | "0x34-0x40000" : { 410 | "Action" : 11, 411 | "Text" : "0x1c" 412 | }, 413 | "0xf703-0x280000" : { 414 | "Action" : 10, 415 | "Text" : "f" 416 | } 417 | }, 418 | "Ansi 14 Color" : { 419 | "Red Component" : 0.57647058823529407, 420 | "Color Space" : "sRGB", 421 | "Blue Component" : 0.63137254901960782, 422 | "Green Component" : 0.63137254901960782 423 | }, 424 | "Ansi 2 Color" : { 425 | "Red Component" : 0.43772547941955642, 426 | "Color Space" : "sRGB", 427 | "Blue Component" : 0.020017740316689021, 428 | "Alpha Component" : 1, 429 | "Green Component" : 0.70721435546875 430 | }, 431 | "Send Code When Idle" : false, 432 | "ASCII Anti Aliased" : true, 433 | "Tags" : [ 434 | 435 | ], 436 | "Ansi 9 Color" : { 437 | "Red Component" : 0.9034423828125, 438 | "Color Space" : "sRGB", 439 | "Blue Component" : 0.22044291906058788, 440 | "Alpha Component" : 1, 441 | "Green Component" : 0.22044291906058788 442 | }, 443 | "Use Bold Font" : true, 444 | "Silence Bell" : false, 445 | "Ansi 12 Color" : { 446 | "Red Component" : 0.51372549019607838, 447 | "Color Space" : "P3", 448 | "Blue Component" : 0.83921568627450982, 449 | "Alpha Component" : 1, 450 | "Green Component" : 0.6470588235294118 451 | }, 452 | "Window Type" : 0, 453 | "Has Hotkey" : false, 454 | "Use Bright Bold" : false, 455 | "HotKey Modifier Activation" : 0, 456 | "Cursor Text Color" : { 457 | "Red Component" : 0.027450980392156866, 458 | "Color Space" : "sRGB", 459 | "Blue Component" : 0.25882352941176473, 460 | "Green Component" : 0.21176470588235294 461 | }, 462 | "HotKey Window Dock Click Action" : 0, 463 | "Default Bookmark" : "No", 464 | "Cursor Color" : { 465 | "Red Component" : 0.51372549019607838, 466 | "Color Space" : "sRGB", 467 | "Blue Component" : 0.58823529411764708, 468 | "Green Component" : 0.58039215686274515 469 | }, 470 | "Ansi 1 Color" : { 471 | "Red Component" : 0.86274509803921573, 472 | "Color Space" : "sRGB", 473 | "Blue Component" : 0.18431372549019609, 474 | "Green Component" : 0.19607843137254902 475 | }, 476 | "Name" : "Ankit", 477 | "Guid" : "ECDD623A-A63C-4008-B9AD-29B1CAFD9CEE", 478 | "Blinking Cursor" : false, 479 | "Ansi 8 Color" : { 480 | "Red Component" : 0.0078431372549019572, 481 | "Color Space" : "sRGB", 482 | "Blue Component" : 0.25490196078431371, 483 | "Alpha Component" : 1, 484 | "Green Component" : 0.20392156862745098 485 | }, 486 | "Ansi 10 Color" : { 487 | "Red Component" : 0.47224464716718484, 488 | "Color Space" : "sRGB", 489 | "Blue Component" : 0.013862827327102428, 490 | "Alpha Component" : 1, 491 | "Green Component" : 0.767974853515625 492 | }, 493 | "Idle Code" : 0, 494 | "Badge Color" : { 495 | "Red Component" : 1, 496 | "Color Space" : "sRGB", 497 | "Blue Component" : 0, 498 | "Alpha Component" : 0.5, 499 | "Green Component" : 0.1491314172744751 500 | }, 501 | "Smart Cursor Color" : false, 502 | "Ambiguous Double Width" : false, 503 | "Ansi 0 Color" : { 504 | "Red Component" : 0.019607843137254909, 505 | "Color Space" : "sRGB", 506 | "Blue Component" : 0.19215686274509805, 507 | "Alpha Component" : 1, 508 | "Green Component" : 0.15686274509803921 509 | }, 510 | "Blur" : false, 511 | "Normal Font" : "FiraCode-Regular 13", 512 | "Vertical Spacing" : 1.2, 513 | "Ansi 7 Color" : { 514 | "Red Component" : 0.93333333333333335, 515 | "Color Space" : "sRGB", 516 | "Blue Component" : 0.83529411764705885, 517 | "Alpha Component" : 1, 518 | "Green Component" : 0.90980392156862744 519 | }, 520 | "Space" : 0, 521 | "HotKey Window AutoHides" : true, 522 | "Command" : "\/bin\/zsh", 523 | "Terminal Type" : "xterm-256color", 524 | "Horizontal Spacing" : 1, 525 | "Option Key Sends" : 0, 526 | "Blink Allowed" : false, 527 | "HotKey Window Animates" : true, 528 | "HotKey Modifier Flags" : 1048576, 529 | "Ansi 15 Color" : { 530 | "Red Component" : 0.99215686274509807, 531 | "Color Space" : "sRGB", 532 | "Blue Component" : 0.8901960784313725, 533 | "Alpha Component" : 1, 534 | "Green Component" : 0.96470588235294119 535 | }, 536 | "Minimum Contrast" : 0.40000000000000002, 537 | "Ansi 6 Color" : { 538 | "Red Component" : 0.16470588235294117, 539 | "Color Space" : "sRGB", 540 | "Blue Component" : 0.59607843137254901, 541 | "Green Component" : 0.63137254901960782 542 | }, 543 | "Transparency" : 0.02, 544 | "Initial Text" : "", 545 | "Background Color" : { 546 | "Red Component" : 0.11764705882352941, 547 | "Color Space" : "P3", 548 | "Blue Component" : 0.17254901960784313, 549 | "Alpha Component" : 1, 550 | "Green Component" : 0.11372549019607843 551 | }, 552 | "HotKey Activated By Modifier" : false, 553 | "Faint Text Alpha" : 0.5, 554 | "Screen" : -1, 555 | "HotKey Characters Ignoring Modifiers" : "\u001b", 556 | "Bound Hosts" : [ 557 | 558 | ], 559 | "Non Ascii Font" : "HackNFM-Regular 16", 560 | "Ansi 13 Color" : { 561 | "Red Component" : 0.42352941176470588, 562 | "Color Space" : "sRGB", 563 | "Blue Component" : 0.7686274509803922, 564 | "Green Component" : 0.44313725490196076 565 | }, 566 | "Columns" : 137, 567 | "Unicode Normalization" : 0, 568 | "HotKey Alternate Shortcuts" : [ 569 | 570 | ], 571 | "Visual Bell" : true, 572 | "Custom Directory" : "Yes", 573 | "Ansi 5 Color" : { 574 | "Red Component" : 0.82745098039215681, 575 | "Color Space" : "sRGB", 576 | "Blue Component" : 0.50980392156862742, 577 | "Green Component" : 0.21176470588235294 578 | }, 579 | "ASCII Ligatures" : false 580 | } -------------------------------------------------------------------------------- /.config/zed/themes/Tokyo Night.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://zed.dev/schema/themes/v0.1.0.json", 3 | "name": "Tokyo Night", 4 | "author": "Tokyo Night: Zed Theme Importer", 5 | "themes": [ 6 | { 7 | "name": "Tokyo Night", 8 | "appearance": "dark", 9 | "style": { 10 | "border": "#101014", 11 | "border.variant": "#101014", 12 | "border.focused": "#545c7e33", 13 | "border.selected": "#101014", 14 | "border.transparent": "#101014", 15 | "border.disabled": "#101014", 16 | "elevated_surface.background": "#14141b", 17 | "surface.background": "#16161e", 18 | "background": "#1a1b26", 19 | "element.background": "#1a1b26", 20 | "element.hover": "#565f89", 21 | "element.active": "#9aa5ce", 22 | "element.selected": "#565f89", 23 | "element.disabled": "#414868", 24 | "drop_target.background": "#1e202e", 25 | "ghost_element.background": "#1a1b26", 26 | "ghost_element.hover": "#565f89", 27 | "ghost_element.active": "#9aa5ce", 28 | "ghost_element.selected": "#565f89", 29 | "ghost_element.disabled": "#414868", 30 | "text": "#a9b1d6", 31 | "text.muted": "#787c99", 32 | "text.placeholder": "#787c99", 33 | "text.disabled": "#414868", 34 | "text.accent": "#7dcfff", 35 | "icon": "#787c99", 36 | "icon.muted": "#787c99", 37 | "icon.disabled": "#414868", 38 | "icon.placeholder": "#565f89", 39 | "icon.accent": "#7dcfff", 40 | "status_bar.background": "#16161e", 41 | "title_bar.background": "#16161e", 42 | "title_bar.inactive_background": "#16161e", 43 | "toolbar.background": "#16161e", 44 | "tab_bar.background": "#16161e", 45 | "tab.inactive_background": "#16161e", 46 | "tab.active_background": "#414868", 47 | "search.match_background": "#414868", 48 | "panel.background": "#16161e", 49 | "panel.focused_border": null, 50 | "pane.focused_border": null, 51 | "scrollbar.thumb.background": "#41486880", 52 | "scrollbar.thumb.hover_background": "#414868", 53 | "scrollbar.thumb.border": "#414868", 54 | "scrollbar.track.background": "#1a1b2680", 55 | "scrollbar.track.border": "#101014", 56 | "editor.foreground": "#a9b1d6", 57 | "editor.background": "#1a1b26", 58 | "editor.gutter.background": "#1a1b26", 59 | "editor.subheader.background": "#1a1b26", 60 | "editor.active_line.background": "#1e202e", 61 | "editor.highlighted_line.background": "#1e202e", 62 | "editor.line_number": "#363b54", 63 | "editor.active_line_number": "#a9b1d6", 64 | "editor.invisible": null, 65 | "editor.wrap_guide": "#101014", 66 | "editor.active_wrap_guide": "#101014", 67 | "editor.document_highlight.read_background": "#363b54", 68 | "editor.document_highlight.write_background": "#363b54", 69 | "terminal.background": "#16161e", 70 | "terminal.foreground": null, 71 | "terminal.bright_foreground": null, 72 | "terminal.dim_foreground": null, 73 | "terminal.ansi.black": "#363b54", 74 | "terminal.ansi.bright_black": "#363b54", 75 | "terminal.ansi.dim_black": null, 76 | "terminal.ansi.red": "#f7768e", 77 | "terminal.ansi.bright_red": "#f7768e", 78 | "terminal.ansi.dim_red": null, 79 | "terminal.ansi.green": "#73daca", 80 | "terminal.ansi.bright_green": "#41a6b5", 81 | "terminal.ansi.dim_green": null, 82 | "terminal.ansi.yellow": "#e0af68", 83 | "terminal.ansi.bright_yellow": "#e0af68", 84 | "terminal.ansi.dim_yellow": null, 85 | "terminal.ansi.blue": "#7aa2f7", 86 | "terminal.ansi.bright_blue": "#7aa2f7", 87 | "terminal.ansi.dim_blue": null, 88 | "terminal.ansi.magenta": "#bb9af7", 89 | "terminal.ansi.bright_magenta": "#bb9af7", 90 | "terminal.ansi.dim_magenta": null, 91 | "terminal.ansi.cyan": "#7dcfff", 92 | "terminal.ansi.bright_cyan": "#7dcfff", 93 | "terminal.ansi.dim_cyan": null, 94 | "terminal.ansi.white": "#787c99", 95 | "terminal.ansi.bright_white": "#acb0d0", 96 | "terminal.ansi.dim_white": null, 97 | "link_text.hover": "#7dcfff", 98 | "conflict": "#bb9af7", 99 | "conflict.background": "#1a1b26", 100 | "conflict.border": "#414868", 101 | "created": "#9ece6a", 102 | "created.background": "#1a1b26", 103 | "created.border": "#414868", 104 | "deleted": "#f7768e", 105 | "deleted.background": "#1a1b26", 106 | "deleted.border": "#414868", 107 | "error": "#f7768e", 108 | "error.background": "#1a1b26", 109 | "error.border": "#414868", 110 | "hidden": "#787c99", 111 | "hidden.background": "#1a1b26", 112 | "hidden.border": "#414868", 113 | "hint": "#51597d", 114 | "hint.background": "#1a1b26", 115 | "hint.border": "#414868", 116 | "ignored": "#515670", 117 | "ignored.background": "#1a1b26", 118 | "ignored.border": "#414868", 119 | "info": "#0da0ba", 120 | "info.background": "#1a1b26", 121 | "info.border": "#414868", 122 | "modified": "#e0af68", 123 | "modified.background": "#1a1b26", 124 | "modified.border": "#414868", 125 | "predictive": "#51597d", 126 | "predictive.background": "#1a1b26", 127 | "predictive.border": "#414868", 128 | "renamed": "#9ece6a", 129 | "renamed.background": "#1a1b26", 130 | "renamed.border": "#414868", 131 | "success": "#9ece6a", 132 | "success.background": "#1a1b26", 133 | "success.border": "#414868", 134 | "unreachable": "#f7768e", 135 | "unreachable.background": "#1a1b26", 136 | "unreachable.border": "#414868", 137 | "warning": "#e0af68", 138 | "warning.background": "#1a1b26", 139 | "warning.border": "#414868", 140 | "players": [ 141 | { 142 | "cursor": "#7c7f93", 143 | "background": "#7c7f93", 144 | "selection": "#7c7f93" 145 | } 146 | ], 147 | "syntax": { 148 | "attribute": { 149 | "color": "#bb9af7", 150 | "font_style": null, 151 | "font_weight": null 152 | }, 153 | "boolean": { 154 | "color": "#ff9e64", 155 | "font_style": null, 156 | "font_weight": null 157 | }, 158 | "comment": { 159 | "color": "#51597d", 160 | "font_style": null, 161 | "font_weight": null 162 | }, 163 | "comment.doc": { 164 | "color": "#51597d", 165 | "font_style": null, 166 | "font_weight": null 167 | }, 168 | "constant": { 169 | "color": "#ff9e64", 170 | "font_style": null, 171 | "font_weight": null 172 | }, 173 | "constructor": { 174 | "color": "#f7768e", 175 | "font_style": null, 176 | "font_weight": null 177 | }, 178 | "emphasis": { 179 | "color": "#f7768e", 180 | "font_style": "italic", 181 | "font_weight": null 182 | }, 183 | "emphasis.strong": { 184 | "color": "#f7768e", 185 | "font_style": null, 186 | "font_weight": 700 187 | }, 188 | "function": { 189 | "color": "#7aa2f7", 190 | "font_style": null, 191 | "font_weight": null 192 | }, 193 | "keyword": { 194 | "color": "#bb9af7", 195 | "font_style": null, 196 | "font_weight": null 197 | }, 198 | "label": { 199 | "color": "#c0caf5", 200 | "font_style": null, 201 | "font_weight": null 202 | }, 203 | "link_text": { 204 | "color": "#73daca", 205 | "font_style": null, 206 | "font_weight": null 207 | }, 208 | "link_uri": { 209 | "color": "#73daca", 210 | "font_style": null, 211 | "font_weight": null 212 | }, 213 | "number": { 214 | "color": "#ff9e64", 215 | "font_style": null, 216 | "font_weight": null 217 | }, 218 | "operator": { 219 | "color": "#89ddff", 220 | "font_style": null, 221 | "font_weight": null 222 | }, 223 | "preproc": { 224 | "color": "#73daca", 225 | "font_style": null, 226 | "font_weight": null 227 | }, 228 | "punctuation": { 229 | "color": "#89ddff", 230 | "font_style": null, 231 | "font_weight": null 232 | }, 233 | "punctuation.bracket": { 234 | "color": "#89ddff", 235 | "font_style": null, 236 | "font_weight": null 237 | }, 238 | "punctuation.delimiter": { 239 | "color": "#89ddff", 240 | "font_style": null, 241 | "font_weight": null 242 | }, 243 | "punctuation.list_marker": { 244 | "color": "#89ddff", 245 | "font_style": null, 246 | "font_weight": null 247 | }, 248 | "punctuation.special": { 249 | "color": "#89ddff", 250 | "font_style": null, 251 | "font_weight": null 252 | }, 253 | "string": { 254 | "color": "#9ece6a", 255 | "font_style": null, 256 | "font_weight": null 257 | }, 258 | "string.escape": { 259 | "color": "#bb9af7", 260 | "font_style": null, 261 | "font_weight": null 262 | }, 263 | "string.regex": { 264 | "color": "#9ece6a", 265 | "font_style": null, 266 | "font_weight": null 267 | }, 268 | "string.special": { 269 | "color": "#9ece6a", 270 | "font_style": null, 271 | "font_weight": null 272 | }, 273 | "string.special.symbol": { 274 | "color": "#9ece6a", 275 | "font_style": null, 276 | "font_weight": null 277 | }, 278 | "tag": { 279 | "color": "#f7768e", 280 | "font_style": null, 281 | "font_weight": null 282 | }, 283 | "text.literal": { 284 | "color": "#9ece6a", 285 | "font_style": null, 286 | "font_weight": null 287 | }, 288 | "title": { 289 | "color": "#ff9e64", 290 | "font_style": null, 291 | "font_weight": null 292 | }, 293 | "type": { 294 | "color": "#0db9d7", 295 | "font_style": null, 296 | "font_weight": null 297 | }, 298 | "variable": { 299 | "color": "#c0caf5", 300 | "font_style": null, 301 | "font_weight": null 302 | }, 303 | "variable.special": { 304 | "color": "#f7768e", 305 | "font_style": null, 306 | "font_weight": null 307 | } 308 | } 309 | } 310 | }, 311 | { 312 | "name": "Tokyo Night Light", 313 | "appearance": "light", 314 | "style": { 315 | "border": "#c1c2c7", 316 | "border.variant": "#c1c2c7", 317 | "border.focused": "#82859433", 318 | "border.selected": "#c1c2c7", 319 | "border.transparent": "#c1c2c7", 320 | "border.disabled": "#c1c2c7", 321 | "elevated_surface.background": "#d5d6db", 322 | "surface.background": "#cbccd1", 323 | "background": "#d5d6db", 324 | "element.background": "#d5d6db", 325 | "element.hover": "#9699a3", 326 | "element.active": "#565a6e", 327 | "element.selected": "#9699a3", 328 | "element.disabled": "#0f0f14", 329 | "drop_target.background": "#c1c2c7", 330 | "ghost_element.background": "#d5d6db", 331 | "ghost_element.hover": "#9699a3", 332 | "ghost_element.active": "#565a6e", 333 | "ghost_element.selected": "#9699a3", 334 | "ghost_element.disabled": "#0f0f14", 335 | "text": "#343b58", 336 | "text.muted": "#4c505e", 337 | "text.placeholder": "#4c505e", 338 | "text.disabled": "#0f0f14", 339 | "text.accent": "0f4b6e", 340 | "icon": "#4c505e", 341 | "icon.muted": "#4c505e", 342 | "icon.disabled": "#0f0f14", 343 | "icon.placeholder": "#9699a3", 344 | "icon.accent": "#0f4b6e", 345 | "status_bar.background": "#cbccd1", 346 | "title_bar.background": "#cbccd1", 347 | "title_bar.inactive_background": "#cbccd1", 348 | "toolbar.background": "#cbccd1", 349 | "tab_bar.background": "#cbccd1", 350 | "tab.inactive_background": "#cbccd1", 351 | "tab.active_background": "#9699a3", 352 | "search.match_background": "#9699a3", 353 | "panel.background": "#cbccd1", 354 | "panel.focused_border": null, 355 | "pane.focused_border": null, 356 | "scrollbar.thumb.background": "#9699a380", 357 | "scrollbar.thumb.hover_background": "#9699a3", 358 | "scrollbar.thumb.border": "#9699a3", 359 | "scrollbar.track.background": "#d5d6db80", 360 | "scrollbar.track.border": "#c1c2c7", 361 | "editor.foreground": "#343b59", 362 | "editor.background": "#d5d6db", 363 | "editor.gutter.background": "#d5d6db", 364 | "editor.subheader.background": "#d5d6db", 365 | "editor.active_line.background": "#dcdee3", 366 | "editor.highlighted_line.background": "#dcdee3", 367 | "editor.line_number": "#9da0ab", 368 | "editor.active_line_number": "#343b59", 369 | "editor.invisible": null, 370 | "editor.wrap_guide": "#c1c2c7", 371 | "editor.active_wrap_guide": "#c1c2c7", 372 | "editor.document_highlight.read_background": "#9da0ab", 373 | "editor.document_highlight.write_background": "#9da0ab", 374 | "terminal.background": "#cbccd1", 375 | "terminal.foreground": null, 376 | "terminal.bright_foreground": null, 377 | "terminal.dim_foreground": null, 378 | "terminal.ansi.black": "#0f0f14", 379 | "terminal.ansi.bright_black": "#0f0f14", 380 | "terminal.ansi.dim_black": null, 381 | "terminal.ansi.red": "#8c4351", 382 | "terminal.ansi.bright_red": "#8c4351", 383 | "terminal.ansi.dim_red": null, 384 | "terminal.ansi.green": "#33635c", 385 | "terminal.ansi.bright_green": "#33635c", 386 | "terminal.ansi.dim_green": null, 387 | "terminal.ansi.yellow": "#8f5e15", 388 | "terminal.ansi.bright_yellow": "#8f5e15", 389 | "terminal.ansi.dim_yellow": null, 390 | "terminal.ansi.blue": "#34548a", 391 | "terminal.ansi.bright_blue": "#34548a", 392 | "terminal.ansi.dim_blue": null, 393 | "terminal.ansi.magenta": "#5a4a78", 394 | "terminal.ansi.bright_magenta": "#5a4a78", 395 | "terminal.ansi.dim_magenta": null, 396 | "terminal.ansi.cyan": "#0f4b6e", 397 | "terminal.ansi.bright_cyan": "#0f4b6e", 398 | "terminal.ansi.dim_cyan": null, 399 | "terminal.ansi.white": "#828594", 400 | "terminal.ansi.bright_white": "#828594", 401 | "terminal.ansi.dim_white": null, 402 | "link_text.hover": "#4c505e", 403 | "conflict": "#5a4a78", 404 | "conflict.background": "#d5d6db", 405 | "conflict.border": "#343b58", 406 | "created": "#485e30", 407 | "created.background": "#d5d6db", 408 | "created.border": "#343b58", 409 | "deleted": "#8c4351", 410 | "deleted.background": "#d5d6db", 411 | "deleted.border": "#343b58", 412 | "error": "#8c4351", 413 | "error.background": "#d5d6db", 414 | "error.border": "#343b58", 415 | "hidden": "#4c505e", 416 | "hidden.background": "#d5d6db", 417 | "hidden.border": "#343b58", 418 | "hint": "#634f30", 419 | "hint.background": "#d5d6db", 420 | "hint.border": "#343b58", 421 | "ignored": "#828594", 422 | "ignored.background": "#d5d6db", 423 | "ignored.border": "#343b58", 424 | "info": "#0da0ba", 425 | "info.background": "#d5d6db", 426 | "info.border": "#343b58", 427 | "modified": "#8f5e15", 428 | "modified.background": "#d5d6db", 429 | "modified.border": "#343b58", 430 | "predictive": "#634f30", 431 | "predictive.background": "#d5d6db", 432 | "predictive.border": "#343b58", 433 | "renamed": "#485e30", 434 | "renamed.background": "#d5d6db", 435 | "renamed.border": "#343b58", 436 | "success": "#485e30", 437 | "success.background": "#d5d6db", 438 | "success.border": "#343b58", 439 | "unreachable": "#8c4351", 440 | "unreachable.background": "#d5d6db", 441 | "unreachable.border": "#343b58", 442 | "warning": "#8f5e15", 443 | "warning.background": "#d5d6db", 444 | "warning.border": "#343b58", 445 | "players": [ 446 | { 447 | "cursor": "#7c7f93", 448 | "background": "#7c7f93", 449 | "selection": "#7c7f93" 450 | } 451 | ], 452 | "syntax": { 453 | "attribute": { 454 | "color": "#5a4a78", 455 | "font_style": null, 456 | "font_weight": null 457 | }, 458 | "boolean": { 459 | "color": "#965027", 460 | "font_style": null, 461 | "font_weight": null 462 | }, 463 | "comment": { 464 | "color": "#9699a3", 465 | "font_style": null, 466 | "font_weight": null 467 | }, 468 | "comment.doc": { 469 | "color": "#9699a3", 470 | "font_style": null, 471 | "font_weight": null 472 | }, 473 | "constant": { 474 | "color": "#965027", 475 | "font_style": null, 476 | "font_weight": null 477 | }, 478 | "constructor": { 479 | "color": "#8c4351", 480 | "font_style": null, 481 | "font_weight": null 482 | }, 483 | "emphasis": { 484 | "color": "#8c4351", 485 | "font_style": "italic", 486 | "font_weight": null 487 | }, 488 | "emphasis.strong": { 489 | "color": "#8c4351", 490 | "font_style": null, 491 | "font_weight": 700 492 | }, 493 | "function": { 494 | "color": "#34548a", 495 | "font_style": null, 496 | "font_weight": null 497 | }, 498 | "keyword": { 499 | "color": "#5a4a78", 500 | "font_style": null, 501 | "font_weight": null 502 | }, 503 | "label": { 504 | "color": "#343b58", 505 | "font_style": null, 506 | "font_weight": null 507 | }, 508 | "link_text": { 509 | "color": "#33635c", 510 | "font_style": null, 511 | "font_weight": null 512 | }, 513 | "link_uri": { 514 | "color": "#33635c", 515 | "font_style": null, 516 | "font_weight": null 517 | }, 518 | "number": { 519 | "color": "#965027", 520 | "font_style": null, 521 | "font_weight": null 522 | }, 523 | "operator": { 524 | "color": "#4c505e", 525 | "font_style": null, 526 | "font_weight": null 527 | }, 528 | "preproc": { 529 | "color": "#33635c", 530 | "font_style": null, 531 | "font_weight": null 532 | }, 533 | "punctuation": { 534 | "color": "#4c505e", 535 | "font_style": null, 536 | "font_weight": null 537 | }, 538 | "punctuation.bracket": { 539 | "color": "#4c505e", 540 | "font_style": null, 541 | "font_weight": null 542 | }, 543 | "punctuation.delimiter": { 544 | "color": "#4c505e", 545 | "font_style": null, 546 | "font_weight": null 547 | }, 548 | "punctuation.list_marker": { 549 | "color": "#4c505e", 550 | "font_style": null, 551 | "font_weight": null 552 | }, 553 | "punctuation.special": { 554 | "color": "#4c505e", 555 | "font_style": null, 556 | "font_weight": null 557 | }, 558 | "string": { 559 | "color": "#485e30", 560 | "font_style": null, 561 | "font_weight": null 562 | }, 563 | "string.escape": { 564 | "color": "#5a4a78", 565 | "font_style": null, 566 | "font_weight": null 567 | }, 568 | "string.regex": { 569 | "color": "#485e30", 570 | "font_style": null, 571 | "font_weight": null 572 | }, 573 | "string.special": { 574 | "color": "#485e30", 575 | "font_style": null, 576 | "font_weight": null 577 | }, 578 | "string.special.symbol": { 579 | "color": "#485e30", 580 | "font_style": null, 581 | "font_weight": null 582 | }, 583 | "tag": { 584 | "color": "#8c4351", 585 | "font_style": null, 586 | "font_weight": null 587 | }, 588 | "text.literal": { 589 | "color": "#485e30", 590 | "font_style": null, 591 | "font_weight": null 592 | }, 593 | "title": { 594 | "color": "#965027", 595 | "font_style": null, 596 | "font_weight": null 597 | }, 598 | "type": { 599 | "color": "#166775", 600 | "font_style": null, 601 | "font_weight": null 602 | }, 603 | "variable": { 604 | "color": "#343b58", 605 | "font_style": null, 606 | "font_weight": null 607 | }, 608 | "variable.special": { 609 | "color": "#8c4351", 610 | "font_style": null, 611 | "font_weight": null 612 | } 613 | } 614 | } 615 | }, 616 | { 617 | "name": "Tokyo Night Storm", 618 | "appearance": "dark", 619 | "style": { 620 | "border": "#1b1e2e", 621 | "border.variant": "#1b1e2e", 622 | "border.focused": "#545c7e33", 623 | "border.selected": "#1b1e2e", 624 | "border.transparent": "#1b1e2e", 625 | "border.disabled": "#1b1e2e", 626 | "elevated_surface.background": "#1b1e2e", 627 | "surface.background": "#1f2335", 628 | "background": "#24283b", 629 | "element.background": "#24283b", 630 | "element.hover": "#565f89", 631 | "element.active": "#9aa5ce", 632 | "element.selected": "#565f89", 633 | "element.disabled": "#414868", 634 | "drop_target.background": "#1e202e", 635 | "ghost_element.background": "#1a1b26", 636 | "ghost_element.hover": "#565f89", 637 | "ghost_element.active": "#9aa5ce", 638 | "ghost_element.selected": "#565f89", 639 | "ghost_element.disabled": "#414868", 640 | "text": "#a9b1d6", 641 | "text.muted": "#7982a9", 642 | "text.placeholder": "#787c99", 643 | "text.disabled": "#414868", 644 | "text.accent": "#7dcfff", 645 | "icon": "#787c99", 646 | "icon.muted": "#787c99", 647 | "icon.disabled": "#414868", 648 | "icon.placeholder": "#565f89", 649 | "icon.accent": "#7dcfff", 650 | "status_bar.background": "#1f2335", 651 | "title_bar.background": "#1f2335", 652 | "title_bar.inactive_background": "#1f2335", 653 | "toolbar.background": "#1f2335", 654 | "tab_bar.background": "#1f2335", 655 | "tab.inactive_background": "#1f2335", 656 | "tab.active_background": "#414868", 657 | "search.match_background": "#414868", 658 | "panel.background": "#1f2335", 659 | "panel.focused_border": null, 660 | "pane.focused_border": null, 661 | "scrollbar.thumb.background": "#41486880", 662 | "scrollbar.thumb.hover_background": "#414868", 663 | "scrollbar.thumb.border": "#414868", 664 | "scrollbar.track.background": "#24283b80", 665 | "scrollbar.track.border": "#1b1e2e", 666 | "editor.foreground": "#a9b1d6", 667 | "editor.background": "#24283b", 668 | "editor.gutter.background": "#24283b", 669 | "editor.subheader.background": "#24283b", 670 | "editor.active_line.background": "#292e42", 671 | "editor.highlighted_line.background": "#1e202e", 672 | "editor.line_number": "#3b4261", 673 | "editor.active_line_number": "#a9b1d6", 674 | "editor.invisible": null, 675 | "editor.wrap_guide": "#1b1e2e", 676 | "editor.active_wrap_guide": "#1b1e2e", 677 | "editor.document_highlight.read_background": "#363b54", 678 | "editor.document_highlight.write_background": "#363b54", 679 | "terminal.background": "#1f2335", 680 | "terminal.foreground": null, 681 | "terminal.bright_foreground": null, 682 | "terminal.dim_foreground": null, 683 | "terminal.ansi.black": "#414868", 684 | "terminal.ansi.bright_black": "#414868", 685 | "terminal.ansi.dim_black": null, 686 | "terminal.ansi.red": "#f7768e", 687 | "terminal.ansi.bright_red": "#f7768e", 688 | "terminal.ansi.dim_red": null, 689 | "terminal.ansi.green": "#73daca", 690 | "terminal.ansi.bright_green": "#73daca", 691 | "terminal.ansi.dim_green": null, 692 | "terminal.ansi.yellow": "#e0af68", 693 | "terminal.ansi.bright_yellow": "#e0af68", 694 | "terminal.ansi.dim_yellow": null, 695 | "terminal.ansi.blue": "#7aa2f7", 696 | "terminal.ansi.bright_blue": "#7aa2f7", 697 | "terminal.ansi.dim_blue": null, 698 | "terminal.ansi.magenta": "#bb9af7", 699 | "terminal.ansi.bright_magenta": "#bb9af7", 700 | "terminal.ansi.dim_magenta": null, 701 | "terminal.ansi.cyan": "#7dcfff", 702 | "terminal.ansi.bright_cyan": "#7dcfff", 703 | "terminal.ansi.dim_cyan": null, 704 | "terminal.ansi.white": "#7982a9", 705 | "terminal.ansi.bright_white": "#a9b1d6", 706 | "terminal.ansi.dim_white": null, 707 | "link_text.hover": "#7dcfff", 708 | "conflict": "#bb9af7", 709 | "conflict.background": "#24283b", 710 | "conflict.border": "#414868", 711 | "created": "#9ece6a", 712 | "created.background": "#24283b", 713 | "created.border": "#414868", 714 | "deleted": "#f7768e", 715 | "deleted.background": "#24283b", 716 | "deleted.border": "#414868", 717 | "error": "#f7768e", 718 | "error.background": "#24283b", 719 | "error.border": "#414868", 720 | "hidden": "#787c99", 721 | "hidden.background": "#24283b", 722 | "hidden.border": "#414868", 723 | "hint": "#5f6996", 724 | "hint.background": "#24283b", 725 | "hint.border": "#414868", 726 | "ignored": "#515670", 727 | "ignored.background": "#24283b", 728 | "ignored.border": "#414868", 729 | "info": "#0da0ba", 730 | "info.background": "#24283b", 731 | "info.border": "#414868", 732 | "modified": "#e0af68", 733 | "modified.background": "#24283b", 734 | "modified.border": "#414868", 735 | "predictive": "#5f6996", 736 | "predictive.background": "#24283b", 737 | "predictive.border": "#414868", 738 | "renamed": "#9ece6a", 739 | "renamed.background": "#24283b", 740 | "renamed.border": "#414868", 741 | "success": "#9ece6a", 742 | "success.background": "#24283b", 743 | "success.border": "#414868", 744 | "unreachable": "#f7768e", 745 | "unreachable.background": "#24283b", 746 | "unreachable.border": "#414868", 747 | "warning": "#e0af68", 748 | "warning.background": "#24283b", 749 | "warning.border": "#414868", 750 | "players": [ 751 | { 752 | "cursor": "#7c7f93", 753 | "background": "#7c7f93", 754 | "selection": "#7c7f93" 755 | } 756 | ], 757 | "syntax": { 758 | "attribute": { 759 | "color": "#bb9af7", 760 | "font_style": null, 761 | "font_weight": null 762 | }, 763 | "boolean": { 764 | "color": "#ff9e64", 765 | "font_style": null, 766 | "font_weight": null 767 | }, 768 | "comment": { 769 | "color": "#5f6996", 770 | "font_style": null, 771 | "font_weight": null 772 | }, 773 | "comment.doc": { 774 | "color": "#5f6996", 775 | "font_style": null, 776 | "font_weight": null 777 | }, 778 | "constant": { 779 | "color": "#ff9e64", 780 | "font_style": null, 781 | "font_weight": null 782 | }, 783 | "constructor": { 784 | "color": "#f7768e", 785 | "font_style": null, 786 | "font_weight": null 787 | }, 788 | "emphasis": { 789 | "color": "#f7768e", 790 | "font_style": "italic", 791 | "font_weight": null 792 | }, 793 | "emphasis.strong": { 794 | "color": "#f7768e", 795 | "font_style": null, 796 | "font_weight": 700 797 | }, 798 | "function": { 799 | "color": "#7aa2f7", 800 | "font_style": null, 801 | "font_weight": null 802 | }, 803 | "keyword": { 804 | "color": "#bb9af7", 805 | "font_style": null, 806 | "font_weight": null 807 | }, 808 | "label": { 809 | "color": "#c0caf5", 810 | "font_style": null, 811 | "font_weight": null 812 | }, 813 | "link_text": { 814 | "color": "#73daca", 815 | "font_style": null, 816 | "font_weight": null 817 | }, 818 | "link_uri": { 819 | "color": "#73daca", 820 | "font_style": null, 821 | "font_weight": null 822 | }, 823 | "number": { 824 | "color": "#ff9e64", 825 | "font_style": null, 826 | "font_weight": null 827 | }, 828 | "operator": { 829 | "color": "#89ddff", 830 | "font_style": null, 831 | "font_weight": null 832 | }, 833 | "preproc": { 834 | "color": "#73daca", 835 | "font_style": null, 836 | "font_weight": null 837 | }, 838 | "punctuation": { 839 | "color": "#89ddff", 840 | "font_style": null, 841 | "font_weight": null 842 | }, 843 | "punctuation.bracket": { 844 | "color": "#89ddff", 845 | "font_style": null, 846 | "font_weight": null 847 | }, 848 | "punctuation.delimiter": { 849 | "color": "#89ddff", 850 | "font_style": null, 851 | "font_weight": null 852 | }, 853 | "punctuation.list_marker": { 854 | "color": "#89ddff", 855 | "font_style": null, 856 | "font_weight": null 857 | }, 858 | "punctuation.special": { 859 | "color": "#89ddff", 860 | "font_style": null, 861 | "font_weight": null 862 | }, 863 | "string": { 864 | "color": "#9ece6a", 865 | "font_style": null, 866 | "font_weight": null 867 | }, 868 | "string.escape": { 869 | "color": "#bb9af7", 870 | "font_style": null, 871 | "font_weight": null 872 | }, 873 | "string.regex": { 874 | "color": "#9ece6a", 875 | "font_style": null, 876 | "font_weight": null 877 | }, 878 | "string.special": { 879 | "color": "#9ece6a", 880 | "font_style": null, 881 | "font_weight": null 882 | }, 883 | "string.special.symbol": { 884 | "color": "#9ece6a", 885 | "font_style": null, 886 | "font_weight": null 887 | }, 888 | "tag": { 889 | "color": "#f7768e", 890 | "font_style": null, 891 | "font_weight": null 892 | }, 893 | "text.literal": { 894 | "color": "#9ece6a", 895 | "font_style": null, 896 | "font_weight": null 897 | }, 898 | "title": { 899 | "color": "#ff9e64", 900 | "font_style": null, 901 | "font_weight": null 902 | }, 903 | "type": { 904 | "color": "#2ac3de", 905 | "font_style": null, 906 | "font_weight": null 907 | }, 908 | "variable": { 909 | "color": "#c0caf5", 910 | "font_style": null, 911 | "font_weight": null 912 | }, 913 | "variable.special": { 914 | "color": "#f7768e", 915 | "font_style": null, 916 | "font_weight": null 917 | } 918 | } 919 | } 920 | } 921 | ] 922 | } 923 | --------------------------------------------------------------------------------