fish
This commit is contained in:
		
							parent
							
								
									9642597265
								
							
						
					
					
						commit
						356b45ecd6
					
				
					 8 changed files with 1571 additions and 3 deletions
				
			
		
							
								
								
									
										131
									
								
								.config/fish/completions/_git-forgit
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								.config/fish/completions/_git-forgit
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,131 @@
 | 
			
		|||
#compdef git-forgit -p forgit::*
 | 
			
		||||
#description Utility tool for using git interactively
 | 
			
		||||
#
 | 
			
		||||
# forgit completions for zsh
 | 
			
		||||
#
 | 
			
		||||
# Place this file in your $fpath (e.g. /usr/share/zsh/site-functions) to enable
 | 
			
		||||
# tab completions for forgit.
 | 
			
		||||
 | 
			
		||||
_git-branches() {
 | 
			
		||||
	_alternative "branches:branchname:($(git branch -a --format '%(refname:short)'))"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git-checkout-file() {
 | 
			
		||||
	_alternative "files:filename:($(git ls-files --modified))"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git-stash-show() {
 | 
			
		||||
	_alternative "files:filename:($(git stash list | sed -n -e 's/:.*//p'))"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# The completions for git already define a _git-diff completion function, but
 | 
			
		||||
# it provides the wrong results when called from _git-forgit because it heavily
 | 
			
		||||
# depends on the context it's been called from (usage of $curcontext and
 | 
			
		||||
# $CURRENT), so we use a simplified version here which always provides the same
 | 
			
		||||
# results independent of the context.
 | 
			
		||||
_git-forgit-diff() {
 | 
			
		||||
	_alternative \
 | 
			
		||||
		'commit-ranges::__git_commit_ranges' \
 | 
			
		||||
		'blobs-and-trees-in-treeish::__git_blobs_and_trees_in_treeish' \
 | 
			
		||||
		'files::__git_changed-in-working-tree_files' \
 | 
			
		||||
		'blobs::__git_blobs '
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git-staged() {
 | 
			
		||||
	_alternative "files:filename:($(git diff --name-only --staged))"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git-forgit-reflog() {
 | 
			
		||||
	declare -a cmds
 | 
			
		||||
	cmds=('expire:prune old reflog entries' 'delete:delete entries from reflog' 'show:show log of ref' 'exists:check whether a ref has a reflog') 
 | 
			
		||||
	_alternative 'cmds:: _describe -t cmds cmd cmds' 'refs:: __git_references'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git-forgit() {
 | 
			
		||||
	local subcommand cmd
 | 
			
		||||
	subcommand="${words[1]}"
 | 
			
		||||
	if [[ "$subcommand" != "forgit"* ]]; then
 | 
			
		||||
		# Forgit is obviously called via a git alias. Get the original
 | 
			
		||||
		# aliased subcommand and proceed as if it was the previous word.
 | 
			
		||||
		cmd=$(git config --get "alias.$subcommand" | cut -d ' ' -f 2)
 | 
			
		||||
	else
 | 
			
		||||
		# The last word is the relevant command
 | 
			
		||||
		cmd=${words[(( ${#words} - 1 ))]}
 | 
			
		||||
	fi
 | 
			
		||||
	
 | 
			
		||||
	case ${cmd} in
 | 
			
		||||
	forgit)
 | 
			
		||||
		local -a subcommands
 | 
			
		||||
		subcommands=(
 | 
			
		||||
			'add:git add selector'
 | 
			
		||||
			'blame:git blame viewer'
 | 
			
		||||
			'branch_delete:git branch deletion selector'
 | 
			
		||||
			'checkout_branch:git checkout branch selector'
 | 
			
		||||
			'checkout_commit:git checkout commit selector'
 | 
			
		||||
			'checkout_file:git checkout-file selector'
 | 
			
		||||
			'checkout_tag:git checkout tag selector'
 | 
			
		||||
			'cherry_pick:git cherry-picking'
 | 
			
		||||
			'cherry_pick_from_branch:git cherry-picking with interactive branch selection'
 | 
			
		||||
			'clean:git clean selector'
 | 
			
		||||
			'diff:git diff viewer'
 | 
			
		||||
			'fixup:git fixup'
 | 
			
		||||
			'ignore:git ignore generator'
 | 
			
		||||
			'log:git commit viewer'
 | 
			
		||||
			'reflog:git reflog viewer'
 | 
			
		||||
			'rebase:git rebase'
 | 
			
		||||
			'reset_head:git reset HEAD (unstage) selector'
 | 
			
		||||
			'revert_commit:git revert commit selector'
 | 
			
		||||
			'stash_show:git stash viewer'
 | 
			
		||||
			'stash_push:git stash push selector'
 | 
			
		||||
		)
 | 
			
		||||
		_describe -t commands 'git forgit' subcommands
 | 
			
		||||
		;;
 | 
			
		||||
	add) _git-add ;;
 | 
			
		||||
	branch_delete) _git-branches ;;
 | 
			
		||||
	checkout_branch) _git-branches ;;
 | 
			
		||||
	checkout_commit) __git_recent_commits ;;
 | 
			
		||||
	checkout_file) _git-checkout-file ;;
 | 
			
		||||
	checkout_tag) __git_tags ;;
 | 
			
		||||
	cherry_pick) _git-cherry-pick ;;
 | 
			
		||||
	cherry_pick_from_branch) _git-branches ;;
 | 
			
		||||
	clean) _git-clean ;;
 | 
			
		||||
	diff) _git-forgit-diff ;;
 | 
			
		||||
	fixup) __git_branch_names ;;
 | 
			
		||||
	log) _git-log ;;
 | 
			
		||||
	reflog) _git-forgit-reflog ;;
 | 
			
		||||
	rebase) _git-rebase ;;
 | 
			
		||||
	reset_head) _git-staged ;;
 | 
			
		||||
	revert_commit) __git_recent_commits ;;
 | 
			
		||||
	stash_show) _git-stash-show ;;
 | 
			
		||||
	esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# We're reusing existing completion functions, so load those first
 | 
			
		||||
