-
-
Save pid/ac2b1d52a3e0d76aba23ca4c4cf04e5f to your computer and use it in GitHub Desktop.
config.fish
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Fish 2.0 config | |
| # Enviroment setup | |
| clear | |
| set -x NODE_PATH /usr/local/lib/node_modules | |
| set -x PATH /usr/local/bin /usr/bin /bin /usr/local/sbin /usr/sbin /sbin /usr/local/share/npm/bin $NODE_PATH | |
| set -e fish_greeting | |
| alias @ "printf '%s'" | |
| alias @@ "xargs printf '%s'" | |
| alias @% "xargs printf" | |
| set _black (set_color black) | |
| set _black_bkg (set_color --background black) | |
| set _green (set_color green) | |
| set _brown (set_color brown) | |
| set _yellow (set_color yellow) | |
| set _blue (set_color blue) | |
| set _magenta (set_color magenta) | |
| set _purple (set_color purple) | |
| set _red (set_color red) | |
| set _cyan (set_color cyan) | |
| set _white (set_color white) | |
| set _normal (set_color normal) | |
| set _normal_bkg (set_color --background normal) | |
| set _bold (set_color --bold) | |
| set _underline (set_color --underline) | |
| # Directories | |
| set DESKTOP $HOME/Desktop | |
| set DROPBOX $HOME/Dropbox | |
| set DOWNLOADS $HOME/Downloads | |
| # Git | |
| alias gs "git status --short --branch" | |
| alias gl "git pull --rebase" | |
| alias glum "git pull upstream master --rebase" | |
| alias gp "git push" | |
| alias gpf "git push --force" | |
| alias ga "git add" | |
| alias gr "git reset" | |
| alias gm "git merge" | |
| alias gd "git diff" | |
| alias gc "git commit --signoff --message" | |
| alias gcm "git commit --signoff --amend --no-edit" | |
| alias gco "git checkout" | |
| alias gnew "git checkout -b" | |
| alias gb "git branch" | |
| alias gba "git branch --all" | |
| alias gbd "git branch --delete --force" | |
| alias gbdo "git push origin --delete" | |
| alias glg "git log --stat --max-count=1" | |
| alias glgg "git log --graph --max-count=20" | |
| alias gpur "git clean --force" | |
| alias gra "git reset; git status --short" | |
| alias grap "git reset --hard; git status --short; git clean --force" | |
| alias grapp "git reset --hard; git status --short; git clean --force; git checkout master" | |
| alias grb "git rebase --interactive" | |
| alias grc "git rebase --continue" | |
| # Mercurial | |
| alias hgs "hg status" | |
| alias hgsq "hg status -m -a -r -d" | |
| alias hgu "hg update" | |
| alias hgl "hg pull --update" | |
| alias hgp "hg push" | |
| alias hgpf "hg push --force" | |
| alias hga "hg add" | |
| alias hgar "hg addremove" | |
| alias hgm "hg merge" | |
| alias hgd "hg diff" | |
| alias hgc "hg commit" | |
| alias hgcm "hg qimport --rev tip; hg qrefresh --edit; hg qfinish tip" | |
| alias hgco "hg checkout" | |
| alias hgb "hg branch" | |
| alias hgba "hg branches" | |
| alias hgg "hg log --rev (hg parent --template \"{node}\") --stat" | |
| alias hggg "hg log --graph --limit 20" | |
| alias hgpur "hg purge" | |
| alias hgra "hg revert --all" | |
| alias hgrap "hg revert --all; hg purge" | |
| alias hgrapp "hg revert --all; hg purge; hg qpop --all" | |
| # Mercurial queues | |
| alias qnew "hg qnew --force" | |
| alias qimp "hg qimport" | |
| alias qfol "hg qfold" | |
| alias qfin "hg qfinish --applied" | |
| alias qrm "hg qremove" | |
| alias qrn "hg qrename" | |
| alias qref "hg diff; hg qref" | |
| alias qrefm "hg qref --message" | |
| alias qrefe "hg qref --edit" | |
| alias qrefu "hg qref --user" | |
| alias qpu "hg qpush" | |
| alias qpm "hg qpush --move" | |
| alias qpo "hg phase --force --draft qbase:tip; hg qpop" | |
| alias qpa "hg phase --force --draft qbase:tip; hg qpop --all" | |
| alias qgo "hg qgoto" | |
| alias qcref "hg qcrefresh" | |
| alias qdiff "hg qdiff" | |
| alias qser "hg qseries --summary --verbose" | |
| alias qa "hg qa --summary --verbose" | |
| alias qu "hg qu --summary --verbose" | |
| function qexp --description "Export the current qtip as a patch on the desktop" | |
| hgg | |
| set qtip (hg qa | tail -1) | |
| if [ $qtip ] | |
| set file $DESKTOP/$qtip | |
| hg export qtip > $file | |
| ls -lah $file | awk '{ print $5 }' | |
| end | |
| end | |
| function hgqpl --description "Pop all the queue, pull, update and restore queue" | |
| if [ (: hgsq) ] | |
| hgs | |
| return | |
| end | |
| set qtip (hg qa | tail -1) | |
| if [ $qtip ] | |
| qpa | |
| end | |
| hgl | |
| hg pushlogsync | |
| hggg | |
| if [ $qtip ] | |
| qpu $qtip | |
| end | |
| end | |
| function hgback --description "Perform a mercurial backout without a merge" | |
| if [ (count $argv) = 0 ] | |
| set tip (hg tip --template "{rev}") | |
| hgback $tip | |
| return | |
| end | |
| if [ (count $argv) = 1 ] | |
| set cset $argv[1] | |
| set parent (hg parent --rev $cset --template "{rev}") | |
| hgback $cset $parent | |
| return | |
| end | |
| set newest $argv[1] | |
| set oldest $argv[2] | |
| set file "backout-$newest.patch" | |
| hgd --rev $newest:$oldest > $file | |
| qimp --force --push $file | |
| set node (hg log --rev $newest --template "{node|short}") | |
| qrefm "Backed out changeset $node" | |
| hgg | |
| rm $file | |
| end | |
| # Utility functions | |
| function :ip --description "What is my IP?" | |
| dig +short myip.opendns.com @resolver1.opendns.com | |
| end | |
| function ftp --description "Start a ftp server" | |
| sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist | |
| end | |
| function ftpstop --description "Stop a ftp server" | |
| sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist | |
| end | |
| function sser --description "Starts a SimpleHTTPServer in the current directory" | |
| if [ (count $argv) = 0 ] | |
| sser 8080 | |
| return | |
| end | |
| python -m SimpleHTTPServer $argv[1] | |
| end | |
| function sser_utf8 --description "Starts a SimpleHTTPServer in the current directory serving utf-8 encoded files" | |
| python -c "import SimpleHTTPServer; m = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map; m[''] = 'text/plain'; m.update(dict([(k, v + ';charset=UTF-8') for k, v in m.items()])); SimpleHTTPServer.test();" | |
| end | |
| function pman --description "Open a man page in Preview" | |
| man -t $argv[1] | open -f -a Preview | |
| end | |
| function sman --description "Open a man page in Sublime Text" | |
| man $argv[1] | col -b | subl | |
| end | |
| end | |
| function sman --description "Open a man page in Atom" | |
| man $argv[1] | col -b | atom | |
| end | |
| function :mem --description "Quickly check what is eating all your memory" | |
| top -o vsize | |
| end | |
| function :cpu --description "Quickly check what is eating all your cpu" | |
| top -o cpu | |
| end | |
| function : --description "Checks if a statement executes cleanly, and prints the result if so" | |
| @ (eval $argv ^/dev/null) | |
| end | |
| # Firefox dev | |
| set MOZCONFIG $HOME/.mozconfig-firefox | |
| set CCACHE_DIR $HOME/.ccache | |
| set HG_FX ssh://hg.mozilla.org/integration/fx-team | |
| set HG_MI ssh://hg.mozilla.org/integration/mozilla-inbound | |
| set HG_MC ssh://hg.mozilla.org/mozilla-central | |
| set HG_MA ssh://hg.mozilla.org/releases/mozilla-aurora | |
| set HG_MB ssh://hg.mozilla.org/releases/mozilla-beta | |
| set HG_MR ssh://hg.mozilla.org/releases/mozilla-release | |
| set HG_TRY ssh://hg.mozilla.org/try | |
| set MOZDEV ~/Work/Mozilla | |
| set FXTEAM ~/Work/Mozilla/fx-team | |
| set GUM ~/Work/Mozilla/gum | |
| set M_INBOUND ~/Work/Mozilla/mozilla-inbound | |
| set M_CENTRAL ~/Work/Mozilla/mozilla-central | |
| set M_AURORA ~/Work/Mozilla/mozilla-aurora | |
| set M_BETA ~/Work/Mozilla/mozilla-beta | |
| set M_RELEASE ~/Work/Mozilla/mozilla-release | |
| set TOFINO ~/Work/Mozilla/tofino | |
| alias mozdev "cd $MOZDEV" | |
| alias fxteam "cd $FXTEAM" | |
| alias m-gum "cd $GUM" | |
| alias m-inbound "cd $M_INBOUND" | |
| alias m-central "cd $M_CENTRAL" | |
| alias m-aurora "cd $M_AURORA" | |
| alias m-beta "cd $M_BETA" | |
| alias m-release "cd $M_RELEASE" | |
| alias tofino "cd $TOFINO" | |
| function fxbuild --description "Build firefox from source" | |
| set -gx MOZCONFIG $MOZCONFIG | |
| set -gx CCACHE_DIR $CCACHE_DIR | |
| if [ (uname) = "Darwin" ] | |
| say -v V "Build started." | |
| end | |
| ./mach build $argv | |
| if [ (uname) = "Darwin" ] | |
| say -v V "Build finished." | |
| end | |
| end | |
| function fxrun --description "Open firefox from the obj/dist directory using a specified profile" | |
| if [ (count $argv) = 0 ] | |
| fxrun development | |
| return | |
| end | |
| set -gx MOZ_DISABLE_SAFE_MODE_KEY 1 | |
| set -gx MOZ_QUIET 1 | |
| ./mach run -P $argv | |
| end | |
| function fxtry --description "Pushes to try" | |
| if [ (: hgsq) ] | |
| hgs | |
| return | |
| end | |
| if [ (count $argv) = 0 ] | |
| return | |
| end | |
| set build "-b " | |
| set platf "-p " | |
| set tests "-u " | |
| set talos "-t " | |
| set rebuild "" | |
| if contains "debug" $argv | |
| set build $build"d" | |
| else if contains "opt" $argv | |
| set build $build"o" | |
| else | |
| set build $build"do" | |
| end | |
| if contains "all-platforms" $argv | |
| set platf $platf"all" | |
| else | |
| if contains "linux" $argv | |
| set platf $platf"linux,linux64,linux64-asan," | |
| end | |
| if contains "mac" $argv | |
| set platf $platf"macosx64," | |
| end | |
| if contains "osx" $argv | |
| set platf $platf"macosx64," | |
| end | |
| if contains "win" $argv | |
| set platf $platf"win32,win64," | |
| end | |
| end | |
| if contains "all-tests" $argv | |
| set tests $tests"all"; | |
| else if contains "none" $argv | |
| set tests $tests"none"; | |
| else | |
| if contains "m" $argv | |
| set tests $tests"mochitests,"; | |
| end | |
| if contains "bc" $argv | |
| set tests $tests"mochitest-bc,"; | |
| end | |
| if contains "dt" $argv | |
| set tests $tests"mochitest-dt,mochitest-e10s-devtools-chrome,"; | |
| end | |
| if contains "oth" $argv | |
| set tests $tests"mochitest-o,"; | |
| end | |
| if contains "xpc" $argv | |
| set tests $tests"xpcshell,"; | |
| end | |
| end | |
| set tests (@ $tests | sed '$s/.$//') | |
| if contains "talos" $argv | |
| set talos $talos"all" | |
| else | |
| set talos $talos"none" | |
| end | |
| if contains "rebuild" $argv | |
| set rebuild "--rebuild 20"; | |
| end | |
| qnew _ -m "try: $build $platf $tests $talos $rebuild" | |
| qser | |
| if [ (uname) = "Darwin" ] | |
| say "Pushing to try." | |
| end | |
| hgpf $HG_TRY | |
| if [ (uname) = "Darwin" ] | |
| say "Done" | |
| end | |
| qpo | |
| qrm _ | |
| end | |
| # Shell prompt | |
| set -g RESPONSIVE_PROMPT_COLUMNS 110 | |
| function __prompt_set_self_addr_wdir | |
| if not set -q __self | |
| set -g __self (whoami) | |
| set -g __addr (ifconfig | grep "inet " | grep -v "127.0.0.1" | head -n 1 | tr -d "addr:" | awk '{print $2}') | |
| set -g __self_len (@ $__self | wc -m) | |
| set -g __addr_len (@ $__addr | wc -m) | |
| end | |
| if [ $COLUMNS -gt $RESPONSIVE_PROMPT_COLUMNS ] | |
| set -g __self_addr_wdir $_blue $__self $_normal " at " $_blue $__addr $_normal " in " $_bold $_green (prompt_pwd) $_normal | |
| else | |
| set -g __self_addr_wdir $_bold $_green (prompt_pwd) $_normal | |
| end | |
| end | |
| function __prompt_set_hg_git | |
| if not set -q __has_hg | |
| set -g __has_hg (which hg) | |
| end | |
| if not set -q __has_git | |
| set -g __has_git (which git) | |
| end | |
| if [ $__has_hg ] | |
| set -g __is_hg_wdir (: hg root) | |
| if [ $__is_hg_wdir ] | |
| set hg_info (hg parent --template "{branch},{node},{tags}") | |
| set hg_qseries (hg qseries --verbose) | |
| set hg_branch (@ $hg_info | cut -d "," -f 1) | |
| set hg_tip_cset (@ $hg_info | cut -d "," -f 2 | cut -c 1-12) | |
| set hg_tip_tags (@ $hg_info | cut -d "," -f 3) | |
| set -g __hg_tip_patch (@ $hg_tip_tags | sed 's/qbase//' | sed 's/qtip//' | sed 's/tip//' | @% "%s ") | |
| set hg_qa (@ $hg_qseries | grep -o " A " | wc -l | tr -d " ") | |
| set hg_mq (@ $hg_qseries | grep -o " [AU] " | wc -l | tr -d " ") | |
| if [ $COLUMNS -gt $RESPONSIVE_PROMPT_COLUMNS ] | |
| set -g __hg_repo_info $_normal "[ " $_red $_black_bkg "hg" $_normal_bkg " on " $_brown $hg_branch " " $_green $hg_tip_cset " " $_cyan $hg_qa/$hg_mq $_normal " ]" | |
| else | |
| set -g __hg_repo_info $_normal "[ " $_red $_black_bkg "hg" $_normal_bkg " " $_cyan $hg_qa/$hg_mq $_normal " ]" | |
| end | |
| end | |
| end | |
| if [ $__has_git ] | |
| set -g __is_git_wdir (: git rev-parse --show-toplevel) | |
| if [ $__is_git_wdir ] | |
| set -g __git_branch (git symbolic-ref --quiet HEAD | cut -d "/" -f 3) | |
| set -g __git_head (git rev-parse --short HEAD) | |
| if not [ $__git_branch ] | |
| set -g __git_is_detached "(detached)" | |
| else | |
| set -e __git_is_detached | |
| end | |
| if [ $COLUMNS -gt $RESPONSIVE_PROMPT_COLUMNS ] | |
| set -g __git_repo_info $_normal "[ " $_red $_black_bkg "git" $_normal_bkg " on " $_brown $__git_branch " " $_green $__git_head $_normal " ]" | |
| else | |
| set -g __git_repo_info $_normal "[ " $_red $_black_bkg "git" $_normal_bkg " " $_cyan $__git_branch $_normal " ]" | |
| end | |
| end | |
| end | |
| end | |
| function fish_prompt | |
| __prompt_set_self_addr_wdir | |
| __prompt_set_hg_git | |
| if [ $__is_hg_wdir ] | |
| if [ (: hgsq) ] | |
| @ "[ " $_cyan $__hg_tip_patch $_red $_bold "✘" $_normal " ] " $_blue $_bold "λ " $_normal | |
| else | |
| @ "[ " $_cyan $__hg_tip_patch $_green $_bold "✔" $_normal " ] " $_blue $_bold "λ " $_normal | |
| end | |
| else if [ $__is_git_wdir ] | |
| set git_status (git status --porcelain) | |
| if [ $__git_is_detached ] | |
| set untrk "[ " $_cyan $__git_head $_yellow " detached " $_yellow $_bold "?" $_normal " ] " $_blue $_bold "λ " $_normal | |
| set dirty "[ " $_cyan $__git_head $_yellow " detached " $_red $_bold "✘" $_normal " ] " $_blue $_bold "λ " $_normal | |
| set clean "[ " $_cyan $__git_head $_yellow " detached " $_green $_bold "✔" $_normal " ] " $_blue $_bold "λ " $_normal | |
| else | |
| set untrk "[ " $_cyan $__git_branch " " $_yellow $_bold "?" $_normal " ] " $_blue $_bold "λ " $_normal | |
| set dirty "[ " $_cyan $__git_branch " " $_red $_bold "✘" $_normal " ] " $_blue $_bold "λ " $_normal | |
| set clean "[ " $_cyan $__git_branch " " $_green $_bold "✔" $_normal " ] " $_blue $_bold "λ " $_normal | |
| end | |
| if [ (@ $git_status | grep -c "?? ") -gt 0 ] | |
| @ $untrk | |
| else if [ (@ $git_status | grep -c " M ") -gt 0 ] | |
| @ $dirty | |
| else if [ (@ $git_status | grep -c "MM ") -gt 0 ] | |
| @ $dirty | |
| else if [ (@ $git_status | grep -c "A ") -gt 0 ] | |
| @ $dirty | |
| else if [ (@ $git_status | grep -c "AM") -gt 0 ] | |
| @ $dirty | |
| else if [ (@ $git_status | grep -c "D ") -gt 0 ] | |
| @ $dirty | |
| else | |
| @ $clean | |
| end | |
| else | |
| @ $_blue "λ " $_normal | |
| end | |
| end | |
| function fish_right_prompt | |
| @ $__self_addr_wdir | |
| if [ $__is_hg_wdir ] | |
| @ " " $__hg_repo_info | |
| end | |
| if [ $__is_git_wdir ] | |
| @ " " $__git_repo_info | |
| end | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment