Compare commits

..
1 Commits
37 changed files with 893 additions and 1001 deletions
Vendored
BIN
View File
Binary file not shown.
+20 -9
View File
@@ -1,9 +1,16 @@
cask "ghostty" cask "ghostty"
cask "font-jetbrains-mono-nerd-font" # cask "localsend"
cask "google-chrome"
cask "tailscale-app" cask "tailscale-app"
# cask "zen"
cask "autodesk-fusion"
cask "logi-options+"
cask "font-jetbrains-mono-nerd-font"
# cask "utm"
cask "bitwarden"
# cask "modrinth"
# cask "vlc"
cask "prismlauncher"
brew "mole"
brew "ripgrep" brew "ripgrep"
brew "neovim" brew "neovim"
brew "tree-sitter" # dep to neovim brew "tree-sitter" # dep to neovim
@@ -12,18 +19,22 @@ brew "eza"
brew "starship" brew "starship"
brew "tmux" brew "tmux"
brew "bat" brew "bat"
brew "python"
brew "cmake" brew "cmake"
brew "fd" brew "fd"
brew "fzf" brew "fzf"
brew "git" brew "git"
brew "zoxide" brew "zoxide"
brew "stow" brew "stow"
brew "jpeg-turbo" brew "mosh"
brew "pkgconfig"
brew "npm"
brew "go" brew "go"
# brew "jpeg-turbo"
brew "npm"
brew "wget" brew "wget"
brew "jq"
brew "ruby"
brew "opencode" brew "opencode"
brew "xcp"
brew "xcbeautify"
brew "pipx"
brew "jq"
brew "coreutils"
brew "xcode-build-server"
# brew "podman"
+10 -9
View File
@@ -1,18 +1,19 @@
theme = "/Users/andrew/.config/ghostty/themes/kanso-zen" font-size = 14
theme = "rose-pine-default"
macos-titlebar-style = tabs
font-family = "JetBrainsMono Nerd Font Medium" font-family = "JetBrainsMono Nerd Font Medium"
font-thicken = true font-thicken = true
font-size = 14 font-thicken-strength = 10
macos-titlebar-style = transparent background = 000000
macos-titlebar-proxy-icon = hidden # background-opacity = 0.85
title = " " # background-blur = true
background-opacity = 0.92
background-blur = 64
confirm-close-surface = false confirm-close-surface = false
window-padding-x = 15 window-padding-x = 6
window-padding-y = 15 window-padding-y = 6
mouse-hide-while-typing = true mouse-hide-while-typing = true
adjust-cell-height = 5% adjust-cell-height = 5%
adjust-cell-width = -5% adjust-cell-width = -5%
alpha-blending = linear-corrected alpha-blending = linear-corrected
bold-is-bright = true
mouse-hide-while-typing = true mouse-hide-while-typing = true
-22
View File
@@ -1,22 +0,0 @@
palette = 0=#090E13
palette = 1=#c4746e
palette = 2=#8a9a7b
palette = 3=#c4b28a
palette = 4=#8ba4b0
palette = 5=#a292a3
palette = 6=#8ea4a2
palette = 7=#a4a7a4
palette = 8=#5C6066
palette = 9=#e46876
palette = 10=#87a987
palette = 11=#e6c384
palette = 12=#7fb4ca
palette = 13=#938aa9
palette = 14=#7aa89f
palette = 15=#c5c9c7
background = #090E13
foreground = #c5c9c7
cursor-color = #c5c9c7
selection-background = #22262D
selection-foreground = #c5c9c7
+5 -9
View File
@@ -13,10 +13,10 @@ if ! command -v brew &> /dev/null; then
fi fi
fi fi
# if ! command -v cargo &> /dev/null; then if ! command -v cargo &> /dev/null; then
# echo "Installing Cargo" echo "Installing Cargo"
# curl https://sh.rustup.rs -sSf | sh curl https://sh.rustup.rs -sSf | sh
# fi fi
if ! command -v zinit &> /dev/null; then if ! command -v zinit &> /dev/null; then
echo "Installing zinit" echo "Installing zinit"
bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)" bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"
@@ -26,6 +26,7 @@ DOTFILES_DIR="$HOME/dotfiles"
if [ ! -d "$DOTFILES_DIR" ]; then if [ ! -d "$DOTFILES_DIR" ]; then
echo "Cloning dotfiles..." echo "Cloning dotfiles..."
git clone https://git@moo:dmm/dotfiles.git git clone https://git@moo:dmm/dotfiles.git
cd dotfiles
fi fi
cd "$DOTFILES_DIR" cd "$DOTFILES_DIR"
brew bundle --file=.Brewfile brew bundle --file=.Brewfile
@@ -33,11 +34,6 @@ brew bundle --file=.Brewfile
stow . stow .
cd ~/ cd ~/
TPM_DIR="$HOME/.config/tmux/plugins/tpm/"
if [ ! -d "$TPM_DIR" ]; then
echo "Cloning tpm..."
git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
fi
# Enable Touch ID for sudo # Enable Touch ID for sudo
BIN
View File
Binary file not shown.
+376 -5
View File
@@ -1,5 +1,376 @@
require('DarthMooMancer.opts') --- Options
require('DarthMooMancer.plugins')
require('DarthMooMancer.keymaps') vim.opt.termguicolors = true
require('DarthMooMancer.ui') vim.g.mapleader = " "
require('DarthMooMancer.lsp') vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.tabstop = 8 -- Number of spaces a <Tab> counts for
vim.opt.shiftwidth = 8 -- Number of spaces for autoindent (>>, <<, etc.)
vim.opt.expandtab = true -- Use spaces instead of tabs
vim.opt.autoindent = true -- Copy indent from current line when starting a new line
vim.opt.softtabstop = 8 -- Number of spaces for <Tab> in insert mode (backspace deletes 4 spaces)
vim.opt.wrap = false
vim.opt.swapfile = false
vim.opt.signcolumn = "yes"
vim.opt.undofile = true -- Keeps undo history even after we close a file
vim.opt.scrolloff = 4
vim.opt.sidescrolloff = 8
vim.opt.hlsearch = false
vim.opt.completeopt = { "menuone", "noselect", "popup" }
vim.g.netrw_browse_split = 0
vim.g.netrw_banner = 0
vim.g.netrw_liststyle = 3
vim.g.netrw_winsize = 25
vim.opt.wrapscan = true -- begin search from top of the file when nothng is found
vim.opt.cursorline = true -- enable cursorline
vim.opt.cursorlineopt = { "screenline", "number" } -- cursorline look
vim.opt.foldmethod = "indent"
vim.opt.foldcolumn = "1"
vim.opt.foldenable = false
vim.opt.shortmess = 'aF' -- abbreviates messages and prevents file name being echoed when opened
vim.opt.ignorecase = true -- ignore cases when searching
vim.opt.smartcase = true -- However if we use a capital in search string we then consider case-sensitivity, ignorecase is disabled
vim.opt.smartindent = false -- smarter indentation
vim.opt.smarttab = true -- make tab behaviour smarter
vim.opt.laststatus = 3
vim.opt.showmode = false
vim.opt.cmdheight = 0
vim.opt.smoothscroll = true
vim.diagnostic.config({
virtual_text = true, -- This is the magic line
signs = true, -- Shows icons in the gutter
underline = true,
update_in_insert = false, -- Don't clutter the screen while typing
severity_sort = true,
})
vim.pack.add({
{ src = "https://github.com/rose-pine/neovim", name = "rose-pine" },
{ src = "https://github.com/brenoprata10/nvim-highlight-colors" },
{ src = "https://github.com/mbbill/undotree" },
{ src = "https://github.com/nvim-mini/mini.pairs", version = vim.version.range('*') },
{ src = "https://github.com/nvim-tree/nvim-web-devicons" },
{ src = "https://github.com/ibhagwan/fzf-lua" },
{ src = "https://github.com/saghen/blink.cmp", version = vim.version.range('*'), },
{ src = "git@moo:dmm/polydev.git" },
{ src = "https://github.com/nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
{ src = "https://github.com/alexghergh/nvim-tmux-navigation" },
{ src = "https://github.com/mason-org/mason.nvim" },
{ src = "https://github.com/mason-org/mason-lspconfig.nvim" },
{ src = "https://github.com/neovim/nvim-lspconfig" },
{ src = "https://github.com/stevearc/conform.nvim" },
{ src = "https://github.com/b0o/incline.nvim" },
{ src = "https://github.com/windwp/nvim-ts-autotag" },
{ src = "https://github.com/folke/which-key.nvim" },
--- XCode Plugins
{ src = "https://github.com/MunifTanjim/nui.nvim" },
{ src = "https://github.com/mfussenegger/nvim-dap" },
{ src = "https://github.com/rcarriga/nvim-dap-ui" },
{ src = "https://github.com/nvim-lualine/lualine.nvim" },
{ src = "https://github.com/nvim-neo-tree/neo-tree.nvim" },
{ src = "https://github.com/wojciech-kulik/xcodebuild.nvim" },
{ src = "https://github.com/nvim-lua/plenary.nvim" },
{ src = "https://github.com/folke/noice.nvim" },
{ src = "https://github.com/folke/snacks.nvim" },
})
--- COLORS
vim.cmd.colorscheme("rose-pine")
vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
vim.api.nvim_set_hl(0, "NormalFloat", { link = 'Normal' })
vim.api.nvim_set_hl(0, "StatusLine", { link = 'Normal' })
vim.api.nvim_set_hl(0, "StatusLineTerm", { link = 'Normal' })
vim.api.nvim_set_hl(0, "StatusLineNC", { link = 'Normal' })
vim.api.nvim_set_hl(0, "SignColumn", { link = 'Normal' })
vim.api.nvim_set_hl(0, 'LineNrAbove', { link = 'NonText', bold = true })
vim.api.nvim_set_hl(0, 'LineNrBelow', { link = 'NonText', bold = true })
vim.api.nvim_set_hl(0, "LineNr", { link = 'Normal' })
vim.api.nvim_set_hl(0, "FoldColumn", { link = 'Normal' })
vim.api.nvim_set_hl(0, "CursorLineNr", { bg = "none", link = 'MatchParen', bold = true })
local function xcodebuild_device()
if not vim.g.xcodebuild_platform then return " macOS" end
if vim.g.xcodebuild_platform == "macOS" then
return " macOS"
end
local deviceIcon = ""
if vim.g.xcodebuild_platform:match("watch") then
deviceIcon = "􀟤"
elseif vim.g.xcodebuild_platform:match("tv") then
deviceIcon = "􀡴 "
elseif vim.g.xcodebuild_platform:match("vision") then
deviceIcon = "􁎖 "
end
if vim.g.xcodebuild_os then
return deviceIcon .. " " .. vim.g.xcodebuild_device_name .. " (" .. vim.g.xcodebuild_os .. ")"
end
return deviceIcon .. " " .. (vim.g.xcodebuild_device_name or "Unknown")
end
require('lualine').setup({
options = {
theme = 'auto', -- Or try 'catppuccin' if you use it
component_separators = '|',
section_separators = { left = '', right = '' },
globalstatus = true, -- Crucial for clean look with cmdheight=0
},
sections = {
lualine_a = { { 'mode', separator = { left = '' }, right_padding = 2 } },
lualine_b = { 'filename', 'branch' },
lualine_c = { 'diff', 'diagnostics' },
lualine_x = {
{
function() return '' .. (vim.g.xcodebuild_last_status or "Idle") end,
color = { fg = "Gray" }
},
{
function() return '󰙨 ' .. (vim.g.xcodebuild_test_plan or "No Plan") end,
color = { fg = "#a6e3a1" }
},
{
xcodebuild_device,
color = { fg = "#f9e2af" }
},
},
lualine_y = { 'filetype', 'progress' },
lualine_z = { { 'location', separator = { right = '' }, left_padding = 2 } },
},
})
require("snacks").setup({
image = { enabled = true },
})
require('which-key').setup({
preset = "helix"
})
vim.schedule(function()
-- Mason & LSP
require("mason").setup()
require("mason-lspconfig").setup({
ensure_installed = { "vtsls", "lua_ls", "pylsp", "gopls", "html", "tailwindcss", "bashls", },
automatic_enable = true,
})
-- Noice & Xcodebuild
require("xcodebuild").setup()
require("noice").setup({
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
},
},
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
})
-- Blink & Fzf
require("blink.cmp").setup({
completion = {
menu = {
draw = {
columns = { { "label", gap = 1 }, { "kind_icon", gap = 1, "kind" } },
}
}
}
})
require("fzf-lua").setup({
winopts = {
height = 0.50,
width = 0.45,
-- row = 0.35,
-- col = 0.50,
border = "rounded",
-- backdrop = 100,
-- fullscreen = false,
preview = {
hidden = true,
},
},
grep = {
rg_glob = true,
rg_glob_fn = function(query)
local regex, flags = query:match("^(.-)%s%-%-(.*)$")
return (regex or query), flags
end,
},
defaults = {
formatter = "path.filename_first",
},
})
-- Treesitter
require('nvim-treesitter').install { 'swift', 'rust', 'c', 'cpp', 'lua', 'javascript', 'go', 'typescript', 'css', 'html', 'python' }
vim.api.nvim_create_autocmd('FileType', {
pattern = { 'c', 'cpp', 'rust', 'lua', 'typescript', 'javascript', 'css', 'html', 'python', 'go', 'swift' },
callback = function()
vim.treesitter.start()
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})
end)
--- Configurations
local helpers = require 'incline.helpers'
local devicons = require 'nvim-web-devicons'
require('incline').setup {
window = {
padding = 0,
margin = { horizontal = 0 },
},
render = function(props)
local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ':t')
if filename == '' then
filename = '[No Name]'
end
local ft_icon, ft_color = devicons.get_icon_color(filename)
local modified = vim.bo[props.buf].modified
return {
ft_icon and { ' ', ft_icon, ' ', guibg = ft_color, guifg = helpers.contrast_color(ft_color) } or
'',
' ',
{ filename, gui = modified and 'bold,italic' or 'bold' },
' ',
guibg = '#44406e',
}
end,
}
require 'nvim-tmux-navigation'.setup {
disable_when_zoomed = true -- defaults to false
}
require("conform").setup({
formatters_by_ft = {
rust = { "rustfmt", lsp_format = "fallback" },
lua = { "emmylua-codeformat", lsp_format = "fallback" },
javascript = { "prettier", stop_after_first = true },
typescript = { "prettier", stop_after_first = true },
json = { "prettier" },
html = { "prettier" },
go = { "goimports" },
c = { "lsp" },
cpp = { "lsp" },
["_"] = { "trim_whitespace" },
},
format_on_save = {
timeout_ms = 500,
lsp_format = "fallback",
},
})
require('nvim-ts-autotag').setup({
opts = {
enable_close = true, -- Auto close tags
enable_rename = true, -- Auto rename pairs of tags
enable_close_on_slash = false -- Auto close on trailing </
},
})
require('nvim-highlight-colors').turnOn()
require("Polydev").setup()
require('mini.pairs').setup()
--- LSP
local capabilities = require('blink.cmp').get_lsp_capabilities()
vim.lsp.config("lua_ls", {
capabilities = capabilities,
settings = {
Lua = {
diagnostics = { globals = { "vim" } },
workspace = {
library = vim.api.nvim_get_runtime_file("", true),
checkThirdParty = false,
},
},
},
})
vim.lsp.config("vtsls", {
settings = {
typescript = {
updateImportsOnFileMove = { enabled = "always" },
inlayHints = {
parameterNames = { enabled = "all" },
variableTypes = { enabled = true },
},
},
},
})
vim.lsp.enable({ "lua_ls", "clangd", "rust-analyzer", "vtsls", "tailwindcss-language-server",
"vscode-html-language-server", "gopls", "xcode-build-server", "sourcekit" })
--- KEYMAPS
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
vim.keymap.set("n", "<leader>ff", vim.lsp.buf.format)
-- vim.keymap.set("n", "<leader>ff", function()
-- require("conform").format({ async = true, lsp_format = "never" })
-- end)
vim.keymap.set("n", "<leader>vs", ":vsplit<CR>")
vim.keymap.set("n", "<leader>ss", ":split<CR>")
vim.keymap.set("n", "<leader>E", ":Ex<CR>")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
vim.keymap.set("x", "<leader>p", [["_dP]])
vim.keymap.set('n', '<leader><leader>', ":FzfLua files<CR>")
vim.keymap.set('n', '<leader>fh', ":FzfLua helptags<CR>")
vim.keymap.set('n', '<leader>fg', ":FzfLua live_grep<CR>")
vim.keymap.set('n', '<leader>fm', ":FzfLua manpages<CR>")
vim.keymap.set('n', '<leader>xx', ":FzfLua diagnostics_workspace<CR>")
vim.keymap.set('n', '<leader>fs', vim.lsp.buf.document_symbol)
vim.keymap.set('n', '<leader>gd', vim.lsp.buf.definition)
vim.keymap.set("n", "<leader>gr", vim.lsp.buf.references)
vim.keymap.set("n", "<leader>gR", vim.lsp.buf.rename)
vim.keymap.set("n", "<leader>gc", vim.lsp.buf.code_action)
vim.keymap.set("n", "<leader>uu", ":UndotreeToggle<CR>")
vim.keymap.set("n", "<leader>[", "<c-w>H", { silent = true, noremap = true, })
vim.keymap.set("n", "<leader>]", "<c-w>K", { silent = true, noremap = true, })
vim.keymap.set("n", "[q", ":cprev<CR>zz", { desc = "Previous Quickfix Item" })
vim.keymap.set("n", "]q", ":cnext<CR>zz", { desc = "Next Quickfix Item" })
vim.keymap.set("n", "<leader>qo", ":copen<CR>", { desc = "Open Quickfix" })
vim.keymap.set("n", "<leader>qc", ":cclose<CR>", { desc = "Close Quickfix" })
vim.keymap.set("n", "<C-h>", ":NvimTmuxNavigateLeft<CR>", { silent = true })
vim.keymap.set("n", "<C-j>", ":NvimTmuxNavigateDown<CR>", { silent = true })
vim.keymap.set("n", "<C-k>", ":NvimTmuxNavigateUp<CR>", { silent = true })
vim.keymap.set("n", "<C-l>", ":NvimTmuxNavigateRight<CR>", { silent = true })
vim.keymap.set("n", "<leader>nn", ":Neotree toggle<CR>")
vim.keymap.set("n", "<leader>X", "<cmd>XcodebuildPicker<cr>", { desc = "Show Xcodebuild Actions" })
vim.keymap.set("n", "<leader>xf", "<cmd>XcodebuildProjectManager<cr>", { desc = "Show Project Manager Actions" })
vim.keymap.set("n", "<leader>xb", "<cmd>XcodebuildBuild<cr>", { desc = "Build Project" })
vim.keymap.set("n", "<leader>xB", "<cmd>XcodebuildBuildForTesting<cr>", { desc = "Build For Testing" })
vim.keymap.set("n", "<leader>xr", "<cmd>XcodebuildBuildRun<cr>", { desc = "Build & Run Project" })
vim.keymap.set("n", "<leader>xt", "<cmd>XcodebuildTest<cr>", { desc = "Run Tests" })
vim.keymap.set("v", "<leader>xt", "<cmd>XcodebuildTestSelected<cr>", { desc = "Run Selected Tests" })
vim.keymap.set("n", "<leader>xT", "<cmd>XcodebuildTestClass<cr>", { desc = "Run Current Test Class" })
vim.keymap.set("n", "<leader>x.", "<cmd>XcodebuildTestRepeat<cr>", { desc = "Repeat Last Test Run" })
vim.keymap.set("n", "<leader>xl", "<cmd>XcodebuildToggleLogs<cr>", { desc = "Toggle Xcodebuild Logs" })
vim.keymap.set("n", "<leader>xc", "<cmd>XcodebuildToggleCodeCoverage<cr>", { desc = "Toggle Code Coverage" })
vim.keymap.set("n", "<leader>xC", "<cmd>XcodebuildShowCodeCoverageReport<cr>", { desc = "Show Code Coverage Report" })
vim.keymap.set("n", "<leader>xe", "<cmd>XcodebuildTestExplorerToggle<cr>", { desc = "Toggle Test Explorer" })
vim.keymap.set("n", "<leader>xs", "<cmd>XcodebuildFailingSnapshots<cr>", { desc = "Show Failing Snapshots" })
vim.keymap.set("n", "<leader>xp", "<cmd>XcodebuildPreviewGenerateAndShow<cr>", { desc = "Generate Preview" })
vim.keymap.set("n", "<leader>x<cr>", "<cmd>XcodebuildPreviewToggle<cr>", { desc = "Toggle Preview" })
vim.keymap.set("n", "<leader>xd", "<cmd>XcodebuildSelectDevice<cr>", { desc = "Select Device" })
vim.keymap.set("n", "<leader>xq", "<cmd>Telescope quickfix<cr>", { desc = "Show QuickFix List" })
vim.keymap.set("n", "<leader>xx", "<cmd>XcodebuildQuickfixLine<cr>", { desc = "Quickfix Line" })
vim.keymap.set("n", "<leader>xa", "<cmd>XcodebuildCodeActions<cr>", { desc = "Show Code Actions" })
+65
View File
@@ -0,0 +1,65 @@
vim.g.mapleader = " "
vim.g.termguicolors = true
vim.o.nu = true
vim.o.relativenumber = true
vim.o.cursorline = true
vim.o.expandtab = true
vim.o.tabstop = 4
vim.o.shiftwidth = 4
vim.o.hlsearch = false
vim.o.incsearch = true
vim.o.swapfile = false
vim.o.backup = false
vim.o.wrap = false
vim.o.undofile = true
vim.o.undodir = os.getenv("HOME") .. "/.cache/nvim/undodir"
vim.o.list = true
--vim.o.listchars = "tabs:> "
vim.o.path = "**"
vim.cmd(":colorscheme retrobox")
vim.cmd(":command! -nargs=+ Grep execute 'silent grep! <args>' | copen")
vim.treesitter.language.register("cpp", "c")
vim.api.nvim_create_autocmd("FileType", {
pattern = {
"c", "h", "cpp",
"lua"
},
callback = function() vim.treesitter.start() end,
})
local map = vim.keymap.set
map("n", "<C-h>", "<C-w><C-h>")
map("n", "<C-j>", "<C-w><C-j>")
map("n", "<C-k>", "<C-w><C-k>")
map("n", "<C-l>", "<C-w><C-l>")
map("n", "<C-d>", "<C-d>zz")
map("n", "<C-u>", "<C-u>zz")
map({ "i", "n" }, "<C-n>", "<C-x><C-]>")
map({ "i", "n" }, "<C- >", "<C-x><C-o>")
map("n", "n", "nzzzv")
map("n", "N", "Nzzzv")
map("v", "J", ":m '>+1<CR>gv=gv")
map("v", "K", ":m '<-2<CR>gv=gv")
map("n", ";", "q:")
map("t", "<ESC>", "<C-\\><C-n>")
map("n", "<A-h>", ":below term<CR>i")
map("n", "<leader>w", ":write<CR>")
map("n", "<leader>q", ":quit<CR>")
map("n", "<leader>Q", ":quit!<CR>")
map("n", "<leader>y", "\"+y")
map("n", "<leader>e", ":Ex<CR>")
map("n", "<leader>v", ":edit $MYVIMRC<CR>")
map("n", "<leader>ff", ":find ")
map("n", "<leader>fg", ":Grep ")
map("n", "<leader>r", ":make!<CR>")
map("n", "<leader>R", ":set makeprg=")
map("n", "<leader>x", ":copen<CR>")
map("n", "<leader>c", ":!ctags -R .<CR>")
+79
View File
@@ -0,0 +1,79 @@
local function switch_source_header(bufnr)
local method_name = 'textDocument/switchSourceHeader'
local client = vim.lsp.get_clients({ bufnr = bufnr, name = 'clangd' })[1]
if not client then
return vim.notify(('method %s is not supported by any servers active on the current buffer'):format(method_name))
end
local params = vim.lsp.util.make_text_document_params(bufnr)
client.request(method_name, params, function(err, result)
if err then
error(tostring(err))
end
if not result then
vim.notify('corresponding file cannot be determined')
return
end
vim.cmd.edit(vim.uri_to_fname(result))
end, bufnr)
end
local function symbol_info()
local bufnr = vim.api.nvim_get_current_buf()
local clangd_client = vim.lsp.get_clients({ bufnr = bufnr, name = 'clangd' })[1]
if not clangd_client or not clangd_client.supports_method 'textDocument/symbolInfo' then
return vim.notify('Clangd client not found', vim.log.levels.ERROR)
end
local win = vim.api.nvim_get_current_win()
local params = vim.lsp.util.make_position_params(win, clangd_client.offset_encoding)
clangd_client.request('textDocument/symbolInfo', params, function(err, res)
if err or #res == 0 then
return
end
local container = string.format('container: %s', res[1].containerName) ---@type string
local name = string.format('name: %s', res[1].name) ---@type string
vim.lsp.util.open_floating_preview({ name, container }, '', {
height = 2,
width = math.max(string.len(name), string.len(container)),
focusable = false,
focus = false,
border = 'single',
title = 'Symbol Info',
})
end, bufnr)
end
return {
cmd = { 'clangd' },
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },
root_markers = {
'.clangd',
'.clang-tidy',
'.clang-format',
'compile_commands.json',
'compile_flags.txt',
'configure.ac', -- AutoTools
'.git',
},
capabilities = {
textDocument = {
completion = {
editsNearCursor = true,
},
},
offsetEncoding = { 'utf-8', 'utf-16' },
},
on_init = function(client, init_result)
if init_result.offsetEncoding then
client.offset_encoding = init_result.offsetEncoding
end
end,
on_attach = function(_, bufnr)
vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdSwitchSourceHeader', function()
switch_source_header(bufnr)
end, { desc = 'Switch between source/header' })
vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdShowSymbolInfo', function()
symbol_info()
end, { desc = 'Show symbol info' })
end,
}
+162
View File
@@ -0,0 +1,162 @@
---@brief
---
--- https://github.com/denoland/deno
---
--- Deno's built-in language server
---
--- To appropriately highlight codefences returned from denols, you will need to augment vim.g.markdown_fenced languages
--- in your init.lua. Example:
---
--- ```lua
--- vim.g.markdown_fenced_languages = {
--- "ts=typescript"
--- }
--- ```
---
--- Some care must be taken here to correctly infer whether a file is part of a Deno program, or a TS program that
--- expects to run in Node or Web Browsers. This supports having a Deno module that is a part of a mostly-not-Deno
--- monorepo. We do this by finding the nearest package manager lock file, and the nearest deno.json or deno.jsonc.
--- Note that this means that without a deno.json, deno.jsonc, or deno.lock file, this LSP client will not attach.
---
--- Example:
---
--- ```
--- project-root
--- +-- node_modules/...
--- +-- package-lock.json
--- +-- package.json
--- +-- packages
--- +-- deno-module
--- | +-- deno.json
--- | +-- package.json <-- It's normal for Deno projects to have package.json files!
--- | +-- src
--- | +-- index.ts <-- this is a Deno file
--- +-- node-module
--- +-- package.json
--- +-- src
--- +-- index.ts <-- a non-Deno file (ie, should use ts_ls or tsgo)
--- ```
---
--- From the file being edited, we walk up to find the nearest package manager lockfile. This is PROJECT ROOT.
--- From the file being edited, find the nearest deno.json or deno.jsonc. This is DENO ROOT.
--- From the file being edited, find the nearest deno.lock. This is DENO LOCK ROOT
--- If DENO LOCK ROOT is found, and PROJECT ROOT is missing or shorter, then this is a deno file, and we attach.
--- If DENO ROOT is found, and it's longer than or equal to PROJECT ROOT, then this is a Deno file, and we attach.
--- Otherwise, we abort, because this is a non-Deno TS file.
local lsp = vim.lsp
local function virtual_text_document_handler(uri, res, client)
if not res then
return nil
end
local lines = vim.split(res.result, '\n')
local bufnr = vim.uri_to_bufnr(uri)
local current_buf = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
if #current_buf ~= 0 then
return nil
end
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, lines)
vim.api.nvim_set_option_value('readonly', true, { buf = bufnr })
vim.api.nvim_set_option_value('modified', false, { buf = bufnr })
vim.api.nvim_set_option_value('modifiable', false, { buf = bufnr })
lsp.buf_attach_client(bufnr, client.id)
end
local function virtual_text_document(uri, client)
local params = {
textDocument = {
uri = uri,
},
}
local result = client:request_sync('deno/virtualTextDocument', params)
virtual_text_document_handler(uri, result, client)
end
local function denols_handler(err, result, ctx, config)
if not result or vim.tbl_isempty(result) then
return nil
end
local client = vim.lsp.get_client_by_id(ctx.client_id)
for _, res in pairs(result) do
local uri = res.uri or res.targetUri
if uri:match '^deno:' then
virtual_text_document(uri, client)
res['uri'] = uri
res['targetUri'] = uri
end
end
lsp.handlers[ctx.method](err, result, ctx, config)
end
---@type vim.lsp.Config
return {
cmd = { 'deno', 'lsp' },
cmd_env = { NO_COLOR = true },
filetypes = {
'javascript',
'javascriptreact',
'typescript',
'typescriptreact',
},
root_dir = function(bufnr, on_dir)
-- The project root is where the LSP can be started from
local root_markers = { 'deno.lock', 'deno.json', 'deno.jsonc' }
-- Give the root markers equal priority by wrapping them in a table
root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers, { '.git' } }
or vim.list_extend(root_markers, { '.git' })
-- only include deno projects
local deno_root = vim.fs.root(bufnr, { 'deno.json', 'deno.jsonc' })
local deno_lock_root = vim.fs.root(bufnr, { 'deno.lock' })
local project_root = vim.fs.root(bufnr, root_markers)
if
(deno_lock_root and (not project_root or #deno_lock_root > #project_root))
or (deno_root and (not project_root or #deno_root >= #project_root))
then
-- deno config is closer than or equal to package manager lock,
-- or deno lock is closer than package manager lock. Attach at the project root,
-- or deno lock or deno config path. At least one of these is always set at this point.
on_dir(project_root or deno_lock_root or deno_root)
end
end,
---@type lspconfig.settings.denols
settings = {
deno = {
enable = true,
suggest = {
imports = {
hosts = {
['https://deno.land'] = true,
},
},
},
},
},
handlers = {
['textDocument/definition'] = denols_handler,
['textDocument/typeDefinition'] = denols_handler,
['textDocument/references'] = denols_handler,
},
on_attach = function(client, bufnr)
vim.api.nvim_buf_create_user_command(bufnr, 'LspDenolsCache', function()
client:exec_cmd({
title = 'DenolsCache',
command = 'deno.cache',
arguments = { {}, vim.uri_from_bufnr(bufnr) },
}, { bufnr = bufnr }, function(err, _, ctx)
if err then
local uri = ctx.params.arguments[2]
vim.notify('cache command failed for' .. vim.uri_to_fname(uri),
vim.log.levels.ERROR)
end
end)
end, {
desc = 'Cache a module and all of its dependencies.',
})
end,
}
+21
View File
@@ -0,0 +1,21 @@
return {
cmd = { 'lua-language-server' },
filetypes = { 'lua' },
settings = {
Lua = {
diagnostics = {
globals = { "vim" }
}
}
},
root_markers = {
'.luarc.json',
'.luarc.jsonc',
'.luacheckrc',
'.stylua.toml',
'stylua.toml',
'selene.toml',
'selene.yml',
'.git',
},
}
+17
View File
@@ -0,0 +1,17 @@
-- ~/.config/nvim/lsp/rust-analyzer.lua
return {
cmd = { "rust-analyzer" },
filetypes = { "rust" },
root_markers = { "Cargo.toml", ".git" },
settings = {
["rust-analyzer"] = {
diagnostics = {
enable = false, -- As you requested
},
checkOnSave = {
enable = true,
command = "clippy",
},
},
},
}
@@ -1,63 +0,0 @@
vim.keymap.set('v', 'J', ":m '>+1<CR>gv=gv")
vim.keymap.set('v', 'K', ":m '<-2<CR>gv=gv")
vim.keymap.set('n', '<leader>ff', function()
require('conform').format({ async = true, lsp_format = 'never' })
end)
vim.keymap.set('n', '<leader>vs', ':vsplit<CR>')
vim.keymap.set('n', '<leader>ss', ':split<CR>')
vim.keymap.set('n', '<leader>E', ':Ex<CR>')
vim.keymap.set('n', '<C-u>', '<C-u>zz')
vim.keymap.set('n', '<C-d>', '<C-d>zz')
vim.keymap.set('n', 'n', 'nzzzv')
vim.keymap.set('n', 'N', 'Nzzzv')
vim.keymap.set('x', '<leader>p', [["_dP]])
vim.keymap.set(
'n',
'<leader><leader>',
function() Snacks.picker.files() end
)
vim.keymap.set(
'n',
'<leader>fh',
function() Snacks.picker.help() end
)
vim.keymap.set(
'n',
'<leader>fg',
function() Snacks.picker.grep() end
)
vim.keymap.set(
'n',
'<leader>fm',
function() Snacks.picker.man() end
)
vim.keymap.set(
'n',
'<leader>xn',
function() Snacks.picker.notifications() end
)
vim.keymap.set(
'n',
'<leader>uu',
function() Snacks.picker.undo() end
)
vim.keymap.set('n', '<leader>fs', vim.lsp.buf.document_symbol)
vim.keymap.set('n', '<leader>gd', vim.lsp.buf.definition)
vim.keymap.set('n', '<leader>gr', vim.lsp.buf.references)
vim.keymap.set('n', '<leader>gR', vim.lsp.buf.rename)
vim.keymap.set('n', '<leader>gc', vim.lsp.buf.code_action)
vim.keymap.set('n', '<leader>[', '<c-w>H', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>]', '<c-w>K', { silent = true, noremap = true })
vim.keymap.set('n', '[q', ':cprev<CR>zz', { desc = 'Previous Quickfix Item' })
vim.keymap.set('n', ']q', ':cnext<CR>zz', { desc = 'Next Quickfix Item' })
vim.keymap.set('n', '<leader>qo', ':copen<CR>', { desc = 'Open Quickfix' })
vim.keymap.set('n', '<leader>qc', ':cclose<CR>', { desc = 'Close Quickfix' })
vim.keymap.set('n', '<leader>lp', ':LivePreview pick<cr>')
vim.keymap.set('n', '<C-h>', ':NvimTmuxNavigateLeft<CR>', { silent = true })
vim.keymap.set('n', '<C-j>', ':NvimTmuxNavigateDown<CR>', { silent = true })
vim.keymap.set('n', '<C-k>', ':NvimTmuxNavigateUp<CR>', { silent = true })
vim.keymap.set('n', '<C-l>', ':NvimTmuxNavigateRight<CR>', { silent = true })
vim.keymap.set('n', '<leader>xx', ':Trouble diagnostics toggle<cr>')
vim.keymap.set('n', '<leader>zz', function() Snacks.zen() end)
@@ -1,40 +0,0 @@
local capabilities = require('blink.cmp').get_lsp_capabilities()
vim.lsp.config('lua_ls', {
capabilities = capabilities,
settings = {
Lua = {
diagnostics = { globals = { 'vim' } },
workspace = {
library = vim.api.nvim_get_runtime_file('', true),
checkThirdParty = false,
},
},
},
})
vim.lsp.config('vtsls', {
settings = {
typescript = {
updateImportsOnFileMove = { enabled = 'always' },
inlayHints = {
parameterNames = { enabled = 'all' },
variableTypes = { enabled = true },
},
},
},
})
vim.lsp.config('html', {
capabilities = capabilities,
})
vim.lsp.enable({
'lua_ls',
'clangd',
'rust-analyzer',
'vtsls',
'tailwindcss-language-server',
'cssls',
'html',
'gopls',
'pylsp'
})
@@ -1,78 +0,0 @@
vim.opt.termguicolors = true
vim.g.mapleader = ' '
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.tabstop = 8 -- Number of spaces a <Tab> counts for
vim.opt.shiftwidth = 8 -- Number of spaces for autoindent (>>, <<, etc.)
vim.opt.softtabstop = 8 -- Number of spaces for <Tab> in insert mode (backspace deletes 4 spaces)
vim.opt.expandtab = true -- Use spaces instead of tabs
vim.api.nvim_create_autocmd('FileType', {
callback = function(ev)
local map = {
rust = { ts = 4, sw = 4, sts = 4 },
lua = { ts = 4, sw = 4, sts = 4 },
python = { ts = 4, sw = 4, sts = 4 },
dart = { ts = 2, sw = 2, sts = 2 },
html = { ts = 2, sw = 2, sts = 2 },
javascript = { ts = 2, sw = 2, sts = 2 },
typescript = { ts = 2, sw = 2, sts = 2 },
}
local ft = map[ev.match]
if ft then
vim.bo[ev.buf].tabstop = ft.ts
vim.bo[ev.buf].shiftwidth = ft.sw
vim.bo[ev.buf].softtabstop = ft.sts
vim.bo[ev.buf].expandtab = ft.et ~= nil and ft.et or true
end
end,
})
vim.opt.autoindent = true -- Copy indent from current line when starting a new line
vim.opt.wrap = false
vim.opt.swapfile = false
vim.opt.signcolumn = 'yes'
vim.opt.undofile = true -- Keeps undo history even after we close a file
vim.opt.scrolloff = 4
vim.opt.sidescrolloff = 8
vim.opt.hlsearch = false
vim.opt.completeopt = { 'menuone', 'noselect', 'popup' }
vim.g.netrw_browse_split = 0
vim.g.netrw_banner = 0
vim.g.netrw_liststyle = 3
vim.g.netrw_winsize = 25
vim.opt.wrapscan = true -- begin search from top of the file when nothng is found
vim.opt.cursorline = true -- enable cursorline
vim.opt.cursorlineopt = { 'screenline', 'number' } -- cursorline look
vim.opt.foldmethod = 'indent'
vim.opt.foldcolumn = '1'
vim.opt.foldenable = false
vim.opt.shortmess = 'aF' -- abbreviates messages and prevents file name being echoed when opened
vim.opt.ignorecase = false -- ignore cases when searching
vim.opt.smartcase = true -- However if we use a capital in search string we then consider case-sensitivity, ignorecase is disabled
vim.opt.smartindent = false -- smarter indentation
vim.opt.smarttab = true -- make tab behaviour smarter
vim.opt.laststatus = 3
vim.opt.showmode = false
vim.opt.cmdheight = 0
vim.opt.smoothscroll = true
vim.opt.spell = true
vim.diagnostic.config({
virtual_text = true, -- This is the magic line
signs = true, -- Shows icons in the gutter
underline = true,
update_in_insert = false, -- Don't clutter the screen while typing
severity_sort = true,
})
vim.o.winborder = 'rounded'
vim.api.nvim_create_autocmd('FileType', {
pattern = { 'text', 'plaintex' },
callback = function()
-- Enable visual soft-wrapping
vim.opt_local.wrap = true
vim.opt_local.linebreak = true
vim.opt_local.breakindent = true
-- Remap j/k to visual lines only inside this buffer
vim.keymap.set('n', 'j', 'gj', { buffer = true })
vim.keymap.set('n', 'k', 'gk', { buffer = true })
end,
})
@@ -1,12 +0,0 @@
require('DarthMooMancer.plugins.utils')
require('DarthMooMancer.plugins.blink-cmp')
require('DarthMooMancer.plugins.kanso')
require('DarthMooMancer.plugins.mini-nvim')
require('DarthMooMancer.plugins.polydev')
require('DarthMooMancer.plugins.treesitter')
require('DarthMooMancer.plugins.incline')
require('DarthMooMancer.plugins.mason')
require('DarthMooMancer.plugins.noice')
require('DarthMooMancer.plugins.snacks')
require('DarthMooMancer.plugins.trouble')
require('DarthMooMancer.plugins.conform')
@@ -1,30 +0,0 @@
vim.pack.add({
{
src = 'https://github.com/saghen/blink.cmp',
version = vim.version.range('*'),
}
})
require('blink.cmp').setup({
completion = {
documentation = {
auto_show = true,
auto_show_delay_ms = 100,
window = {
winhighlight = 'Normal:NormalFloat,FloatBorder:SnacksPickerBorder,CursorLine:Visual,Search:None',
},
},
menu = {
draw = {
columns = {
{ "label", "label_description", gap = 1 },
{ "kind_icon", "kind", gap = 1 },
{ "source_name", gap = 1 },
},
},
scrollbar = false,
winhighlight =
'Pmenu:NormalFloat,FloatBorder:SnacksPickerBorder,PmenuSel:Visual,CursorLine:Visual,Search:None',
},
},
})
@@ -1,23 +0,0 @@
vim.pack.add({ 'https://github.com/stevearc/conform.nvim' })
require('conform').setup({
formatters_by_ft = {
rust = { 'rustfmt', lsp_format = 'fallback' },
lua = { 'stylua', lsp_format = 'fallback' },
javascript = { 'prettier', stop_after_first = true },
typescript = { 'prettier', stop_after_first = true },
json = { 'prettier' },
html = { 'prettier' },
go = { 'goimports' },
c = { 'clang-format' },
cpp = { 'clang-format' },
css = { 'csskit' },
dart = { 'dart_format', lsp_format = 'fallback' },
python = { 'autopep8' },
['_'] = { 'trim_whitespace' },
},
format_on_save = {
timeout_ms = 2000,
lsp_format = 'fallback',
},
})
@@ -1,50 +0,0 @@
vim.pack.add({
{ src = 'https://github.com/b0o/incline.nvim' },
{ src = 'https://github.com/SmiteshP/nvim-navic' },
})
local helpers = require('incline.helpers')
local navic = require('nvim-navic')
local devicons = require('nvim-web-devicons')
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserNavicAttach', { clear = true }),
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client and client.server_capabilities.documentSymbolProvider then
navic.attach(client, args.buf)
end
end,
})
require('incline').setup({
window = {
padding = 0,
margin = { horizontal = 0, vertical = 0 },
},
render = function(props)
local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ':t')
if filename == '' then
filename = '[No Name]'
end
local ft_icon, ft_color = devicons.get_icon_color(filename)
local modified = vim.bo[props.buf].modified
local res = {
ft_icon and { ' ', ft_icon, ' ', guibg = ft_color, guifg = helpers.contrast_color(ft_color) } or '',
' ',
{ filename, gui = modified and 'bold,italic' or 'bold' },
guibg = "none",
}
if props.focused then
for _, item in ipairs(navic.get_data(props.buf) or {}) do
table.insert(res, {
{ ' > ', group = 'NavicSeparator' },
{ item.icon, group = 'NavicIcons' .. item.type },
{ item.name, group = 'NavicText' },
})
end
end
table.insert(res, ' ')
return res
end,
})
@@ -1,19 +0,0 @@
vim.pack.add({'https://github.com/webhooked/kanso.nvim' })
require('kanso').setup({
transparent = true,
overrides = function(colors)
local theme = colors.theme
return {
Normal = { bg = "none" },
NormalFloat = { bg = "none" },
FloatBorder = { bg = "none" },
FloatTitle = { bg = "none" },
SnacksPickerBorder = { fg = theme.ui.special, bg = "none" },
SnacksPickerTitle = { fg = theme.ui.special, bg = "none" },
SnacksInputBorder = { fg = theme.ui.special, bg = "none" },
}
end,
})
vim.cmd.colorscheme('kanso-zen')
@@ -1,19 +0,0 @@
vim.pack.add({
{ src = 'https://github.com/mason-org/mason.nvim' },
{ src = 'https://github.com/mason-org/mason-lspconfig.nvim' },
{ src = 'https://github.com/neovim/nvim-lspconfig' },
})
require('mason').setup()
require('mason-lspconfig').setup({
ensure_installed = {
'vtsls',
'lua_ls',
'pylsp',
'gopls',
'html',
'cssls',
'bashls',
},
automatic_enable = false,
})
@@ -1,34 +0,0 @@
vim.pack.add({
{
src = 'https://github.com/nvim-mini/mini.nvim.git',
version = vim.version.range('*')
}
})
local hipatterns = require('mini.hipatterns')
hipatterns.setup({
highlighters = {
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
fixme = {
pattern = '%f[%w]()FIXME()%f[%W]',
group = 'MiniHipatternsFixme',
},
hack = {
pattern = '%f[%w]()HACK()%f[%W]',
group = 'MiniHipatternsHack',
},
todo = {
pattern = '%f[%w]()TODO()%f[%W]',
group = 'MiniHipatternsTodo',
},
note = {
pattern = '%f[%w]()NOTE()%f[%W]',
group = 'MiniHipatternsNote',
},
hex_color = hipatterns.gen_highlighter.hex_color(),
},
})
require('mini.pairs').setup()
-- require('mini.icons').setup()
@@ -1,20 +0,0 @@
vim.pack.add({
{ src = 'https://github.com/folke/noice.nvim' },
{ src = 'https://github.com/MunifTanjim/nui.nvim' },
})
require('noice').setup({
lsp = {
override = {
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
['vim.lsp.util.stylize_markdown'] = true,
},
},
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
})
@@ -1,3 +0,0 @@
vim.pack.add({'https://git.moomancer.xyz/DarthMooMancer/polydev.git' })
require('Polydev').setup()
@@ -1,31 +0,0 @@
vim.pack.add({ 'https://github.com/folke/snacks.nvim' })
require('snacks').setup({
notifier = {
enabled = true,
},
animate = { enabled = true },
input = { enabled = true },
picker = {
enabled = true,
prompt = '',
icons = {
ui = {
selected = '',
},
},
layout = {
preview = false,
},
},
zen = {
enabled = true,
toggles = {
dim = false,
diagnostics = true,
inlay_hints = true,
},
},
})
@@ -1,49 +0,0 @@
vim.pack.add({
{
src = 'https://github.com/nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
},
{ src = 'https://github.com/windwp/nvim-ts-autotag' },
})
require('nvim-treesitter').install({
'rust',
'c',
'cpp',
'lua',
'javascript',
'go',
'typescript',
'css',
'html',
'python',
'yaml',
})
require('nvim-ts-autotag').setup({
opts = {
enable_close = true, -- Auto close tags
enable_rename = true, -- Auto rename pairs of tags
enable_close_on_slash = false, -- Auto close on trailing </
},
})
vim.api.nvim_create_autocmd('FileType', {
pattern = {
'c',
'cpp',
'rust',
'lua',
'typescript',
'javascript',
'css',
'html',
'python',
'go',
'yaml',
},
callback = function()
vim.treesitter.start()
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})
@@ -1,2 +0,0 @@
vim.pack.add({ 'https://github.com/folke/trouble.nvim' })
require('trouble').setup({})
@@ -1,13 +0,0 @@
vim.pack.add({
{ src = 'https://github.com/nvim-tree/nvim-web-devicons' },
{ src = 'https://github.com/alexghergh/nvim-tmux-navigation' },
{ src = 'https://github.com/brianhuster/live-preview.nvim' },
{ src = 'https://github.com/m4xshen/hardtime.nvim' },
})
require('nvim-tmux-navigation').setup({
disable_when_zoomed = true, -- defaults to false
})
require("hardtime").setup()
-337
View File
@@ -1,337 +0,0 @@
local function derive_hl(name, opts)
local base = opts.base and vim.api.nvim_get_hl(0, { name = opts.base })
or {}
local fg = opts.fg and vim.api.nvim_get_hl(0, { name = opts.fg }) or {}
local bg = opts.bg and vim.api.nvim_get_hl(0, { name = opts.bg }) or {}
vim.api.nvim_set_hl(0, name, {
fg = fg.fg or base.fg,
bg = bg.bg or base.bg,
bold = opts.bold,
})
end
local function derive_mode_hl(name, color_group)
local color = vim.api.nvim_get_hl(0, { name = color_group })
local status_bg = vim.api.nvim_get_hl(0, { name = 'StatusLine' })
vim.api.nvim_set_hl(0, name, {
bg = color.fg,
fg = status_bg.bg or '#191724',
bold = true,
})
end
local function setup_statusline_highlights()
derive_mode_hl('StatusModeNormal', 'Type')
derive_mode_hl('StatusModeInsert', 'String')
derive_mode_hl('StatusModeVisual', 'Statement')
derive_mode_hl('StatusModeCommand', 'PreProc')
derive_mode_hl('StatusModeReplace', 'WarningMsg')
derive_mode_hl('StatusModeTerminal', 'Special')
derive_hl('StatusGit', { base = 'CursorLine', fg = 'Normal' })
derive_hl(
'StatusLspWorking',
{ base = 'StatusLine', fg = 'DiagnosticInfo' }
)
derive_hl('StatusLspReady', { base = 'StatusLine', fg = 'Constant' })
derive_hl('StatusLspNone', { base = 'StatusLine', fg = 'NonText' })
derive_hl(
'StatusDiagError',
{ base = 'StatusLine', fg = 'DiagnosticError' }
)
derive_hl('StatusDiagWarn', { base = 'StatusLine', fg = 'DiagnosticWarn' })
derive_hl('StatusDiagHint', { base = 'StatusLine', fg = 'DiagnosticHint' })
derive_hl('StatusCursor', { base = 'CursorLine', fg = 'Normal' })
derive_hl('StatusGitAdded', { base = 'StatusLine', fg = 'DiagnosticOk' })
derive_hl(
'StatusGitRemoved',
{ base = 'StatusLine', fg = 'DiagnosticError' }
)
derive_hl('StatusRecording', { base = 'StatusLine', fg = 'WarningMsg' })
end
vim.api.nvim_create_autocmd('ColorScheme', {
callback = setup_statusline_highlights,
})
setup_statusline_highlights()
local mode_map = {
n = ' NORM ',
i = ' INS ',
v = ' VIS ',
V = ' V-LINE ',
['\22'] = ' V-BLK ',
['\19'] = ' V-BLK ',
s = ' VIS ',
S = ' V-LINE ',
R = ' REPL ',
c = ' CMD ',
r = ' PROMPT ',
t = ' TERM ',
['!'] = ' SHELL ',
}
local mode_hl_map = {
n = 'StatusModeNormal',
i = 'StatusModeInsert',
v = 'StatusModeVisual',
V = 'StatusModeVisual',
['^V'] = 'StatusModeVisual',
s = 'StatusModeVisual',
S = 'StatusModeVisual',
['^S'] = 'StatusModeVisual',
R = 'StatusModeReplace',
c = 'StatusModeCommand',
r = 'StatusModeCommand',
['!'] = 'StatusModeCommand',
t = 'StatusModeTerminal',
}
local function refresh_status(buf)
local b = vim.b[buf]
local left, right = {}, {}
if b.git_branch and b.git_branch ~= '' then
left[#left + 1] = '%#StatusGit# ' .. b.git_branch .. ' %*'
end
local diff = b.git_diff
if diff then
if diff.added > 0 then
left[#left + 1] = '%#StatusGitAdded# +' .. diff.added .. '%*'
end
if diff.removed > 0 then
left[#left + 1] = '%#StatusGitRemoved# -' .. diff.removed .. '%*'
end
end
if b.recording then
right[#right + 1] = '%#StatusRecording# ' .. b.recording .. ' %*'
end
if b.diag_str then
right[#right + 1] = b.diag_str
end
if b.lsp_icon and b.lsp_icon ~= '' then
right[#right + 1] = '%#'
.. b.lsp_hl
.. '#'
.. b.lsp_icon
.. (b.lsp_name or '')
.. ' %*'
end
b.status_left = #left > 0 and table.concat(left) or ''
b.status_right = #right > 0 and table.concat(right) or ''
end
local lsp_icon = {
none = '',
starting = '',
working = ' 󰄬 ',
ready = ' 󰄭 ',
}
local lsp_hl = {
none = 'StatusLspNone',
starting = 'StatusLspNone',
working = 'StatusLspWorking',
ready = 'StatusLspReady',
}
local active_progress = {}
local function refresh_lsp(buf)
local state = 'ready'
local clients = vim.lsp.get_clients({ bufnr = buf })
if #clients == 0 then
state = 'none'
vim.b[buf].lsp_name = ''
else
local names = {}
for _, client in ipairs(clients) do
names[#names + 1] = client.name
local prog = active_progress[client.id]
if prog == 'working' then
state = 'working'
elseif prog == 'starting' and state ~= 'working' then
state = 'starting'
end
vim.b[buf].lsp_name = table.concat(names, '/')
end
end
vim.b[buf].lsp_icon = lsp_icon[state]
vim.b[buf].lsp_hl = lsp_hl[state]
refresh_status(buf)
end
vim.api.nvim_create_autocmd({ 'LspAttach', 'LspDetach' }, {
callback = function(ev)
if ev.event == 'LspAttach' then
local cid = ev.data.client_id
if not active_progress[cid] then
active_progress[cid] = 'starting'
vim.defer_fn(function()
if active_progress[cid] == 'starting' then
active_progress[cid] = nil
if vim.api.nvim_buf_is_valid(ev.buf) then
refresh_lsp(ev.buf)
end
end
end, 500) -- 500ms grace period to wait for LspProgress
end
elseif ev.event == 'LspDetach' then
active_progress[ev.data.client_id] = nil
end
refresh_lsp(ev.buf)
end,
})
vim.api.nvim_create_autocmd('LspProgress', {
callback = function(ev)
local kind = ev.data.params.value and ev.data.params.value.kind
if kind == 'begin' or kind == 'report' then
active_progress[ev.data.client_id] = 'working'
elseif kind == 'end' then
active_progress[ev.data.client_id] = nil
else
return
end
local client = vim.lsp.get_client_by_id(ev.data.client_id)
if client then
for buf in pairs(client.attached_buffers) do
refresh_lsp(buf)
end
end
end,
})
local BRANCH_ICON = ''
local function refresh_branch(buf)
local file = vim.api.nvim_buf_get_name(buf)
if file == '' or vim.bo[buf].buftype ~= '' then
vim.b[buf].git_branch = ''
return
end
local cwd = vim.fs.root(buf, '.git') or vim.fs.dirname(file)
vim.system(
{ 'git', 'branch', '--show-current' },
{ text = true, cwd = cwd },
vim.schedule_wrap(function(out)
if not vim.api.nvim_buf_is_valid(buf) then
return
end
local branch = (out.code == 0 and out.stdout or ''):gsub('%s+', '')
vim.b[buf].git_branch = branch ~= '' and (BRANCH_ICON .. branch)
or ''
refresh_status(buf)
end)
)
end
local function refresh_diff(buf)
local file = vim.api.nvim_buf_get_name(buf)
if file == '' or vim.bo[buf].buftype ~= '' then
vim.b[buf].git_diff = nil
return
end
local cwd = vim.fs.root(buf, '.git') or vim.fs.dirname(file)
vim.system(
{ 'git', 'diff', '--numstat', 'HEAD', '--', file },
{ text = true, cwd = cwd },
vim.schedule_wrap(function(out)
if not vim.api.nvim_buf_is_valid(buf) then
return
end
if out.code ~= 0 or out.stdout == '' then
vim.b[buf].git_diff = nil
else
local added, removed = out.stdout:match('(%d+)%s+(%d+)')
if added and removed then
vim.b[buf].git_diff = {
added = tonumber(added) or 0,
removed = tonumber(removed) or 0,
}
else
vim.b[buf].git_diff = nil
end
end
refresh_status(buf)
end)
)
end
local function refresh_diag(buf)
local count = vim.diagnostic.count(buf)
local sev = vim.diagnostic.severity
local parts = {}
if (count[sev.ERROR] or 0) > 0 then
parts[#parts + 1] = '%#StatusDiagError# E' .. count[sev.ERROR] .. ' %*'
end
if (count[sev.WARN] or 0) > 0 then
parts[#parts + 1] = '%#StatusDiagWarn# W' .. count[sev.WARN] .. ' %*'
end
if (count[sev.HINT] or 0) > 0 then
parts[#parts + 1] = '%#StatusDiagHint# H' .. count[sev.HINT] .. ' %*'
end
vim.b[buf].diag_str = #parts > 0 and table.concat(parts) or ''
refresh_status(buf)
end
vim.api.nvim_create_autocmd('DiagnosticChanged', {
callback = function(ev)
refresh_diag(ev.buf)
end,
})
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufNewFile' }, {
callback = function(ev)
if vim.bo[ev.buf].buftype == '' then
refresh_branch(ev.buf)
refresh_diff(ev.buf)
end
refresh_lsp(ev.buf)
refresh_diag(ev.buf)
end,
})
vim.api.nvim_create_autocmd('FocusGained', {
callback = function()
local buf = vim.api.nvim_get_current_buf()
if vim.bo[buf].buftype == '' then
refresh_branch(buf)
end
end,
})
vim.api.nvim_create_autocmd('BufWritePost', {
callback = function(ev)
refresh_diff(ev.buf)
end,
})
vim.api.nvim_create_autocmd('RecordingEnter', {
pattern = '*',
callback = function(ev)
vim.b[ev.buf].recording = 'Rec @' .. vim.fn.reg_recording()
refresh_status(ev.buf)
end,
})
vim.api.nvim_create_autocmd('RecordingLeave', {
pattern = '*',
callback = function(ev)
vim.b[ev.buf].recording = nil
refresh_status(ev.buf)
end,
})
function _G.__statusline()
local m = vim.fn.mode()
local key = (m == '\22' or m == '\19') and m or m:sub(1, 1)
local hl = mode_hl_map[key] or 'StatusModeNormal'
local b = vim.b
return table.concat({
'%#' .. hl .. '#' .. (mode_map[key] or ' ?? ') .. '%*',
b.status_left or '',
'%=',
b.status_right or '',
'%#StatusCursor# %l:%c ',
'%#' .. hl .. '# %p%% %*',
})
end
vim.o.statusline = '%!v:lua.__statusline()'
+76 -32
View File
@@ -5,82 +5,126 @@
"src": "https://github.com/saghen/blink.cmp", "src": "https://github.com/saghen/blink.cmp",
"version": ">=0.0.0" "version": ">=0.0.0"
}, },
"colorizer": {
"rev": "a065833f35a3a7cc3ef137ac88b5381da2ba302e",
"src": "https://github.com/norcalli/nvim-colorizer.lua"
},
"conform.nvim": { "conform.nvim": {
"rev": "016802de402556da54c36bd7359b441266b01cdd", "rev": "dca1a190aa85f9065979ef35802fb77131911106",
"src": "https://github.com/stevearc/conform.nvim" "src": "https://github.com/stevearc/conform.nvim"
}, },
"hardtime.nvim": { "fzf-lua": {
"rev": "721a75b9a0c2eb1fb811d34507708ee315cb04eb", "rev": "17e3507b788699776ba6d2f8dd101ec177f37a96",
"src": "https://github.com/m4xshen/hardtime.nvim" "src": "https://github.com/ibhagwan/fzf-lua"
}, },
"incline.nvim": { "incline.nvim": {
"rev": "debd628e9395f7a9da57bdc31ce75ca6b40a880b", "rev": "8b54c59bcb23366645ae10edca6edfb9d3a0853e",
"src": "https://github.com/b0o/incline.nvim" "src": "https://github.com/b0o/incline.nvim"
}, },
"kanso.nvim": { "lackluster.nvim": {
"rev": "1afbbb449aa0254823dbe1932e3cbb51886ff9fe", "rev": "70dd682e564784893b984deb51dd5ddd263c8cc7",
"src": "https://github.com/webhooked/kanso.nvim" "src": "https://github.com/slugbyte/lackluster.nvim"
}, },
"live-preview.nvim": { "lualine.nvim": {
"rev": "a6307fa340ed7c0d96f5c567afc8c991aad94ce0", "rev": "131a558e13f9f28b15cd235557150ccb23f89286",
"src": "https://github.com/brianhuster/live-preview.nvim" "src": "https://github.com/nvim-lualine/lualine.nvim"
}, },
"mason-lspconfig.nvim": { "mason-lspconfig.nvim": {
"rev": "b3298993d55fa194279b5eb9dbfb3a43da65cadf", "rev": "0c2823e0418f3d9230ff8b201c976e84de1cb401",
"src": "https://github.com/mason-org/mason-lspconfig.nvim" "src": "https://github.com/mason-org/mason-lspconfig.nvim"
}, },
"mason.nvim": { "mason.nvim": {
"rev": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d", "rev": "cb8445f8ce85d957416c106b780efd51c6298f89",
"src": "https://github.com/mason-org/mason.nvim" "src": "https://github.com/mason-org/mason.nvim"
}, },
"mini.nvim": { "mini.pairs": {
"rev": "1345d191bb3da9c7b0e977f4387c5761f9bff68d", "rev": "d5a29b6254dad07757832db505ea5aeab9aad43a",
"src": "https://github.com/nvim-mini/mini.nvim.git", "src": "https://github.com/nvim-mini/mini.pairs",
"version": ">=0.0.0" "version": ">=0.0.0"
}, },
"muted.nvim": {
"rev": "6967424df29fecf248f58a5a597b9ec94cc8b36a",
"src": "https://github.com/pisgahk/muted.nvim"
},
"neo-tree.nvim": {
"rev": "ff84e6e1608b24773f1b73cd4182e0bcf2b3d637",
"src": "https://github.com/nvim-neo-tree/neo-tree.nvim"
},
"neogen": {
"rev": "23e7e9f883d01289ebd90e98025acc860ea26366",
"src": "https://github.com/danymat/neogen"
},
"noice.nvim": { "noice.nvim": {
"rev": "7bfd942445fb63089b59f97ca487d605e715f155", "rev": "7bfd942445fb63089b59f97ca487d605e715f155",
"src": "https://github.com/folke/noice.nvim" "src": "https://github.com/folke/noice.nvim"
}, },
"nui.nvim": { "nui.nvim": {
"rev": "10fc361835c856ba4233ef5ea135b919bf3dce97", "rev": "de740991c12411b663994b2860f1a4fd0937c130",
"src": "https://github.com/MunifTanjim/nui.nvim" "src": "https://github.com/MunifTanjim/nui.nvim"
}, },
"nvim-lspconfig": { "nvim-colorizer.lua": {
"rev": "3e8d598d3b5f8338a41699c436e5fa11d2666cf0", "rev": "a065833f35a3a7cc3ef137ac88b5381da2ba302e",
"src": "https://github.com/neovim/nvim-lspconfig" "src": "https://github.com/norcalli/nvim-colorizer.lua"
}, },
"nvim-navic": { "nvim-dap": {
"rev": "455808fd0fae06e6d70fadfd61432275db8f34ce", "rev": "45a69eba683a2c448dd9ecfc4de89511f0646b5f",
"src": "https://github.com/SmiteshP/nvim-navic" "src": "https://github.com/mfussenegger/nvim-dap"
},
"nvim-dap-ui": {
"rev": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49",
"src": "https://github.com/rcarriga/nvim-dap-ui"
},
"nvim-highlight-colors": {
"rev": "e4c7af0211866162d999ce0bdd6a029302e19139",
"src": "https://github.com/brenoprata10/nvim-highlight-colors"
},
"nvim-lspconfig": {
"rev": "31026a13eefb20681124706a79fc1df6bf11ab27",
"src": "https://github.com/neovim/nvim-lspconfig"
}, },
"nvim-tmux-navigation": { "nvim-tmux-navigation": {
"rev": "4898c98702954439233fdaf764c39636681e2861", "rev": "4898c98702954439233fdaf764c39636681e2861",
"src": "https://github.com/alexghergh/nvim-tmux-navigation" "src": "https://github.com/alexghergh/nvim-tmux-navigation"
}, },
"nvim-treesitter": { "nvim-treesitter": {
"rev": "910fdf6f49e9dee7e7257c7d11a76b040fdfb9de", "rev": "4916d6592ede8c07973490d9322f187e07dfefac",
"src": "https://github.com/nvim-treesitter/nvim-treesitter" "src": "https://github.com/nvim-treesitter/nvim-treesitter"
}, },
"nvim-ts-autotag": { "nvim-ts-autotag": {
"rev": "d7220b55e16ed3c04e88086256def5d282429493", "rev": "88c1453db4ba7dd24131086fe51fdf74e587d275",
"src": "https://github.com/windwp/nvim-ts-autotag" "src": "https://github.com/windwp/nvim-ts-autotag"
}, },
"nvim-web-devicons": { "nvim-web-devicons": {
"rev": "58447c1fca354bbf184425e4a8d01deecbd6f3c4", "rev": "4fc505ac7bd7692824a142e96e5f529c133862f8",
"src": "https://github.com/nvim-tree/nvim-web-devicons" "src": "https://github.com/nvim-tree/nvim-web-devicons"
}, },
"plenary.nvim": {
"rev": "74b06c6c75e4eeb3108ec01852001636d85a932b",
"src": "https://github.com/nvim-lua/plenary.nvim"
},
"polydev": { "polydev": {
"rev": "2b30e36fade3272081f7166bc0ec614b0b7da1c9", "rev": "8d41141e9ab68c271bb8bb2db5528bb0a61c78eb",
"src": "https://git.moomancer.xyz/DarthMooMancer/polydev.git" "src": "git@moo:dmm/polydev.git"
},
"rose-pine": {
"rev": "6a961effd67f6130d36df6d1c05c48c739796dd2",
"src": "https://github.com/rose-pine/neovim"
}, },
"snacks.nvim": { "snacks.nvim": {
"rev": "882c996cf28183f4d63640de0b4c02ec886d01f2", "rev": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e",
"src": "https://github.com/folke/snacks.nvim" "src": "https://github.com/folke/snacks.nvim"
}, },
"trouble.nvim": { "undotree": {
"rev": "bd67efe408d4816e25e8491cc5ad4088e708a69a", "rev": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d",
"src": "https://github.com/folke/trouble.nvim" "src": "https://github.com/mbbill/undotree"
},
"which-key.nvim": {
"rev": "3aab2147e74890957785941f0c1ad87d0a44c15a",
"src": "https://github.com/folke/which-key.nvim"
},
"xcodebuild.nvim": {
"rev": "59ee76b947cfd680b0354f3318aec2cab71a18db",
"src": "https://github.com/wojciech-kulik/xcodebuild.nvim"
} }
} }
} }
BIN
View File
Binary file not shown.
+4 -9
View File
@@ -4,18 +4,13 @@ Host *
IdentityFile ~/.ssh/id_ed25519 IdentityFile ~/.ssh/id_ed25519
Host moo Host moo
# HostName 192.168.5.16 HostName git.local.moomancer.xyz
HostName 100.78.144.113
User git User git
IdentityFile ~/.ssh/id_ed25519 # Path to your private key IdentityFile ~/.ssh/id_ed25519 # Path to your private key
Host oasis Host oasis
HostName 100.78.144.113 HostName 100.111.101.97
User andrew User oasis
Port 2222 Port 2222
IdentityFile ~/.ssh/id_ed25519 IdentityFile ~/.ssh/id_ed25519
Ciphers aes128-gcm@openssh.com
Compression no
IPQoS throughput
ServerAliveInterval 15
ServerAliveCountMax 3
BIN
View File
Binary file not shown.
+22 -7
View File
@@ -6,20 +6,34 @@ set -g focus-events on
set -ga terminal-features ',xterm-ghostty:RGB' set -ga terminal-features ',xterm-ghostty:RGB'
set -as terminal-overrides ',xterm-ghostty:Tc' set -as terminal-overrides ',xterm-ghostty:Tc'
set-option -g default-shell $SHELL set-option -g default-shell $SHELL
# --- Visual Flair Enhancements ---
set -g status-position top set -g status-position top
set -g status-justify left set -g status-justify left
set -g status-style 'bg=default' # Completely transparent container set -g status-style 'bg=default' # Makes the bar transparent/seamless
# Left Side: Minimal Session Name with a pill-style look
set -g status-left-length 100 set -g status-left-length 100
set -g status-left "#[fg=#090E13,bg=colour6,bold] #S " set -g status-left "#[fg=#31748f,bg=default,bold]  #S #[fg=#444444,nobold]│ "
set -g status-right "" # Right Side: Clean icons with no unnecessary labels
set -g status-right-length 150
set -g status-right "#[fg=#c4a7e7]󰃭 %m-%d #[fg=#444444]│ #[fg=#eb6f92]󱑒 %H:%M "
set -g window-status-current-format "#[fg=colour1,bg=default] #F#I:#W " # Window Status: The "Flare"
set -g window-status-format "#[fg=colour7,bg=default] #I:#W " # Using a dot or a subtle block to indicate the active window
# set -g window-status-current-format "#[fg=#9ccfd8,bg=default,bold] ● #W"
# set -g window-status-format "#[fg=#6e6a86,bg=default] ○ #W"
set -g window-status-current-format "#[fg=#9ccfd8,bg=default,bold] #F#I:#W"
set -g window-status-format "#[fg=#6e6a86,bg=default] #I:#W"
set -g message-style 'fg=colour3 bg=default bold' # Message styling (Command mode)
set -g message-style 'fg=#ebbcba bg=default bold'
# ---------------------------------
# set -g status-style 'fg=#9ccfd8 bg=#000000'
# set -g status-left-length 100
# set -g status-right-length 30
# set -g status-left "#[fg=#31748f, bold][#S]#[fg=#908caa,nobold] | "
# set -g status-right "#[fg=#c4a7e7]  %m-%d-%Y #[fg=#eb6f92]  %H:%M"
set -g base-index 1 set -g base-index 1
set -g pane-base-index 1 set -g pane-base-index 1
@@ -31,6 +45,7 @@ set -g status-position top
bind-key h previous-window bind-key h previous-window
bind-key l next-window bind-key l next-window
bind -r f run-shell "tmux neww ~/.local/bin/tmux-windowizer"
bind -r v run-shell "tmux neww ~/.local/bin/tmux-sessionizer" bind -r v run-shell "tmux neww ~/.local/bin/tmux-sessionizer"
bind-key z resize-pane -Z bind-key z resize-pane -Z
bind -n C-h select-pane -L bind -n C-h select-pane -L
-62
View File
@@ -1,62 +0,0 @@
#!/usr/bin/env bash
# 1. Get active tmux sessions
sessions=$(tmux list-sessions -F "#S" 2>/dev/null)
# 2. Get directories from key work paths
dirs=$(find ~ ~/.config ~/Projects ~/dotfiles ~/personal \
-mindepth 1 -maxdepth 4 \
\( -name ".git" -o -name "node_modules" -o -name ".cache" -o -name "Library" \) -prune \
-o -type d -print 2>/dev/null)
# 3. Dynamic Previewer (Tree view for folders, Window list for sessions)
preview_cmd='
if [ -d {} ]; then
if command -v eza &>/dev/null; then
eza --tree --level=2 --icons --color=always {}
elif command -v tree &>/dev/null; then
tree -C -L 2 {}
else
ls -la --color=always {}
fi
else
tmux list-windows -t {} 2>/dev/null
fi'
# 4. Kanagawa Wave Themed FZF Selector
selected=$(printf "%s\n%s" "$sessions" "$dirs" | grep -v '^$' | fzf \
--layout=reverse \
--border=rounded \
--margin=1 \
--padding=1 \
--height=100% \
--prompt="󱇗 " \
--color="bg:#1F1F28,bg+:#223249,fg:#DCD7BA,fg+:#DCD7BA" \
--color="hl:#2D4F67,hl+:#7E9CD8,prompt:#957FB8,pointer:#7E9CD8" \
--color="info:#98BB6C,spinner:#957FB8,header:#7AA89F,border:#54546D" \
--color="marker:#98BB6C" \
--preview="$preview_cmd" \
--preview-window="right:55%:border-left")
# Exit if fzf was cancelled
[[ -z "$selected" ]] && exit 0
# 5. Handle Session Creation / Switching
if [[ -d "$selected" ]]; then
# Selection is a DIRECTORY -> Create session named after folder
session_name=$(basename "$selected" | tr '.: ' '_')
if ! tmux has-session -t "=$session_name" 2>/dev/null; then
tmux new-session -d -s "$session_name" -c "$selected"
fi
else
# Selection is an EXISTING SESSION -> Connect directly
session_name="$selected"
fi
# 6. Attach or Switch
if [[ -z "$TMUX" ]]; then
exec tmux attach-session -t "$session_name"
else
tmux switch-client -t "$session_name"
fi
+28 -6
View File
@@ -1,3 +1,14 @@
if [[ $(uname) != "Darwin" ]]; then
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
XDG_CURRENT_DESKTOP=sway dbus-run-session sway
fi
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey "^[[3~" delete-char
bindkey "^[[5~" up-line
bindkey "^[[6~" down-line
fi
HISTFILE=~/.zsh_history HISTFILE=~/.zsh_history
HISTSIZE=100 HISTSIZE=100
SAVEHIST=200 SAVEHIST=200
@@ -6,7 +17,9 @@ source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
zinit light zsh-users/zsh-autosuggestions zinit light zsh-users/zsh-autosuggestions
zinit light zdharma-continuum/fast-syntax-highlighting zinit light zdharma-continuum/fast-syntax-highlighting
if [[ $(uname) == "Darwin" ]]; then
zinit light junegunn/fzf zinit light junegunn/fzf
fi
eval "$(starship init zsh)" eval "$(starship init zsh)"
eval "$(zoxide init --cmd cd zsh)" eval "$(zoxide init --cmd cd zsh)"
@@ -17,18 +30,31 @@ autoload -Uz _zinit
export PATH="$HOME/.local/bin:$PATH" export PATH="$HOME/.local/bin:$PATH"
alias cat="bat" alias cat="bat"
alias rebuild="sudo darwin-rebuild switch --flake /etc/nix-darwin/#Andrews-MacBook-Air";
alias enix="nvim /etc/nix-darwin/flake.nix"
alias v="nvim" alias v="nvim"
alias ls="eza -a" alias ls="eza -a"
alias brew-update="brew update && brew upgrade && brew bundle --cleanup --zap --file=~/.Brewfile" alias brew-update="brew update && brew upgrade && brew bundle --cleanup --zap --file=~/.Brewfile"
alias cmake-update="sudo rm -rd build && cmake -S . -B build && cmake --build build"
alias oasis="ssh oasis"
# alias grep="rg"
#
if [[ $(uname) != "Darwin" ]]; then
alias update_world='doas emerge --ask --update --newuse --deep @world'
alias env="sh /home/andrew/personal/dotfiles/env_linux.sh"
else
alias env='sh ~/personal/dotfiles/env_mac.sh'
export MANPAGER="sh -c 'sed -u -e \"s/\\x1B\\[[0-9;]*m//g; s/.\\x08//g\" | bat -p -l man'" export MANPAGER="sh -c 'sed -u -e \"s/\\x1B\\[[0-9;]*m//g; s/.\\x08//g\" | bat -p -l man'"
export GOOGLE_CLOUD_PROJECT="development-477121"
export HOMEBREW_NO_AUTO_UPDATE=1 export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_ENV_HINTS=1 export HOMEBREW_NO_ENV_HINTS=1
export HOMEBREW_DISPLAY_INSTALL_TIMES=0 export HOMEBREW_DISPLAY_INSTALL_TIMES=0
export HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS=1 export HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS=1
export HOMEBREW_NO_EMOJI=1 export HOMEBREW_NO_EMOJI=1
fi
### End of Zinit's installer chunk
# bun completions # bun completions
[ -s "/Users/andrew/.bun/_bun" ] && source "/Users/andrew/.bun/_bun" [ -s "/Users/andrew/.bun/_bun" ] && source "/Users/andrew/.bun/_bun"
@@ -36,7 +62,3 @@ export HOMEBREW_NO_EMOJI=1
# bun # bun
export BUN_INSTALL="$HOME/.bun" export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH" export PATH="$BUN_INSTALL/bin:$PATH"
export PATH="/opt/homebrew/opt/ruby/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/ruby/lib"
export CPPFLAGS="-I/opt/homebrew/opt/ruby/include"
export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"