# if not already loaded and check if completion function exists afterwards.
 | 
			
		||||
(( $+functions[_git-add] )) || _git
 | 
			
		||||
(( $+functions[_git-add] )) || return 1
 | 
			
		||||
# Completions for forgit plugin shell functions (also works for aliases)
 | 
			
		||||
compdef _git-add forgit::add
 | 
			
		||||
compdef _git-branches forgit::branch::delete
 | 
			
		||||
compdef _git-branches forgit::checkout::branch
 | 
			
		||||
compdef __git_recent_commits forgit::checkout::commit
 | 
			
		||||
compdef _git-checkout-file forgit::checkout::file
 | 
			
		||||
compdef __git_tags forgit::checkout::tag
 | 
			
		||||
compdef _git-cherry-pick forgit::cherry::pick
 | 
			
		||||
compdef _git-branches forgit::cherry::pick::from::branch
 | 
			
		||||
compdef _git-clean forgit::clean
 | 
			
		||||
compdef _git-forgit-diff forgit::diff
 | 
			
		||||
compdef __git_branch_names forgit::fixup
 | 
			
		||||
compdef _git-log forgit::log
 | 
			
		||||
compdef _git-reflog forgit::reflog
 | 
			
		||||
compdef _git-rebase forgit::rebase
 | 
			
		||||
compdef _git-staged forgit::reset::head
 | 
			
		||||
compdef __git_recent_commits forgit::revert::commit
 | 
			
		||||
compdef _git-stash-show forgit::stash::show
 | 
			
		||||
 | 
			
		||||
# this is the case of calling the command and pressing tab
 | 
			
		||||
# the very first time of a shell session, we have to manually 
 | 
			
		||||
# call the dispatch function
 | 
			
		||||
if [[ $funcstack[1] == "_git-forgit" ]]; then
 | 
			
		||||
  _git-forgit "$@"
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										159
									
								
								.config/fish/completions/git-forgit.bash
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										159
									
								
								.config/fish/completions/git-forgit.bash
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,159 @@
 | 
			
		|||
# forgit completions for bash
 | 
			
		||||
 | 
			
		||||
# When using forgit as a subcommand of git, put this file in one of the
 | 
			
		||||
# following places and it will be loaded automatically on tab completion of
 | 
			
		||||
# 'git forgit' or any configured git aliases of it:
 | 
			
		||||
#
 | 
			
		||||
#   /usr/share/bash-completion/completions
 | 
			
		||||
#   ~/.local/share/bash-completion/completions
 | 
			
		||||
#
 | 
			
		||||
# When using forgit via the shell plugin, source this file explicitly after
 | 
			
		||||
# forgit.plugin.zsh to enable tab completion for shell functions and aliases.
 | 
			
		||||
 | 
			
		||||
