Merge branch 'master' of git.ganneff.de:zsh
authorJoerg Jaspert <joerg@debian.org>
Tue, 26 Mar 2013 20:13:50 +0000 (21:13 +0100)
committerJoerg Jaspert <joerg@debian.org>
Tue, 26 Mar 2013 20:13:50 +0000 (21:13 +0100)
* 'master' of git.ganneff.de:zsh:
  multiple changes: New functions, dropped functions, ...

17 files changed:
.zsh/01_Terminfo.zsh
.zsh/05_Functions.zsh
.zsh/10_Environment.zsh
.zsh/12_Locale.zsh
.zsh/30_Options.zsh
.zsh/99_Exec.zsh
.zsh/README
.zsh/functions/is-alias [new file with mode: 0644]
.zsh/functions/is-builtin [new file with mode: 0644]
.zsh/functions/is-callable [new file with mode: 0644]
.zsh/functions/is-command [new file with mode: 0644]
.zsh/functions/is-function [new file with mode: 0644]
.zsh/functions/warn [new file with mode: 0644]
.zsh/functions/zman [new file with mode: 0644]
.zsh/functions/zpgrep [new file with mode: 0644]
.zsh/zshenv.local [new symlink]
.zsh/zshenv.local.sample

index 56f4e0a..3a4b7af 100644 (file)
@@ -4,7 +4,7 @@
 __() {
     local terminfo
     local termpath
-    if which tic >/dev/null; then
+    if is-callable tic >/dev/null; then
         for terminfo in $ZSH/terminfo/*.terminfo(.N); do
             # We assume that the file is named appropriately for this to work
             termpath=~/.terminfo/${(@)${terminfo##*/}[1]}/${${terminfo##*/}%%.terminfo}
index 4403b10..2d2f98a 100644 (file)
@@ -2,11 +2,6 @@
 
 ##     User-defined functions
 #
-cmd_exists ()
-{
-       \which -p $1 >/dev/null 2>&1
-}
-
 preprint()
 {
        local my_color start stop pipe1 pipe2 hbar out
@@ -44,24 +39,9 @@ preprint()
     print -Pn -- $out
 }
 
-normal_user ()
-{
-       if [ -e /etc/login.defs ]; then
-               eval `grep -v '^[$#]' /etc/login.defs | grep "^UID_" | tr -d '[:blank:]' | sed 's/^[A-Z_]\+/&=/'`
-               [ \( $UID -ge $UID_MIN \) ]
-       else
-               [ "`whoami`" != "root" ]
-       fi
-}
-
-privileged_user ()
-{
-       ! normal_user
-}
-
 _jj_chpwd()
 {
-       if ( cmd_exists git && test -d .git ); then
+       if ( is-callable git && test -d .git ); then
                # Shows tracked branches and modified files
                git checkout HEAD 2>&1 | sed 's/^/   /'
        fi
@@ -75,7 +55,7 @@ else
     }
 fi
 
-# Taken from oh-my-zsh
+# Idea taken from oh-my-zsh, but code is different
 function dirpersistrestore () {
     if [ -f ${DIRSTACKFILE} ]; then
         dirstack=( ${(f)"$(< ${DIRSTACKFILE} )"} )
index 391f7ab..331d602 100644 (file)
@@ -1,6 +1,6 @@
 # -*- mode: sh;-*-
 
-export SHELL=`which zsh`
+export SHELL=$(which zsh)
 
 if [ -w $ZDOTDIR ]; then
     mkdir -p ${ZDOTDIR}/var
@@ -24,6 +24,8 @@ export GPG_TTY=$(tty)
 
 setvar PAGER "$(which less)"
 setvar LESS '-X -R -f -j 3'
+READNULLCMD=${PAGER}
+NULLCMD=${PAGER}
 
 if [[ ${COLORS} == "true" ]]; then
     # grep with colors
@@ -38,17 +40,20 @@ if [[ ${COLORS} == "true" ]]; then
     fi
 fi
 
-READNULLCMD=${PAGER}
-NULLCMD=${PAGER}
-
 (( ${+DEBFULLNAME} )) || export DEBFULLNAME='Joerg Jaspert'
 (( ${+DEBNAME} )) || export DEBNAME='Joerg Jaspert'
 (( ${+DEBEMAIL} )) || export DEBEMAIL='joerg@debian.org'
 (( ${+TMPDIR} )) || export TMPDIR="$HOME/tmp"
 [[ -f "$HOME/.local/share/mc/skins/solarized.ini" ]] && export MC_SKIN="solarized"
 
-# If its installed - use lesspipe
-[ -x /bin/lesspipe ] && eval $(lesspipe)
+# If its installed - use lesspipe (or maybe lessfile)
+if is-callable lesspipe; then
+    if zstyle -t ':ganneff:config' lesstool lessfile; then
+        eval $(lessfile)
+    else
+        eval $(lesspipe)
+    fi
+fi
 
 ## Use a default width of 80 for manpages for more convenient reading
 if zstyle -t ':ganneff:config' MANWIDTH 0; then
index c2fd02c..dc5dce9 100644 (file)
@@ -1,6 +1,6 @@
 # -*- mode: sh;-*-
 
-(( $+commands[locale] )) && __() {
+is-command locale && __() {
     local locales
     local locale
 
index 76849c6..1c91295 100644 (file)
@@ -262,6 +262,7 @@ UnsetOPT HUP
 # Run all background jobs at a lower priority.
 UnsetOPT BG_NICE
 
+
 unfunction -m SetOPT
 unfunction -m UnsetOPT
 unfunction -m SetOPTifExists
index 3ca4202..fe0144d 100644 (file)
@@ -1,6 +1,6 @@
 # -*- mode: sh;-*-
 
-if cmd_exists fortune && zstyle -T ':ganneff:config' fortune; then
+if is-callable fortune && zstyle -T ':ganneff:config' fortune; then
        preprint "Fortune" && echo
        fortune | fmt -s -w 74
        preprint && echo
index abc6c16..5de736f 100644 (file)
@@ -100,3 +100,7 @@ The prompt i use is based on various others.
 
 - The winch function as seen in the prompt theme "bart", delivered
   with zsh
+
+- The is-{alias,builtin,callable,command,function} and zpgrep function
+  have been taken from "zoppo", see [[https://github.com/zoppo][zoppo]] for more of it, which is
+  licensed "under WTFPL unless otherwise noted".
diff --git a/.zsh/functions/is-alias b/.zsh/functions/is-alias
new file mode 100644 (file)
index 0000000..f7a8072
--- /dev/null
@@ -0,0 +1,8 @@
+(( $+1 )) || {
+  warn 'is-alias: not enough arguments'
+  return 1
+}
+
+(( $+aliass[$1] ))
+
+# vim: ft=zsh sts=2 ts=2 sw=2 et fdm=marker fmr={{{,}}}
diff --git a/.zsh/functions/is-builtin b/.zsh/functions/is-builtin
new file mode 100644 (file)
index 0000000..4a758db
--- /dev/null
@@ -0,0 +1,8 @@
+(( $+1 )) || {
+  warn 'is-builtin: not enough arguments'
+  return 1
+}
+
+(( $+builtins[$1] ))
+
+# vim: ft=zsh sts=2 ts=2 sw=2 et fdm=marker fmr={{{,}}}
diff --git a/.zsh/functions/is-callable b/.zsh/functions/is-callable
new file mode 100644 (file)
index 0000000..f9f1a7c
--- /dev/null
@@ -0,0 +1,8 @@
+(( $+1 )) || {
+  warn 'is-callable: not enough arguments'
+  return 1
+}
+
+(( $+builtins[$1] )) || (( $+functions[$1] )) || (( $+aliases[$1] )) || (( $+commands[$1] ))
+
+# vim: ft=zsh sts=2 ts=2 sw=2 et fdm=marker fmr={{{,}}}
diff --git a/.zsh/functions/is-command b/.zsh/functions/is-command
new file mode 100644 (file)
index 0000000..01aafae
--- /dev/null
@@ -0,0 +1,8 @@
+(( $+1 )) || {
+  warn 'is-command: not enough arguments'
+  return 1
+}
+
+(( $+commands[$1] ))
+
+# vim: ft=zsh sts=2 ts=2 sw=2 et fdm=marker fmr={{{,}}}
diff --git a/.zsh/functions/is-function b/.zsh/functions/is-function
new file mode 100644 (file)
index 0000000..310f633
--- /dev/null
@@ -0,0 +1,8 @@
+(( $+1 )) || {
+  warn 'is-function: not enough arguments'
+  return 1
+}
+
+(( $+functions[$1] ))
+
+# vim: ft=zsh sts=2 ts=2 sw=2 et fdm=marker fmr={{{,}}}
diff --git a/.zsh/functions/warn b/.zsh/functions/warn
new file mode 100644 (file)
index 0000000..e55aa93
--- /dev/null
@@ -0,0 +1,3 @@
+print -- "$@" 1>&2
+
+# vim: ft=zsh sts=2 ts=2 sw=2 et fdm=marker fmr={{{,}}}
diff --git a/.zsh/functions/zman b/.zsh/functions/zman
new file mode 100644 (file)
index 0000000..d542a6d
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode:sh -*-
+
+zman() {
+  PAGER="less -g -s '+/^       "$1"'" man zshall
+}
diff --git a/.zsh/functions/zpgrep b/.zsh/functions/zpgrep
new file mode 100644 (file)
index 0000000..37b4fa0
--- /dev/null
@@ -0,0 +1,58 @@
+# -*- mode:sh -*-
+
+local _USER REGEXP
+
+local usage="USAGE: $0 [-u USER] REGEXP"
+
+if (( $# == 1 )); then
+  REGEXP="$1"
+elif (( $# == 3 )); then
+  if [[ "$1" == "-u" ]]; then
+    _USER="$2"
+    REGEXP="$3"
+  elif [[ "$2" == "-u" ]]; then
+    _USER="$3"
+    REGEXP="$1"
+  else
+    warn "$usage"
+    return 1
+  fi
+else
+  warn "$usage"
+  return 1
+fi
+
+if is-callable pgrep; then
+  if [[ -n "$_USER" ]]; then
+    pgrep -u "$_USER" -f "$REGEXP"
+  else
+    pgrep -f "$REGEXP"
+  fi
+elif is-callable ps; then
+  zmodload zsh/pcre
+
+  local PID __USER COMMAND ret=1
+
+  ps -Ao pid,user,command | (read COMMAND; <&0) | \
+    if [[ -n "$_USER" ]]; then
+      while read PID __USER COMMAND; do
+        if [[ "$__USER" == "$_USER" && "$COMMAND" -pcre-match "$REGEXP" ]]; then
+          ret=0
+          print "$PID"
+        fi
+      done
+    else
+      while read PID __USER COMMAND; do
+        if [[ "$COMMAND" -pcre-match "$REGEXP" ]]; then
+          ret=0
+          print "$PID"
+        fi
+      done
+    fi
+    return $ret
+else
+  warn "There are no pgrep or ps."
+  return 1
+fi
+
+# vim: ft=zsh sts=2 ts=2 sw=2 et fdm=marker fmr={{{,}}}
diff --git a/.zsh/zshenv.local b/.zsh/zshenv.local
new file mode 120000 (symlink)
index 0000000..a8ed0aa
--- /dev/null
@@ -0,0 +1 @@
+zshenv.local.sample
\ No newline at end of file
index b7e597c..28d1fd2 100644 (file)
@@ -116,6 +116,16 @@ zstyle ':ganneff:config' dirstackhandling dirpersist
 ## Want to see how long it (roughly) took to load?
 # zstyle ':ganneff:config' starttime false
 
+## Should we use lessfile or lesspipe (if installed)?
+## Difference is in the handling, see the manpages for details, but
+## one of them uses pipes and one files to hand their output to less.
+## Which results in one of them having you waiting until they are finished,
+## while the other shows you results fast - but then doesn't let less show
+## you how far (in %) you are in the output.
+## Defaults to lesspipe
+# zstyle ':ganneff:config' lesstool lesspipe
+
+
 ########################################################################
 ### Prompt setup                                                     ###
 ## use vcs_info in prompt