From fdd864bd5b5444848c492454e025257f3c4fa675 Mon Sep 17 00:00:00 2001 From: Chris Wiggins Date: Mon, 17 Feb 2014 13:32:24 +1300 Subject: [PATCH 1/9] Update battery plugin to show calculating - OSX Instantly after removing the charger, I have found that the "AvgTimeToEmpty" value can swing to rediculous values. Apple's current claim is that the max battery life is 12 hours, so any value larger than this is considered a "time is being calculated" value. --- plugins/battery/battery.plugin.zsh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh index 16ad3e651..2c00ff141 100644 --- a/plugins/battery/battery.plugin.zsh +++ b/plugins/battery/battery.plugin.zsh @@ -30,7 +30,11 @@ if [[ $(uname) == "Darwin" ]] ; then local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') - echo "~$((timeremaining / 60)):$((timeremaining % 60))" + if [ $timeremaining -gt 720 ] ; then + echo "::" + else + echo "~$((timeremaining / 60)):$((timeremaining % 60))" + fi else echo "∞" fi From 840ae4382ec5b60f9a5f4ef500e40b7193c4ee87 Mon Sep 17 00:00:00 2001 From: Brandon Beacher Date: Wed, 19 Feb 2014 18:55:52 -0500 Subject: [PATCH 2/9] Remove mailcatcher from the bundler plugin. Recommended by @sj26 per https://github.com/sj26/mailcatcher#bundler. --- plugins/bundler/bundler.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh index 9dfed61a4..df30ed7c7 100644 --- a/plugins/bundler/bundler.plugin.zsh +++ b/plugins/bundler/bundler.plugin.zsh @@ -6,7 +6,7 @@ alias bu="bundle update" # The following is based on https://github.com/gma/bundler-exec -bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails puma) +bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife mailcatcher middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails puma) # Remove $UNBUNDLED_COMMANDS from the bundled_commands list for cmd in $UNBUNDLED_COMMANDS; do From 564a708d6af90b1bc5bf4d13e7ad80abca92ad74 Mon Sep 17 00:00:00 2001 From: Thiago Perrotta Date: Sun, 2 Mar 2014 14:47:35 -0300 Subject: [PATCH 3/9] added the linux implementation to the battery plugin --- plugins/battery/battery.plugin.zsh | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh index 16ad3e651..670c6a47d 100644 --- a/plugins/battery/battery.plugin.zsh +++ b/plugins/battery/battery.plugin.zsh @@ -58,9 +58,19 @@ if [[ $(uname) == "Darwin" ]] ; then elif [[ $(uname) == "Linux" ]] ; then + function battery_is_charging() { + ! [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] + } + + function battery_pct() { + echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" + } + function battery_pct_remaining() { - if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then - echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" + if [ ! $(battery_is_charging) ] ; then + battery_pct + else + echo "External Power" fi } @@ -86,15 +96,6 @@ elif [[ $(uname) == "Linux" ]] ; then fi } - function battery_pct() { - # todo for on linux - } - - function battery_is_charging() { - # todo on linux - false - } - else # Empty functions so we don't cause errors in prompts function battery_pct_remaining() { From c0b98cd6aca5b6148a5ee147b087772bfb9f5e21 Mon Sep 17 00:00:00 2001 From: Jeff Williams Date: Mon, 3 Mar 2014 10:18:10 -0500 Subject: [PATCH 4/9] Added dirhistory plugin. This plugin navigates directory history using ALT-LEFT and ALT-RIGHT. --- plugins/dirhistory/dirhistory.plugin.zsh | 132 +++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 plugins/dirhistory/dirhistory.plugin.zsh diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh new file mode 100644 index 000000000..504d7ec14 --- /dev/null +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -0,0 +1,132 @@ +## +# Navigate directory history using ALT-LEFT and ALT-RIGHT. ALT-LEFT moves back to directories +# that the user has changed to in the past, and ALT-RIGHT undoes ALT-LEFT. +# + +dirhistory_past=(`pwd`) +dirhistory_future=() +export dirhistory_past +export dirhistory_future + +export DIRHISTORY_SIZE=30 + +# Pop the last element of dirhistory_past. +# Pass the name of the variable to return the result in. +# Returns the element if the array was not empty, +# otherwise returns empty string. +function pop_past() { + eval "$1='$dirhistory_past[$#dirhistory_past]'" + if [[ $#dirhistory_past -gt 0 ]]; then + dirhistory_past[$#dirhistory_past]=() + fi +} + +function pop_future() { + eval "$1='$dirhistory_future[$#dirhistory_future]'" + if [[ $#dirhistory_future -gt 0 ]]; then + dirhistory_future[$#dirhistory_future]=() + fi +} + +# Push a new element onto the end of dirhistory_past. If the size of the array +# is >= DIRHISTORY_SIZE, the array is shifted +function push_past() { + if [[ $#dirhistory_past -ge $DIRHISTORY_SIZE ]]; then + shift dirhistory_past + fi + if [[ $#dirhistory_past -eq 0 || $dirhistory_past[$#dirhistory_past] != "$1" ]]; then + dirhistory_past+=($1) + fi +} + +function push_future() { + if [[ $#dirhistory_future -ge $DIRHISTORY_SIZE ]]; then + shift dirhistory_future + fi + if [[ $#dirhistory_future -eq 0 || $dirhistory_futuret[$#dirhistory_future] != "$1" ]]; then + dirhistory_future+=($1) + fi +} + +# Called by zsh when directory changes +function chpwd() { + push_past `pwd` + # If DIRHISTORY_CD is not set... + if [[ -z "${DIRHISTORY_CD+x}" ]]; then + # ... clear future. + dirhistory_future=() + fi +} + +function dirhistory_cd(){ + DIRHISTORY_CD="1" + cd $1 + unset DIRHISTORY_CD +} + +# Move backward in directory history +function dirhistory_back() { + local cw="" + local d="" + # Last element in dirhistory_past is the cwd. + + pop_past cw + if [[ "" == "$cw" ]]; then + # Someone overwrote our variable. Recover it. + dirhistory_past=(`pwd`) + return + fi + + pop_past d + if [[ "" != "$d" ]]; then + dirhistory_cd $d + push_future $cw + else + push_past $cw + fi +} + + +# Move forward in directory history +function dirhistory_forward() { + local d="" + + pop_future d + if [[ "" != "$d" ]]; then + dirhistory_cd $d + push_past $d + fi +} + + +# Bind keys to history navigation +function dirhistory_zle_dirhistory_back() { + # Erase current line in buffer + zle kill-buffer + dirhistory_back + zle accept-line +} + +function dirhistory_zle_dirhistory_future() { + # Erase current line in buffer + zle kill-buffer + dirhistory_forward + zle accept-line +} + +zle -N dirhistory_zle_dirhistory_back +# xterm in normal mode +bindkey "\e[3D" dirhistory_zle_dirhistory_back +bindkey "\e[1;3D" dirhistory_zle_dirhistory_back +# Putty: +bindkey "\e\e[D" dirhistory_zle_dirhistory_back +# GNU screen: +bindkey "\eO3D" dirhistory_zle_dirhistory_back + +zle -N dirhistory_zle_dirhistory_future +bindkey "\e[3C" dirhistory_zle_dirhistory_future +bindkey "\e[1;3C" dirhistory_zle_dirhistory_future +bindkey "\e\e[C" dirhistory_zle_dirhistory_future +bindkey "\eO3C" dirhistory_zle_dirhistory_future + + From ae2f6f34e3c3a335d6cb16df8ea88a709ef6b36b Mon Sep 17 00:00:00 2001 From: Josh Chih-Hsueh Huang Date: Tue, 11 Mar 2014 11:29:25 +0800 Subject: [PATCH 5/9] List pkgs by size --- plugins/debian/debian.plugin.zsh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index 1e15487ba..28dfb82a5 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -217,3 +217,11 @@ kerndeb () { "$revision" kernel_image kernel_headers } +# List packages by size +function apt-list-packages { + dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | \ + grep -v deinstall | \ + sort -n | \ + awk '{print $1" "$2}' +} + From 71d94206370c258383beddfa6d3122524c26d8e8 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Mon, 17 Dec 2012 12:22:33 +0100 Subject: [PATCH 6/9] Use zsh's default for ':completion:*:hosts' The manual configuration of ':completion:*:hosts' causes some problems (e.g. issue #1337), and misses useful information (especially from ~/.ssh/known_hosts; issue #690 and issue #1009). The best option appears to be using zsh's default configuration for ':completion:*:hosts'. While rebasing this for a new pull request (#1498 got closed by accident and then requests to re-open it got ignored), it also drops the `users off` setting: completion of user names can be useful, and the commit adding it (c4434d2) does not state why. --- lib/completion.zsh | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/lib/completion.zsh b/lib/completion.zsh index e0cdcf626..6e18e9c82 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -31,22 +31,6 @@ zstyle ':completion:*:*:*:*:processes' command "ps -u `whoami` -o pid,user,comm zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories cdpath=(.) -# use /etc/hosts and known_hosts for hostname completion -[ -r /etc/ssh/ssh_known_hosts ] && _global_ssh_hosts=(${${${${(f)"$( Date: Thu, 13 Mar 2014 14:44:58 -0400 Subject: [PATCH 7/9] ssh-agent: prevent environment file from flapping On an OS X laptop, the variable `$HOST` changes a lot depending on what wifi network you're connected to. This causes a lot of `~/.ssh/environment-$HOST` files to be created and causes multiple ssh-agents to created. Instead, use `scutil --get ComputerName` to get something more stable. --- plugins/ssh-agent/ssh-agent.plugin.zsh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index a1e64ad0f..2fb8d5462 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -27,7 +27,7 @@ # Florent Thoumie and Jonas Pfenniger # -local _plugin__ssh_env=$HOME/.ssh/environment-$HOST +local _plugin__ssh_env local _plugin__forwarding function _plugin__start_agent() @@ -42,12 +42,20 @@ function _plugin__start_agent() . ${_plugin__ssh_env} > /dev/null # load identies - zstyle -a :omz:plugins:ssh-agent identities identities + zstyle -a :omz:plugins:ssh-agent identities identities echo starting ssh-agent... /usr/bin/ssh-add $HOME/.ssh/${^identities} } +# Get the filename to store/lookup the environment from +if (( $+commands[scutil] )); then + # It's OS X! + _plugin__ssh_env="$HOME/.ssh/environment-$(scutil --get ComputerName)" +else + _plugin__ssh_env="$HOME/.ssh/environment-$HOST" +fi + # test if agent-forwarding is enabled zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then From 8f7971349b653706071bc41e2fdb953bb6f22678 Mon Sep 17 00:00:00 2001 From: Andrew vonderLuft Date: Fri, 7 Mar 2014 11:17:18 -0800 Subject: [PATCH 8/9] add option to show dirty status of current dir --- plugins/svn/svn.plugin.zsh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index 4f008ba4e..ef6da5bd3 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -9,7 +9,7 @@ function svn_prompt_info() { _DISPLAY=$(svn_get_repo_name) fi echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\ -$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR" +$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$(svn_dirty_pwd)$ZSH_PROMPT_BASE_COLOR" unset _DISPLAY fi } @@ -74,3 +74,22 @@ function svn_dirty_choose() { function svn_dirty() { svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN } + +function svn_dirty_choose_pwd () { + if in_svn; then + root=`pwd` + if $(svn status $root 2> /dev/null | grep -Eq '^\s*[ACDIM!?L]'); then + # Grep exits with 0 when "One or more lines were selected", return "dirty". + echo $1 + else + # Otherwise, no lines were found, or an error occurred. Return clean. + echo $2 + fi + fi +} + +function svn_dirty_pwd () { + svn_dirty_choose_pwd $ZSH_THEME_SVN_PROMPT_DIRTY_PWD $ZSH_THEME_SVN_PROMPT_CLEAN_PWD +} + + From b56e8fb47868f8433c7da809be3d4df833d9f59c Mon Sep 17 00:00:00 2001 From: Mariusz Fik Date: Sun, 16 Mar 2014 18:14:34 +0100 Subject: [PATCH 9/9] Ignore more users in ssh completion. Signed-off-by: Mariusz Fik --- lib/completion.zsh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/completion.zsh b/lib/completion.zsh index 6e18e9c82..c54249c52 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -37,13 +37,14 @@ zstyle ':completion::complete:*' cache-path $ZSH/cache/ # Don't complete uninteresting users zstyle ':completion:*:*:*:users' ignored-patterns \ - adm amanda apache avahi beaglidx bin cacti canna clamav daemon \ - dbus distcache dovecot fax ftp games gdm gkrellmd gopher \ - hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \ - mailman mailnull mldonkey mysql nagios \ - named netdump news nfsnobody nobody nscd ntp nut nx openvpn \ - operator pcap postfix postgres privoxy pulse pvm quagga radvd \ - rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs + adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \ + clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \ + gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \ + ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \ + named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \ + operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \ + rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \ + usbmux uucp vcsa wwwrun xfs # ... unless we really want to. zstyle '*' single-ignored show