]> git.madduck.net Git - etc/zsh.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

initial checkin
authormartin f. krafft <madduck@madduck.net>
Sun, 4 May 2008 23:08:54 +0000 (00:08 +0100)
committermartin f. krafft <madduck@madduck.net>
Sun, 4 May 2008 23:08:54 +0000 (00:08 +0100)
25 files changed:
.zsh/.zlogin [new symlink]
.zsh/.zlogout [new symlink]
.zsh/.zprofile [new symlink]
.zsh/.zshenv [new symlink]
.zsh/.zshrc [new symlink]
.zsh/header [new file with mode: 0644]
.zsh/logging [new file with mode: 0644]
.zsh/rcsstub [new file with mode: 0644]
.zsh/sourcedir [new file with mode: 0644]
.zsh/util [new file with mode: 0644]
.zsh/xterm-title [new file with mode: 0644]
.zsh/zlogout/90_sudo [new file with mode: 0644]
.zsh/zprofile/00_nocores [new file with mode: 0644]
.zsh/zshenv/00_fpath [new file with mode: 0644]
.zsh/zshenv/00_rdirs [new file with mode: 0644]
.zsh/zshrc/00_TODO [new file with mode: 0644]
.zsh/zshrc/00_autoload [new file with mode: 0644]
.zsh/zshrc/25_tempfiles [new file with mode: 0644]
.zsh/zshrc/30_aliases [new file with mode: 0644]
.zsh/zshrc/90_bindkeys [new file with mode: 0644]
.zsh/zshrc/90_compctl [new file with mode: 0644]
.zsh/zshrc/90_history [new file with mode: 0644]
.zsh/zshrc/90_prompt [new file with mode: 0644]
.zsh/zshrc/99_fortune [new file with mode: 0644]
.zshenv [new file with mode: 0644]