_git_branch_delete()
 | 
			
		||||
{
 | 
			
		||||
	__gitcomp_nl "$(__git_heads)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git_checkout_branch()
 | 
			
		||||
{
 | 
			
		||||
	__gitcomp_nl "$(__git branch -a --format '%(refname:short)')"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git_checkout_file()
 | 
			
		||||
{
 | 
			
		||||
	__gitcomp_nl "$(__git ls-files --modified)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git_checkout_tag()
 | 
			
		||||
{
 | 
			
		||||
	__gitcomp_nl "$(__git_tags)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_git_stash_show()
 | 
			
		||||
{
 | 
			
		||||
	__gitcomp_nl "$(__git stash list | sed -n -e 's/:.*//p')"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Completion for git-forgit
 | 
			
		||||
# This includes git aliases, e.g. "alias.cb=forgit checkout_branch" will
 | 
			
		||||
# correctly complete available branches on "git cb".
 | 
			
		||||
_git_forgit()
 | 
			
		||||
{
 | 
			
		||||
	local subcommand cword cur prev cmds
 | 
			
		||||
 | 
			
		||||
	subcommand="${COMP_WORDS[1]}"
 | 
			
		||||
	if [[ "$subcommand" != "forgit" ]]
 | 
			
		||||
	then
 | 
			
		||||
		# Forgit is obviously called via a git alias. Get the original
 | 
			
		||||
		# aliased subcommand and proceed as if it was the previous word.
 | 
			
		||||
		prev=$(git config --get "alias.$subcommand" | cut -d' ' -f 2)
 | 
			
		||||
		cword=$((${COMP_CWORD} + 1))
 | 
			
		||||
	else
 | 
			
		||||
		cword=${COMP_CWORD}
 | 
			
		||||
		prev=${COMP_WORDS[COMP_CWORD-1]}
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	cur=${COMP_WORDS[COMP_CWORD]}
 | 
			
		||||
 | 
			
		||||
	cmds="
 | 
			
		||||
		add
 | 
			
		||||
		blame
 | 
			
		||||
		branch_delete
 | 
			
		||||
		checkout_branch
 | 
			
		||||
		checkout_commit
 | 
			
		||||
		checkout_file
 | 
			
		||||
		checkout_tag
 | 
			
		||||
		cherry_pick
 | 
			
		||||
		cherry_pick_from_branch
 | 
			
		||||
		clean
 | 
			
		||||
		diff
 | 
			
		||||
		fixup
 | 
			
		||||
		ignore
 | 
			
		||||
		log
 | 
			
		||||
		reflog
 | 
			
		||||
		rebase
 | 
			
		||||
		reset_head
 | 
			
		||||
		revert_commit
 | 
			
		||||
		stash_show
 | 
			
		||||
		stash_push
 | 
			
		||||
	"
 | 
			
		||||
 | 
			
		||||
	case ${cword} in
 | 
			
		||||
		2)
 | 
			
		||||
			COMPREPLY=($(compgen -W "${cmds}" -- ${cur}))
 | 
			
		||||
			;;
 | 
			
		||||
		3)
 | 
			
		||||
			case ${prev} in
 | 
			
		||||
				add) _git_add ;;
 | 
			
		||||
				branch_delete) _git_branch_delete ;;
 | 
			
		||||
				checkout_branch) _git_checkout_branch ;;
 | 
			
		||||
				checkout_commit) _git_checkout ;;
 | 
			
		||||
				checkout_file) _git_checkout_file ;;
 | 
			
		||||
				checkout_tag) _git_checkout_tag ;;
 | 
			
		||||
				cherry_pick) _git_cherry_pick ;;
 | 
			
		||||
				cherry_pick_from_branch) _git_checkout_branch ;;
 | 
			
		||||
				clean) _git_clean ;;
 | 
			
		||||
				diff) _git_diff ;;
 | 
			
		||||
				fixup) _git_branch ;;
 | 
			
		||||
				log) _git_log ;;
 | 
			
		||||
				reflog) _git_reflog ;;
 | 
			
		||||
				rebase) _git_rebase ;;
 | 
			
		||||
				reset_head) _git_reset ;;
 | 
			
		||||
				revert_commit) _git_revert ;;
 | 
			
		||||
				stash_show) _git_stash_show ;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		*)
 | 
			
		||||
			COMPREPLY=()
 | 
			
		||||
			;;
 | 
			
		||||
	esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Check if forgit plugin is loaded
 | 
			
		||||
if [[ $(type -t forgit::add) == function ]]
 | 
			
		||||
