# check for version/system
# check for versions (compatibility reasons)
-is4(){
+function is4 () {
[[ $ZSH_VERSION == <4->* ]] && return 0
return 1
}
-is41(){
+function is41 () {
[[ $ZSH_VERSION == 4.<1->* || $ZSH_VERSION == <5->* ]] && return 0
return 1
}
-is42(){
+function is42 () {
[[ $ZSH_VERSION == 4.<2->* || $ZSH_VERSION == <5->* ]] && return 0
return 1
}
-is425(){
+function is425 () {
[[ $ZSH_VERSION == 4.2.<5->* || $ZSH_VERSION == 4.<3->* || $ZSH_VERSION == <5->* ]] && return 0
return 1
}
-is43(){
+function is43 () {
[[ $ZSH_VERSION == 4.<3->* || $ZSH_VERSION == <5->* ]] && return 0
return 1
}
-is433(){
+function is433 () {
[[ $ZSH_VERSION == 4.3.<3->* || $ZSH_VERSION == 4.<4->* \
|| $ZSH_VERSION == <5->* ]] && return 0
return 1
}
-is437(){
+function is437 () {
[[ $ZSH_VERSION == 4.3.<7->* || $ZSH_VERSION == 4.<4->* \
|| $ZSH_VERSION == <5->* ]] && return 0
return 1
}
-is439(){
+function is439 () {
[[ $ZSH_VERSION == 4.3.<9->* || $ZSH_VERSION == 4.<4->* \
|| $ZSH_VERSION == <5->* ]] && return 0
return 1
}
#f1# Checks whether or not you're running grml
-isgrml(){
+function isgrml () {
[[ -f /etc/grml_version ]] && return 0
return 1
}
#f1# Checks whether or not you're running a grml cd
-isgrmlcd(){
+function isgrmlcd () {
[[ -f /etc/grml_cd ]] && return 0
return 1
}
if isgrml ; then
#f1# Checks whether or not you're running grml-small
- isgrmlsmall() {
+ function isgrmlsmall () {
if [[ ${${${(f)"$(</etc/grml_version)"}%% *}##*-} == 'small' ]]; then
return 0
fi
return 1
}
else
- isgrmlsmall() { return 1 }
+ function isgrmlsmall () { return 1 }
fi
GRML_OSTYPE=$(uname -s)
-islinux(){
+function islinux () {
[[ $GRML_OSTYPE == "Linux" ]]
}
-isdarwin(){
+function isdarwin () {
[[ $GRML_OSTYPE == "Darwin" ]]
}
-isfreebsd(){
+function isfreebsd () {
[[ $GRML_OSTYPE == "FreeBSD" ]]
}
-isopenbsd(){
+function isopenbsd () {
[[ $GRML_OSTYPE == "OpenBSD" ]]
}
-issolaris(){
+function issolaris () {
[[ $GRML_OSTYPE == "SunOS" ]]
}
#f1# are we running within an utf environment?
-isutfenv() {
+function isutfenv () {
case "$LANG $CHARSET $LANGUAGE" in
*utf*) return 0 ;;
*UTF*) return 0 ;;
# change directory to home on first invocation of zsh
# important for rungetty -> autologin
# Thanks go to Bart Schaefer!
-isgrml && checkhome() {
+isgrml && function checkhome () {
if [[ -z "$ALREADY_DID_CD_HOME" ]] ; then
export ALREADY_DID_CD_HOME=$HOME
cd
printf '-!- Ye been warned!\n'
printf '-!-\n'
- function zstyle() { : }
+ function zstyle () { : }
fi
# autoload wrapper - use this one instead of autoload directly
# We need to define this function as early as this, because autoloading
# 'is-at-least()' needs it.
-function zrcautoload() {
+function zrcautoload () {
emulate -L zsh
setopt extended_glob
local fdir ffile
# with just a few adjustments in coding style to make the function look more
# compact. This definition can be removed as soon as we raise the minimum
# version requirement to 4.3.7 or newer.
-function add-zsh-hook() {
+function add-zsh-hook () {
# Add to HOOK the given FUNCTION.
# HOOK is one of chpwd, precmd, preexec, periodic, zshaddhistory,
# zshexit, zsh_directory_name (the _functions subscript is not required).
# Load is-at-least() for more precise version checks Note that this test will
# *always* fail, if the is-at-least function could not be marked for
# autoloading.
-zrcautoload is-at-least || is-at-least() { return 1 }
+zrcautoload is-at-least || function is-at-least () { return 1 }
# set some important options (as early as possible)
# Usage: check_com [-c|-g] word
# -c only checks for external commands
# -g does the usual tests and also checks for global aliases
-check_com() {
+function check_com () {
emulate -L zsh
local -i comonly gatoo
comonly=0
# creates an alias and precedes the command with
# sudo if $EUID is not zero.
-salias() {
+function salias () {
emulate -L zsh
local only=0 ; local multi=0
local key val
}
# Check if we can read given files and source those we can.
-xsource() {
+function xsource () {
if (( ${#argv} < 1 )) ; then
printf 'usage: xsource FILE(s)...\n' >&2
return 1
}
# Check if we can read a given file and 'cat(1)' it.
-xcat() {
+function xcat () {
emulate -L zsh
if (( ${#argv} != 1 )) ; then
printf 'usage: xcat FILE\n' >&2
# Remove these functions again, they are of use only in these
# setup files. This should be called at the end of .zshrc.
-xunfunction() {
+function xunfunction () {
emulate -L zsh
local -a funcs
local func
# this allows us to stay in sync with grml's zshrc and put own
# modifications in ~/.zshrc.local
-zrclocal() {
+function zrclocal () {
xsource "/etc/zsh/zshrc.local"
xsource "${ZDOTDIR:-${HOME}}/.zshrc.local"
return 0
# load our function and completion directories
for fdir in /usr/share/grml/zsh/completion /usr/share/grml/zsh/functions; do
fpath=( ${fdir} ${fdir}/**/*(/N) ${fpath} )
- if [[ ${fdir} == '/usr/share/grml/zsh/functions' ]] ; then
- for func in ${fdir}/**/[^_]*[^~](N.) ; do
- zrcautoload ${func:t}
- done
- fi
done
-unset fdir func
+typeset -aU ffiles
+ffiles=(/usr/share/grml/zsh/functions/**/[^_]*[^~](N.:t))
+(( ${#ffiles} > 0 )) && autoload -U "${ffiles[@]}"
+unset -v fdir ffiles
# support colors in less
export LESS_TERMCAP_mb=$'\E[01;31m'
watch=(notme root)
# automatically remove duplicates from these arrays
-typeset -U path cdpath fpath manpath
+typeset -U path PATH cdpath CDPATH fpath FPATH manpath MANPATH
# Load a few modules
is4 && \
# called later (via is4 && grmlcomp)
# note: use 'zstyle' for getting current settings
# press ^xh (control-x h) for getting tags in context; ^x? (control-x ?) to run complete_debug with trace output
-grmlcomp() {
+function grmlcomp () {
# TODO: This could use some additional information
# Make sure the completion system is initialised
zstyle ':completion:*' special-dirs ..
# run rehash on completion so new installed program are found automatically:
- _force_rehash() {
+ function _force_rehash () {
(( CURRENT == 1 )) && rehash
return 1
}
## beginning-of-line OR beginning-of-buffer OR beginning of history
## by: Bart Schaefer <schaefer@brasslantern.com>, Bernhard Tittelbach
-beginning-or-end-of-somewhere() {
+function beginning-or-end-of-somewhere () {
local hno=$HISTNO
if [[ ( "${LBUFFER[-1]}" == $'\n' && "${WIDGET}" == beginning-of* ) || \
( "${RBUFFER[1]}" == $'\n' && "${WIDGET}" == end-of* ) ]]; then
zle -N end-of-somewhere beginning-or-end-of-somewhere
# add a command line to the shells history without executing it
-commit-to-history() {
+function commit-to-history () {
print -s ${(z)BUFFER}
zle send-break
}
zle -N commit-to-history
# only slash should be considered as a word separator:
-slash-backward-kill-word() {
+function slash-backward-kill-word () {
local WORDCHARS="${WORDCHARS:s@/@}"
# zle backward-word
zle backward-kill-word
# find the first word on the command line in the $command[] hash.
zstyle ':acceptline:*' rehash true
-function Accept-Line() {
+function Accept-Line () {
setopt localoptions noksharrays
local -a subs
local -xi aldone
done
}
-function Accept-Line-getdefault() {
+function Accept-Line-getdefault () {
emulate -L zsh
local default_action
esac
}
-function Accept-Line-HandleContext() {
+function Accept-Line-HandleContext () {
zle Accept-Line
default_action=$(Accept-Line-getdefault)
&& zle ${default_action}
}
-function accept-line() {
+function accept-line () {
setopt localoptions noksharrays
local -a cmdline
local -x alcontext
'co' './configure && make && sudo make install'
)
-zleiab() {
+function zleiab () {
emulate -L zsh
setopt extendedglob
local MATCH
zle -N zleiab
-help-show-abk()
-{
+function help-show-abk () {
zle -M "$(print "Available abbreviations for expansion:"; print -a -C 2 ${(kv)abk})"
}
zle -N help-show-abk
# press "ctrl-e d" to insert the actual date in the form yyyy-mm-dd
-insert-datestamp() { LBUFFER+=${(%):-'%D{%Y-%m-%d}'}; }
+function insert-datestamp () { LBUFFER+=${(%):-'%D{%Y-%m-%d}'}; }
zle -N insert-datestamp
# press esc-m for inserting last typed word again (thanks to caphuso!)
-insert-last-typed-word() { zle insert-last-word -- 0 -1 };
+function insert-last-typed-word () { zle insert-last-word -- 0 -1 };
zle -N insert-last-typed-word;
-function grml-zsh-fg() {
+function grml-zsh-fg () {
if (( ${#jobstates} )); then
zle .push-input
[[ -o hist_ignore_space ]] && BUFFER=' ' || BUFFER=''
zle -N grml-zsh-fg
# run command line as user root via sudo:
-sudo-command-line() {
+function sudo-command-line () {
[[ -z $BUFFER ]] && zle up-history
if [[ $BUFFER != sudo\ * ]]; then
BUFFER="sudo $BUFFER"
### jump behind the first word on the cmdline.
### useful to add options.
-function jump_after_first_word() {
+function jump_after_first_word () {
local words
words=(${(z)BUFFER})
zle -N jump_after_first_word
#f5# Create directory under cursor or the selected area
-inplaceMkDirs() {
+function inplaceMkDirs () {
# Press ctrl-xM to create the directory under the cursor or the selected area.
# To select an area press ctrl-@ or ctrl-space and use the cursor.
# Use case: you type "mv abc ~/testa/testb/testc/" and remember that the
#v1# set location of help-zle cache file
HELP_ZLE_CACHE_FILE=~/.cache/zsh_help_zle_lines.zsh
# helper function for help-zle, actually generates the help text
-help_zle_parse_keybindings()
-{
+function help_zle_parse_keybindings () {
emulate -L zsh
setopt extendedglob
unsetopt ksharrays #indexing starts at 1
typeset -g -a help_zle_lines
# Provides (partially autogenerated) help on keybindings and the zsh line editor
-help-zle()
-{
+function help-zle () {
emulate -L zsh
unsetopt ksharrays #indexing starts at 1
#help lines already generated ? no ? then do it
## complete word from currently visible Screen or Tmux buffer.
if check_com -c screen || check_com -c tmux; then
- _complete_screen_display() {
+ function _complete_screen_display () {
[[ "$TERM" != "screen" ]] && return 1
local TMPFILE=$(mktemp)
# Load a few more functions and tie them to widgets, so they can be bound:
-function zrcautozle() {
+function zrcautozle () {
emulate -L zsh
local fnc=$1
zrcautoload $fnc && zle -N $fnc
}
-function zrcgotwidget() {
+function zrcgotwidget () {
(( ${+widgets[$1]} ))
}
-function zrcgotkeymap() {
+function zrcgotkeymap () {
[[ -n ${(M)keymaps:#$1} ]]
}
# An array to note missing features to ease diagnosis in case of problems.
typeset -ga grml_missing_features
-function zrcbindkey() {
+function zrcbindkey () {
if (( ARGC )) && zrcgotwidget ${argv[-1]}; then
bindkey "$@"
fi
#m# k ESC-h Call \kbd{run-help} for the 1st word on the command line
alias run-help >&/dev/null && unalias run-help
-for rh in run-help{,-git,-svk,-svn}; do
+for rh in run-help{,-git,-ip,-openssl,-p4,-sudo,-svk,-svn}; do
zrcautoload $rh
done; unset rh
# command not found handling
(( ${COMMAND_NOT_FOUND} == 1 )) &&
-function command_not_found_handler() {
+function command_not_found_handler () {
emulate -L zsh
if [[ -x ${GRML_ZSH_CNF_HANDLER} ]] ; then
${GRML_ZSH_CNF_HANDLER} $1
if zstyle -T ':grml:chpwd:dirstack' enable; then
typeset -gaU GRML_PERSISTENT_DIRSTACK
- function grml_dirstack_filter() {
+ function grml_dirstack_filter () {
local -a exclude
local filter entry
if zstyle -s ':grml:chpwd:dirstack' filter filter; then
return 1
}
- chpwd() {
+ function chpwd () {
(( ZSH_SUBSHELL )) && return
(( $DIRSTACKSIZE <= 0 )) && return
[[ -z $DIRSTACKFILE ]] && return
# chpwd_profiles
#
# For details see the `grmlzshrc.5' manual page.
-function chpwd_profiles() {
+function chpwd_profiles () {
local profile context
local -i reexecute
# display battery status on right side of prompt using 'GRML_DISPLAY_BATTERY=1' in .zshrc.pre
-battery() {
+function battery () {
if [[ $GRML_DISPLAY_BATTERY -gt 0 ]] ; then
if islinux ; then
batterylinux
fi
}
-batterylinux(){
+function batterylinux () {
GRML_BATTERY_LEVEL=''
local batteries bat capacity
batteries=( /sys/class/power_supply/BAT*(N) )
if (( $#batteries > 0 )) ; then
for bat in $batteries ; do
- capacity=$(< $bat/capacity)
+ if [[ -e $bat/capacity ]]; then
+ capacity=$(< $bat/capacity)
+ else
+ typeset -F energy_full=$(< $bat/energy_full)
+ typeset -F energy_now=$(< $bat/energy_now)
+ typeset -i capacity=$(( 100 * $energy_now / $energy_full))
+ fi
case $(< $bat/status) in
Charging)
GRML_BATTERY_LEVEL+=" ^"
fi
}
-batteryopenbsd(){
+function batteryopenbsd () {
GRML_BATTERY_LEVEL=''
local bat batfull batwarn batnow num
for num in 0 1 ; do
done
}
-batteryfreebsd(){
+function batteryfreebsd () {
GRML_BATTERY_LEVEL=''
local num
local -A table
done
}
-batterydarwin(){
+function batterydarwin () {
GRML_BATTERY_LEVEL=''
local -a table
table=( ${$(pmset -g ps)[(w)7,8]%%(\%|);} )
typeset GRML_VCS_COLOUR_MODE=xxx
-grml_vcs_info_toggle_colour () {
+function grml_vcs_info_toggle_colour () {
emulate -L zsh
if [[ $GRML_VCS_COLOUR_MODE == plain ]]; then
grml_vcs_info_set_formats coloured
return 0
}
-grml_vcs_info_set_formats () {
+function grml_vcs_info_set_formats () {
emulate -L zsh
#setopt localoptions xtrace
local mode=$1 AF F BF
fi
}
-grml_prompt_fallback() {
+function grml_prompt_fallback () {
setopt prompt_subst
local p0 p1
else
print 'Notice: no promptinit available :('
grml_prompt_fallback
- precmd() { (( ${+functions[vcs_info]} )) && vcs_info; }
+ function precmd () { (( ${+functions[vcs_info]} )) && vcs_info; }
fi
if is437; then
fi
else
grml_prompt_fallback
- precmd() { (( ${+functions[vcs_info]} )) && vcs_info; }
+ function precmd () { (( ${+functions[vcs_info]} )) && vcs_info; }
fi
# Terminal-title wizardry
# make sure it is not assigned yet
[[ -n ${aliases[utf2iso]} ]] && unalias utf2iso
-utf2iso() {
+function utf2iso () {
if isutfenv ; then
local ENV
for ENV in $(env | command grep -i '.utf') ; do
# make sure it is not assigned yet
[[ -n ${aliases[iso2utf]} ]] && unalias iso2utf
-iso2utf() {
+function iso2utf () {
if ! isutfenv ; then
local ENV
for ENV in $(env | command grep -i '\.iso') ; do
# especially for roadwarriors using GNU screen and ssh:
if ! check_com asc &>/dev/null ; then
- asc() { autossh -t "$@" 'screen -RdU' }
+ function asc () { autossh -t "$@" 'screen -RdU' }
compdef asc=ssh
fi
#f1# Hints for the use of zsh on grml
-zsh-help() {
+function zsh-help () {
print "$bg[white]$fg[black]
zsh-help - hints for use of zsh on grml
=======================================$reset_color"
alias acsh='apt-cache show'
#a3# Execute \kbd{apt-cache policy}
alias acp='apt-cache policy'
- #a3# Execute \kbd{apt-get dist-upgrade}
- salias adg="apt-get dist-upgrade"
- #a3# Execute \kbd{apt-get install}
- salias agi="apt-get install"
+ if check_com -c apt ; then
+ #a3# Execute \kbd{apt dist-upgrade}
+ salias adg="apt dist-upgrade"
+ #a3# Execute \kbd{apt upgrade}
+ salias ag="apt upgrade"
+ #a3# Execute \kbd{apt install}
+ salias agi="apt install"
+ #a3# Execute \kbd{apt-get update}
+ salias au="apt update"
+ else
+ salias adg="apt-get dist-upgrade"
+ salias ag="apt-get upgrade"
+ salias agi="apt-get install"
+ salias au="apt-get update"
+ fi
#a3# Execute \kbd{aptitude install}
salias ati="aptitude install"
- #a3# Execute \kbd{apt-get upgrade}
- salias ag="apt-get upgrade"
- #a3# Execute \kbd{apt-get update}
- salias au="apt-get update"
#a3# Execute \kbd{aptitude update ; aptitude safe-upgrade}
salias -a up="aptitude update ; aptitude safe-upgrade"
#a3# Execute \kbd{dpkg-buildpackage}
# if cdrecord is a symlink (to wodim) or isn't present at all warn:
if [[ -L /usr/bin/cdrecord ]] || ! check_com -c cdrecord; then
if check_com -c wodim; then
- cdrecord() {
+ function cdrecord () {
<<__EOF0__
cdrecord is not provided under its original name by Debian anymore.
See #377109 in the BTS of Debian for more details.
fi
# grmlstuff
-grmlstuff() {
+function grmlstuff () {
# people should use 'grml-x'!
if check_com -c 915resolution; then
- 855resolution() {
+ function 855resolution () {
echo "Please use 915resolution as resolution modifying tool for Intel \
graphic chipset."
return -1
alias grml-version='cat /etc/grml_version'
if check_com -c grml-debootstrap ; then
- debian2hd() {
+ function debian2hd () {
echo "Installing debian to harddisk is possible by using grml-debootstrap."
return 1
}
# This lists all the files in the current directory newer than the reference file.
# You can also specify the reference file inline; note quotes:
# $ ls -l *(e:'nt ~/.zshenv':)
-is4 && nt() {
+is4 && function nt () {
if [[ -n $1 ]] ; then
local NTREF=${~1}
fi
# shell functions
#f1# Reload an autoloadable function
-freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
+function freload () { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
compdef _functions freload
#
# 2 symlink loop detected
#
#f1# List symlinks in detail (more detailed version of 'readlink -f', 'whence -s' and 'namei -l')
-sll() {
+function sll () {
if [[ -z ${1} ]] ; then
printf 'Usage: %s <symlink(s)>\n' "${0}"
return 1
fi
local file jumpd curdir
- local -i RTN LINODE i
- local -a SEENINODES
+ local -i 10 RTN LINODE i
+ local -a SEENINODES
curdir="${PWD}"
RTN=0
LINODE=$(zstat -L +inode "${file}")
for i in ${SEENINODES} ; do
if (( ${i} == ${LINODE} )) ; then
- builtin cd "${curdir}"
- print "link loop detected, aborting!"
+ builtin cd -q "${curdir}"
+ print 'link loop detected, aborting!'
return 2
fi
done
file="${file:t}"
if [[ -d ${jumpd} ]] ; then
- builtin cd "${jumpd}" || RTN=1
+ builtin cd -q "${jumpd}" || RTN=1
fi
file=$(readlink "$file")
file="${file:t}"
if [[ -d ${jumpd} ]] ; then
- builtin cd "${jumpd}" || RTN=1
+ builtin cd -q "${jumpd}" || RTN=1
fi
ls -l "${PWD}/${file}" || RTN=1
if (( ${#} >= 1 )) ; then
print ""
fi
- builtin cd "${curdir}"
+ builtin cd -q "${curdir}"
done
return ${RTN}
}
# with respect to wordsplitting. (ie. ${=PAGER})
if check_com -c $PAGER ; then
#f3# View Debian's changelog of given package(s)
- dchange() {
+ function dchange () {
emulate -L zsh
[[ -z "$1" ]] && printf 'Usage: %s <package_name(s)>\n' "$0" && return 1
fi
done
}
- _dchange() { _files -W /usr/share/doc -/ }
+ function _dchange () { _files -W /usr/share/doc -/ }
compdef _dchange dchange
#f3# View Debian's NEWS of a given package
- dnews() {
+ function dnews () {
emulate -L zsh
if [[ -r /usr/share/doc/$1/NEWS.Debian.gz ]] ; then
$PAGER /usr/share/doc/$1/NEWS.Debian.gz
fi
fi
}
- _dnews() { _files -W /usr/share/doc -/ }
+ function _dnews () { _files -W /usr/share/doc -/ }
compdef _dnews dnews
#f3# View Debian's copyright of a given package
- dcopyright() {
+ function dcopyright () {
emulate -L zsh
if [[ -r /usr/share/doc/$1/copyright ]] ; then
$PAGER /usr/share/doc/$1/copyright
return 1
fi
}
- _dcopyright() { _files -W /usr/share/doc -/ }
+ function _dcopyright () { _files -W /usr/share/doc -/ }
compdef _dcopyright dcopyright
#f3# View upstream's changelog of a given package
- uchange() {
+ function uchange () {
emulate -L zsh
if [[ -r /usr/share/doc/$1/changelog.gz ]] ; then
$PAGER /usr/share/doc/$1/changelog.gz
return 1
fi
}
- _uchange() { _files -W /usr/share/doc -/ }
+ function _uchange () { _files -W /usr/share/doc -/ }
compdef _uchange uchange
fi
# zsh profiling
-profile() {
+function profile () {
ZSH_PROFILE_RC=1 zsh "$@"
}
#f1# Edit an alias via zle
-edalias() {
+function edalias () {
[[ -z "$1" ]] && { echo "Usage: edalias <alias_to_edit>" ; return 1 } || vared aliases'[$1]' ;
}
compdef _aliases edalias
#f1# Edit a function via zle
-edfunc() {
+function edfunc () {
[[ -z "$1" ]] && { echo "Usage: edfunc <function_to_edit>" ; return 1 } || zed -f "$1" ;
}
compdef _functions edfunc
#m# f6 Force-Reload() \kbd{service \em{process}}\quad\kbd{force-reload}
#m# f6 Status() \kbd{service \em{process}}\quad\kbd{status}
if [[ -d /etc/init.d || -d /etc/service ]] ; then
- __start_stop() {
+ function __start_stop () {
local action_="${1:l}" # e.g Start/Stop/Restart
local service_="$2"
local param_="$3"
fi
}
- _grmlinitd() {
+ function _grmlinitd () {
local -a scripts
scripts=( /etc/init.d/*(x:t) )
_describe "service startup script" scripts
}
for i in Start Restart Stop Force-Reload Reload Status ; do
- eval "$i() { __start_stop $i \"\$1\" \"\$2\" ; }"
+ eval "function $i () { __start_stop $i \"\$1\" \"\$2\" ; }"
compdef _grmlinitd $i
done
builtin unset -v i
fi
#f1# Provides useful information on globbing
-H-Glob() {
+function H-Glob () {
echo -e "
/ directories
. plain files
alias help-zshglob=H-Glob
# grep for running process, like: 'any vim'
-any() {
+function any () {
emulate -L zsh
unsetopt KSH_ARRAYS
if [[ -z "$1" ]] ; then
# After resuming from suspend, system is paging heavily, leading to very bad interactivity.
# taken from $LINUX-KERNELSOURCE/Documentation/power/swsusp.txt
[[ -r /proc/1/maps ]] && \
-deswap() {
+function deswap () {
print 'Reading /proc/[0-9]*/maps and sending output to /dev/null, this might take a while.'
cat $(sed -ne 's:.* /:/:p' /proc/[0-9]*/maps | sort -u | grep -v '^/dev/') > /dev/null
print 'Finished, running "swapoff -a; swapon -a" may also be useful.'
# This will cause vim to send every file given on the
# commandline to be send to it's own tab (needs vim7).
if check_com vim; then
- vim() {
+ function vim () {
VIM_PLEASE_SET_TITLE='yes' command vim ${VIM_OPTIONS} "$@"
}
fi
}'
done; unset sh
-ssl-cert-fingerprints() {
+function ssl-cert-fingerprints () {
emulate -L zsh
local i
if [[ -z $1 ]] ; then
done
}
-ssl-cert-info() {
+function ssl-cert-info () {
emulate -L zsh
if [[ -z $1 ]] ; then
printf 'usage: ssl-cert-info <file>\n'
}
# make sure our environment is clean regarding colors
-for var in BLUE RED GREEN CYAN YELLOW MAGENTA WHITE ; unset $var
-builtin unset -v var
+builtin unset -v BLUE RED GREEN CYAN YELLOW MAGENTA WHITE NO_COLOR
# "persistent history"
-# just write important commands you always need to ~/.important_commands
+# just write important commands you always need to $GRML_IMPORTANT_COMMANDS
+# defaults for backward compatibility to ~/.important_commands
if [[ -r ~/.important_commands ]] ; then
- fc -R ~/.important_commands
+ GRML_IMPORTANT_COMMANDS=~/.important_commands
+else
+ GRML_IMPORTANT_COMMANDS=${GRML_IMPORTANT_COMMANDS:-${ZDOTDIR:-${HOME}}/.important_commands}
fi
+[[ -r ${GRML_IMPORTANT_COMMANDS} ]] && builtin fc -R ${GRML_IMPORTANT_COMMANDS}
# load the lookup subsystem if it's available on the system
zrcautoload lookupinit && lookupinit
# useful functions
#f5# Backup \kbd{file_or_folder {\rm to} file_or_folder\_timestamp}
-bk() {
+function bk () {
emulate -L zsh
local current_date=$(date -u "+%Y-%m-%dT%H:%M:%SZ")
local clean keep move verbose result all to_bk
}
#f5# cd to directoy and list files
-cl() {
+function cl () {
emulate -L zsh
cd $1 && ls -a
}
# smart cd function, allows switching to /etc when running 'cd /etc/fstab'
-cd() {
+function cd () {
if (( ${#argv} == 1 )) && [[ -f ${1} ]]; then
[[ ! -e ${1:h} ]] && return 1
print "Correcting ${1} to ${1:h}"
}
#f5# Create Directoy and \kbd{cd} to it
-mkcd() {
+function mkcd () {
if (( ARGC != 1 )); then
printf 'usage: mkcd <new-directory>\n'
return 1;
}
#f5# Create temporary directory and \kbd{cd} to it
-cdt() {
+function cdt () {
builtin cd "$(mktemp -d)"
builtin pwd
}
#f5# List files which have been accessed within the last {\it n} days, {\it n} defaults to 1
-accessed() {
+function accessed () {
emulate -L zsh
print -l -- *(a-${1:-1})
}
#f5# List files which have been changed within the last {\it n} days, {\it n} defaults to 1
-changed() {
+function changed () {
emulate -L zsh
print -l -- *(c-${1:-1})
}
#f5# List files which have been modified within the last {\it n} days, {\it n} defaults to 1
-modified() {
+function modified () {
emulate -L zsh
print -l -- *(m-${1:-1})
}
# $ awk -F ':' '{ print $2" : "$1" "$3 }' \
# /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok
#f5# Translates a word
-trans() {
+function trans () {
emulate -L zsh
case "$1" in
-[dD]*)
# Usage: simple-extract <file>
# Using option -d deletes the original archive file.
#f5# Smart archive extractor
-simple-extract() {
+function simple-extract () {
emulate -L zsh
setopt extended_glob noclobber
local ARCHIVE DELETE_ORIGINAL DECOMP_CMD USES_STDIN USES_STDOUT GZTARGET WGET_CMD
return $RC
}
-__archive_or_uri()
-{
+function __archive_or_uri () {
_alternative \
'files:Archives:_files -g "*.(#l)(tar.bz2|tbz2|tbz|tar.gz|tgz|tar.xz|txz|tar.lzma|tar|rar|lzh|7z|zip|jar|deb|bz2|gz|Z|xz|lzma)"' \
'_urls:Remote Archives:_urls'
}
-_simple_extract()
-{
+function _simple_extract () {
_arguments \
'-d[delete original archivefile after extraction]' \
'*:Archive Or Uri:__archive_or_uri'
[[ -n "$GRML_NO_SMALL_ALIASES" ]] || alias se=simple-extract
#f5# Change the xterm title from within GNU-screen
-xtrename() {
+function xtrename () {
emulate -L zsh
if [[ $1 != "-f" ]] ; then
if [[ -z ${DISPLAY} ]] ; then
# Create small urls via http://goo.gl using curl(1).
# API reference: https://code.google.com/apis/urlshortener/
-function zurl() {
+function zurl () {
emulate -L zsh
setopt extended_glob
}
#f2# Find history events by search pattern and list them by date.
-whatwhen() {
+function whatwhen () {
emulate -L zsh
local usage help ident format_l format_s first_char remain first last
usage='USAGE: whatwhen [options] <searchstring> <search range>'
# gnu like diff for mercurial
# http://www.selenic.com/mercurial/wiki/index.cgi/TipsAndTricks
#f5# GNU like diff for mercurial
- hgdi() {
+ function hgdi () {
emulate -L zsh
local i
for i in $(hg status -marn "$@") ; diff -ubwd <(hg cat "$i") "$i"
# hgstat => display diffstat between last revision and tip
# hgstat 1234 => display diffstat between revision 1234 and tip
#f5# Diffstat for specific version of a mercurial repos
- hgstat() {
+ function hgstat () {
emulate -L zsh
[[ -n "$1" ]] && hg diff -r $1 -r tip | diffstat || hg export tip | diffstat
}