zsh: fix readme, add liesmich, improve globbing
[grml-etc-core.git] / etc / zsh / zshrc
index 88950ca..a520696 100644 (file)
@@ -2951,8 +2951,9 @@ purge() {
     TEXTEMPFILES=(*.tex(N:s/%tex/'(log|toc|aux|nav|snm|out|tex.backup|bbl|blg|bib.backup|vrb|lof|lot|hd|idx)(N)'/))
     GHCTEMPFILES=(*.(hs|lhs)(N:r:s/%/'.(hi|hc|(p|u|s)_(o|hi))(N)'/))
     PYTEMPFILES=(*.py(N:s/%py/'(pyc|pyo)(N)'/))
-    LONELY_MOOD_FILES=((*.mood)(NDe:'local -a AF;AF=( ${${REPLY#.}%mood}(mp3|flac|ogg|asf|wmv|aac)(N) ); [[ -z "$AF" ]]':))
-    FILES=(*~(.N) \#*\#(.N) *.o(.N) a.out(.N) (*.|)core(.N) *.cmo(.N) *.cmi(.N) .*.swp(.N) *.(orig|rej)(.DN) *.dpkg-(old|dist|new)(DN) ._(cfg|mrg)[0-9][0-9][0-9][0-9]_*(N) ${~TEXTEMPFILES} ${~GHCTEMPFILES} ${~PYTEMPFILES} ${LONELY_MOOD_FILES})
+    LONELY_MOOD_FILES=((*.mood)(.NDe:'local -a AF;AF=( ${${REPLY#.}%mood}(mp3|flac|ogg|asf|wmv|aac)(N) ); [[ -z "$AF" ]]':))
+    ZSH_COMPILED=(*.zwc(.NDe:'[[ -f ${REPLY%.zwc} && ${REPLY%.zwc} -nt ${REPLY} ]]':))
+    FILES=(*~(.N) \#*\#(.N) *.o(.N) a.out(.N) (*.|)core(.N) *.cmo(.N) *.cmi(.N) .*.swp(.N) *.(orig|rej)(.DN) *.dpkg-(old|dist|new)(DN) ._(cfg|mrg)[0-9][0-9][0-9][0-9]_*(N) ${~TEXTEMPFILES} ${~GHCTEMPFILES} ${~PYTEMPFILES} ${LONELY_MOOD_FILES} ${ZSH_COMPILED} )
     local NBFILES=${#FILES}
     local CURDIRSUDO=""
     [[ ! -w ./ ]] && CURDIRSUDO=$SUDO
@@ -2960,7 +2961,7 @@ purge() {
         print -l $FILES
         local ans
         echo -n "Remove these files? [y/n] "
-        read -q ans
+        read -q ans; echo
         if [[ $ans == "y" ]] ; then
             $CURDIRSUDO rm ${FILES}
             echo ">> $PWD purged, $NBFILES files removed"
@@ -2976,10 +2977,16 @@ if is439 && [[ -d /dev/disk/by-id/ ]]; then
         emulate -L zsh
         setopt extendedglob
         local -a -U disks
+        local -A mountinfo
         disks=( /dev/disk/by-id/*(@:A) )
+        [[ -r /proc/mounts ]] && for cline ( "${(f)$(</proc/mounts)[@]}" ) mountinfo["${cline[(w)1]:A}"]="${cline[(w)2,-1]}"
         for dev in "$disks[@]"; do
             print ${fg_bold[red]}${dev}${reset_color} /dev/disk/by-label/*(@e/'[[ ${REPLY:A} == $dev ]] && REPLY=${fg[blue]}LABEL=${REPLY:t}${reset_color}'/N) /dev/disk/by-uuid/*(@e/'[[ ${REPLY:A} == $dev ]] && REPLY=${fg[green]}UUID=${REPLY:t}${reset_color}'/N)
-            print -f "  %s\n" /dev/disk/by-id/*(@e/'[[ ${REPLY:A} == $dev ]]'/N:t)
+            [[ -n "${mountinfo["$dev"]}" ]] && print -f " Mount: %s -t %s -o %s\n" ${mountinfo["$dev"][(w)1]} ${mountinfo["$dev"][(w)2]} "${mountinfo["$dev"][(w)3,-5]}"
+            for sysdevsize ( /sys/block/${dev:t}/size(N) /sys/block/${${dev:t}%%<->}/${dev:t}/size(N) ) \
+                print -f "  Size: %.3f GiB (%d Byte)\n" $(($(<$sysdevsize)/(2.0*1024.0*1024.0))) $(($(<$sysdevsize)*512))
+
+            print -f "    Id: %s\n" /dev/disk/by-id/*(@e/'[[ ${REPLY:A} == $dev ]]'/N:t)
         done
     }
 fi
@@ -3262,8 +3269,10 @@ vman() {
 #f5# View all README-like files in current directory in pager
 readme() {
     emulate -L zsh
+    setopt extendedglob
     local files
     files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
+    files=(./(#i)*(read*me|lue*m(in|)ut|lies*mich)*(NDr^/=p%))
     if (($#files)) ; then
         $PAGER $files
     else
@@ -3437,53 +3446,6 @@ allulimit() {
     ulimit -t unlimited
 }
 
-# 2mp3 transcodes flac and ogg to mp3 with bitrate of 192 while preserving basic tags
-if check_com lame; then
-    2mp3_192() {
-        emulate -L zsh
-        setopt extendedglob
-        unsetopt ksharrays
-
-        local -a DECODE id3tags
-        local -A tagmap
-        local tagdata
-        local RC=0
-        tagmap=("(#l)title" --tt "(#l)artist" --ta "(#l)tracknumber" --tn "(#l)genre" --tg "(#l)album" --tl)
-
-        if [[ ${@[(i)*.ogg]} -le ${#@} ]] && ! check_com oggdec; then
-            echo "ERROR: please install oggdec" >&2
-            return 1
-        fi
-        if [[ ${@[(i)*.flac]} -le ${#@} ]] && ! check_com flac; then
-            echo "ERROR: please install flac" >&2
-            return 1
-        fi
-
-        for af in "$@"; do
-            id3tags=()
-            case "$af" in
-                (*.flac)
-                    DECODE=(flac -d -c "$af")
-                    tagdata="$(metaflac --export-tags-to=- "$af")"
-                    ;;
-                (*.ogg)
-                    DECODE=(oggdec -Q -o - "$af")
-                    tagdata="$(ogginfo "$af")"
-                    ;;
-                (*) continue ;;
-            esac
-            for line (${(f)tagdata}) \
-                [[ "$line" == (#s)[[:space:]]#(#b)([^=]##)=(*)(#e) && -n $tagmap[(k)$match[1]] ]] && \
-                id3tags+=($tagmap[(k)$match[1]] "$match[2]")
-            [[ ${#id3tags} -gt 0 ]] && id3tags=(--add-id3v2 --ignore-tag-errors $id3tags)
-            $DECODE[*] | lame -b 192 -v -h --replaygain-fast  "${id3tags[@]}" - "${af:r}.mp3" || {RC=$?; print "Error transcoding" "${af}"; }
-        done
-        # return 0 if no error or exit code if at least one error happened
-        return $RC
-    }
-    alias ogg2mp3_192 2mp3_192
-fi
-
 #f5# RFC 2396 URL encoding in Z-Shell
 urlencode() {
     emulate -L zsh