then
 | 
			
		||||
	# We're reusing existing git completion functions, so load those first
 | 
			
		||||
	# and check if completion function exists afterwards.
 | 
			
		||||
	_completion_loader git
 | 
			
		||||
	[[ $(type -t __git_complete) == function ]] || return 1
 | 
			
		||||
 | 
			
		||||
	# Completion for forgit plugin shell functions
 | 
			
		||||
	__git_complete forgit::add _git_add
 | 
			
		||||
	__git_complete forgit::branch::delete _git_branch_delete
 | 
			
		||||
	__git_complete forgit::checkout::branch _git_checkout_branch
 | 
			
		||||
	__git_complete forgit::checkout::commit _git_checkout
 | 
			
		||||
	__git_complete forgit::checkout::file _git_checkout_file
 | 
			
		||||
	__git_complete forgit::checkout::tag _git_checkout_tag
 | 
			
		||||
	__git_complete forgit::cherry::pick _git_cherry_pick
 | 
			
		||||
	__git_complete forgit::cherry::pick::from::branch _git_checkout_branch
 | 
			
		||||
	__git_complete forgit::clean _git_clean
 | 
			
		||||
	__git_complete forgit::diff _git_diff
 | 
			
		||||
	__git_complete forgit::fixup _git_branch
 | 
			
		||||
	__git_complete forgit::log _git_log
 | 
			
		||||
	__git_complete forgit::reflog _git_reflog
 | 
			
		||||
	__git_complete forgit::rebase _git_rebase
 | 
			
		||||
	__git_complete forgit::reset::head _git_reset
 | 
			
		||||
	__git_complete forgit::revert::commit _git_revert
 | 
			
		||||
	__git_complete forgit::stash::show _git_stash_show
 | 
			
		||||
 | 
			
		||||
	# Completion for forgit plugin shell aliases
 | 
			
		||||
	if [[ -z "$FORGIT_NO_ALIASES" ]]; then
 | 
			
		||||
		__git_complete "${forgit_add}" _git_add
 | 
			
		||||
		__git_complete "${forgit_branch_delete}" _git_branch_delete
 | 
			
		||||
		__git_complete "${forgit_checkout_branch}" _git_checkout_branch
 | 
			
		||||
		__git_complete "${forgit_checkout_commit}" _git_checkout
 | 
			
		||||
		__git_complete "${forgit_checkout_file}" _git_checkout_file
 | 
			
		||||
		__git_complete "${forgit_checkout_tag}" _git_checkout_tag
 | 
			
		||||
		__git_complete "${forgit_cherry_pick}" _git_checkout_branch
 | 
			
		||||
		__git_complete "${forgit_clean}" _git_clean
 | 
			
		||||
		__git_complete "${forgit_diff}" _git_diff
 | 
			
		||||
		__git_complete "${forgit_fixup}" _git_branch
 | 
			
		||||
		__git_complete "${forgit_log}" _git_log
 | 
			
		||||
		__git_complete "${forgit_reflog}" _git_reflog
 | 
			
		||||
		__git_complete "${forgit_rebase}" _git_rebase
 | 
			
		||||
		__git_complete "${forgit_reset_head}" _git_reset
 | 
			
		||||
		__git_complete "${forgit_revert_commit}" _git_revert
 | 
			
		||||
		__git_complete "${forgit_stash_show}" _git_stash_show
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										61
									
								
								.config/fish/completions/git-forgit.fish
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								.config/fish/completions/git-forgit.fish
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
#
 | 
			
		||||
# forgit completions for fish plugin
 | 
			
		||||
#
 | 
			
		||||
# Place this file inside your <fish_config_dir>/completions/ directory.
 | 
			
		||||
# It's usually located at ~/.config/fish/completions/. The file is lazily
 | 
			
		||||
# sourced when git-forgit command or forgit subcommand of git is invoked.
 | 
			
		||||
 | 
			
		||||
function __fish_forgit_needs_subcommand
 | 
			
		||||
    for subcmd in add blame branch_delete checkout_branch checkout_commit checkout_file checkout_tag \
 | 
			
		||||
        cherry_pick cherry_pick_from_branch clean diff fixup ignore log reflog rebase reset_head \
 | 
			
		||||
        revert_commit stash_show stash_push
 | 
			
		||||
        if contains -- $subcmd (commandline -opc)
 | 
			
		||||
            return 1
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    return 0
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Load helper functions in git completion file
 | 
			
		||||
not functions -q __fish_git && source $__fish_data_dir/completions/git.fish
 | 
			
		||||
 | 
			
		||||
# No file completion by default
 | 
			
		||||
complete -c git-forgit -x
 | 
			
		||||
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a add -d 'git add selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a blame -d 'git blame viewer'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a branch_delete -d 'git branch deletion selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a checkout_branch -d 'git checkout branch selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a checkout_commit -d 'git checkout commit selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a checkout_file -d 'git checkout-file selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a checkout_tag -d 'git checkout tag selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a cherry_pick -d 'git cherry-picking'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a cherry_pick_from_branch -d 'git cherry-picking with interactive branch selection'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a clean -d 'git clean selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a diff -d 'git diff viewer'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a fixup -d 'git fixup'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a ignore -d 'git ignore generator'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a log -d 'git commit viewer'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a reflog -d 'git reflog viewer'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a rebase -d 'git rebase'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a reset_head -d 'git reset HEAD (unstage) selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a revert_commit -d 'git revert commit selector'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a stash_show -d 'git stash viewer'
 | 
			
		||||
