Update config after a long time
This commit is contained in:
parent
7ac1b932a7
commit
c789e148a1
39 changed files with 1278 additions and 125 deletions
163
.config/fish/completions/bun.fish
Normal file
163
.config/fish/completions/bun.fish
Normal file
|
@ -0,0 +1,163 @@
|
||||||
|
# This is terribly complicated
|
||||||
|
# It's because:
|
||||||
|
# 1. bun run has to have dynamic completions
|
||||||
|
# 2. there are global options
|
||||||
|
# 3. bun {install add remove} gets special options
|
||||||
|
# 4. I don't know how to write fish completions well
|
||||||
|
# Contributions very welcome!!
|
||||||
|
|
||||||
|
function __fish__get_bun_bins
|
||||||
|
string split ' ' (bun getcompletes b)
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish__get_bun_scripts
|
||||||
|
set -lx SHELL bash
|
||||||
|
set -lx MAX_DESCRIPTION_LEN 40
|
||||||
|
string trim (string split '\n' (string split '\t' (bun getcompletes z)))
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish__get_bun_packages
|
||||||
|
if test (commandline -ct) != ""
|
||||||
|
set -lx SHELL fish
|
||||||
|
string split ' ' (bun getcompletes a (commandline -ct))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function __history_completions
|
||||||
|
set -l tokens (commandline --current-process --tokenize)
|
||||||
|
history --prefix (commandline) | string replace -r \^$tokens[1]\\s\* "" | string replace -r \^$tokens[2]\\s\* "" | string split ' '
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish__get_bun_bun_js_files
|
||||||
|
string split ' ' (bun getcompletes j)
|
||||||
|
end
|
||||||
|
|
||||||
|
function bun_fish_is_nth_token --description 'Test if current token is on Nth place' --argument-names n
|
||||||
|
set -l tokens (commandline -poc)
|
||||||
|
set -l tokens (string replace -r --filter '^([^-].*)' '$1' -- $tokens)
|
||||||
|
test (count $tokens) -eq "$n"
|
||||||
|
end
|
||||||
|
|
||||||
|
function __bun_command_count --argument-names n
|
||||||
|
set -l cmds (commandline -poc)
|
||||||
|
|
||||||
|
test (count cmds) -eq "$n"
|
||||||
|
end
|
||||||
|
|
||||||
|
function __bun_last_cmd --argument-names n
|
||||||
|
set -l cmds (commandline -poc)
|
||||||
|
|
||||||
|
test "(cmds[-1])" = "$n"
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l bun_install_boolean_flags yarn production optional development no-save dry-run force no-cache silent verbose global
|
||||||
|
set -l bun_install_boolean_flags_descriptions "Write a yarn.lock file (yarn v1)" "Don't install devDependencies" "Add dependency to optionalDependencies" "Add dependency to devDependencies" "Don't install devDependencies" "Don't install anything" "Always request the latest versions from the registry & reinstall all dependenices" "Ignore manifest cache entirely" "Don't output anything" "Excessively verbose logging" "Use global folder"
|
||||||
|
|
||||||
|
set -l bun_builtin_cmds dev create help bun upgrade discord run install remove add init link unlink pm x
|
||||||
|
set -l bun_builtin_cmds_without_run dev create help bun upgrade discord install remove add init pm x
|
||||||
|
set -l bun_builtin_cmds_without_bun dev create help upgrade run discord install remove add init pm x
|
||||||
|
set -l bun_builtin_cmds_without_create dev help bun upgrade discord run install remove add init pm x
|
||||||
|
set -l bun_builtin_cmds_without_install create dev help bun upgrade discord run remove add init pm x
|
||||||
|
set -l bun_builtin_cmds_without_remove create dev help bun upgrade discord run install add init pm x
|
||||||
|
set -l bun_builtin_cmds_without_add create dev help bun upgrade discord run remove install init pm x
|
||||||
|
set -l bun_builtin_cmds_without_pm create dev help bun upgrade discord run init pm x
|
||||||
|
|
||||||
|
# clear
|
||||||
|
complete -e -c bun
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_run; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -a '(__fish__get_bun_scripts)' -d 'script'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_run; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from run" -a '(__fish__get_bun_bins)' -d 'package bin'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_run; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from run" -a '(__fish__get_bun_scripts)' -d 'script'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_run; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from run" -a '(__fish__get_bun_bun_js_files)' -d 'Bun.js'
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __fish_use_subcommand" -a 'run' -f -d 'Run a script or bin'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) install remove add;" --no-files -s 'u' -l 'origin' -r -d 'Server URL. Rewrites import paths'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) install remove add;" --no-files -s 'p' -l 'port' -r -d 'Port number to start server from'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) install remove add;" --no-files -s 'd' -l 'define' -r -d 'Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:\"development\"'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) install remove add;" --no-files -s 'e' -l 'external' -r -d 'Exclude module from transpilation (can use * wildcards). ex: -e react'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) install remove add;" --no-files -l 'use' -r -d 'Use a framework (ex: next)'
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) install remove add;" --no-files -l 'hot' -r -d 'Enable hot reloading in Bun\'s JavaScript runtime'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __fish_use_subcommand" -a 'dev' -d 'Start dev server'
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __bun_command_count 1 and __fish_use_subcommand" -a 'create' -f -d 'Create a new project from a template'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_create next react; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from create;" -a 'next' -d 'new Next.js project'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_create next react; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from create;" -a 'react' -d 'new React project'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -a 'upgrade' -d 'Upgrade bun to the latest version' -x
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -a '--help' -d 'See all commands and flags' -x
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -l "version" -s "v" -a '--version' -d 'Bun\'s version' -x
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -a 'discord' -d 'Open bun\'s Discord server' -x
|
||||||
|
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_bun; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); __fish_use_subcommand" -a 'bun' -d 'Generate a new bundle'
|
||||||
|
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_bun; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from bun" -F -d 'Bundle this'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_create; and not __fish_seen_subcommand_from (__fish__get_bun_bins); and not __fish_seen_subcommand_from (__fish__get_bun_scripts); and __fish_seen_subcommand_from react; or __fish_seen_subcommand_from next" -F -d "Create in directory"
|
||||||
|
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __bun_command_count 1 and __fish_use_subcommand" -a 'init' -F -d 'Start an empty Bun project'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __bun_command_count 1 and __fish_use_subcommand" -a 'install' -f -d 'Install packages from package.json'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __bun_command_count 1 and __fish_use_subcommand" -a 'add' -F -d 'Add a package to package.json'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __bun_command_count 1 and __fish_use_subcommand" -a 'remove' -F -d 'Remove a package from package.json'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "bun_fish_is_nth_token 1; and not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) and __bun_command_count 1 and __fish_use_subcommand add remove" -F
|
||||||
|
|
||||||
|
|
||||||
|
for i in (seq (count $bun_install_boolean_flags))
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from install add remove;" -l "$bun_install_boolean_flags[$i]" -d "$bun_install_boolean_flags_descriptions[$i]"
|
||||||
|
end
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from install add remove;" -l 'cwd' -d 'Change working directory'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from install add remove;" -l 'cache-dir' -d 'Choose a cache directory (default: $HOME/.bun/install/cache)'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from add;" -d 'Popular' -a '(__fish__get_bun_packages)'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from add;" -d 'History' -a '(__history_completions)'
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "__fish_seen_subcommand_from pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) cache;" -a 'bin ls cache hash hash-print hash-string' -f
|
||||||
|
|
||||||
|
complete -c bun \
|
||||||
|
-n "__fish_seen_subcommand_from pm; and __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts);" -a 'rm' -f
|
||||||
|
|
||||||
|
complete -c bun -n "not __fish_seen_subcommand_from $bun_builtin_cmds (__fish__get_bun_bins) (__fish__get_bun_scripts)" -a "$bun_builtin_cmds" -f
|
7
.config/fish/completions/fisher.fish
Normal file
7
.config/fish/completions/fisher.fish
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
complete --command fisher --exclusive --long help --description "Print help"
|
||||||
|
complete --command fisher --exclusive --long version --description "Print version"
|
||||||
|
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
|
||||||
|
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
|
||||||
|
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
|
||||||
|
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
|
||||||
|
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
|
8
.config/fish/completions/fzf_configure_bindings.fish
Normal file
8
.config/fish/completions/fzf_configure_bindings.fish
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
complete fzf_configure_bindings --no-files
|
||||||
|
complete fzf_configure_bindings --long help --short h --description "Print help" --condition "not __fish_seen_argument --help -h"
|
||||||
|
complete fzf_configure_bindings --long directory --description "Change the key binding for Search Directory" --condition "not __fish_seen_argument --directory"
|
||||||
|
complete fzf_configure_bindings --long git_log --description "Change the key binding for Search Git Log" --condition "not __fish_seen_argument --git_log"
|
||||||
|
complete fzf_configure_bindings --long git_status --description "Change the key binding for Search Git Status" --condition "not __fish_seen_argument --git_status"
|
||||||
|
complete fzf_configure_bindings --long history --description "Change the key binding for Search History" --condition "not __fish_seen_argument --history"
|
||||||
|
complete fzf_configure_bindings --long processes --description "Change the key binding for Search Processes" --condition "not __fish_seen_argument --processes"
|
||||||
|
complete fzf_configure_bindings --long variables --description "Change the key binding for Search Variables" --condition "not __fish_seen_argument --variables"
|
28
.config/fish/conf.d/fzf.fish
Normal file
28
.config/fish/conf.d/fzf.fish
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# fzf.fish is only meant to be used in interactive mode. If not in interactive mode and not in CI, skip the config to speed up shell startup
|
||||||
|
if not status is-interactive && test "$CI" != true
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
|
||||||
|
# Because of scoping rules, to capture the shell variables exactly as they are, we must read
|
||||||
|
# them before even executing _fzf_search_variables. We use psub to store the
|
||||||
|
# variables' info in temporary files and pass in the filenames as arguments.
|
||||||
|
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
|
||||||
|
set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)'
|
||||||
|
|
||||||
|
|
||||||
|
# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings
|
||||||
|
fzf_configure_bindings
|
||||||
|
|
||||||
|
# Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased
|
||||||
|
function _fzf_uninstall --on-event fzf_uninstall
|
||||||
|
_fzf_uninstall_bindings
|
||||||
|
|
||||||
|
set --erase _fzf_search_vars_command
|
||||||
|
functions --erase _fzf_uninstall _fzf_migration_message _fzf_uninstall_bindings fzf_configure_bindings
|
||||||
|
complete --erase fzf_configure_bindings
|
||||||
|
|
||||||
|
set_color cyan
|
||||||
|
echo "fzf.fish uninstalled."
|
||||||
|
echo "You may need to manually remove fzf_configure_bindings from your config.fish if you were using custom key bindings."
|
||||||
|
set_color normal
|
||||||
|
end
|
20
.config/fish/conf.d/plugin-bang-bang.fish
Normal file
20
.config/fish/conf.d/plugin-bang-bang.fish
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
function _plugin-bang-bang_key_bindings --on-variable fish_key_bindings
|
||||||
|
bind --erase --all !
|
||||||
|
bind --erase --all '$'
|
||||||
|
switch "$fish_key_bindings"
|
||||||
|
case 'fish_default_key_bindings'
|
||||||
|
bind --mode default ! __history_previous_command
|
||||||
|
bind --mode default '$' __history_previous_command_arguments
|
||||||
|
case 'fish_vi_key_bindings' 'fish_hybrid_key_bindings'
|
||||||
|
bind --mode insert ! __history_previous_command
|
||||||
|
bind --mode insert '$' __history_previous_command_arguments
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function _plugin-bang-bang_uninstall --on-event plugin-bang-bang_uninstall
|
||||||
|
bind --erase --all !
|
||||||
|
bind --erase --all '$'
|
||||||
|
functions --erase _plugin-bang-bang_uninstall
|
||||||
|
end
|
||||||
|
|
||||||
|
_plugin-bang-bang_key_bindings
|
|
@ -5,11 +5,14 @@ fish_default_key_bindings
|
||||||
|
|
||||||
set -gx EDITOR nvim
|
set -gx EDITOR nvim
|
||||||
|
|
||||||
|
fish_add_path $HOME/.bun/bin
|
||||||
|
fish_add_path $HOME/go/bin
|
||||||
fish_add_path $HOME/.local/share/nvim/mason/bin
|
fish_add_path $HOME/.local/share/nvim/mason/bin
|
||||||
fish_add_path /home/afonso/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin
|
fish_add_path /home/afonso/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin
|
||||||
fish_add_path $HOME/.local/bin
|
fish_add_path $HOME/.local/bin
|
||||||
fish_add_path $HOME/.cargo/bin
|
fish_add_path $HOME/.cargo/bin
|
||||||
fish_add_path $HOME/.ghcup/bin
|
fish_add_path $HOME/.ghcup/bin
|
||||||
|
fish_add_path /var/lib/flatpak/exports/bin
|
||||||
|
|
||||||
source ~/.config/fish/myfunctions/code.fish
|
source ~/.config/fish/myfunctions/code.fish
|
||||||
source ~/.config/fish/myfunctions/dotfiles.fish
|
source ~/.config/fish/myfunctions/dotfiles.fish
|
||||||
|
@ -18,3 +21,7 @@ source ~/.config/fish/myfunctions/qol.fish
|
||||||
source ~/.config/fish/myfunctions/replacements.fish
|
source ~/.config/fish/myfunctions/replacements.fish
|
||||||
|
|
||||||
starship init fish | source
|
starship init fish | source
|
||||||
|
|
||||||
|
# bun
|
||||||
|
set --export BUN_INSTALL "$HOME/.bun"
|
||||||
|
set --export PATH $BUN_INSTALL/bin $PATH
|
||||||
|
|
3
.config/fish/fish_plugins
Normal file
3
.config/fish/fish_plugins
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
jorgebucaran/fisher
|
||||||
|
patrickf1/fzf.fish
|
||||||
|
oh-my-fish/plugin-bang-bang
|
102
.config/fish/fish_variables
Normal file
102
.config/fish/fish_variables
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
# This file contains fish universal variable definitions.
|
||||||
|
# VERSION: 3.0
|
||||||
|
SETUVAR FZF_DEFAULT_OPTS:\x2d\x2dheight\x2040\x25
|
||||||
|
SETUVAR FZF_DISABLE_KEYBINDINGS:0
|
||||||
|
SETUVAR FZF_LEGACY_KEYBINDINGS:1
|
||||||
|
SETUVAR FZF_PREVIEW_DIR_CMD:ls
|
||||||
|
SETUVAR FZF_PREVIEW_FILE_CMD:head\x20\x2dn\x2010
|
||||||
|
SETUVAR FZF_TMUX_HEIGHT:40\x25
|
||||||
|
SETUVAR --export GPG_TTY:not\x20a\x20tty
|
||||||
|
SETUVAR --export SSH_AUTH_SOCK:/home/afonso/\x2egnupg/S\x2egpg\x2dagent\x2essh
|
||||||
|
SETUVAR __fish_initialized:3400
|
||||||
|
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
|
||||||
|
SETUVAR _fisher_oh_2D_my_2D_fish_2F_plugin_2D_bang_2D_bang_files:\x7e/\x2econfig/fish/functions/__history_previous_command\x2efish\x1e\x7e/\x2econfig/fish/functions/__history_previous_command_arguments\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/plugin\x2dbang\x2dbang\x2efish
|
||||||
|
SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish
|
||||||
|
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1epatrickf1/fzf\x2efish\x1eoh\x2dmy\x2dfish/plugin\x2dbang\x2dbang
|
||||||
|
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||||
|
SETUVAR fish_color_autosuggestion:737994
|
||||||
|
SETUVAR fish_color_cancel:e78284
|
||||||
|
SETUVAR fish_color_command:8caaee
|
||||||
|
SETUVAR fish_color_comment:838ba7
|
||||||
|
SETUVAR fish_color_cwd:e5c890
|
||||||
|
SETUVAR fish_color_cwd_root:red
|
||||||
|
SETUVAR fish_color_end:ef9f76
|
||||||
|
SETUVAR fish_color_error:e78284
|
||||||
|
SETUVAR fish_color_escape:ea999c
|
||||||
|
SETUVAR fish_color_gray:737994
|
||||||
|
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_host:8caaee
|
||||||
|
SETUVAR fish_color_host_remote:a6d189
|
||||||
|
SETUVAR fish_color_keyword:e78284
|
||||||
|
SETUVAR fish_color_normal:c6d0f5
|
||||||
|
SETUVAR fish_color_operator:f4b8e4
|
||||||
|
SETUVAR fish_color_option:\x1d
|
||||||
|
SETUVAR fish_color_param:eebebe
|
||||||
|
SETUVAR fish_color_quote:a6d189
|
||||||
|
SETUVAR fish_color_redirection:f4b8e4
|
||||||
|
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d414559
|
||||||
|
SETUVAR fish_color_selection:\x2d\x2dbackground\x3d414559
|
||||||
|
SETUVAR fish_color_status:e78284
|
||||||
|
SETUVAR fish_color_user:81c8be
|
||||||
|
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||||
|
SETUVAR fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell
|
||||||
|
SETUVAR fish_pager_color_background:\x1d
|
||||||
|
SETUVAR fish_pager_color_completion:c6d0f5
|
||||||
|
SETUVAR fish_pager_color_description:737994
|
||||||
|
SETUVAR fish_pager_color_prefix:f4b8e4
|
||||||
|
SETUVAR fish_pager_color_progress:737994
|
||||||
|
SETUVAR fish_pager_color_secondary_background:\x1d
|
||||||
|
SETUVAR fish_pager_color_secondary_completion:\x1d
|
||||||
|
SETUVAR fish_pager_color_secondary_description:\x1d
|
||||||
|
SETUVAR fish_pager_color_secondary_prefix:\x1d
|
||||||
|
SETUVAR fish_pager_color_selected_background:\x1d
|
||||||
|
SETUVAR fish_pager_color_selected_completion:\x1d
|
||||||
|
SETUVAR fish_pager_color_selected_description:\x1d
|
||||||
|
SETUVAR fish_pager_color_selected_prefix:\x1d
|
||||||
|
SETUVAR fish_user_paths:/home/afonso/go/bin\x1e/home/afonso/\x2ebun/bin\x1e/var/lib/flatpak/exports/bin\x1e/home/afonso/\x2eghcup/bin\x1e/home/afonso/\x2econfig/emacs/bin\x1e/home/afonso/\x2enix\x2dprofile/bin\x1e/var/lib/snapd/snap/bin\x1e/home/afonso/\x2elocal/share/nvim/mason/bin\x1e/home/afonso/\x2erustup/toolchains/nightly\x2dx86_64\x2dunknown\x2dlinux\x2dgnu/bin\x1e/home/afonso/\x2ecargo/bin\x1e/home/afonso/\x2elocal/bin
|
||||||
|
SETUVAR pure_begin_prompt_with_current_directory:true
|
||||||
|
SETUVAR pure_check_for_new_release:false
|
||||||
|
SETUVAR pure_color_at_sign:pure_color_mute
|
||||||
|
SETUVAR pure_color_command_duration:pure_color_warning
|
||||||
|
SETUVAR pure_color_current_directory:pure_color_primary
|
||||||
|
SETUVAR pure_color_danger:red
|
||||||
|
SETUVAR pure_color_dark:black
|
||||||
|
SETUVAR pure_color_git_branch:brgreen
|
||||||
|
SETUVAR pure_color_git_dirty:pure_color_mute
|
||||||
|
SETUVAR pure_color_git_stash:pure_color_info
|
||||||
|
SETUVAR pure_color_git_unpulled_commits:pure_color_info
|
||||||
|
SETUVAR pure_color_git_unpushed_commits:pure_color_info
|
||||||
|
SETUVAR pure_color_hostname:pure_color_mute
|
||||||
|
SETUVAR pure_color_info:cyan
|
||||||
|
SETUVAR pure_color_jobs:pure_color_normal
|
||||||
|
SETUVAR pure_color_light:white
|
||||||
|
SETUVAR pure_color_mute:brblack
|
||||||
|
SETUVAR pure_color_normal:normal
|
||||||
|
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
|
||||||
|
SETUVAR pure_color_primary:blue
|
||||||
|
SETUVAR pure_color_prompt_on_error:pure_color_danger
|
||||||
|
SETUVAR pure_color_prompt_on_success:pure_color_success
|
||||||
|
SETUVAR pure_color_success:magenta
|
||||||
|
SETUVAR pure_color_system_time:pure_color_mute
|
||||||
|
SETUVAR pure_color_username_normal:pure_color_mute
|
||||||
|
SETUVAR pure_color_username_root:pure_color_light
|
||||||
|
SETUVAR pure_color_virtualenv:pure_color_mute
|
||||||
|
SETUVAR pure_color_warning:yellow
|
||||||
|
SETUVAR pure_enable_container_detection:true
|
||||||
|
SETUVAR pure_enable_git:true
|
||||||
|
SETUVAR pure_enable_single_line_prompt:false
|
||||||
|
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
|
||||||
|
SETUVAR pure_separate_prompt_on_error:false
|
||||||
|
SETUVAR pure_show_jobs:true
|
||||||
|
SETUVAR pure_show_prefix_root_prompt:false
|
||||||
|
SETUVAR pure_show_subsecond_command_duration:false
|
||||||
|
SETUVAR pure_show_system_time:false
|
||||||
|
SETUVAR pure_symbol_git_dirty:\x2a
|
||||||
|
SETUVAR pure_symbol_git_stash:\u2261
|
||||||
|
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
|
||||||
|
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
|
||||||
|
SETUVAR pure_symbol_prefix_root_prompt:\x23
|
||||||
|
SETUVAR pure_symbol_prompt:\u276f
|
||||||
|
SETUVAR pure_symbol_reverse_prompt:\u276e
|
||||||
|
SETUVAR pure_symbol_title_bar_separator:\x2d
|
||||||
|
SETUVAR pure_threshold_command_duration:5
|
8
.config/fish/functions/__history_previous_command.fish
Normal file
8
.config/fish/functions/__history_previous_command.fish
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
function __history_previous_command
|
||||||
|
switch (commandline -t)
|
||||||
|
case "!"
|
||||||
|
commandline -t $history[1]; commandline -f repaint
|
||||||
|
case "*"
|
||||||
|
commandline -i !
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
function __history_previous_command_arguments
|
||||||
|
switch (commandline -t)
|
||||||
|
case "!"
|
||||||
|
commandline -t ""
|
||||||
|
commandline -f history-token-search-backward
|
||||||
|
case "*"
|
||||||
|
commandline -i '$'
|
||||||
|
end
|
||||||
|
end
|
43
.config/fish/functions/_fzf_configure_bindings_help.fish
Normal file
43
.config/fish/functions/_fzf_configure_bindings_help.fish
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
function _fzf_configure_bindings_help --description "Prints the help message for fzf_configure_bindings."
|
||||||
|
echo "\
|
||||||
|
USAGE:
|
||||||
|
fzf_configure_bindings [--COMMAND=[KEY_SEQUENCE]...]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
fzf_configure_bindings installs key bindings for fzf.fish's commands and erases any bindings it
|
||||||
|
previously installed. It installs bindings for both default and insert modes. fzf.fish executes
|
||||||
|
it without options on fish startup to install the out-of-the-box key bindings.
|
||||||
|
|
||||||
|
By default, commands are bound to a mnemonic key sequence, shown below. Each command's binding
|
||||||
|
can be configured using a namesake corresponding option:
|
||||||
|
COMMAND | DEFAULT KEY SEQUENCE | CORRESPONDING OPTION
|
||||||
|
Search Directory | Ctrl+Alt+F (F for file) | --directory
|
||||||
|
Search Git Log | Ctrl+Alt+L (L for log) | --git_log
|
||||||
|
Search Git Status | Ctrl+Alt+S (S for status) | --git_status
|
||||||
|
Search History | Ctrl+R (R for reverse) | --history
|
||||||
|
Search Processes | Ctrl+Alt+P (P for process) | --processes
|
||||||
|
Search Variables | Ctrl+V (V for variable) | --variables
|
||||||
|
Override a command's binding by specifying its corresponding option with the desired key
|
||||||
|
sequence. Disable a command's binding by specifying its corresponding option with no value.
|
||||||
|
|
||||||
|
Because fzf_configure_bindings erases bindings it previously installed, it can be cleanly
|
||||||
|
executed multiple times. Once the desired fzf_configure_bindings command has been found, add it
|
||||||
|
to your config.fish in order to persist the customized bindings.
|
||||||
|
|
||||||
|
In terms of validation, fzf_configure_bindings fails if passed unknown options. It expects an
|
||||||
|
equals sign between an option's name and value. However, it does not validate key sequences.
|
||||||
|
|
||||||
|
Pass -h or --help to print this help message and exit.
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
Default bindings but bind Search Directory to Ctrl+F and Search Variables to Ctrl+Alt+V
|
||||||
|
\$ fzf_configure_bindings --directory=\cf --variables=\e\cv
|
||||||
|
Default bindings but disable Search History
|
||||||
|
\$ fzf_configure_bindings --history=
|
||||||
|
An agglomeration of different options
|
||||||
|
\$ fzf_configure_bindings --git_status=\cg --history=\ch --variables= --processes=
|
||||||
|
|
||||||
|
SEE Also
|
||||||
|
To learn more about fish key bindings, see bind(1) and fish_key_reader(1).
|
||||||
|
"
|
||||||
|
end
|
15
.config/fish/functions/_fzf_extract_var_info.fish
Normal file
15
.config/fish/functions/_fzf_extract_var_info.fish
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# helper function for _fzf_search_variables
|
||||||
|
function _fzf_extract_var_info --argument-names variable_name set_show_output --description "Extract and reformat lines pertaining to \$variable_name from \$set_show_output."
|
||||||
|
# Extract only the lines about the variable, all of which begin with either
|
||||||
|
# $variable_name: ...or... $variable_name[
|
||||||
|
string match --regex "^\\\$$variable_name(?::|\[).*" <$set_show_output |
|
||||||
|
|
||||||
|
# Strip the variable name prefix, including ": " for scope info lines
|
||||||
|
string replace --regex "^\\\$$variable_name(?:: )?" '' |
|
||||||
|
|
||||||
|
# Distill the lines of values, replacing...
|
||||||
|
# [1]: |value|
|
||||||
|
# ...with...
|
||||||
|
# [1] value
|
||||||
|
string replace --regex ": \|(.*)\|" ' $1'
|
||||||
|
end
|
49
.config/fish/functions/_fzf_preview_changed_file.fish
Normal file
49
.config/fish/functions/_fzf_preview_changed_file.fish
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
# helper for _fzf_search_git_status
|
||||||
|
# arg should be a line from git status --short, e.g.
|
||||||
|
# MM functions/_fzf_preview_changed_file.fish
|
||||||
|
# D README.md
|
||||||
|
# R LICENSE -> "New License"
|
||||||
|
function _fzf_preview_changed_file --argument-names path_status --description "Show the git diff of the given file."
|
||||||
|
# remove quotes because they'll be interpreted literally by git diff
|
||||||
|
# no need to requote when referencing $path because fish does not perform word splitting
|
||||||
|
# https://fishshell.com/docs/current/fish_for_bash_users.html
|
||||||
|
set -f path (string unescape (string sub --start 4 $path_status))
|
||||||
|
# first letter of short format shows index, second letter shows working tree
|
||||||
|
# https://git-scm.com/docs/git-status/2.35.0#_short_format
|
||||||
|
set -f index_status (string sub --length 1 $path_status)
|
||||||
|
set -f working_tree_status (string sub --start 2 --length 1 $path_status)
|
||||||
|
|
||||||
|
set -f diff_opts --color=always
|
||||||
|
|
||||||
|
if test $index_status = '?'
|
||||||
|
_fzf_report_diff_type Untracked
|
||||||
|
_fzf_preview_file $path
|
||||||
|
else if contains {$index_status}$working_tree_status DD AU UD UA DU AA UU
|
||||||
|
# Unmerged statuses taken directly from git status help's short format table
|
||||||
|
# Unmerged statuses are mutually exclusive with other statuses, so if we see
|
||||||
|
# these, then safe to assume the path is unmerged
|
||||||
|
_fzf_report_diff_type Unmerged
|
||||||
|
git diff $diff_opts -- $path
|
||||||
|
else
|
||||||
|
if test $index_status != ' '
|
||||||
|
_fzf_report_diff_type Staged
|
||||||
|
|
||||||
|
# renames are only detected in the index, never working tree, so only need to test for it here
|
||||||
|
# https://stackoverflow.com/questions/73954214
|
||||||
|
if test $index_status = R
|
||||||
|
# diff the post-rename path with the original path, otherwise the diff will show the entire file as being added
|
||||||
|
set -f orig_and_new_path (string split --max 1 -- ' -> ' $path)
|
||||||
|
git diff --staged $diff_opts -- $orig_and_new_path[1] $orig_and_new_path[2]
|
||||||
|
# path currently has the form of "original -> current", so we need to correct it before it's used below
|
||||||
|
set path $orig_and_new_path[2]
|
||||||
|
else
|
||||||
|
git diff --staged $diff_opts -- $path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $working_tree_status != ' '
|
||||||
|
_fzf_report_diff_type Unstaged
|
||||||
|
git diff $diff_opts -- $path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
43
.config/fish/functions/_fzf_preview_file.fish
Normal file
43
.config/fish/functions/_fzf_preview_file.fish
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# helper function for _fzf_search_directory and _fzf_search_git_status
|
||||||
|
function _fzf_preview_file --description "Print a preview for the given file based on its file type."
|
||||||
|
# because there's no way to guarantee that _fzf_search_directory passes the path to _fzf_preview_file
|
||||||
|
# as one argument, we collect all the arguments into one single variable and treat that as the path
|
||||||
|
set -f file_path $argv
|
||||||
|
|
||||||
|
if test -L "$file_path" # symlink
|
||||||
|
# notify user and recurse on the target of the symlink, which can be any of these file types
|
||||||
|
set -l target_path (realpath "$file_path")
|
||||||
|
|
||||||
|
set_color yellow
|
||||||
|
echo "'$file_path' is a symlink to '$target_path'."
|
||||||
|
set_color normal
|
||||||
|
|
||||||
|
_fzf_preview_file "$target_path"
|
||||||
|
else if test -f "$file_path" # regular file
|
||||||
|
if set --query fzf_preview_file_cmd
|
||||||
|
# need to escape quotes to make sure eval receives file_path as a single arg
|
||||||
|
eval "$fzf_preview_file_cmd '$file_path'"
|
||||||
|
else
|
||||||
|
bat --style=numbers --color=always "$file_path"
|
||||||
|
end
|
||||||
|
else if test -d "$file_path" # directory
|
||||||
|
if set --query fzf_preview_dir_cmd
|
||||||
|
# see above
|
||||||
|
eval "$fzf_preview_dir_cmd '$file_path'"
|
||||||
|
else
|
||||||
|
# -A list hidden files as well, except for . and ..
|
||||||
|
# -F helps classify files by appending symbols after the file name
|
||||||
|
command ls -A -F "$file_path"
|
||||||
|
end
|
||||||
|
else if test -c "$file_path"
|
||||||
|
_fzf_report_file_type "$file_path" "character device file"
|
||||||
|
else if test -b "$file_path"
|
||||||
|
_fzf_report_file_type "$file_path" "block device file"
|
||||||
|
else if test -S "$file_path"
|
||||||
|
_fzf_report_file_type "$file_path" socket
|
||||||
|
else if test -p "$file_path"
|
||||||
|
_fzf_report_file_type "$file_path" "named pipe"
|
||||||
|
else
|
||||||
|
echo "$file_path doesn't exist." >&2
|
||||||
|
end
|
||||||
|
end
|
18
.config/fish/functions/_fzf_report_diff_type.fish
Normal file
18
.config/fish/functions/_fzf_report_diff_type.fish
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# helper for _fzf_preview_changed_file
|
||||||
|
# prints out something like
|
||||||
|
# ╭────────╮
|
||||||
|
# │ Staged │
|
||||||
|
# ╰────────╯
|
||||||
|
function _fzf_report_diff_type --argument-names diff_type --description "Print a distinct colored header meant to preface a git patch."
|
||||||
|
# number of "-" to draw is the length of the string to box + 2 for padding
|
||||||
|
set -f repeat_count (math 2 + (string length $diff_type))
|
||||||
|
set -f line (string repeat --count $repeat_count ─)
|
||||||
|
set -f top_border ╭$line╮
|
||||||
|
set -f btm_border ╰$line╯
|
||||||
|
|
||||||
|
set_color yellow
|
||||||
|
echo $top_border
|
||||||
|
echo "│ $diff_type │"
|
||||||
|
echo $btm_border
|
||||||
|
set_color normal
|
||||||
|
end
|
6
.config/fish/functions/_fzf_report_file_type.fish
Normal file
6
.config/fish/functions/_fzf_report_file_type.fish
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# helper function for _fzf_preview_file
|
||||||
|
function _fzf_report_file_type --argument-names file_path file_type --description "Explain the file type for a file."
|
||||||
|
set_color red
|
||||||
|
echo "Cannot preview '$file_path': it is a $file_type."
|
||||||
|
set_color normal
|
||||||
|
end
|
34
.config/fish/functions/_fzf_search_directory.fish
Normal file
34
.config/fish/functions/_fzf_search_directory.fish
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
function _fzf_search_directory --description "Search the current directory. Replace the current token with the selected file paths."
|
||||||
|
# Directly use fd binary to avoid output buffering delay caused by a fd alias, if any.
|
||||||
|
# Debian-based distros install fd as fdfind and the fd package is something else, so
|
||||||
|
# check for fdfind first. Fall back to "fd" for a clear error message.
|
||||||
|
set -f fd_cmd (command -v fdfind || command -v fd || echo "fd")
|
||||||
|
set -f --append fd_cmd --color=always $fzf_fd_opts
|
||||||
|
|
||||||
|
# $fzf_dir_opts is the deprecated version of $fzf_directory_opts
|
||||||
|
set -f fzf_arguments --multi --ansi $fzf_dir_opts $fzf_directory_opts
|
||||||
|
set -f token (commandline --current-token)
|
||||||
|
# expand any variables or leading tilde (~) in the token
|
||||||
|
set -f expanded_token (eval echo -- $token)
|
||||||
|
# unescape token because it's already quoted so backslashes will mess up the path
|
||||||
|
set -f unescaped_exp_token (string unescape -- $expanded_token)
|
||||||
|
|
||||||
|
# If the current token is a directory and has a trailing slash,
|
||||||
|
# then use it as fd's base directory.
|
||||||
|
if string match --quiet -- "*/" $unescaped_exp_token && test -d "$unescaped_exp_token"
|
||||||
|
set --append fd_cmd --base-directory=$unescaped_exp_token
|
||||||
|
# use the directory name as fzf's prompt to indicate the search is limited to that directory
|
||||||
|
set --prepend fzf_arguments --prompt="Search Directory $unescaped_exp_token> " --preview="_fzf_preview_file $expanded_token{}"
|
||||||
|
set -f file_paths_selected $unescaped_exp_token($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
|
||||||
|
else
|
||||||
|
set --prepend fzf_arguments --prompt="Search Directory> " --query="$unescaped_exp_token" --preview='_fzf_preview_file {}'
|
||||||
|
set -f file_paths_selected ($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if test $status -eq 0
|
||||||
|
commandline --current-token --replace -- (string escape -- $file_paths_selected | string join ' ')
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline --function repaint
|
||||||
|
end
|
36
.config/fish/functions/_fzf_search_git_log.fish
Normal file
36
.config/fish/functions/_fzf_search_git_log.fish
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
function _fzf_search_git_log --description "Search the output of git log and preview commits. Replace the current token with the selected commit hash."
|
||||||
|
if not git rev-parse --git-dir >/dev/null 2>&1
|
||||||
|
echo '_fzf_search_git_log: Not in a git repository.' >&2
|
||||||
|
else
|
||||||
|
if not set --query fzf_git_log_format
|
||||||
|
# %h gives you the abbreviated commit hash, which is useful for saving screen space, but we will have to expand it later below
|
||||||
|
set -f fzf_git_log_format '%C(bold blue)%h%C(reset) - %C(cyan)%ad%C(reset) %C(yellow)%d%C(reset) %C(normal)%s%C(reset) %C(dim normal)[%an]%C(reset)'
|
||||||
|
end
|
||||||
|
|
||||||
|
set -f preview_cmd 'git show --color=always --stat --patch {1}'
|
||||||
|
if set --query fzf_diff_highlighter
|
||||||
|
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
|
||||||
|
end
|
||||||
|
|
||||||
|
set -f selected_log_lines (
|
||||||
|
git log --no-show-signature --color=always --format=format:$fzf_git_log_format --date=short | \
|
||||||
|
_fzf_wrapper --ansi \
|
||||||
|
--multi \
|
||||||
|
--scheme=history \
|
||||||
|
--prompt="Search Git Log> " \
|
||||||
|
--preview=$preview_cmd \
|
||||||
|
--query=(commandline --current-token) \
|
||||||
|
$fzf_git_log_opts
|
||||||
|
)
|
||||||
|
if test $status -eq 0
|
||||||
|
for line in $selected_log_lines
|
||||||
|
set -f abbreviated_commit_hash (string split --field 1 " " $line)
|
||||||
|
set -f full_commit_hash (git rev-parse $abbreviated_commit_hash)
|
||||||
|
set -f --append commit_hashes $full_commit_hash
|
||||||
|
end
|
||||||
|
commandline --current-token --replace (string join ' ' $commit_hashes)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline --function repaint
|
||||||
|
end
|
41
.config/fish/functions/_fzf_search_git_status.fish
Normal file
41
.config/fish/functions/_fzf_search_git_status.fish
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
function _fzf_search_git_status --description "Search the output of git status. Replace the current token with the selected file paths."
|
||||||
|
if not git rev-parse --git-dir >/dev/null 2>&1
|
||||||
|
echo '_fzf_search_git_status: Not in a git repository.' >&2
|
||||||
|
else
|
||||||
|
set -f preview_cmd '_fzf_preview_changed_file {}'
|
||||||
|
if set --query fzf_diff_highlighter
|
||||||
|
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
|
||||||
|
end
|
||||||
|
|
||||||
|
set -f selected_paths (
|
||||||
|
# Pass configuration color.status=always to force status to use colors even though output is sent to a pipe
|
||||||
|
git -c color.status=always status --short |
|
||||||
|
_fzf_wrapper --ansi \
|
||||||
|
--multi \
|
||||||
|
--prompt="Search Git Status> " \
|
||||||
|
--query=(commandline --current-token) \
|
||||||
|
--preview=$preview_cmd \
|
||||||
|
--nth="2.." \
|
||||||
|
$fzf_git_status_opts
|
||||||
|
)
|
||||||
|
if test $status -eq 0
|
||||||
|
# git status --short automatically escapes the paths of most files for us so not going to bother trying to handle
|
||||||
|
# the few edges cases of weird file names that should be extremely rare (e.g. "this;needs;escaping")
|
||||||
|
set -f cleaned_paths
|
||||||
|
|
||||||
|
for path in $selected_paths
|
||||||
|
if test (string sub --length 1 $path) = R
|
||||||
|
# path has been renamed and looks like "R LICENSE -> LICENSE.md"
|
||||||
|
# extract the path to use from after the arrow
|
||||||
|
set --append cleaned_paths (string split -- "-> " $path)[-1]
|
||||||
|
else
|
||||||
|
set --append cleaned_paths (string sub --start=4 $path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline --current-token --replace -- (string join ' ' $cleaned_paths)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline --function repaint
|
||||||
|
end
|
35
.config/fish/functions/_fzf_search_history.fish
Normal file
35
.config/fish/functions/_fzf_search_history.fish
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
function _fzf_search_history --description "Search command history. Replace the command line with the selected command."
|
||||||
|
# history merge incorporates history changes from other fish sessions
|
||||||
|
# it errors out if called in private mode
|
||||||
|
if test -z "$fish_private_mode"
|
||||||
|
builtin history merge
|
||||||
|
end
|
||||||
|
|
||||||
|
if not set --query fzf_history_time_format
|
||||||
|
# Reference https://devhints.io/strftime to understand strftime format symbols
|
||||||
|
set -f fzf_history_time_format "%m-%d %H:%M:%S"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Delinate commands throughout pipeline using null rather than newlines because commands can be multi-line
|
||||||
|
set -f commands_selected (
|
||||||
|
builtin history --null --show-time="$fzf_history_time_format │ " |
|
||||||
|
_fzf_wrapper --read0 \
|
||||||
|
--print0 \
|
||||||
|
--multi \
|
||||||
|
--scheme=history \
|
||||||
|
--prompt="Search History> " \
|
||||||
|
--query=(commandline) \
|
||||||
|
--preview="echo -- {} | string replace --regex '^.*? │ ' '' | fish_indent --ansi" \
|
||||||
|
--preview-window="bottom:3:wrap" \
|
||||||
|
$fzf_history_opts |
|
||||||
|
string split0 |
|
||||||
|
# remove timestamps from commands selected
|
||||||
|
string replace --regex '^.*? │ ' ''
|
||||||
|
)
|
||||||
|
|
||||||
|
if test $status -eq 0
|
||||||
|
commandline --replace -- $commands_selected
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline --function repaint
|
||||||
|
end
|
32
.config/fish/functions/_fzf_search_processes.fish
Normal file
32
.config/fish/functions/_fzf_search_processes.fish
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
function _fzf_search_processes --description "Search all running processes. Replace the current token with the pid of the selected process."
|
||||||
|
# Directly use ps command because it is often aliased to a different command entirely
|
||||||
|
# or with options that dirty the search results and preview output
|
||||||
|
set -f ps_cmd (command -v ps || echo "ps")
|
||||||
|
# use all caps to be consistent with ps default format
|
||||||
|
# snake_case because ps doesn't seem to allow spaces in the field names
|
||||||
|
set -f ps_preview_fmt (string join ',' 'pid' 'ppid=PARENT' 'user' '%cpu' 'rss=RSS_IN_KB' 'start=START_TIME' 'command')
|
||||||
|
set -f processes_selected (
|
||||||
|
$ps_cmd -A -opid,command | \
|
||||||
|
_fzf_wrapper --multi \
|
||||||
|
--prompt="Search Processes> " \
|
||||||
|
--query (commandline --current-token) \
|
||||||
|
--ansi \
|
||||||
|
# first line outputted by ps is a header, so we need to mark it as so
|
||||||
|
--header-lines=1 \
|
||||||
|
# ps uses exit code 1 if the process was not found, in which case show an message explaining so
|
||||||
|
--preview="$ps_cmd -o '$ps_preview_fmt' -p {1} || echo 'Cannot preview {1} because it exited.'" \
|
||||||
|
--preview-window="bottom:4:wrap" \
|
||||||
|
$fzf_processes_opts
|
||||||
|
)
|
||||||
|
|
||||||
|
if test $status -eq 0
|
||||||
|
for process in $processes_selected
|
||||||
|
set -f --append pids_selected (string split --no-empty --field=1 -- " " $process)
|
||||||
|
end
|
||||||
|
|
||||||
|
# string join to replace the newlines outputted by string split with spaces
|
||||||
|
commandline --current-token --replace -- (string join ' ' $pids_selected)
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline --function repaint
|
||||||
|
end
|
48
.config/fish/functions/_fzf_search_variables.fish
Normal file
48
.config/fish/functions/_fzf_search_variables.fish
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# This function expects the following two arguments:
|
||||||
|
# argument 1 = output of (set --show | psub), i.e. a file with the scope info and values of all variables
|
||||||
|
# argument 2 = output of (set --names | psub), i.e. a file with all variable names
|
||||||
|
function _fzf_search_variables --argument-names set_show_output set_names_output --description "Search and preview shell variables. Replace the current token with the selected variable."
|
||||||
|
if test -z "$set_names_output"
|
||||||
|
printf '%s\n' '_fzf_search_variables requires 2 arguments.' >&2
|
||||||
|
|
||||||
|
commandline --function repaint
|
||||||
|
return 22 # 22 means invalid argument in POSIX
|
||||||
|
end
|
||||||
|
|
||||||
|
# Exclude the history variable from being piped into fzf because
|
||||||
|
# 1. it's not included in $set_names_output
|
||||||
|
# 2. it tends to be a very large value => increases computation time
|
||||||
|
# 3._fzf_search_history is a much better way to examine history anyway
|
||||||
|
set -f all_variable_names (string match --invert history <$set_names_output)
|
||||||
|
|
||||||
|
set -f current_token (commandline --current-token)
|
||||||
|
# Use the current token to pre-populate fzf's query. If the current token begins
|
||||||
|
# with a $, remove it from the query so that it will better match the variable names
|
||||||
|
set -f cleaned_curr_token (string replace -- '$' '' $current_token)
|
||||||
|
|
||||||
|
set -f variable_names_selected (
|
||||||
|
printf '%s\n' $all_variable_names |
|
||||||
|
_fzf_wrapper --preview "_fzf_extract_var_info {} $set_show_output" \
|
||||||
|
--prompt="Search Variables> " \
|
||||||
|
--preview-window="wrap" \
|
||||||
|
--multi \
|
||||||
|
--query=$cleaned_curr_token \
|
||||||
|
# $fzf_shell_vars_opts is the deprecated version of $fzf_variables_opts
|
||||||
|
$fzf_shell_vars_opts $fzf_variables_opts
|
||||||
|
)
|
||||||
|
|
||||||
|
if test $status -eq 0
|
||||||
|
# If the current token begins with a $, do not overwrite the $ when
|
||||||
|
# replacing the current token with the selected variable.
|
||||||
|
# Uses brace expansion to prepend $ to each variable name.
|
||||||
|
commandline --current-token --replace (
|
||||||
|
if string match --quiet -- '$*' $current_token
|
||||||
|
string join " " \${$variable_names_selected}
|
||||||
|
else
|
||||||
|
string join " " $variable_names_selected
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline --function repaint
|
||||||
|
end
|
20
.config/fish/functions/_fzf_wrapper.fish
Normal file
20
.config/fish/functions/_fzf_wrapper.fish
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
function _fzf_wrapper --description "Prepares some environment variables before executing fzf."
|
||||||
|
# Make sure fzf uses fish to execute preview commands, some of which
|
||||||
|
# are autoloaded fish functions so don't exist in other shells.
|
||||||
|
# Use --function so that it doesn't clobber SHELL outside this function.
|
||||||
|
set -f --export SHELL (command --search fish)
|
||||||
|
|
||||||
|
# If FZF_DEFAULT_OPTS is not set, then set some sane defaults.
|
||||||
|
# See https://github.com/junegunn/fzf#environment-variables
|
||||||
|
if not set --query FZF_DEFAULT_OPTS
|
||||||
|
# cycle allows jumping between the first and last results, making scrolling faster
|
||||||
|
# layout=reverse lists results top to bottom, mimicking the familiar layouts of git log, history, and env
|
||||||
|
# border shows where the fzf window begins and ends
|
||||||
|
# height=90% leaves space to see the current command and some scrollback, maintaining context of work
|
||||||
|
# preview-window=wrap wraps long lines in the preview window, making reading easier
|
||||||
|
# marker=* makes the multi-select marker more distinguishable from the pointer (since both default to >)
|
||||||
|
set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border --height=90% --preview-window=wrap --marker="*"'
|
||||||
|
end
|
||||||
|
|
||||||
|
fzf $argv
|
||||||
|
end
|
240
.config/fish/functions/fisher.fish
Normal file
240
.config/fish/functions/fisher.fish
Normal file
|
@ -0,0 +1,240 @@
|
||||||
|
function fisher --argument-names cmd --description "A plugin manager for Fish"
|
||||||
|
set --query fisher_path || set --local fisher_path $__fish_config_dir
|
||||||
|
set --local fisher_version 4.4.3
|
||||||
|
set --local fish_plugins $__fish_config_dir/fish_plugins
|
||||||
|
|
||||||
|
switch "$cmd"
|
||||||
|
case -v --version
|
||||||
|
echo "fisher, version $fisher_version"
|
||||||
|
case "" -h --help
|
||||||
|
echo "Usage: fisher install <plugins...> Install plugins"
|
||||||
|
echo " fisher remove <plugins...> Remove installed plugins"
|
||||||
|
echo " fisher update <plugins...> Update installed plugins"
|
||||||
|
echo " fisher update Update all installed plugins"
|
||||||
|
echo " fisher list [<regex>] List installed plugins matching regex"
|
||||||
|
echo "Options:"
|
||||||
|
echo " -v, --version Print version"
|
||||||
|
echo " -h, --help Print this help message"
|
||||||
|
echo "Variables:"
|
||||||
|
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
|
||||||
|
case ls list
|
||||||
|
string match --entire --regex -- "$argv[2]" $_fisher_plugins
|
||||||
|
case install update remove
|
||||||
|
isatty || read --local --null --array stdin && set --append argv $stdin
|
||||||
|
|
||||||
|
set --local install_plugins
|
||||||
|
set --local update_plugins
|
||||||
|
set --local remove_plugins
|
||||||
|
set --local arg_plugins $argv[2..-1]
|
||||||
|
set --local old_plugins $_fisher_plugins
|
||||||
|
set --local new_plugins
|
||||||
|
|
||||||
|
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins)
|
||||||
|
|
||||||
|
if ! set --query argv[2]
|
||||||
|
if test "$cmd" != update
|
||||||
|
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
|
||||||
|
else if ! set --query file_plugins
|
||||||
|
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
|
||||||
|
end
|
||||||
|
set arg_plugins $file_plugins
|
||||||
|
end
|
||||||
|
|
||||||
|
for plugin in $arg_plugins
|
||||||
|
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
|
||||||
|
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
|
||||||
|
end
|
||||||
|
|
||||||
|
if set --query argv[2]
|
||||||
|
for plugin in $new_plugins
|
||||||
|
if contains -- "$plugin" $old_plugins
|
||||||
|
test "$cmd" = remove &&
|
||||||
|
set --append remove_plugins $plugin ||
|
||||||
|
set --append update_plugins $plugin
|
||||||
|
else if test "$cmd" = install
|
||||||
|
set --append install_plugins $plugin
|
||||||
|
else
|
||||||
|
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for plugin in $new_plugins
|
||||||
|
contains -- "$plugin" $old_plugins &&
|
||||||
|
set --append update_plugins $plugin ||
|
||||||
|
set --append install_plugins $plugin
|
||||||
|
end
|
||||||
|
|
||||||
|
for plugin in $old_plugins
|
||||||
|
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set --local pid_list
|
||||||
|
set --local source_plugins
|
||||||
|
set --local fetch_plugins $update_plugins $install_plugins
|
||||||
|
set --local fish_path (status fish-path)
|
||||||
|
|
||||||
|
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
|
||||||
|
|
||||||
|
for plugin in $fetch_plugins
|
||||||
|
set --local source (command mktemp -d)
|
||||||
|
set --append source_plugins $source
|
||||||
|
|
||||||
|
command mkdir -p $source/{completions,conf.d,themes,functions}
|
||||||
|
|
||||||
|
$fish_path --command "
|
||||||
|
if test -e $plugin
|
||||||
|
command cp -Rf $plugin/* $source
|
||||||
|
else
|
||||||
|
set temp (command mktemp -d)
|
||||||
|
set repo (string split -- \@ $plugin) || set repo[2] HEAD
|
||||||
|
|
||||||
|
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
|
||||||
|
set name (string split -- / \$path)[-1]
|
||||||
|
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
|
||||||
|
else
|
||||||
|
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
|
||||||
|
end
|
||||||
|
|
||||||
|
echo Fetching (set_color --underline)\$url(set_color normal)
|
||||||
|
|
||||||
|
if command curl --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null
|
||||||
|
command cp -Rf \$temp/*/* $source
|
||||||
|
else
|
||||||
|
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
|
||||||
|
command rm -rf $source
|
||||||
|
end
|
||||||
|
|
||||||
|
command rm -rf \$temp
|
||||||
|
end
|
||||||
|
|
||||||
|
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
|
||||||
|
" &
|
||||||
|
|
||||||
|
set --append pid_list (jobs --last --pid)
|
||||||
|
end
|
||||||
|
|
||||||
|
wait $pid_list 2>/dev/null
|
||||||
|
|
||||||
|
for plugin in $fetch_plugins
|
||||||
|
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
|
||||||
|
if set --local index (contains --index -- "$plugin" $install_plugins)
|
||||||
|
set --erase install_plugins[$index]
|
||||||
|
else
|
||||||
|
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for plugin in $update_plugins $remove_plugins
|
||||||
|
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
|
||||||
|
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||||
|
|
||||||
|
if contains -- "$plugin" $remove_plugins
|
||||||
|
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||||
|
emit {$name}_uninstall
|
||||||
|
end
|
||||||
|
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||||
|
set --erase _fisher_plugins[$index]
|
||||||
|
end
|
||||||
|
|
||||||
|
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
|
||||||
|
|
||||||
|
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||||
|
|
||||||
|
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||||
|
complete --erase --command $name
|
||||||
|
end
|
||||||
|
|
||||||
|
set --erase $plugin_files_var
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if set --query update_plugins[1] || set --query install_plugins[1]
|
||||||
|
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
|
||||||
|
end
|
||||||
|
|
||||||
|
for plugin in $update_plugins $install_plugins
|
||||||
|
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
|
||||||
|
set --local files $source/{functions,themes,conf.d,completions}/*
|
||||||
|
|
||||||
|
if set --local index (contains --index -- $plugin $install_plugins)
|
||||||
|
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
|
||||||
|
set --local conflict_files
|
||||||
|
|
||||||
|
for file in (string replace -- $source/ $fisher_path/ $files)
|
||||||
|
contains -- $file $user_files && set --append conflict_files $file
|
||||||
|
end
|
||||||
|
|
||||||
|
if set --query conflict_files[1] && set --erase install_plugins[$index]
|
||||||
|
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
|
||||||
|
continue
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for file in (string replace -- $source/ "" $files)
|
||||||
|
command cp -RLf $source/$file $fisher_path/$file
|
||||||
|
end
|
||||||
|
|
||||||
|
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||||
|
|
||||||
|
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
|
||||||
|
|
||||||
|
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
|
||||||
|
contains -- $plugin $install_plugins && set --local event install || set --local event update
|
||||||
|
|
||||||
|
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||||
|
|
||||||
|
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
|
||||||
|
source $file
|
||||||
|
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
|
||||||
|
emit {$name}_$event
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
command rm -rf $source_plugins
|
||||||
|
|
||||||
|
if set --query _fisher_plugins[1]
|
||||||
|
set --local commit_plugins
|
||||||
|
|
||||||
|
for plugin in $file_plugins
|
||||||
|
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
|
||||||
|
end
|
||||||
|
|
||||||
|
for plugin in $_fisher_plugins
|
||||||
|
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
|
||||||
|
end
|
||||||
|
|
||||||
|
printf "%s\n" $commit_plugins >$fish_plugins
|
||||||
|
else
|
||||||
|
set --erase _fisher_plugins
|
||||||
|
command rm -f $fish_plugins
|
||||||
|
end
|
||||||
|
|
||||||
|
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
|
||||||
|
|
||||||
|
test "$total" != "0 0 0" && echo (string join ", " (
|
||||||
|
test $total[1] = 0 || echo "Installed $total[1]") (
|
||||||
|
test $total[2] = 0 || echo "Updated $total[2]") (
|
||||||
|
test $total[3] = 0 || echo "Removed $total[3]")
|
||||||
|
) plugin/s
|
||||||
|
case \*
|
||||||
|
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if ! set --query _fisher_upgraded_to_4_4
|
||||||
|
set --universal _fisher_upgraded_to_4_4
|
||||||
|
if functions --query _fisher_list
|
||||||
|
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
|
||||||
|
command rm -rf $XDG_DATA_HOME/fisher
|
||||||
|
functions --erase _fisher_{list,plugin_parse}
|
||||||
|
fisher update >/dev/null 2>/dev/null
|
||||||
|
else
|
||||||
|
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
|
||||||
|
set $var (string replace -- ~ \~ $$var)
|
||||||
|
end
|
||||||
|
functions --erase _fisher_fish_postexec
|
||||||
|
end
|
||||||
|
end
|
46
.config/fish/functions/fzf_configure_bindings.fish
Normal file
46
.config/fish/functions/fzf_configure_bindings.fish
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# Always installs bindings for insert and default mode for simplicity and b/c it has almost no side-effect
|
||||||
|
# https://gitter.im/fish-shell/fish-shell?at=60a55915ee77a74d685fa6b1
|
||||||
|
function fzf_configure_bindings --description "Installs the default key bindings for fzf.fish with user overrides passed as options."
|
||||||
|
# no need to install bindings if not in interactive mode or running tests
|
||||||
|
status is-interactive || test "$CI" = true; or return
|
||||||
|
|
||||||
|
set -f options_spec h/help 'directory=?' 'git_log=?' 'git_status=?' 'history=?' 'processes=?' 'variables=?'
|
||||||
|
argparse --max-args=0 --ignore-unknown $options_spec -- $argv 2>/dev/null
|
||||||
|
if test $status -ne 0
|
||||||
|
echo "Invalid option or a positional argument was provided." >&2
|
||||||
|
_fzf_configure_bindings_help
|
||||||
|
return 22
|
||||||
|
else if set --query _flag_help
|
||||||
|
_fzf_configure_bindings_help
|
||||||
|
return
|
||||||
|
else
|
||||||
|
# Initialize with default key sequences and then override or disable them based on flags
|
||||||
|
# index 1 = directory, 2 = git_log, 3 = git_status, 4 = history, 5 = processes, 6 = variables
|
||||||
|
set -f key_sequences \e\cf \e\cl \e\cs \cr \e\cp \cv # \c = control, \e = escape
|
||||||
|
set --query _flag_directory && set key_sequences[1] "$_flag_directory"
|
||||||
|
set --query _flag_git_log && set key_sequences[2] "$_flag_git_log"
|
||||||
|
set --query _flag_git_status && set key_sequences[3] "$_flag_git_status"
|
||||||
|
set --query _flag_history && set key_sequences[4] "$_flag_history"
|
||||||
|
set --query _flag_processes && set key_sequences[5] "$_flag_processes"
|
||||||
|
set --query _flag_variables && set key_sequences[6] "$_flag_variables"
|
||||||
|
|
||||||
|
# If fzf bindings already exists, uninstall it first for a clean slate
|
||||||
|
if functions --query _fzf_uninstall_bindings
|
||||||
|
_fzf_uninstall_bindings
|
||||||
|
end
|
||||||
|
|
||||||
|
for mode in default insert
|
||||||
|
test -n $key_sequences[1] && bind --mode $mode $key_sequences[1] _fzf_search_directory
|
||||||
|
test -n $key_sequences[2] && bind --mode $mode $key_sequences[2] _fzf_search_git_log
|
||||||
|
test -n $key_sequences[3] && bind --mode $mode $key_sequences[3] _fzf_search_git_status
|
||||||
|
test -n $key_sequences[4] && bind --mode $mode $key_sequences[4] _fzf_search_history
|
||||||
|
test -n $key_sequences[5] && bind --mode $mode $key_sequences[5] _fzf_search_processes
|
||||||
|
test -n $key_sequences[6] && bind --mode $mode $key_sequences[6] "$_fzf_search_vars_command"
|
||||||
|
end
|
||||||
|
|
||||||
|
function _fzf_uninstall_bindings --inherit-variable key_sequences
|
||||||
|
bind --erase -- $key_sequences
|
||||||
|
bind --erase --mode insert -- $key_sequences
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,5 @@
|
||||||
abbr -a i sudo pacman -S
|
abbr -a i sudo pacman -S
|
||||||
abbr -a s sudo pacman -Ss
|
abbr -a s sudo pacman -Ss
|
||||||
abbr -a u sudo pacman -Syu
|
abbr -a u yay -Syu
|
||||||
abbr -a r sudo pacman -Rns
|
abbr -a r sudo pacman -Rns
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
function ls
|
function ls
|
||||||
exa --icons -l $argv
|
eza --icons -l $argv
|
||||||
end
|
end
|
||||||
abbr -a find fd
|
abbr -a find fd
|
||||||
abbr -a df duf
|
abbr -a df duf
|
||||||
abbr -a v nvim
|
abbr -a v nvim
|
||||||
abbr -a lg lazygit
|
abbr -a lg lazygit
|
||||||
|
abbr -a firefox firefox-beta
|
||||||
function rm
|
function rm
|
||||||
echo "rm is disabled, use trash instead"
|
echo "rm is disabled, use trash instead"
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
monitor = eDP-1,1920x1080@60,0x0,1
|
monitor = DP-1,2560x1440@120,0x0,1
|
||||||
|
monitor = HDMI-A-1,1920x1080@144,2560x0,1
|
||||||
|
workspace = DP-1,1
|
||||||
|
workspace = HDMI-A-1,2
|
||||||
#Startup config
|
#Startup config
|
||||||
|
|
||||||
exec-once=waybar
|
exec-once=waybar
|
||||||
|
@ -35,10 +37,6 @@ general {
|
||||||
decoration {
|
decoration {
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
rounding = 10
|
rounding = 10
|
||||||
blur = yes
|
|
||||||
blur_size = 3
|
|
||||||
blur_passes = 1
|
|
||||||
blur_new_optimizations = on
|
|
||||||
drop_shadow = yes
|
drop_shadow = yes
|
||||||
shadow_range = 4
|
shadow_range = 4
|
||||||
shadow_render_power = 3
|
shadow_render_power = 3
|
||||||
|
|
|
@ -1,40 +1,44 @@
|
||||||
{
|
{
|
||||||
"LuaSnip": { "branch": "master", "commit": "b4bc24c4925aeb05fd47d2ee9b24b7f73f5d7e32" },
|
"LuaSnip": { "branch": "master", "commit": "ea7d7ea510c641c4f15042becd27f35b3e5b3c2b" },
|
||||||
"bufferline.nvim": { "branch": "main", "commit": "243893ba9d5d1049dd451a25cab32ec7f8f67bcf" },
|
"bufferline.nvim": { "branch": "main", "commit": "243893ba9d5d1049dd451a25cab32ec7f8f67bcf" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||||
"cmp-cmdline": { "branch": "main", "commit": "5af1bb7d722ef8a96658f01d6eb219c4cf746b32" },
|
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" },
|
||||||
"cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
|
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
|
||||||
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" },
|
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" },
|
||||||
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
||||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||||
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
|
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
|
||||||
"copilot.vim": { "branch": "release", "commit": "1358e8e45ecedc53daf971924a0541ddf6224faf" },
|
"copilot.lua": { "branch": "master", "commit": "2c942f33ba5c621c906e625e00a1bb504b65e2f0" },
|
||||||
"dressing.nvim": { "branch": "master", "commit": "66e4990240f92e31b0d5e4df6deb6bb0160ae832" },
|
|
||||||
"fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" },
|
"fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" },
|
||||||
"friendly-snippets": { "branch": "main", "commit": "1d0dac346de7c6895ac72528df3276386c6b149b" },
|
"friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" },
|
||||||
"impatient.nvim": { "branch": "main", "commit": "47302af74be7b79f002773011f0d8e85679a7618" },
|
"impatient.nvim": { "branch": "main", "commit": "47302af74be7b79f002773011f0d8e85679a7618" },
|
||||||
"kmonad-vim": { "branch": "master", "commit": "37978445197ab00edeb5b731e9ca90c2b141723f" },
|
"lazy.nvim": { "branch": "main", "commit": "2a9354c7d2368d78cbd5575a51a2af5bd8a6ad01" },
|
||||||
"lazy.nvim": { "branch": "main", "commit": "aba872ec78ffe7f7367764ab0fff6f0170421fde" },
|
"leap.nvim": { "branch": "main", "commit": "5efe985cf68fac3b6a6dfe7a75fbfaca8db2af9c" },
|
||||||
"leap.nvim": { "branch": "main", "commit": "6f2912755c9c4ae790abd829f0cf1b07c037b2a4" },
|
"lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "05d78e9fd0cdfb4545974a5aa14b1be95a86e9c9" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "f014db32437aa61c86fc0ef1067cd2bc6a37205c" },
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "90a8bbf106b85b76951a34c542058ffa807de2b1" },
|
"mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" },
|
||||||
"mason.nvim": { "branch": "main", "commit": "e634134312bb936f472468a401c9cae6485ab54b" },
|
"neorg": { "branch": "main", "commit": "069cf8a460594ca6f4233c83aac1a31a96c62d98" },
|
||||||
"neorg": { "branch": "main", "commit": "a7291f4662664d0c3be3016adff6767dc52f907d" },
|
"null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
|
||||||
"null-ls.nvim": { "branch": "main", "commit": "08bb00c7c2cd58c72e02cf54e4b9cbfe14b03e09" },
|
"nvim": { "branch": "main", "commit": "85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280" },
|
||||||
"nvim": { "branch": "main", "commit": "57b421ee5f7380f816791fa451e86f213b625ece" },
|
"nvim-autopairs": { "branch": "master", "commit": "defad64afbf19381fe31488a7582bbac421d6e38" },
|
||||||
"nvim-autopairs": { "branch": "master", "commit": "7747bbae60074acf0b9e3a4c13950be7a2dff444" },
|
"nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "d153771162bd9795d9f7142df5c674b61066a585" },
|
"nvim-colorizer.lua": { "branch": "master", "commit": "dde3084106a70b9a79d48f426f6d6fec6fd203f7" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "df58d91c9351a9dc5be6cf8d54f49ab0d9a64e73" },
|
"nvim-lspconfig": { "branch": "master", "commit": "cc388d3f6b9c7c943ae2b2dcd46ad470fd257f91" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "27079f70603c9d8a002635acfb95db33318e4eef" },
|
"nvim-tmux-navigation": { "branch": "main", "commit": "543f090a45cef28156162883d2412fffecb6b750" },
|
||||||
"nvim-treesitter-context": { "branch": "master", "commit": "f24a86c32238867f24fbff49913db0068f8488d2" },
|
"nvim-treesitter": { "branch": "master", "commit": "794266a4edc8ab57b0d637626f01b5278a9123d8" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "986875b7364095d6535e28bd4aac3a9357e91bbe" },
|
"nvim-treesitter-context": { "branch": "master", "commit": "b6c763db8cc486215ba96e0a67418848a710ab25" },
|
||||||
"onedark.vim": { "branch": "main", "commit": "4e983447f0442dba1629cdaeddfd137793d71d28" },
|
"nvim-web-devicons": { "branch": "master", "commit": "973ab742f143a796a779af4d786ec409116a0d87" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "9ac3e9541bbabd9d73663d757e4fe48a675bb054" },
|
"oil.nvim": { "branch": "master", "commit": "9e036c6a4868b971127f3cb6bac6197bb4103723" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
|
||||||
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
|
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
|
||||||
"startup.nvim": { "branch": "master", "commit": "5295eabe35eb66d0b355ada0ca06ec8bdb8f9698" },
|
"rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" },
|
||||||
|
"tailwind-sorter.nvim": { "branch": "main", "commit": "efc34952eb0a20520f12c8a273ea44298c11a4fa" },
|
||||||
|
"tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "bc25c56083939f274edcfe395c6ff7de23b67c50" },
|
||||||
"telescope.nvim": { "branch": "master", "commit": "b79cd6c88b3d96b0f49cb7d240807cd59b610cd8" },
|
"telescope.nvim": { "branch": "master", "commit": "b79cd6c88b3d96b0f49cb7d240807cd59b610cd8" },
|
||||||
|
"todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
|
||||||
|
"undotree": { "branch": "master", "commit": "0e11ba7325efbbb3f3bebe06213afa3e7ec75131" },
|
||||||
|
"vim-fugitive": { "branch": "master", "commit": "6fcb0ad03982de646e3fecb6915e585651b9a9fb" },
|
||||||
|
"vim-obsession": { "branch": "master", "commit": "fe9d3e1a9a50171e7d316a52e1e56d868e4c1fe5" },
|
||||||
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
|
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
|
||||||
"vimtex": { "branch": "master", "commit": "5f0a79f2fa9f02eeac9b9902be83bc1b43a402fe" },
|
"zen-mode.nvim": { "branch": "main", "commit": "68f554702de63f4b7b6b6d4bcb10178f41a0acc7" }
|
||||||
"yuck.vim": { "branch": "master", "commit": "9b5e0370f70cc30383e1dabd6c215475915fe5c3" },
|
|
||||||
"zen-mode.nvim": { "branch": "main", "commit": "6e6c963d70a8e47854fa656987666bfb863f9c4e" }
|
|
||||||
}
|
}
|
|
@ -3,11 +3,11 @@ local map = vim.api.nvim_set_keymap
|
||||||
local opts = { noremap = true, silent = true }
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
-- Move to previous/next
|
-- Move to previous/next
|
||||||
map('n', '<A-,>', '<Cmd>BufferLineCyclePrev<CR>', opts)
|
map('n', '<A-h>', '<Cmd>BufferLineCyclePrev<CR>', opts)
|
||||||
map('n', '<A-.>', '<Cmd>BufferLineCycleNext<CR>', opts)
|
map('n', '<A-l>', '<Cmd>BufferLineCycleNext<CR>', opts)
|
||||||
-- Re-order to previous/next
|
-- Re-order to previous/next
|
||||||
map('n', '<A-<>', '<Cmd>BufferLineMovePrevious<CR>', opts)
|
map('n', '<A-H>', '<Cmd>BufferLineMovePrev<CR>', opts)
|
||||||
map('n', '<A->>', '<Cmd>BufferLineMoveNext<CR>', opts)
|
map('n', '<A-L>', '<Cmd>BufferLineMoveNext<CR>', opts)
|
||||||
-- Goto buffer in position...
|
-- Goto buffer in position...
|
||||||
map('n', '<A-1>', '<Cmd>BufferLineGoToBuffer 1<CR>', opts)
|
map('n', '<A-1>', '<Cmd>BufferLineGoToBuffer 1<CR>', opts)
|
||||||
map('n', '<A-2>', '<Cmd>BufferLineGoToBuffer 2<CR>', opts)
|
map('n', '<A-2>', '<Cmd>BufferLineGoToBuffer 2<CR>', opts)
|
||||||
|
|
|
@ -111,14 +111,19 @@ cmp.setup {
|
||||||
format = function(entry, vim_item)
|
format = function(entry, vim_item)
|
||||||
-- Kind icons
|
-- Kind icons
|
||||||
--vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
|
--vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
|
||||||
vim_item.kind = string.format('[%s %s]', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind
|
if vim.tbl_contains({ "nvim_lsp" }, entry.source.name) then
|
||||||
vim_item.menu = ({
|
tailwind = require("tailwindcss-colorizer-cmp")
|
||||||
nvim_lsp = "[LSP]",
|
return tailwind.formatter(entry, vim_item)
|
||||||
["vim-dadbod-completion"] = "[]",
|
else
|
||||||
nvim_lua = "[LSP]",
|
vim_item.kind = string.format('[%s %s]', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind
|
||||||
path = "[Path]",
|
vim_item.menu = ({
|
||||||
})[entry.source.name]
|
nvim_lsp = "[LSP]",
|
||||||
return vim_item
|
["vim-dadbod-completion"] = "[]",
|
||||||
|
nvim_lua = "[LSP]",
|
||||||
|
path = "[Path]",
|
||||||
|
})[entry.source.name]
|
||||||
|
return vim_item
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
sorting = {
|
sorting = {
|
||||||
|
|
28
.config/nvim/lua/plugins/copilot.lua
Normal file
28
.config/nvim/lua/plugins/copilot.lua
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
require('copilot').setup({
|
||||||
|
suggestion = {
|
||||||
|
enabled = true,
|
||||||
|
auto_trigger = true,
|
||||||
|
debounce = 75,
|
||||||
|
keymap = {
|
||||||
|
accept = "<C-h>",
|
||||||
|
accept_word = false,
|
||||||
|
accept_line = false,
|
||||||
|
next = "<M-]>",
|
||||||
|
prev = "<M-[>",
|
||||||
|
dismiss = "<C-]>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filetypes = {
|
||||||
|
yaml = false,
|
||||||
|
markdown = false,
|
||||||
|
help = false,
|
||||||
|
gitcommit = false,
|
||||||
|
gitrebase = false,
|
||||||
|
hgcommit = false,
|
||||||
|
svn = false,
|
||||||
|
cvs = false,
|
||||||
|
["."] = false,
|
||||||
|
},
|
||||||
|
copilot_node_command = 'node', -- Node.js version must be > 16.x
|
||||||
|
server_opts_overrides = {},
|
||||||
|
})
|
|
@ -5,7 +5,6 @@ lazy.setup({
|
||||||
'lewis6991/impatient.nvim',
|
'lewis6991/impatient.nvim',
|
||||||
|
|
||||||
-------------------------------------------THEMES------------------------------------------
|
-------------------------------------------THEMES------------------------------------------
|
||||||
'joshdick/onedark.vim',
|
|
||||||
{
|
{
|
||||||
'catppuccin/nvim',
|
'catppuccin/nvim',
|
||||||
lazy = false,
|
lazy = false,
|
||||||
|
@ -15,6 +14,14 @@ lazy.setup({
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
-------------------------------------------------------QOL---------------------------------
|
-------------------------------------------------------QOL---------------------------------
|
||||||
|
{
|
||||||
|
"zbirenbaum/copilot.lua",
|
||||||
|
cmd = "Copilot",
|
||||||
|
event = "InsertEnter",
|
||||||
|
config = function()
|
||||||
|
require 'plugins.copilot'
|
||||||
|
end,
|
||||||
|
},
|
||||||
--better navigation with 's-letter'
|
--better navigation with 's-letter'
|
||||||
{
|
{
|
||||||
'ggandor/leap.nvim',
|
'ggandor/leap.nvim',
|
||||||
|
@ -23,6 +30,14 @@ lazy.setup({
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/todo-comments.nvim",
|
||||||
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
config = function()
|
||||||
|
require("todo-comments").setup {}
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
'folke/zen-mode.nvim',
|
'folke/zen-mode.nvim',
|
||||||
config = function()
|
config = function()
|
||||||
|
@ -37,14 +52,37 @@ lazy.setup({
|
||||||
'tpope/vim-obsession',
|
'tpope/vim-obsession',
|
||||||
'tpope/vim-fugitive',
|
'tpope/vim-fugitive',
|
||||||
|
|
||||||
--Database integration
|
|
||||||
'tpope/vim-dadbod',
|
{
|
||||||
{'kristijanhusak/vim-dadbod-ui',
|
'NvChad/nvim-colorizer.lua',
|
||||||
config = function()
|
config = function()
|
||||||
vim.g.db_ui_auto_execute_table_helpers = 1
|
require 'colorizer'.setup()
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
'kristijanhusak/vim-dadbod-completion',
|
|
||||||
|
{
|
||||||
|
"roobert/tailwindcss-colorizer-cmp.nvim",
|
||||||
|
config = function()
|
||||||
|
require("tailwindcss-colorizer-cmp").setup({
|
||||||
|
color_square_width = 2,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'laytan/tailwind-sorter.nvim',
|
||||||
|
dependencies = {'nvim-treesitter/nvim-treesitter', 'nvim-lua/plenary.nvim'},
|
||||||
|
build = 'cd formatter && bun i && bun run build',
|
||||||
|
config = true,
|
||||||
|
},
|
||||||
|
--Database integration
|
||||||
|
-- 'tpope/vim-dadbod',
|
||||||
|
-- {
|
||||||
|
-- 'kristijanhusak/vim-dadbod-ui',
|
||||||
|
-- config = function()
|
||||||
|
-- vim.g.db_ui_auto_execute_table_helpers = 1
|
||||||
|
-- end
|
||||||
|
-- },
|
||||||
|
-- 'kristijanhusak/vim-dadbod-completion',
|
||||||
|
|
||||||
'mbbill/undotree',
|
'mbbill/undotree',
|
||||||
|
|
||||||
|
@ -64,12 +102,12 @@ lazy.setup({
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
-- Rename variable pop up
|
-- Rename variable pop up
|
||||||
'stevearc/dressing.nvim',
|
-- 'stevearc/dressing.nvim',
|
||||||
|
|
||||||
{
|
{
|
||||||
'windwp/nvim-autopairs',
|
'windwp/nvim-autopairs',
|
||||||
config = function()
|
config = function()
|
||||||
require('nvim-autopairs').setup ({
|
require('nvim-autopairs').setup({
|
||||||
map_cr = true,
|
map_cr = true,
|
||||||
map_bs = true,
|
map_bs = true,
|
||||||
})
|
})
|
||||||
|
@ -115,6 +153,7 @@ lazy.setup({
|
||||||
--LSP Status
|
--LSP Status
|
||||||
{
|
{
|
||||||
'j-hui/fidget.nvim',
|
'j-hui/fidget.nvim',
|
||||||
|
tag = 'legacy',
|
||||||
config = function()
|
config = function()
|
||||||
require('fidget').setup {
|
require('fidget').setup {
|
||||||
window = {
|
window = {
|
||||||
|
@ -140,6 +179,8 @@ lazy.setup({
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'simrat39/rust-tools.nvim',
|
||||||
|
|
||||||
{
|
{
|
||||||
'jose-elias-alvarez/null-ls.nvim',
|
'jose-elias-alvarez/null-ls.nvim',
|
||||||
config = function()
|
config = function()
|
||||||
|
@ -147,12 +188,12 @@ lazy.setup({
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
-- {
|
||||||
'lervag/vimtex',
|
-- 'lervag/vimtex',
|
||||||
config = function()
|
-- config = function()
|
||||||
require 'plugins.vimtex'
|
-- require 'plugins.vimtex'
|
||||||
end
|
-- end
|
||||||
},
|
-- },
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------
|
||||||
-- Syntax Highlighting
|
-- Syntax Highlighting
|
||||||
|
@ -192,13 +233,13 @@ lazy.setup({
|
||||||
|
|
||||||
|
|
||||||
--Main menu
|
--Main menu
|
||||||
{
|
-- {
|
||||||
'startup-nvim/startup.nvim',
|
-- 'startup-nvim/startup.nvim',
|
||||||
dependencies = { 'nvim-telescope/telescope.nvim', 'nvim-lua/plenary.nvim' },
|
-- dependencies = { 'nvim-telescope/telescope.nvim', 'nvim-lua/plenary.nvim' },
|
||||||
config = function()
|
-- config = function()
|
||||||
require('startup').setup { theme = 'dashboard' }
|
-- require('startup').setup { theme = 'dashboard' }
|
||||||
end,
|
-- end,
|
||||||
},
|
-- },
|
||||||
|
|
||||||
-------------------------------------------OTHERS----------------------------------------------
|
-------------------------------------------OTHERS----------------------------------------------
|
||||||
|
|
||||||
|
@ -214,8 +255,8 @@ lazy.setup({
|
||||||
dependencies = { { "nvim-lua/plenary.nvim" } },
|
dependencies = { { "nvim-lua/plenary.nvim" } },
|
||||||
},
|
},
|
||||||
|
|
||||||
'kmonad/kmonad-vim',
|
-- 'kmonad/kmonad-vim',
|
||||||
'elkowar/yuck.vim',
|
-- 'elkowar/yuck.vim',
|
||||||
--Discord Rich Presence
|
--Discord Rich Presence
|
||||||
'andweeb/presence.nvim'
|
'andweeb/presence.nvim'
|
||||||
|
|
||||||
|
|
|
@ -1,72 +1,82 @@
|
||||||
local mason_lspconfig = require "mason-lspconfig"
|
local mason_lspconfig = require "mason-lspconfig"
|
||||||
|
local lspconfig = require "lspconfig"
|
||||||
|
|
||||||
mason_lspconfig.setup({
|
mason_lspconfig.setup({
|
||||||
ensure_installed = { "lua_ls", "rust_analyzer", "texlab", "hls", "yamlls" },
|
ensure_installed = { "lua_ls", "texlab", "hls", "yamlls" },
|
||||||
automatic_installation = true
|
automatic_installation = true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
local opts = { noremap = true, silent = true }
|
|
||||||
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
|
||||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
|
|
||||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
|
|
||||||
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
|
||||||
|
|
||||||
-- Use an on_attach function to only map the following keys
|
-- Use an on_attach function to only map the following keys
|
||||||
-- after the language server attaches to the current buffer
|
-- after the language server attaches to the current buffer
|
||||||
local on_attach = function(client, bufnr)
|
local on_attach = function(client, bufnr)
|
||||||
-- Enable completion triggered by <c-x><c-o>
|
-- Enable completion triggered by <c-x><c-o>
|
||||||
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||||
|
|
||||||
-- Mappings.
|
-- Mappings.
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||||
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
local opts = { noremap = true, silent = true }
|
||||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
||||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
||||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
|
||||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
|
||||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
||||||
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
||||||
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
||||||
vim.keymap.set('n', '<space>wl', function()
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
||||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
||||||
end, bufopts)
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
||||||
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
||||||
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
||||||
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
||||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
||||||
vim.keymap.set('n', '<space>ge', function() vim.diagnostic.goto_next() end, bufopts)
|
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
||||||
vim.keymap.set('n', '<space>gE', function() vim.diagnostic.goto_prev() end, bufopts)
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
||||||
vim.keymap.set('n', '<space>fo', function() vim.lsp.buf.format { async = true } end, bufopts)
|
vim.keymap.set('n', '<space>ge', function() vim.diagnostic.goto_next() end, bufopts)
|
||||||
-- vim.api.nvim_create_autocmd('BufWritePre', {
|
vim.keymap.set('n', '<space>gE', function() vim.diagnostic.goto_prev() end, bufopts)
|
||||||
-- pattern = '<buffer>',
|
vim.keymap.set('n', '<space>fo', function() vim.lsp.buf.format { async = true } end, bufopts)
|
||||||
-- callback = function() vim.lsp.buf.format({ async = true }) end
|
vim.keymap.set('n', '<space>wl', function()
|
||||||
-- })
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
if client.name == "yamlls" then
|
end, bufopts)
|
||||||
client.server_capabilities.document_formatting = true
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local lspconfig = require "lspconfig"
|
|
||||||
|
|
||||||
-- ADD NVIM CMP AS A CAPABILITY
|
-- ADD NVIM CMP AS A CAPABILITY
|
||||||
local lsp_defaults = lspconfig.util.default_config
|
local lsp_defaults = lspconfig.util.default_config
|
||||||
|
|
||||||
local capabilities = vim.tbl_deep_extend(
|
local capabilities = vim.tbl_deep_extend(
|
||||||
'force',
|
'force',
|
||||||
lsp_defaults.capabilities,
|
lsp_defaults.capabilities,
|
||||||
require('cmp_nvim_lsp').default_capabilities()
|
require('cmp_nvim_lsp').default_capabilities()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
mason_lspconfig.setup_handlers {
|
mason_lspconfig.setup_handlers {
|
||||||
|
|
||||||
-- This is a default handler that will be called for each installed server (also for new servers that are installed during a session)
|
-- This is a default handler that will be called for each installed server (also for new servers that are installed during a session)
|
||||||
function(server_name)
|
function(server_name)
|
||||||
lspconfig[server_name].setup {
|
lspconfig[server_name].setup {
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
flags = lsp_flags,
|
flags = lsp_flags,
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require("rust-tools").setup({
|
||||||
|
server = {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
["rust-analyzer"] = {
|
||||||
|
checkOnSave = {
|
||||||
|
command = "clippy",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tools = {
|
||||||
|
hover_actions = {
|
||||||
|
auto_focus = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
|
@ -6,11 +6,12 @@ null_ls.setup({
|
||||||
null_ls.builtins.formatting.stylish_haskell,
|
null_ls.builtins.formatting.stylish_haskell,
|
||||||
null_ls.builtins.formatting.fourmolu,
|
null_ls.builtins.formatting.fourmolu,
|
||||||
null_ls.builtins.formatting.blue,
|
null_ls.builtins.formatting.blue,
|
||||||
|
null_ls.builtins.formatting.gofmt,
|
||||||
null_ls.builtins.formatting.sql_formatter.with({
|
null_ls.builtins.formatting.sql_formatter.with({
|
||||||
extra_args = { "--config", "/home/afonso/.config/nvim/lua/plugins/sql_formatter.json"}
|
extra_args = { "--config", "/home/afonso/.config/nvim/lua/plugins/sql_formatter.json"}
|
||||||
}),
|
}),
|
||||||
null_ls.builtins.formatting.prettierd.with({
|
null_ls.builtins.formatting.prettierd.with({
|
||||||
filetypes = { "html", "json", "yaml", "markdown" },
|
filetypes = { "html", "json", "css", "js", "yaml", "markdown" },
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"height": 60,
|
"height": 60,
|
||||||
"layer": "top",
|
"layer": "top",
|
||||||
"position": "top",
|
"position": "top",
|
||||||
"output": "eDP-1",
|
"output": "DP-1",
|
||||||
"spacing": 15,
|
"spacing": 15,
|
||||||
"modules-left": ["custom/launcher", "clock", "clock#date"],
|
"modules-left": ["custom/launcher", "clock", "clock#date"],
|
||||||
"modules-center": ["wlr/workspaces"],
|
"modules-center": ["wlr/workspaces"],
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$(acpi)" == "No support for device type: power_supply" ]
|
||||||
|
then
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
batLevel=$(acpi --battery | grep -Po '(\d+)\%' | sed 's/%//')
|
batLevel=$(acpi --battery | grep -Po '(\d+)\%' | sed 's/%//')
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -1 +1 @@
|
||||||
[{"url": "mysql://root@localhost/hospitalPortucalense_23", "name": "hospitalPortucalense_23"}, {"url": "mysql://root@localhost/", "name": "root@localhost"}]
|
[{"url": "mysql://root@localhost/hospitalPortucalense_23", "name": "hospitalPortucalense_23"}, {"url": "postgresql://root:example@localhost:5432/go-timer", "name": "go-timer"}]
|
||||||
|
|
Loading…
Reference in a new issue