diff --git a/lib/git/shell_shortcuts.sh b/lib/git/shell_shortcuts.sh index 1b34654..c0bf699 100644 --- a/lib/git/shell_shortcuts.sh +++ b/lib/git/shell_shortcuts.sh @@ -88,24 +88,25 @@ elif [ "$_uname" = "Darwin" ]; then _abs_path_command="perl -e 'use Cwd \"abs_path\"; print abs_path(shift)'" fi -# Replace user/group with user symbol, if defined at ~/.user_sym -# Before : -rw-rw-r-- 1 ndbroadbent ndbroadbent 1.1K Sep 19 21:39 scm_breeze.sh -# After : -rw-rw-r-- 1 𝐍 𝐍 1.1K Sep 19 21:39 scm_breeze.sh -if [ -e $HOME/.user_sym ]; then - # Little bit of ruby golf to rejustify the user/group/size columns after replacement - function rejustify_ls_columns(){ - ruby -e "o=STDIN.read;re=/^(([^ ]* +){2})(([^ ]* +){3})/;u,g,s=o.lines.map{|l|l[re,3]}.compact.map(&:split).transpose.map{|a|a.map(&:size).max+1};puts o.lines.map{|l|l.sub(re){|m|\"%s%-#{u}s %-#{g}s%#{s}s \"%[\$1,*\$3.split]}}" - } - _ls_processor="| sed \"s/ $USER/ \$(/bin/cat $HOME/.user_sym)/g\" | rejustify_ls_columns" -fi - - if [ -n "$_ll_command" ]; then # Function wrapper around 'll' # Adds numbered shortcuts to output of ls -l, just like 'git status' unalias ll > /dev/null 2>&1; unset -f ll > /dev/null 2>&1 function ll { - local ll_output="$(eval $_ll_command $@ $_ls_processor)" + local ll_output="$($_ll_command "$@")" + + # Replace user/group with user symbol, if defined at ~/.user_sym + # Before : -rw-rw-r-- 1 ndbroadbent ndbroadbent 1.1K Sep 19 21:39 scm_breeze.sh + # After : -rw-rw-r-- 1 𝐍 𝐍 1.1K Sep 19 21:39 scm_breeze.sh + if [ -e $HOME/.user_sym ]; then + # Little bit of ruby golf to rejustify the user/group/size columns after replacement + function rejustify_ls_columns(){ + ruby -e "o=STDIN.read;re=/^(([^ ]* +){2})(([^ ]* +){3})/;\ + u,g,s=o.lines.map{|l|l[re,3]}.compact.map(&:split).transpose.map{|a|a.map(&:size).max+1};\ + puts o.lines.map{|l|l.sub(re){|m|\"%s%-#{u}s %-#{g}s%#{s}s \"%[\$1,*\$3.split]}}" + } + ll_output=$(echo "$ll_output" | sed "s/ $USER/ $(/bin/cat $HOME/.user_sym)/g" | rejustify_ls_columns) + fi if [ "$(echo "$ll_output" | wc -l)" -gt "50" ]; then echo -e "\e[33mToo many files to create shortcuts. Running plain ll command...\e[0m" @@ -116,17 +117,22 @@ if [ -n "$_ll_command" ]; then # Use ruby to inject numbers into ls output ruby -e "$( cat < $file"; fi let e++