complete -c git-forgit -n __fish_forgit_needs_subcommand -a stash_push -d 'git stash push selector'
 | 
			
		||||
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from add' -a "(complete -C 'git add ')"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from branch_delete' -a "(__fish_git_local_branches)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from checkout_branch' -a "(complete -C 'git switch ')"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from checkout_commit' -a "(__fish_git_commits)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from checkout_file' -a "(__fish_git_files modified)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from checkout_tag' -a "(__fish_git_tags)" -d Tag
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from cherry_pick' -a "(complete -C 'git cherry-pick ')"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from clean' -a "(__fish_git_files untracked ignored)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from fixup' -a "(__fish_git_local_branches)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from log' -a "(complete -C 'git log ')"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from reflog' -a "(complete -C 'git reflog ')"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from rebase' -a "(complete -C 'git rebase ')"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from reset_head' -a "(__fish_git_files all-staged)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from revert_commit' -a "(__fish_git_commits)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from stash_show' -a "(__fish_git_complete_stashes)"
 | 
			
		||||
complete -c git-forgit -n '__fish_seen_subcommand_from stash_push' -a "(__fish_git_files modified deleted modified-staged-deleted)"
 | 
			
		||||
							
								
								
									
										1070
									
								
								.config/fish/conf.d/bin/git-forgit
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										1070
									
								
								.config/fish/conf.d/bin/git-forgit
									
										
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										54
									
								
								.config/fish/conf.d/forgit.plugin.fish
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								.config/fish/conf.d/forgit.plugin.fish
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
# MIT (c) Chris Apple
 | 
			
		||||
 | 
			
		||||
set -l install_dir (dirname (status dirname))
 | 
			
		||||
set -x FORGIT_INSTALL_DIR "$install_dir/conf.d"
 | 
			
		||||
set -x FORGIT "$FORGIT_INSTALL_DIR/bin/git-forgit"
 | 
			
		||||
if not test -e "$FORGIT"
 | 
			
		||||
    set -x FORGIT_INSTALL_DIR "$install_dir/vendor_conf.d"
 | 
			
		||||
    set -x FORGIT "$FORGIT_INSTALL_DIR/bin/git-forgit"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function forgit::warn
 | 
			
		||||
    printf "%b[Warn]%b %s\n" '\e[0;33m' '\e[0m' "$argv" >&2
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# backwards compatibility:
 | 
			
		||||
# export all user-defined FORGIT variables to make them available in git-forgit
 | 
			
		||||
set unexported_vars 0
 | 
			
		||||
set | awk -F ' ' '{ print $1 }' | grep FORGIT_ | while read var
 | 
			
		||||
    if not set -x | grep -q "^$var\b"
 | 
			
		||||
        if test $unexported_vars = 0
 | 
			
		||||
            forgit::warn "Config options have to be exported in future versions of forgit."
 | 
			
		||||
            forgit::warn "Please update your config accordingly:"
 | 
			
		||||
        end
 | 
			
		||||
        forgit::warn "  set -x $var \"$$var\""
 | 
			
		||||
        set unexported_vars (math $unexported_vars + 1)
 | 
			
		||||
        set -x $var $$var
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# alias `git-forgit` to the full-path of the command
 | 
			
		||||
alias git-forgit "$FORGIT"
 | 
			
		||||
 | 
			
		||||
# register abbreviations
 | 
			
		||||
