Compare commits

...

5 commits

26 changed files with 380 additions and 277 deletions

View file

@ -1,5 +1,3 @@
# Credits to https://github.com/BrewingWeasel/fishbang
function last_history_item function last_history_item
echo $history[1] echo $history[1]
end end
@ -57,7 +55,3 @@ abbr -a !^ --position anywhere --function first_history_arg # !^ returns the fir
abbr -a !\$ --position anywhere --function last_history_arg # !$ returns the last argument of the last command abbr -a !\$ --position anywhere --function last_history_arg # !$ returns the last argument of the last command
abbr -a !\* --position anywhere --function history_args # !* returns all arguments of the last command abbr -a !\* --position anywhere --function history_args # !* returns all arguments of the last command
abbr -a bang_nth_arg --position anywhere --regex '!:([0-9]*)' --function nth_history_arg # !$ returns the last argument of the last command abbr -a bang_nth_arg --position anywhere --regex '!:([0-9]*)' --function nth_history_arg # !$ returns the last argument of the last command
bind -M insert enter expand-abbr execute
bind -M default enter expand-abbr execute
bind enter expand-abbr execute

View file

@ -5,9 +5,7 @@ end
set -g fish_greeting set -g fish_greeting
fish_vi_key_bindings fish_vi_key_bindings
bind -M insert \t complete-and-search bind -M insert \t "__fzf_complete"
bind -M insert --key btab complete
# XDG directories # XDG directories
set -x XDG_CONFIG_HOME "$HOME/.config" set -x XDG_CONFIG_HOME "$HOME/.config"
@ -35,6 +33,7 @@ end
# Common paths # Common paths
fish_add_path /usr/sbin fish_add_path /usr/sbin
fish_add_path /sbin fish_add_path /sbin
fish_add_path $HOME/opt/*/bin
fish_add_path $HOME/.local/share/nvim/mason/bin fish_add_path $HOME/.local/share/nvim/mason/bin
fish_add_path $HOME/.local/bin fish_add_path $HOME/.local/bin
fish_add_path $HOME/go/bin fish_add_path $HOME/go/bin
@ -46,7 +45,6 @@ if test (uname) = "Darwin"
eval (/opt/homebrew/bin/brew shellenv) eval (/opt/homebrew/bin/brew shellenv)
end end
# Set up fzf
set -U FZF_DEFAULT_OPTS "--bind 'bs:backward-delete-char/eof'"
fzf --fish | source fzf --fish | source
# Added by LM Studio CLI (lms)
set -gx PATH $PATH /Users/afonso/.lmstudio/bin

View file

@ -1,8 +1,14 @@
# This file contains fish universal variable definitions. # This file contains fish universal variable definitions.
# VERSION: 3.0 # VERSION: 3.0
SETUVAR FZF_CTRL_R_OPTS:\x2d\x2dreverse SETUVAR FZF_COMPLETE:2
SETUVAR FZF_TMUX_OPTS:\x2dp SETUVAR FZF_DEFAULT_OPTS:\x2d\x2dbind\x20\x27bs\x3abackward\x2ddelete\x2dchar/eof\x27
SETUVAR __fish_initialized:3400 SETUVAR __fish_initialized:3800
SETUVAR _fisher_brewingweasel_2F_fishbang_files:\x7e/\x2econfig/fish/conf\x2ed/fishbang\x2efish
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ebrewingweasel/fishbang
SETUVAR _fisher_upgraded_to_4_4:\x1d
SETUVAR fifc_keybinding:\x09
SETUVAR fifc_open_keybinding:ctrl\x2do
SETUVAR fish_color_autosuggestion:brblack SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue SETUVAR fish_color_command:blue
@ -25,10 +31,11 @@ SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrbl
SETUVAR fish_color_status:red SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_complete_path:vertical\x1e/opt/homebrew/Cellar/fish/3\x2e7\x2e1/share/fish/completions\x1e/opt/homebrew/Cellar/fish/4\x2e0\x2e1/share/fish/completions
SETUVAR fish_key_bindings:fish_vi_key_bindings SETUVAR fish_key_bindings:fish_vi_key_bindings
SETUVAR fish_pager_color_completion:normal SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr SETUVAR fish_pager_color_selected_background:\x2dr
SETUVAR fish_user_paths:/Users/afonso/\x2eghcup/bin\x1e/Users/afonso/\x2ecargo/bin\x1e/Users/afonso/go/bin\x1e/Users/afonso/\x2elocal/bin\x1e/Users/afonso/\x2elocal/share/nvim/mason/bin\x1e/sbin\x1e/usr/sbin\x1e/Users/afonso/\x2egem/bin\x1e/opt/homebrew/opt/texlive/bin\x1e/opt/homebrew/bin SETUVAR fish_user_paths:/Users/afonso/opt/fish/bin\x1e/Users/afonso/opt/neovim/bin\x1e/Users/afonso/\x2eghcup/bin\x1e/Users/afonso/\x2ecargo/bin\x1e/Users/afonso/go/bin\x1e/Users/afonso/\x2elocal/bin\x1e/Users/afonso/\x2elocal/share/nvim/mason/bin\x1e/sbin\x1e/usr/sbin\x1e/Users/afonso/\x2egem/bin\x1e/opt/homebrew/opt/texlive/bin\x1e/opt/homebrew/bin

View file

@ -0,0 +1,92 @@
function __fzf_complete -d 'fzf completion and print selection back to commandline'
# As of 2.6, fish's "complete" function does not understand
# subcommands. Instead, we use the same hack as __fish_complete_subcommand and
# extract the subcommand manually.
set -l cmd (commandline -co) (commandline -ct)
switch $cmd[1]
case env sudo
for i in (seq 2 (count $cmd))
switch $cmd[$i]
case '-*'
case '*=*'
case '*'
set cmd $cmd[$i..-1]
break
end
end
end
set -l cmd_lastw $cmd[-1]
set cmd (string join -- ' ' $cmd)
set -l initial_query ''
test -n "$cmd_lastw"; and set initial_query --query="$cmd_lastw"
set -l complist (complete -C$cmd)
set -l result
# do nothing if there is nothing to select from
test -z "$complist"; and return
set -l compwc (echo $complist | wc -w)
if test $compwc -eq 1
# if there is only one option dont open fzf
set result "$complist"
else
set -l query
string join -- \n $complist \
| eval fzf --height=90% (string escape --no-quoted -- $initial_query) --print-query (__fzf_complete_opts) \
| cut -f1 \
| while read -l r
# first line is the user entered query
if test -z "$query"
set query $r
# rest of lines are selected candidates
else
set result $result $r
end
end
# exit if user canceled
if test -z "$query" ;and test -z "$result"
commandline -f repaint
return
end
# if user accepted but no candidate matches, use the input as result
if test -z "$result"
set result $query
end
end
set prefix (string sub -s 1 -l 1 -- (commandline -t))
for i in (seq (count $result))
set -l r $result[$i]
switch $prefix
case "'"
commandline -t -- (string escape -- $r)
case '"'
if string match '*"*' -- $r >/dev/null
commandline -t -- (string escape -- $r)
else
commandline -t -- '"'$r'"'
end
case '~'
commandline -t -- (string sub -s 2 (string escape -n -- $r))
case '*'
commandline -t -- $r
end
[ $i -lt (count $result) ]; and commandline -i ' '
end
commandline -f repaint
end
function __fzf_complete_opts
if set -q FZF_DEFAULT_OPTS
echo $FZF_DEFAULT_OPTS
end
echo --cycle --reverse --inline-info --no-multi --bind tab:down,btab:up
end

View file

@ -1,2 +1,2 @@
plugin
lazy-lock.json lazy-lock.json
lua/dev

View file

@ -2,5 +2,4 @@ require("core.variables")
require("core.keymaps") require("core.keymaps")
require("core.autocmds") require("core.autocmds")
require('core.package_manager') require('core.package_manager')
require('winbar')
require('core.theme') require('core.theme')

View file

@ -1,18 +1,27 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
if not vim.loop.fs_stat(lazypath) then local lazyrepo = "https://github.com/folke/lazy.nvim.git"
vim.fn.system({ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
"git", if vim.v.shell_error ~= 0 then
"clone", vim.api.nvim_echo({
"--filter=blob:none", { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
"https://github.com/folke/lazy.nvim.git", { out, "WarningMsg" },
"--branch=stable", -- latest stable release { "\nPress any key to exit..." },
lazypath, }, true, {})
}) vim.fn.getchar()
os.exit(1)
end
end end
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
--Call lazy config here --Call lazy config here
local lazy = require("lazy") local lazy = require("lazy")
lazy.setup("plugins") lazy.setup({
spec = {
{ import = "plugins" }
},
dev = {
path = vim.fn.stdpath("config") .. "/lua/dev"
}
})

View file

@ -47,4 +47,3 @@ vim.opt.signcolumn = "yes"
vim.opt.autoread = true vim.opt.autoread = true
-- disable swapfile -- disable swapfile
vim.opt.swapfile = false vim.opt.swapfile = false
vim.opt.laststatus = 3

View file

@ -25,18 +25,26 @@ return {
sources = { sources = {
default = { 'lsp', 'path', 'snippets', 'buffer' }, default = { 'lsp', 'path', 'snippets', 'buffer' },
providers = { providers = {
lazydev = { name = "LazyDev", module = "lazydev.integrations.blink", fallbacks = { "lsp" } }, lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
fallbacks = { "lsp" }
},
}, },
}, },
signature = { signature = {
enabled = true, enabled = true,
window = { window = {
max_width = 160,
max_height = 30,
scrollbar = true,
show_documentation = false, show_documentation = false,
} }
}, },
cmdline = {
completion = {
menu = {
auto_show = true
}
}
},
completion = { completion = {
accept = { accept = {
auto_brackets = { auto_brackets = {

View file

@ -117,10 +117,19 @@ return {
capabilities = capabilities, capabilities = capabilities,
filetypes = { 'haskell', 'lhaskell', 'cabal' }, filetypes = { 'haskell', 'lhaskell', 'cabal' },
}) })
lspconfig["clangd"].setup({ -- lspconfig["clangd"].setup({
-- capabilities = capabilities,
-- })
lspconfig["texlab"].setup({
capabilities = capabilities, capabilities = capabilities,
}) })
lspconfig["texlab"].setup({ lspconfig["bashls"].setup({
capabilities = capabilities,
})
lspconfig["zls"].setup({
capabilities = capabilities,
})
lspconfig["pyright"].setup({
capabilities = capabilities, capabilities = capabilities,
}) })
end, end,
@ -165,11 +174,35 @@ return {
rust = { "rustfmt" }, rust = { "rustfmt" },
go = { "gofmt" }, go = { "gofmt" },
json = { "jq" }, json = { "jq" },
bash = { "shfmt" } bash = { "shfmt", "beautysh" },
zsh = { "beautysh" }
} }
}) })
end, end,
}, },
{
'mfussenegger/nvim-lint',
config = function()
local lint = require("lint")
lint.linters_by_ft = {
go = { "golangcilint" },
}
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})
vim.keymap.set("n", "<leader>li", function()
lint.try_lint()
end, { desc = "Trigger linting for current file" })
end,
},
{ {
"lervag/vimtex", "lervag/vimtex",
@ -180,6 +213,15 @@ return {
else else
vim.g.vimtex_view_method = 'zathura' vim.g.vimtex_view_method = 'zathura'
end end
vim.g.vimtex_quickfix_ignore_filters = {
"warning",
"Warning"
}
vim.g.vimtex_quickfix_open_on_warning = 0
vim.g.vimtex_quickfix_ignore_filters = {
'Overfull',
'Underfull',
}
vim.g.vimtex_compiler_method = 'latexmk' vim.g.vimtex_compiler_method = 'latexmk'
vim.g.vimtex_compiler_latexmk = { vim.g.vimtex_compiler_latexmk = {
out_dir = 'build', out_dir = 'build',

View file

@ -25,6 +25,7 @@ return {
statuscolumn = { enabled = true }, statuscolumn = { enabled = true },
dashboard = { enabled = true }, dashboard = { enabled = true },
input = { enabled = true }, input = { enabled = true },
image = { enabled = true },
lazygit = { lazygit = {
vim.keymap.set('n', '<leader>lg', function() vim.keymap.set('n', '<leader>lg', function()
Snacks.lazygit.open() Snacks.lazygit.open()
@ -46,5 +47,15 @@ return {
end end
}, },
"tpope/vim-fugitive", "tpope/vim-fugitive",
"pimalaya/himalaya-vim" {
"afonsofrancof/worktrees.nvim",
dev = true,
opts = {
mappings = {
create = "<leader>wtc",
delete = "<leader>wtd",
switch = "<leader>wts",
}
}
}
} }

View file

@ -9,7 +9,7 @@ return {
fzflua.setup({ fzflua.setup({
defaults = { defaults = {
winopts = { winopts = {
border = "single", border = "rounded",
width = 0.6, width = 0.6,
height = 0.5, height = 0.5,
}, },

View file

@ -0,0 +1,24 @@
return {
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
opts = {
sections = {
lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = { { 'filename', path = 1 } },
lualine_x = { 'filetype' },
lualine_y = { 'progress' },
lualine_z = { 'location' }
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { 'filename' },
lualine_x = { 'location' },
lualine_y = {},
lualine_z = {}
},
}
}
}

View file

@ -19,6 +19,15 @@ return {
disable = { "latex" }, disable = { "latex" },
use_languagetree = true, use_languagetree = true,
}, },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
indent = { indent = {
enable = true, enable = true,
}, },

View file

@ -1,14 +1,14 @@
return { return {
{ -- {
"vimpostor/vim-tpipeline", -- "vimpostor/vim-tpipeline",
config = function() -- config = function()
vim.g.tpipeline_restore = 0 -- vim.g.tpipeline_restore = 0
vim.g.tpipeline_autoembed = 0 -- vim.g.tpipeline_autoembed = 0
vim.o.laststatus = 0 -- vim.o.laststatus = 0
vim.g.tpipeline_statusline = '%=%l:%c' -- vim.g.tpipeline_statusline = '%=%l:%c'
end -- end
}, -- },
{ {
"folke/noice.nvim", "folke/noice.nvim",
event = "VeryLazy", event = "VeryLazy",
@ -36,6 +36,7 @@ return {
}, },
{ {
'kevinhwang91/nvim-ufo', 'kevinhwang91/nvim-ufo',
event = "VeryLazy",
dependencies = 'kevinhwang91/promise-async', dependencies = 'kevinhwang91/promise-async',
config = function() config = function()
vim.o.foldcolumn = '0' vim.o.foldcolumn = '0'

View file

@ -1,87 +0,0 @@
local folder_icon = "󰉋"
local M = {}
--- Window bar that shows the current file path (in a fancy way).
---@return string
function M.render()
-- Get the path and expand variables.
local path = vim.fs.normalize(vim.fn.expand '%:p' --[[@as string]])
-- Replace slashes by arrows.
local separator = ' %#WinbarSeparator# '
local prefix, prefix_path = '', ''
-- If the window gets too narrow, shorten the path and drop the prefix.
if vim.api.nvim_win_get_width(0) < math.floor(vim.o.columns / 3) then
path = vim.fn.pathshorten(path)
else
-- For some special folders, add a prefix instead of the full path (making
-- sure to pick the longest prefix).
---@type table<string, string>
local special_dirs = {
DOTFILES = "$HOME/.config",
HOME = vim.env.HOME,
PROJECTS = "$HOME/projects",
["University"] = "$HOME/projects/University",
["Personal"] = "$HOME/projects/Personal",
}
for dir_name, dir_path in pairs(special_dirs) do
if vim.startswith(path, vim.fs.normalize(dir_path)) and #dir_path > #prefix_path then
prefix, prefix_path = dir_name, dir_path
end
end
if prefix ~= '' then
path = path:gsub('^' .. prefix_path, '')
prefix = string.format('%%#WinBarSpecial#%s %s%s', folder_icon, prefix, separator)
end
end
-- Remove leading slash.
path = path:gsub('^/', '')
-- Get the background color of the Normal highlight group
local normal_bg_color = vim.api.nvim_get_hl_by_name('Normal', true).background
-- Get the foreground color of the Normal highlight group
local normal_fg_color = vim.api.nvim_get_hl_by_name('Normal', true).foreground
-- Convert the RGB color to a hex string
local bg_hex_color = normal_bg_color and string.format('#%06x', normal_bg_color) or 'transparent'
-- Convert the RGB color to a hex string
local fg_hex_color = string.format('#%06x', normal_fg_color)
-- Define the Winbar highlight group with the same background color
vim.api.nvim_command('highlight Winbar guibg=' .. bg_hex_color)
-- Define the Winbar highlight group with the same foreground color
vim.api.nvim_command('highlight Winbar guifg=' .. fg_hex_color)
return table.concat {
' ',
prefix,
table.concat(
vim.iter(vim.split(path, '/'))
:map(function(segment)
return string.format('%%#Winbar#%s', segment)
end):totable(),
separator
),
}
end
vim.api.nvim_create_autocmd('BufWinEnter', {
group = vim.api.nvim_create_augroup('mariasolos/winbar', { clear = true }),
desc = 'Attach winbar',
callback = function(args)
if
not vim.api.nvim_win_get_config(0).zindex -- Not a floating window
and vim.bo[args.buf].buftype == '' -- Normal buffer
and vim.api.nvim_buf_get_name(args.buf) ~= '' -- Has a file name
and not vim.wo[0].diff -- Not in diff mode
then
vim.wo.winbar = "%{%v:lua.require'winbar'.render()%}"
end
end,
})
return M

View file

@ -1,9 +1,87 @@
# tmux.conf # tmux.conf
source-file ~/.config/tmux/tmux_general.conf # General
source-file ~/.config/tmux/tmux_binds.conf set -g default-terminal "tmux-256color"
source-file ~/.config/tmux/tmux_copy_mode.conf set -gq allow-passthrough on
source-file ~/.config/tmux/tmux_plugins.conf set -g visual-activity off
source-file ~/.config/tmux/tmux_init.conf set -sa terminal-features ",*:RGB"
source-file ~/.config/tmux/tmux_status_bar.conf set -sg escape-time 0
set -g mouse on
set -g base-index 1
set -g pane-base-index 1
set -g detach-on-destroy off
set -g history-limit 250000
set -g set-clipboard on
set -g renumber-windows on
setw -g mode-keys vi
# Status
set -g status-right ""
set -g status-left-length 20
set -g status-position top
set -g status-justify left
set -g status-style 'bg=#181926 fg=#cad3f5'
set -g status-left '[#S] '
set -g status-style ' #[bg=#{status-bg},fg=#{@unfocused-fg}]'
set -g window-status-format ' #I:#W '
set -g window-status-current-format '#[bg=#{@focused-bg},fg=#{@focused-fg}] #I:#W '
# Theme
set -g status-bg "#1d2021"
set -g @unfocused-fg "#ebdbb2"
set -g @focused-bg "#ebdbb2"
set -g @focused-fg "#1d2021"
# Plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'niqodea/tmux-matryoshka'
set -g @plugin 'laktak/extrakto'
# Plugin settings
set -g @resurrect-strategy-nvim 'session'
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-save-interval '5'
set -g @open-lazygit 'g'
# Binds
bind-key 'x' kill-pane
bind-key 'h' previous-window
bind-key 'j' switch-client -p
bind-key 'k' switch-client -n
bind-key 'l' next-window
bind-key 'n' new-window -c '#{pane_current_path}'
bind-key 'N' new-window
bind-key 'c' kill-window
# Decide whether we're in a Vim process
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
unbind y
bind-key 'y' if-shell "$is_vim" 'send-keys F5' 'select-pane -L'
unbind u
bind-key 'u' if-shell "$is_vim" 'send-keys F6' 'select-pane -D'
unbind i
bind-key 'i' if-shell "$is_vim" 'send-keys F7' 'select-pane -U'
unbind o
bind-key 'o' if-shell "$is_vim" 'send-keys F8' 'select-pane -R'
unbind s
bind-key 's' display-popup -E -w 60% -h 40% "~/.local/bin/tms"
unbind t
bind-key 't' display-popup -E -w 60% -h 40% "~/.local/bin/change-theme.sh"
unbind g
bind-key 'g' display-popup -d '#{pane_current_path}' -E -w 100% -h 100% "lazygit"
# Copy mode
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
bind P paste-buffer
# Copy mode mouse
unbind-key -T copy-mode-vi MouseDragEnd1Pane
bind-key -T copy-mode-vi MouseDown1Pane select-pane\; send-keys -X clear-selection
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
set-environment -g PATH "/opt/homebrew/bin:/bin:/usr/bin"
run '~/.config/tmux/plugins/tpm/tpm'

View file

@ -1,34 +0,0 @@
# tmux_binds.conf
# Binds
bind-key 'x' kill-pane
bind-key 'h' previous-window
bind-key 'j' switch-client -p
bind-key 'k' switch-client -n
bind-key 'l' next-window
bind-key 'n' new-window -c '#{pane_current_path}'
bind-key 'N' new-window
bind-key 'c' kill-window
# Decide whether we're in a Vim process
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
unbind y
bind-key 'y' if-shell "$is_vim" 'send-keys F5' 'select-pane -L'
unbind u
bind-key 'u' if-shell "$is_vim" 'send-keys F6' 'select-pane -D'
unbind i
bind-key 'i' if-shell "$is_vim" 'send-keys F7' 'select-pane -U'
unbind o
bind-key 'o' if-shell "$is_vim" 'send-keys F8' 'select-pane -R'
# Tmus sessionizer
unbind s
bind-key 's' display-popup -E -w 60% -h 40% "~/.local/bin/tms"
unbind t
bind-key 't' display-popup -E -w 60% -h 40% "~/.local/bin/change-theme.sh"
unbind g
bind-key 'g' display-popup -d '#{pane_current_path}' -E -w 100% -h 100% "lazygit"

View file

@ -1,10 +0,0 @@
# tmux_copy_mode.conf
# Copy mode
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
bind P paste-buffer
# Copy mode mouse
unbind-key -T copy-mode-vi MouseDragEnd1Pane
bind-key -T copy-mode-vi MouseDown1Pane select-pane\; send-keys -X clear-selection

View file

@ -1,19 +0,0 @@
# tmux_general.conf
set -g default-terminal "tmux-256color"
set -gq allow-passthrough on
set -g visual-activity off
set -sa terminal-features ",*:RGB"
set -sg escape-time 0
set -g mouse on
set -g base-index 1
set -g pane-base-index 1
set -g detach-on-destroy off
set -g history-limit 250000
set -g set-clipboard on
set -g status-position top
set -g renumber-windows on
setw -g mode-keys vi
set -g status-style 'bg=#181926 fg=#cad3f5'
set -g status-right ""
set -g status-left-length 20

View file

@ -1,6 +0,0 @@
# tmux_init.conf
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
set-environment -g PATH "/opt/homebrew/bin:/bin:/usr/bin"
run '~/.config/tmux/plugins/tpm/tpm'

View file

@ -1,15 +0,0 @@
# tmux_plugins.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'niqodea/tmux-matryoshka'
set -g @plugin 'laktak/extrakto'
set -g @plugin 'Morantron/tmux-fingers'
# Plugin settings
set -g @resurrect-strategy-nvim 'session'
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-save-interval '5'
set -g @open-lazygit 'g'

View file

@ -1,35 +0,0 @@
#!/usr/bin/env bash
# Hardcoded values
set -g status-bg "#272e33"
set -g @unfocused-fg "#3c4841"
set -g @focused-bg "#3c4841"
set -g @focused-fg "#d3c6aa"
# Set status bar position
set -g status-position top
# Set status bar justification
set -g status-justify left
# Set right side of the status bar
set -g status-right '#(cat #{socket_path}-\#{session_id}-vimbridge-R)'
set -g status-left '[#S] '
# Set status bar style
set -g status-style ' #[bg=#{status-bg},fg=#{@unfocused-fg}]'
# Set window status format
set -g window-status-format ' #I:#W '
# Set window status format for the current window
set -g window-status-current-format '#[bg=#{@focused-bg},fg=#{@focused-fg}] #I:#W '
# AUTO RENAME WINDOW
#set-option -g status-interval 5
#set-option -g automatic-rename on
#set-option -g automatic-rename-format "#{?#{==:#{pane_current_command},zsh},#{b:pane_current_path},#{pane_current_command}}"

View file

@ -1,3 +1,35 @@
function remove_from_path() {
local a
local p
local s
local r
eval "p=\$$1"
a=( ${(s/:/)p} )
if [[ ${a[(i)${2}]} -gt ${#a} ]] && return
for s in $a; do
if [[ ! $s == $2 ]]; then
[[ -z "$r" ]] && r=$s || r="$r:$s"
fi
done
eval $1="$r"
}
function prepend_path() {
[[ ! -d "$2" ]] && return
local p
remove_from_path "$1" "$2"
eval "p=\$$1"
eval export $1="$2:$p"
}
function append_path() {
[[ ! -d "$2" ]] && return
local p
remove_from_path "$1" "$2"
eval "p=\$$1"
eval export $1="$p:$2"
}
export EDITOR=nvim export EDITOR=nvim
export VISUAL=nvim export VISUAL=nvim
export READER=mupdf export READER=mupdf
@ -15,19 +47,22 @@ export GOBIN="$GOPATH/bin"
if [[ $(uname) == "Darwin" ]]; then if [[ $(uname) == "Darwin" ]]; then
export JAVA_HOME=$(/usr/libexec/java_home) export JAVA_HOME=$(/usr/libexec/java_home)
export GEM_HOME=$HOME/.gem export GEM_HOME=$HOME/.gem
export PATH="/opt/homebrew/bin:$PATH" prepend_path PATH "/opt/homebrew/bin"
export PATH="/opt/homebrew/opt/texlive/bin:$PATH" prepend_path PATH "/opt/homebrew/opt/texlive/bin"
export PATH=$PATH:$GEM_HOME/bin append_path PATH $GEM_HOME/bin
fi fi
#BOTH #BOTH
export PATH="/usr/sbin:/sbin:$PATH" append_path PATH "/usr/sbin:/sbin"
export PATH="$HOME/.local/share/nvim/mason/bin:$PATH" append_path PATH "$HOME/.local/share/nvim/mason/bin"
export PATH="$HOME/.local/bin:$PATH" append_path PATH "$HOME/.local/bin"
export PATH="$HOME/go/bin:$PATH" append_path PATH "$HOME/go/bin"
export PATH="$HOME/.cargo/bin:$PATH" append_path PATH "$HOME/.ghcup/bin"
export PATH="$HOME/.ghcup/bin:$PATH" append_path PATH "$HOME/.cabal/bin"
export PATH="$HOME/.cabal/bin:$PATH" append_path PATH "$HOME/.cargo/bin"
for bindir in ~/opt/*/bin(N); do
if [[ -d "$bindir" ]]; then
prepend_path PATH "$bindir"
fi
done
. "$HOME/.cargo/env"

View file

@ -154,6 +154,7 @@ themes[everforest-hard-dark]=\
nvim_color_scheme=everforest nvim_color_scheme=everforest
additional_nvim_commands="\ additional_nvim_commands="\
vim.g.everforest_better_performance=1 vim.g.everforest_better_performance=1
vim.g.everforest_transparent_background=2
vim.g.everforest_background=\"hard\" vim.g.everforest_background=\"hard\"
vim.opt.background=\"dark\""' vim.opt.background=\"dark\""'
@ -166,6 +167,7 @@ themes[everforest-medium-dark]=\
nvim_color_scheme=everforest nvim_color_scheme=everforest
additional_nvim_commands="\ additional_nvim_commands="\
vim.g.everforest_better_performance=1 vim.g.everforest_better_performance=1
vim.g.everforest_transparent_background=2
vim.g.everforest_background=\"medium\" vim.g.everforest_background=\"medium\"
vim.opt.background=\"dark\""' vim.opt.background=\"dark\""'
@ -179,6 +181,7 @@ themes[everforest-soft-dark]=\
additional_nvim_commands="\ additional_nvim_commands="\
vim.g.everforest_better_performance=1 vim.g.everforest_better_performance=1
vim.g.everforest_background=\"soft\" vim.g.everforest_background=\"soft\"
vim.g.everforest_transparent_background=2
vim.opt.background=\"dark\""' vim.opt.background=\"dark\""'
# Function to reload Neovim # Function to reload Neovim
@ -197,10 +200,10 @@ change_theme() {
[[ -n "$alacritty_theme_name" ]] && sed -i '' -e "s|import = \[\"~/.config/alacritty/themes/.*\"\]|import = [\"~/.config/alacritty/themes/${alacritty_theme_name}.toml\"]|g" ~/.config/alacritty/alacritty.toml [[ -n "$alacritty_theme_name" ]] && sed -i '' -e "s|import = \[\"~/.config/alacritty/themes/.*\"\]|import = [\"~/.config/alacritty/themes/${alacritty_theme_name}.toml\"]|g" ~/.config/alacritty/alacritty.toml
[[ -n "$ghostty_theme_name" ]] && sed -i '' -E "s/theme =.*$/theme = $ghostty_theme_name/" ~/.config/ghostty/config [[ -n "$ghostty_theme_name" ]] && sed -i '' -E "s/theme =.*$/theme = $ghostty_theme_name/" ~/.config/ghostty/config
[[ -n "$kitty_theme" ]] && kitten themes --reload-in=all "$kitty_theme" [[ -n "$kitty_theme" ]] && kitten themes --reload-in=all "$kitty_theme"
sed -i '' -E "s/set -g status-bg .*$/set -g status-bg \"$background_color\"/" ~/.config/tmux/tmux_status_bar.conf sed -i '' -E "s/set -g status-bg .*$/set -g status-bg \"$background_color\"/" ~/.config/tmux/tmux.conf
sed -i '' -E "s/set -g @unfocused-fg .*$/set -g @unfocused-fg \"$tmux_bar_unfocused_fg\"/" ~/.config/tmux/tmux_status_bar.conf sed -i '' -E "s/set -g @unfocused-fg .*$/set -g @unfocused-fg \"$tmux_bar_unfocused_fg\"/" ~/.config/tmux/tmux.conf
sed -i '' -E "s/set -g @focused-bg .*$/set -g @focused-bg \"$tmux_bar_focused_bg\"/" ~/.config/tmux/tmux_status_bar.conf sed -i '' -E "s/set -g @focused-bg .*$/set -g @focused-bg \"$tmux_bar_focused_bg\"/" ~/.config/tmux/tmux.conf
sed -i '' -E "s/set -g @focused-fg .*$/set -g @focused-fg \"$tmux_bar_focused_fg\"/" ~/.config/tmux/tmux_status_bar.conf sed -i '' -E "s/set -g @focused-fg .*$/set -g @focused-fg \"$tmux_bar_focused_fg\"/" ~/.config/tmux/tmux.conf
tmux source-file ~/.config/tmux/tmux.conf tmux source-file ~/.config/tmux/tmux.conf
reload_neovim "$nvim_color_scheme" "$additional_nvim_commands" reload_neovim "$nvim_color_scheme" "$additional_nvim_commands"
} }