Added nvim / ghostty / starship config

Signed-off-by: Rack Lin <racklin@gmail.com>
This commit is contained in:
2026-02-10 14:50:15 +08:00
parent 6cc8e616c3
commit 86b71b9554
61 changed files with 2928 additions and 68 deletions

View File

@@ -0,0 +1,187 @@
# GitNow — Speed up your Git workflow. 🐠
# https://github.com/joseluisq/gitnow
function __gitnow_new_branch_switch
set -l branch_name $argv[1]
if test (count $argv) -eq 1
set branch_name $branch_name
command git checkout -b $branch_name
else
echo "Provide a branch name."
end
end
# adapted from https://gist.github.com/oneohthree/f528c7ae1e701ad990e6
function __gitnow_slugify
echo $argv | LC_ALL=C command iconv -t ascii//TRANSLIT | LC_ALL=C command sed -E 's/[^a-zA-Z0-9\-]+/_/g' | LC_ALL=C command sed -E 's/^(-|_)+|(-|_)+$//g'
end
function __gitnow_clone_repo
set -l repo $argv[1]
set -l platform $argv[2]
if test -n "$repo"
set -l ok 1
if echo $repo | LC_ALL=C command grep -q -E '^[\%S].+'
set -l user (command git config --global user.$platform)
if test -n "$user"
set -l repor (echo $repo | LC_ALL=C command sed -e "s/^%S/$user/")
set repo $repor
else
set ok 0
end
end
if test $ok -eq 1
if [ "$platform" = "github" ]
set url github.com
end
if [ "$platform" = "bitbucket" ]
set url bitbucket.org
end
set -l repo_url git@$url:$repo.git
echo "📦 Remote repository: $repo_url"
command git clone $repo_url
else
__gitnow_clone_msg $platform
end
else
__gitnow_clone_msg $platform
end
end
function __gitnow_clone_msg
set -l msg $argv[1]
echo "Repository name is required!"
echo "Example: $msg your-repo-name"
echo "Usages:"
echo " a) $msg username/repo-name"
echo " b) $msg username repo-name"
echo " c) $msg repo-name"
echo " For this, it's necessary to set your $msg username (login)"
echo " to global config before like: "
echo " git config --global user.$msg \"your-username\""
echo
end
function __gitnow_check_if_branch_exist
set -l xfound 0
if test (count $argv) -eq 1
set -l xbranch $argv[1]
set -l xbranch_list (__gitnow_current_branch_list)
for b in $xbranch_list
if [ "$xbranch" = "$b" ]
set xfound 1
break
end
end
end
echo $xfound
end
function __gitnow_clone_params
set -l repo
if count $argv >/dev/null
if test (count $argv) -gt 1
set repo $argv[1]/$argv[2]
else if echo $argv | LC_ALL=C command grep -q -E '^([a-zA-Z0-9\_\-]+)\/([a-zA-Z0-9\_\-]+)$'
set repo $argv
else
set repo "%S/$argv"
end
end
echo $repo
end
function __gitnow_gitflow_branch -a xprefix -a xbranch
set xbranch (__gitnow_slugify $xbranch)
set -l xbranch_full "$xprefix/$xbranch"
set -l xfound (__gitnow_check_if_branch_exist $xbranch_full)
if test $xfound -eq 1
echo "Branch `$xbranch_full` already exists. Nothing to do."
else
command git stash
__gitnow_new_branch_switch "$xbranch_full"
command git stash pop
end
end
function __gitnow_msg_not_valid_repository -a cmd
echo "Gitnow ($cmd): Current directory is not a valid Git repository."
end
function __gitnow_current_branch_name
command git symbolic-ref --short HEAD 2>/dev/null
end
function __gitnow_current_branch_list
command git branch --list --no-color | LC_ALL=C command sed -E "s/^(\*?[ \t]*)//g" 2>/dev/null
end
function __gitnow_current_remote
set -l branch_name (__gitnow_current_branch_name)
command git config "branch.$branch_name.remote" 2>/dev/null; or echo origin
end
function __gitnow_is_git_repository
command git rev-parse --git-dir >/dev/null 2>&1
end
function __gitnow_has_uncommited_changes
command git diff-index --quiet HEAD -- || echo "1" 2>&1
end
function __gitnow_get_latest_tag
command git tag --sort=-creatordate | head -n1 2>/dev/null
end
# lexicographic order and tag names treated as versions
# https://stackoverflow.com/a/52680984/2510591
function __gitnow_get_tags_ordered
command git -c 'versionsort.suffix=-' tag --list --sort=-version:refname
end
function __gitnow_get_latest_semver_release_tag
for tg in (__gitnow_get_tags_ordered)
if echo $tg | LC_ALL=C command grep -qE '^v?([0-9]+).([0-9]+).([0-9]+)$'
echo $tg 2>/dev/null
break
end
end
end
function __gitnow_increment_number -a strv
command echo $strv | LC_ALL=C command awk '
function increment(val) {
if (val ~ /[0-9]+/) { return val + 1 }
return val
}
{ print increment($0) }
' 2>/dev/null
end
function __gitnow_get_valid_semver_release_value -a tagv
command echo $tagv | LC_ALL=C command sed -n 's/^v\\{0,1\\}\([0-9].[0-9].[0-9]*\)\([}]*\)/\1/p' 2>/dev/null
end
function __gitnow_get_valid_semver_prerelease_value -a tagv
command echo $tagv | LC_ALL=C command sed -n 's/^v\\{0,1\\}\([0-9].[0-9].[0-9]-[a-zA-Z0-9\-_.]*\)\([}]*\)/\1/p' 2>/dev/null
end
function __gitnow_is_number -a strv
command echo -n $strv | LC_ALL=C command grep -qE '^([0-9]+)$'
end