if test -z "$FORGIT_NO_ALIASES"
 | 
			
		||||
    abbr -a -- (string collect $forgit_add; or string collect "ga") git-forgit add
 | 
			
		||||
    abbr -a -- (string collect $forgit_reset_head; or string collect "grh") git-forgit reset_head
 | 
			
		||||
    abbr -a -- (string collect $forgit_log; or string collect "glo") git-forgit log
 | 
			
		||||
    abbr -a -- (string collect $forgit_reflog; or string collect "grl") git-forgit reflog
 | 
			
		||||
    abbr -a -- (string collect $forgit_diff; or string collect "gd") git-forgit diff
 | 
			
		||||
    abbr -a -- (string collect $forgit_ignore; or string collect "gi") git-forgit ignore
 | 
			
		||||
    abbr -a -- (string collect $forgit_checkout_file; or string collect "gcf") git-forgit checkout_file
 | 
			
		||||
    abbr -a -- (string collect $forgit_checkout_branch; or string collect "gcb") git-forgit checkout_branch
 | 
			
		||||
    abbr -a -- (string collect $forgit_branch_delete; or string collect "gbd") git-forgit branch_delete
 | 
			
		||||
    abbr -a -- (string collect $forgit_clean; or string collect "gclean") git-forgit clean
 | 
			
		||||
    abbr -a -- (string collect $forgit_stash_show; or string collect "gss") git-forgit stash_show
 | 
			
		||||
    abbr -a -- (string collect $forgit_stash_push; or string collect "gsp") git-forgit stash_push
 | 
			
		||||
    abbr -a -- (string collect $forgit_cherry_pick; or string collect "gcp") git-forgit cherry_pick_from_branch
 | 
			
		||||
    abbr -a -- (string collect $forgit_rebase; or string collect "grb") git-forgit rebase
 | 
			
		||||
    abbr -a -- (string collect $forgit_fixup; or string collect "gfu") git-forgit fixup
 | 
			
		||||
    abbr -a -- (string collect $forgit_checkout_commit; or string collect "gco") git-forgit checkout_commit
 | 
			
		||||
    abbr -a -- (string collect $forgit_revert_commit; or string collect "grc") git-forgit revert_commit
 | 
			
		||||
    abbr -a -- (string collect $forgit_blame; or string collect "gbl") git-forgit blame
 | 
			
		||||
    abbr -a -- (string collect $forgit_checkout_tag; or string collect "gct") git-forgit checkout_tag
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
jorgebucaran/fisher
 | 
			
		||||
jhillyerd/plugin-git
 | 
			
		||||
jorgebucaran/nvm.fish
 | 
			
		||||
wfxr/forgit
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
# This file contains fish universal variable definitions.
 | 
			
		||||
# VERSION: 3.0
 | 
			
		||||
SETUVAR --export ELECTRON_OZONE_PLATFORM_HINT:auto
 | 
			
		||||
SETUVAR --export FZF_DEFAULT_OPTS:\x2d\x2dwalker\x2dskip\x3d\x2esteam\x2c\x2evscode\x2c\x2ecargo\x2c\x2enpm\x2c\x2envm\x2cSteam
 | 
			
		||||
SETUVAR --export FZF_DEFAULT_OPTS:\x2d\x2dwalker\x2dskip\x3d\x2esteam\x2c\x2evscode\x2c\x2ecargo\x2c\x2enpm\x2c\x2envm\x2cSteam\x2cgo\x2c\x2ecache\x2c\x2epub\x2dcache\x2c\x2erustup
 | 
			
		||||
SETUVAR --export --path PATH:/usr/local/bin\x1e/usr/local/sbin\x1e/usr/bin\x1e/usr/sbin\x1e/usr/local/go/bin
 | 
			
		||||
SETUVAR --export RANGER_LOAD_DEFAULT_RC:FALSE
 | 
			
		||||
SETUVAR Z_DATA_DIR:/home/foton/\x2elocal/share/z
 | 
			
		||||
| 
						 | 
				
			
			@ -9,8 +9,9 @@ SETUVAR __fish_initialized:3400
 | 
			
		|||
SETUVAR _fisher_jhillyerd_2F_plugin_2D_git_files:\x7e/\x2econfig/fish/functions/__git\x2ebranch_has_wip\x2efish\x1e\x7e/\x2econfig/fish/functions/__git\x2ecurrent_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/__git\x2edefault_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/__git\x2edestroy\x2efish\x1e\x7e/\x2econfig/fish/functions/__git\x2einit\x2efish\x1e\x7e/\x2econfig/fish/functions/gbage\x2efish\x1e\x7e/\x2econfig/fish/functions/gbda\x2efish\x1e\x7e/\x2econfig/fish/functions/gdv\x2efish\x1e\x7e/\x2econfig/fish/functions/gignored\x2efish\x1e\x7e/\x2econfig/fish/functions/glp\x2efish\x1e\x7e/\x2econfig/fish/functions/grename\x2efish\x1e\x7e/\x2econfig/fish/functions/grt\x2efish\x1e\x7e/\x2econfig/fish/functions/gtest\x2efish\x1e\x7e/\x2econfig/fish/functions/gtl\x2efish\x1e\x7e/\x2econfig/fish/functions/gunwip\x2efish\x1e\x7e/\x2econfig/fish/functions/gwip\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/git\x2efish
 | 
			
		||||
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
 | 
			
		||||
SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish
 | 
			
		||||
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejhillyerd/plugin\x2dgit\x1ejorgebucaran/nvm\x2efish
 | 
			
		||||
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejhillyerd/plugin\x2dgit\x1ejorgebucaran/nvm\x2efish\x1ewfxr/forgit
 | 
			
		||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
 | 
			
		||||
