diff --git a/lib/completion.zsh b/lib/completion.zsh index 9c2dfec..e8e9776 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -4,6 +4,7 @@ unsetopt menu_complete # do not autoselect the first completion entry unsetopt flowcontrol setopt auto_menu # show completion menu on succesive tab press setopt complete_in_word +setopt complete_aliases setopt always_to_end WORDCHARS='' diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index e1e5366..2843eb0 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -6,8 +6,8 @@ function title { if [[ "$TERM" == "screen" ]]; then print -Pn "\ek$1\e\\" #set screen hardstatus, usually truncated at 20 chars elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then - print -Pn "\e]2;$2\a" #set window name print -Pn "\e]1;$1\a" #set icon (=tab) name (will override window name on broken terminal) + print -Pn "\e]2;$2\a" #set window name fi } diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh new file mode 100644 index 0000000..f8865a4 --- /dev/null +++ b/plugins/debian/debian.plugin.zsh @@ -0,0 +1,60 @@ +# https://github.com/dbbolton/ +# +# Debian-related zsh aliases and functions for zsh + + +# Aliases ################################################################### + +# Some self-explanatory aliases +alias afs='apt-file search --regexp' +alias aps='aptitude search' +alias apsrc='apt-get source' +alias apv='apt-cache policy' + +alias apdg='su -c "aptitude update && aptitude safe-upgrade"' +alias apud='su -c "aptitude update"' +alias apug='su -c "aptitude safe-upgrade"' + +# print all installed packages +alias allpkgs='aptitude search -F "%p" --disable-columns ~i' + +# Install all .deb files in the current directory. +# Warning: you will need to put the glob in single quotes if you use: +# glob_subst +alias di='su -c "dpkg -i ./*.deb"' + +# Create a basic .deb package +alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc' + +# Remove ALL kernel images and headers EXCEPT the one in use +alias kclean='su -c '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))'\'' root' + + + +# Functions ################################################################# + +# create a simple script that can be used to 'duplicate' a system +apt-copy() { + print '#!/bin/sh'"\n" > apt-copy.sh + + list=$(perl -m'AptPkg::Cache' -e '$c=AptPkg::Cache->new; for (keys %$c){ push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';} print "$_ " for sort @a;') + + print 'aptitude install '"$list\n" >> apt-copy.sh + + chmod +x apt-copy.sh +} + + +# Kernel-package building shortcut +dbb-build () { + MAKEFLAGS='' # temporarily unset MAKEFLAGS ( '-j3' will fail ) + appendage='-custom' # this shows up in $ (uname -r ) + revision=$(date +"%Y%m%d") # this shows up in the .deb file name + + make-kpkg clean + + time fakeroot make-kpkg --append-to-version "$appendage" --revision \ + "$revision" kernel_image kernel_headers +} + + diff --git a/plugins/macports/_port b/plugins/macports/_port new file mode 100644 index 0000000..06d7fb4 --- /dev/null +++ b/plugins/macports/_port @@ -0,0 +1,89 @@ +#compdef port + +local subcmds + +# we cache the list of ports +# we shall use some cache policy to avoid problems with new ports +if (( ! $+portlist )); then + portlist=($(port echo all; echo "all current active inactive installed uninstalled outdated")) +fi + +subcmds=( +'activate' +'archive' +'build' +'cat' +'clean' +'configure' +'contents' +'deactivate' +'dependents' +'deps' +'destroot' +'dir' +'distcheck' +'distclean' +'dmg' +'echo' +'edit' +'extract' +'fetch' +'file' +'help' +'info' +'install' +'installed' +'list' +'livecheck' +'location' +'mpkg' +'outdated' +'patch' +'pkg' +'provides' +'rpmpackage' +'search' +'selfupdate' +'sync' +'test' +'unarchive' +'uninstall' +'upgrade' +'variants' +'version' +) + +_arguments -C \ +'-v[verbose mode (generate verbose messages)]' \ +'-d[debug mode (generate debugging messages)]' \ +'-q[quiet mode (suppress messages)]' \ +'-D[specify portdir]' \ +'-k[keep mode (do not autoclean after install)]' \ +'-n[dont follow dependencies in upgrade (only for upgrading)]' \ +'-a[upgrade all installed ports (only for upgrading)]' \ +'-u[uninstall non-active ports when upgrading and uninstalling]' \ +'-f[force mode (ignore state file)]' \ +'-s[source-only mode]' \ +'-b[binary-only mode]' \ +'-o[honor state files older than Portfile]' \ +'*::command:->command' \ +&& return 0 + +case $state in + command) + if ((CURRENT == 1)); then + state=subcommands + else + state=portname + fi + ;; +esac + +case $state in + subcommands) + _describe -t commands 'port commands' subcmds + ;; + portname) + _describe -t commands 'available ports' portlist + ;; +esac diff --git a/plugins/macports/macports.plugin.zsh b/plugins/macports/macports.plugin.zsh index 9564829..cbbc492 100644 --- a/plugins/macports/macports.plugin.zsh +++ b/plugins/macports/macports.plugin.zsh @@ -5,3 +5,8 @@ alias psu="sudo port selfupdate" alias puni="sudo port uninstall inactive" alias puo="sudo port upgrade outdated" alias pup="psu && puo" + +# add macports completion function to path +fpath=($ZSH/plugins/macports $fpath) +autoload -U compinit +compinit -i diff --git a/plugins/perl/perl.plugin.zsh b/plugins/perl/perl.plugin.zsh new file mode 100644 index 0000000..f94c419 --- /dev/null +++ b/plugins/perl/perl.plugin.zsh @@ -0,0 +1,62 @@ +# https://github.com/dbbolton +# +# Below are some useful Perl-related aliases/functions that I use with zsh. + + +# Aliases ################################################################### + +# perlbrew ######## +alias pbi='perlbrew install' +alias pbl='perlbrew list' +alias pbo='perlbrew off' +alias pbs='perlbrew switch' +alias pbu='perlbrew use' + +# Perl ############ + +# perldoc` +alias pd='perldoc' + +# use perl like awk/sed +alias ple='perl -wlne' + +# show the latest stable release of Perl +alias latest-perl='curl -s http://www.perl.org/get.html | perl -wlne '\''if (/perl\-([\d\.]+)\.tar\.gz/) { print $1; exit;}'\' + + + +# Functions ################################################################# + +# newpl - creates a basic Perl script file and opens it with $EDITOR +newpl () { + # set $EDITOR to 'vim' if it is undefined + [[ -z $EDITOR ]] && EDITOR=vim + + # if the file exists, just open it + [[ -e $1 ]] && print "$1 exists; not modifying.\n" && $EDITOR $1 + + # if it doesn't, make it, and open it + [[ ! -e $1 ]] && print '#!/usr/bin/perl'"\n"'use strict;'"\n"'use warnings;'\ + "\n\n" > $1 && $EDITOR $1 +} + + +# pgs - Perl Global Substitution +# find pattern = 1st arg +# replace pattern = 2nd arg +# filename = 3rd arg +pgs() { # [find] [replace] [filename] + perl -i.orig -pe 's/'"$1"'/'"$2"'/g' "$3" +} + + +# Perl grep, because 'grep -P' is terrible. Lets you work with pipes or files. +prep() { # [pattern] [filename unless STDOUT] + perl -nle 'print if /'"$1"'/;' $2 +} + +# say - append a newline to 'print' +say() { + print "$1\n" +} + diff --git a/themes/tjkirch.zsh-theme b/themes/tjkirch.zsh-theme new file mode 100644 index 0000000..446cde7 --- /dev/null +++ b/themes/tjkirch.zsh-theme @@ -0,0 +1,15 @@ +ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[green]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}⚡" +ZSH_THEME_GIT_PROMPT_CLEAN="" + +function prompt_char { + if [ $UID -eq 0 ]; then echo "%{$fg[red]%}#%{$reset_color%}"; else echo $; fi +} + +PROMPT='%(?, ,%{$fg[red]%}FAIL: $?%{$reset_color%} +) +%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[yellow]%}%m%{$reset_color%}: %{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info) +%_$(prompt_char) ' + +RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}'