diff --git a/.zsh/.zlogin b/.zsh/.zlogin
new file mode 120000 (symlink)
index 0000000..8eae6ef
--- /dev/null
@@ -0,0 +1 @@
+rcsstub
\ No newline at end of file
diff --git a/.zsh/.zlogout b/.zsh/.zlogout
new file mode 120000 (symlink)
index 0000000..8eae6ef
--- /dev/null
@@ -0,0 +1 @@
+rcsstub
\ No newline at end of file
diff --git a/.zsh/.zprofile b/.zsh/.zprofile
new file mode 120000 (symlink)
index 0000000..8eae6ef
--- /dev/null
@@ -0,0 +1 @@
+rcsstub
\ No newline at end of file
diff --git a/.zsh/.zshenv b/.zsh/.zshenv
new file mode 120000 (symlink)
index 0000000..8eae6ef
--- /dev/null
@@ -0,0 +1 @@
+rcsstub
\ No newline at end of file
diff --git a/.zsh/.zshrc b/.zsh/.zshrc
new file mode 120000 (symlink)
index 0000000..8eae6ef
--- /dev/null
@@ -0,0 +1 @@
+rcsstub
\ No newline at end of file
diff --git a/.zsh/header b/.zsh/header
new file mode 100644 (file)
index 0000000..74219d0
--- /dev/null
@@ -0,0 +1,11 @@
+# 
+#
+#
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+
diff --git a/.zsh/logging b/.zsh/logging
new file mode 100644 (file)
index 0000000..2cdf7d8
--- /dev/null
@@ -0,0 +1,39 @@
+# logging
+#
+# Logging abilities for the shell initialisation scripts
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+__log() {
+  local level; level="$1"; shift
+  echo "${level}: $@" >&2
+}
+__do_debug() {
+  [ -n "${ZDEBUG:-}" ]
+}
+error() {
+  [[ -o xtrace ]] && set +x && local __XTRACE=1
+  __log E "$@" 
+  [ "${__XTRACE:-}" ] && set -x
+}
+warn() {
+  [[ -o xtrace ]] && set +x && local __XTRACE=1
+  __log W "$@" 
+  [ "${__XTRACE:-}" ] && set -x
+}
+info() {
+  [[ -o xtrace ]] && set +x && local __XTRACE=1
+  __log I "$@" 
+  [ "${__XTRACE:-}" ] && set -x
+}
+debug() {
+  [[ -o xtrace ]] && set +x && local __XTRACE=1
+  __do_debug && __log D "$@" 
+  [ "${__XTRACE:-}" ] && set -x
+}
+
+# vim:ft=zsh
diff --git a/.zsh/rcsstub b/.zsh/rcsstub
new file mode 100644 (file)
index 0000000..b7c3f83
--- /dev/null
@@ -0,0 +1,24 @@
+# .zshenv
+#
+# Actual .zshenv file
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+. $ZDOTDIR/logging
+. $ZDOTDIR/util
+
+if [[ -o rcs ]]; then
+  __do_debug && set -x
+
+  file="$(print -P %1N)"
+  . $ZDOTDIR/sourcedir
+  sourcedir $ZDOTDIR/${file#.}
+
+  __do_debug && set +x
+fi
+
+# vim:ft=zsh
diff --git a/.zsh/sourcedir b/.zsh/sourcedir
new file mode 100644 (file)
index 0000000..582f255
--- /dev/null
@@ -0,0 +1,28 @@
+# sourcedir
+#
+# Defines helper function to source files in a directory
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+. $ZDOTDIR/logging
+
+sourcedir() {
+  if [ ! -d "$1" ]; then
+    error "no such directory: ${1#$ZDOTDIR/}"
+    return 1
+  fi
+  debug "sourcing directory ${1#$ZDOTDIR/}"
+  for f in "$1"/*(.); do
+    case "$f" in
+      *~|*.bak|*.sw?|*.zwc|*.disabled) continue;;
+    esac
+    debug "  sourcing file $f"
+    . "$f"
+  done
+}
+
+# vim:ft=zsh
diff --git a/.zsh/util b/.zsh/util
new file mode 100644 (file)
index 0000000..6c8970a
--- /dev/null
+++ b/.zsh/util
@@ -0,0 +1,15 @@
+# util
+#
+# Miscellaneous utility functions
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+is_root() {
+  test ${EUID:?} -eq 0
+}
+
+# vim:ft=zsh
diff --git a/.zsh/xterm-title b/.zsh/xterm-title
new file mode 100644 (file)
index 0000000..07755a6
--- /dev/null
@@ -0,0 +1,69 @@
+# zterm-title
+#
+# Fancy setting of the xterm title
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+# Based on http://www.zshwiki.org/cgi-bin/wiki.pl?ZshHardStatus
+#
+
+__set_xterm_title() {
+  case $TERM in
+    screen)
+      print -nR $'\033k'$1$'\033'\\ 
+      print -nR $'\033]0;'$2$'\a'
+      ;;
+    xterm|rxvt*)
+      print -nR $'\033]0;'$*$'\a'
+      ;;
+  esac
+}
+
+__get_session_flags() {
+    local flags; flags=
+    [ -n "$DISPLAY" ] && flags="${flags}x"
+    [ -n "$SSH_AUTH_SOCK" ] && flags="${flags}a"
+    [ -n "$flags" ] && echo "[${flags}]"
+}
+
+__get_standard_prompt() {
+  print -P "%m%# %25\<..\<%~ $(__get_session_flags)"
+}
+
+set_plain_xterm_title() {
+  __set_xterm_title "$(__get_standard_prompt)"
+}
+
+set_cmd_xterm_title () {
+    local -a cmd; cmd=(${(z)1})             # Re-parse the command line
+
+    # Construct a command that will output the desired job number.
+    case $cmd[1] in
+        fg) if (( $#cmd == 1 )); then
+                # No arguments, must find the current job
+                cmd=(builtin jobs -l %+)
+            else
+                # Replace the command name, ignore extra args.
+                cmd=(builtin jobs -l ${(Q)cmd[2]})
+            fi;;
+        %*) cmd=(builtin jobs -l ${(Q)cmd[1]});; # Same as "else" above
+        *) # Not resuming a job,
+            __set_xterm_title $cmd[1]:t${cmd[2]:+ }$cmd[2,-1] "| $(__get_standard_prompt)"
+            return;;                        # so we're all done
+    esac
+
+    local -A jt; jt=(${(kv)jobtexts})       # Copy jobtexts for subshell
+
+    # Run the command, read its output, and look up the jobtext.
+    # Could parse $rest here, but $jobtexts (via $jt) is easier.
+    $cmd >>(
+              read num rest
+              cmd=(${(z)${(e):-\$jt$num}})
+              __set_xterm_title $leader$cmd[1]:t${cmd[2]:+ }$cmd[2,-1] "| $(__get_standard_prompt)"
+           )
+}
+
+# vim:ft=zsh
diff --git a/.zsh/zlogout/90_sudo b/.zsh/zlogout/90_sudo
new file mode 100644 (file)
index 0000000..175677d
--- /dev/null
@@ -0,0 +1,13 @@
+# zlogout/90_sudo
+#
+# Invalidates any existing sudo sessions
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+sudo -K 2>/dev/null || :
+
+# vim:ft=zsh
diff --git a/.zsh/zprofile/00_nocores b/.zsh/zprofile/00_nocores
new file mode 100644 (file)
index 0000000..d295464
--- /dev/null
@@ -0,0 +1,13 @@
+# zprofile/00_nocores
+#
+# Turns of core file generation
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+ulimit -c 0
+
+# vim:ft=zsh
diff --git a/.zsh/zshenv/00_fpath b/.zsh/zshenv/00_fpath
new file mode 100644 (file)
index 0000000..d977983
--- /dev/null
@@ -0,0 +1,13 @@
+# zshenv/00_fpath
+#
+# Adds local functions directory to $fpath
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+FPATH="$ZDOTDIR/func:$FPATH"
+
+# vim:ft=zsh
diff --git a/.zsh/zshenv/00_rdirs b/.zsh/zshenv/00_rdirs
new file mode 100644 (file)
index 0000000..062c011
--- /dev/null
@@ -0,0 +1,17 @@
+# zshenv/00_rdirs
+#
+# Assigns paths to related directories to a number of variables 
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+export VAR_RELATIVE=.var
+export VAR=$HOME/$VAR_RELATIVE
+export ZVAR=$VAR/zsh
+export BIN_RELATIVE=.bin
+export BIN=$HOME/$BIN_RELATIVE
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/00_TODO b/.zsh/zshrc/00_TODO
new file mode 100644 (file)
index 0000000..577cd67
--- /dev/null
@@ -0,0 +1,51 @@
+# zshrc/00_TODO
+#
+# All kinds of stuff not yet split to other files
+# TEMPORARY
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+ldir() { eval $1="$PWD" ; : ~$1 }
+
+alias Q='exec zsh'
+alias ozsh='ZDOTDIR=$HOME/.etc/zsh exec zsh'
+
+# correct all arguments
+setopt correctall
+
+# do not clobber files with >
+setopt noclobber
+
+# automatically maintain a directory stack
+setopt autopushd pushdminus pushdsilent pushdtohome
+
+# brace expansion
+setopt braceccl
+
+# commands that take commands as arguments
+compctl -c man nohup strace gdb
+
+# automatically remove duplicates from these arrays
+typeset -gU path cdpath fpath manpath
+
+# http://xanana.ucsc.edu/~wgscott/wordpress_new/wordpress/?p=12
+typeset -ga preexec_functions
+typeset -ga precmd_functions
+typeset -ga chpwd_functions
+
+. $ZDOTDIR/xterm-title
+
+precmd_functions+=set_plain_xterm_title
+preexec_functions+=set_cmd_xterm_title
+
+[ "$(umask)" = 022 ] && umask 0077
+
+eval `lesspipe 2>/dev/null`
+
+:
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/00_autoload b/.zsh/zshrc/00_autoload
new file mode 100644 (file)
index 0000000..6098311
--- /dev/null
@@ -0,0 +1,15 @@
+# zshrc/00_autoload
+#
+# Autoload available functions
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+# for p ($fpath) for fn ($p/**) autoload ${fn##*/}
+autoload $^fpath/*(.xN:t)
+autoload zargs
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/25_tempfiles b/.zsh/zshrc/25_tempfiles
new file mode 100644 (file)
index 0000000..1c1d551
--- /dev/null
@@ -0,0 +1,23 @@
+# zshrc/25_tempfiles
+#
+# Helper functions to create temporary files and directories
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+cdt () {
+  cd $(mktemp -td cdt.XXXXXXXX)
+  pwd
+}
+
+vit () {
+  local tmpfile=$(mktemp -t vit.XXXXXXXX)
+  [ "$1" = '-' ] && cat >| $tmpfile
+  sensible-editor $tmpfile </dev/tty >/dev/tty
+  echo $tmpfile
+}
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/30_aliases b/.zsh/zshrc/30_aliases
new file mode 100644 (file)
index 0000000..7d78a1a
--- /dev/null
@@ -0,0 +1,25 @@
+# zshrc/30_aliases
+#
+# Defines command shortcuts
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+alias mv='nocorrect mv'       # no spelling correction on mv
+alias cp='nocorrect cp'       # no spelling correction on cp
+alias mkdir='nocorrect mkdir' # no spelling correction on mkdir
+alias find='noglob find'      # no globbing for find
+
+alias grep=egrep
+
+alias ls='ls --color=auto'
+alias ll='ls -l'
+alias la='ls -a'
+alias lla='ls -la'
+# List only directories and symbolic links that point to directories
+alias lsd='ls -ld *(-/DN)'
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/90_bindkeys b/.zsh/zshrc/90_bindkeys
new file mode 100644 (file)
index 0000000..4c5ed7a
--- /dev/null
@@ -0,0 +1,15 @@
+# zshrc/90_bindkeys
+#
+# Defines key bindings
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+bindkey -e
+# history expansion on pressing space
+bindkey ' ' magic-space
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/90_compctl b/.zsh/zshrc/90_compctl
new file mode 100644 (file)
index 0000000..cfdbed8
--- /dev/null
@@ -0,0 +1,14 @@
+# zshrc/90_compctl
+#
+# Configures the completions system
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+# make tab completion work the way i like it
+setopt autolist automenu recexact alwaystoend
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/90_history b/.zsh/zshrc/90_history
new file mode 100644 (file)
index 0000000..b4e49c6
--- /dev/null
@@ -0,0 +1,40 @@
+# zshrc/90_history
+#
+# Set up command line history functions
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+DEFAULT_HISTFILE=$ZVAR/history
+HISTFILE=$DEFAULT_HISTFILE
+HISTSIZE=10000
+SAVEHIST=$HISTSIZE
+
+# do not treat ! specially like csh did
+setopt no_bang_hist
+
+# ignore duplicates in the history
+setopt hist_ignore_dups
+
+# save timestamp and duration with each event
+setopt extended_history
+
+# properly lock the file on write
+setopt hist_fcntl_lock
+
+# skip over non-contiguous duplicates when searching history
+setopt hist_find_no_dups
+
+# don't store commands starting with a space in the history file
+setopt hist_ignore_space
+
+# don't store history/fc -l invocations
+setopt hist_no_store
+
+# remove superfluous blanks from each command line
+setopt hist_reduce_blanks
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/90_prompt b/.zsh/zshrc/90_prompt
new file mode 100644 (file)
index 0000000..0abe132
--- /dev/null
@@ -0,0 +1,16 @@
+# zshrc/90_prompt
+#
+# Formats the shell prompt
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+is_root && PS1_HL=U
+PS1="%${PS1_HL:=B}%m%${(L)PS1_HL}:%25<..<%~%# "
+unset PS1_HL
+RPS1="#[%(0?..%?,)%!]%v"
+
+# vim:ft=zsh
diff --git a/.zsh/zshrc/99_fortune b/.zsh/zshrc/99_fortune
new file mode 100644 (file)
index 0000000..3e1fc2b
--- /dev/null
@@ -0,0 +1,13 @@
+# zshrc/99_fortune
+#
+# Prints a fortune cookie to each interactive shell
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+fortune 2>/dev/null || :
+
+# vim:ft=zsh
diff --git a/.zshenv b/.zshenv
new file mode 100644 (file)
index 0000000..3a9c4b9
--- /dev/null
+++ b/.zshenv
@@ -0,0 +1,12 @@
+# .zshenv
+#
+# Base zshenv file which simply delegates to files in $ZDOTDIR
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: http://git.madduck.net/v/etc/zsh.git
+#
+
+ZDOTDIR=$HOME/.zsh
+[ -f $ZDOTDIR/.zshenv ] && . $ZDOTDIR/.zshenv