SETUVAR _fisher_wfxr_2F_forgit_files:\x7e/\x2econfig/fish/conf\x2ed/bin\x1e\x7e/\x2econfig/fish/conf\x2ed/forgit\x2eplugin\x2efish\x1e\x7e/\x2econfig/fish/completions/_git\x2dforgit\x1e\x7e/\x2econfig/fish/completions/git\x2dforgit\x2ebash\x1e\x7e/\x2econfig/fish/completions/git\x2dforgit\x2efish
 | 
			
		||||
SETUVAR fish_color_autosuggestion:4c566a
 | 
			
		||||
SETUVAR fish_color_cancel:\x2d\x2dreverse
 | 
			
		||||
SETUVAR fish_color_command:81a1c1
 | 
			
		||||
| 
						 | 
				
			
			@ -50,4 +51,4 @@ SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3dbrblack
 | 
			
		|||
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/foton/\x2ebin\x1e/opt/Obsidian\x1e/home/foton/go/bin\x1e/home/foton/code/dart\x2dsdk/bin\x1e/home/greg/\x2elocal/bin\x1e/home/greg/\x2ebin\x1e/home/greg/\x2ecargo/bin\x1e/home/greg/go/bin\x1e/usr/local/go/bin
 | 
			
		||||
SETUVAR fish_user_paths:/home/foton/\x2escripts\x1e/home/foton/\x2ebin\x1e/opt/Obsidian\x1e/home/foton/go/bin\x1e/home/foton/code/dart\x2dsdk/bin\x1e/home/greg/\x2elocal/bin\x1e/home/greg/\x2ebin\x1e/home/greg/\x2ecargo/bin\x1e/home/greg/go/bin\x1e/usr/local/go/bin
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										91
									
								
								.scripts/dnf.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										91
									
								
								.scripts/dnf.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,91 @@
 | 
			
		|||
 | 
			
		||||
#!/usr/bin/bash
 | 
			
		||||
readonly basename="$(basename "$0")"
 | 
			
		||||
 | 
			
		||||
if ! hash fzf &> /dev/null; then
 | 
			
		||||
    printf 'Error: Missing dep: fzf is required to use %s.\n' "${basename}" >&2
 | 
			
		||||
    exit 64
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#Colors
 | 
			
		||||
declare -r esc=$'\033'
 | 
			
		||||
declare -r BLUE="${esc}[1m${esc}[34m"
 | 
			
		||||
declare -r RED="${esc}[31m"
 | 
			
		||||
declare -r GREEN="${esc}[32m"
 | 
			
		||||
declare -r YELLOW="${esc}[33m"
 | 
			
		||||
declare -r CYAN="${esc}[36m"
 | 
			
		||||
# Base commands
 | 
			
		||||
readonly QRY="dnf --cacheonly --quiet repoquery "
 | 
			
		||||
readonly PRVW="dnf --cacheonly --quiet --color=always info"
 | 
			
		||||
readonly QRY_PRFX='  '
 | 
			
		||||
readonly QRY_SFFX=' > '
 | 
			
		||||
# Install mode
 | 
			
		||||
readonly INS_QRYS="${QRY} --qf '${CYAN}%{name}'"
 | 
			
		||||
readonly INS_PRVW="${PRVW}"
 | 
			
		||||
readonly INS_PRMPT="${CYAN}${QRY_PRFX}Install packages${QRY_SFFX}"
 | 
			
		||||
# Remove mode
 | 
			
		||||
readonly RMV_QRYS="${QRY} --installed --qf '${RED}%{name}'"
 | 
			
		||||
readonly RMV_PRVW="${PRVW} --installed"
 | 
			
		||||
readonly RMV_PRMPT="${RED}${QRY_PRFX}Remove packages${QRY_SFFX}"
 | 
			
		||||
# Remove-userinstalled mode
 | 
			
		||||
readonly RUI_QRYS="${QRY} --userinstalled --qf '${YELLOW}%{name}'"
 | 
			
		||||
readonly RUI_PRVW="${PRVW} --installed"
 | 
			
		||||
readonly RUI_PRMPT="${YELLOW}${QRY_PRFX}Remove User-Installed${QRY_SFFX}"
 | 
			
		||||
# Updates mode
 | 
			
		||||
readonly UPD_QRY="${QRY} --upgrades --qf '${GREEN}%{name}'"
 | 
			
		||||
readonly UPD_QRYS="if [[ $(${UPD_QRY} | wc -c) -ne 0 ]]; then ${UPD_QRY}; else echo ${GREEN}No updates available.; echo Try refreshing metadata cache...; fi"
 | 
			
		||||
readonly UPD_PRVW="${PRVW}"
 | 
			
		||||
readonly UPD_PRMPT="${GREEN}${QRY_PRFX}Upgrade packages${QRY_SFFX}"
 | 
			
		||||
 | 
			
		||||
mapfile -d '' fhelp <<-EOF
 | 
			
		||||
 | 
			
		||||
        "${basename}"
 | 
			
		||||
        Interactive package manager for Fedora
 | 
			
		||||
 | 
			
		||||
        Alt-i       Install mode (default)
 | 
			
		||||
        Alt-r       Remove mode
 | 
			
		||||
        Alt-e       Remove User-Installed mode
 | 
			
		||||
        Alt-u       Updates mode
 | 
			
		||||
        Alt-m       Update package metadata cache
 | 
			
		||||
 | 
			
		||||
        Enter       Confirm selection
 | 
			
		||||
        Tab         Mark package ()
 | 
			
		||||
        Shift-Tab   Unmark package
 | 
			
		||||
        Ctrl-a      Select all
 | 
			
		||||
 | 
			
		||||
        ?           Help (this page)
 | 
			
		||||
        ESC         Quit
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
declare tmp_file
 | 
			
		||||
if tmp_file="$(mktemp --tmpdir "${basename}".XXXXXX)"; then
 | 
			
		||||
    printf 'in' > "${tmp_file}" &&
 | 
			
		||||
    SHELL='/bin/bash' \
 | 
			
		||||
    FZF_DEFAULT_COMMAND="${INS_QRYS}" \
 | 
			
		||||
	fzf \
 | 
			
		||||
    --ansi \
 | 
			
		||||
	--multi \
 | 
			
		||||
	--query=$* \
 | 
			
		||||
	--header=" ${basename} | Press Alt+? for help or ESC to quit" \
 | 
			
		||||
	--header-first \
 | 
			
		||||
	--prompt="${INS_PRMPT}" \
 | 
			
		||||
	--marker=' ' \
 | 
			
		||||
	--preview-window='right,67%,wrap' \
 | 
			
		||||
	--preview="${INS_PRVW} {1}" \
 | 
			
		||||
	--bind="enter:execute(if grep -q 'in' \"${tmp_file}\"; then sudo dnf install {+}; 
 | 
			
		||||
        elif grep -q 'rm' \"${tmp_file}\"; then sudo dnf remove {+}; \
 | 
			
		||||
        elif grep -q 'up' \"${tmp_file}\"; then sudo dnf upgrade {+}; fi; \
 | 
			
		||||
        read -s -r -n1 -p $'\n${BLUE}Press any key to continue...' && printf '\n')" \
 | 
			
		||||
	--bind="alt-i:unbind(alt-i)+reload(${INS_QRYS})+change-preview(${INS_PRVW} {1})+change-prompt(${INS_PRMPT})+execute-silent(printf 'in' > \"${tmp_file}\")+first+rebind(alt-r,alt-e,alt-u)" \
 | 
			
		||||
	--bind="alt-r:unbind(alt-r)+reload(${RMV_QRYS})+change-preview(${RMV_PRVW} {1})+change-prompt(${RMV_PRMPT})+execute-silent(printf 'rm' > \"${tmp_file}\")+first+rebind(alt-i,alt-e,alt-u)" \
 | 
			
		||||
	--bind="alt-e:unbind(alt-e)+reload(${RUI_QRYS})+change-preview(${RUI_PRVW} {1})+change-prompt(${RUI_PRMPT})+execute-silent(printf 'rm' > \"${tmp_file}\")+first+rebind(alt-i,alt-r,alt-u)" \
 | 
			
		||||
	--bind="alt-u:unbind(alt-u)+reload(${UPD_QRYS})+change-preview(${UPD_PRVW} {1})+change-prompt(${UPD_PRMPT})+execute-silent(printf 'up' > \"${tmp_file}\")+first+rebind(alt-i,alt-r,alt-e)" \
 | 
			
		||||
	--bind="alt-m:execute(sudo dnf makecache;read -s -r -n1 -p $'\n${BLUE}Press any key to continue...' && printf '\n')" \
 | 
			
		||||
	--bind="alt-?:preview(printf \"${fhelp[0]}\")" \
 | 
			
		||||
	--bind="ctrl-a:select-all"
 | 
			
		||||
    
 | 
			
		||||
    rm -f "${tmp_file}" &> /dev/null
 | 
			
		||||
else
 | 
			
		||||
    printf 'Error: Failed to create tmp file. $TMPDIR (or /tmp if $TMPDIR is unset) may not be writable.\n' >&2
 | 
			
		||||
    exit 65
 | 
			
		||||
fi
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue