zshrc.d/30-functions.zrc
author Mikael Berthe <mikael@lilotux.net>
Sat, 14 Jul 2012 19:20:57 +0200
changeset 0 7215ca490221
child 5 5dbc9ebf690c
permissions -rw-r--r--
Re-import repository after cleanup from personal stuff (see description) I've remove too dirty or specific stuff, so that i could put this configuration on a public repo. Here's a copy of the initial Mercurial changelog, FWIW... * (2012-07-14) Mikael Berthe Reorganize all scripts * (2012-07-14) Mikael Berthe Add a "tools" directory * (2012-07-14) Mikael Berthe Don't use ^X^C as a keybinding * (2012-07-14) Mikael Berthe Disable ... completion for now * (2012-07-14) Mikael Berthe Add rehash key binding * (2012-07-14) Mikael Berthe Add n fix a few key bindings * (2012-07-14) Mikael Berthe More cleanup Remove zshrc_compinstall Move personnal stuff to zshrc_local * (2012-07-14) Mikael Berthe New commands: ...* Previous commands .. and ... have been renamed to ,, and ,,, * (2012-07-14) Mikael Berthe Add WATCHFMT, move REPORTTIME to zshenv * (2012-07-14) Mikael Berthe Add REPORTTIME * (2012-07-13) Mikael Berthe Add a few useful functions Ideas borrowed from https://github.com/whiteinge/dotfiles/blob/master/.zshrc * (2012-07-13) Mikael Berthe Move aliases to a new file * (2012-07-13) Mikael Berthe Check for zshrc_local existence * (2012-07-13) Mikael Berthe Cleanup vcsinfo prompt * (2012-07-12) Mikael Berthe Colorize time in default color prompt as well * (2012-07-12) Mikael Berthe Prompt: colorize time * (2012-07-12) Mikael Berthe Add a copy of git-prompt.sh * (2012-07-12) Mikael Berthe Update prompt themes Since we do not display the mode on the first line, let's use this place for the date/time. * (2012-07-12) Mikael Berthe Update prompts / new showmode * (2012-07-12) Mikael Berthe More showmode cleanup, part2 * (2012-07-12) Mikael Berthe Switch showmode to using RPROMPT, part1 * (2012-07-12) Mikael Berthe Prompt: many improvements and fixes * (2012-07-11) Mikael Berthe More prompt code cleanup * (2012-07-11) Mikael Berthe More readable prompt generation * (2012-07-11) Mikael Berthe Dynamic path color * (2012-07-11) Mikael Berthe New prompt based on Zsh' vcs_info module * (2012-07-10) Mikael Berthe Add git info, add a light dev2 prompt * (2012-07-10) Mikael Berthe Dev prompt: Improve Mercurial repository detection * (2012-07-08) Mikael Berthe hg prompt: Change color of unapplied patches * (2012-07-08) Mikael Berthe Change Mercurial prompt format * (2012-07-08) Mikael Berthe Try to improve showmode support. Enable it for 256 color terms. * (2012-07-08) Mikael Berthe Fix interaction between showmode and the new "dev" prompt When showmode is disabled (e.g. in screen), do not display the mode in PS1. * (2012-07-08) Mikael Berthe Add development prompt (HG and minimal git support) Can be set up from the shell command line with "prompt_set_dev". * (2012-07-08) Mikael Berthe Ignore Vim swap files * (2009-12-22) Mikael Berthe Slight update zlog{in,out} * (2009-12-22) Mikael Berthe Add zlogin * (2009-12-22) Mikael Berthe Update hgignore list * (2009-12-22) Mikael Berthe Initial import into Mercurial
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
#############
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
# Functions #
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
#############
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
# Commande tres pratique pour formatter un fichier .man
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
# exemple : mf prog.1
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
function mf() { tbl $* | nroff -mandoc | less -s }
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
# ,,(), ,,,() for quickly changing $CWD {{{1
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
# http://www.shell-fu.org/lister.php?id=769
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
# Go up n levels:
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
# ,, 3
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
function ,, (){
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
    local arg=${1:-1};
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
    local dir=""
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
    while [ $arg -gt 0 ]; do
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
        dir="../$dir"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
        arg=$(($arg - 1));
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
    done
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
    cd $dir >&/dev/null
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
}
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    25
# Go up to a named dir
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    26
# ,,, usr
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    27
function ,,, (){
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
    if [ -z "$1" ]; then
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
        return
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
    fi
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
    local maxlvl=16
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
    local dir=$1
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
    while [ $maxlvl -gt 0 ]; do
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
        dir="../$dir"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
        maxlvl=$(($maxlvl - 1));
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
        if [ -d "$dir" ]; then
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
            cd $dir >&/dev/null
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
        fi
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
    done
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
}
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
# Customized version from Frank Terbeck' scripts
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    44
# http://bewatermyfriend.org/p/2011/013/
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    45
# "."   will display the current working directory
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
# ".."  will get you 1 directory up,
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
# "..." will get you 2 directories up, etc.
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
function ft_accept_line_cd_up() {
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
    setopt local_options extended_glob
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
    local -a cmdline
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
    cmdline=( ${(z)BUFFER} )
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
    if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == "." ]] ; then
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
        BUFFER="pwd"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
        zle ".$WIDGET"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
        return
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
    fi
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    57
    if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == ..## ]] ; then
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    58
        BUFFER='cd '
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    59
        for (( i = 2; i <= ${#${cmdline[1]}}; i++ )); do
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
            BUFFER="${BUFFER}../"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    61
        done
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
        BUFFER=${BUFFER%/}
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
    fi
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    64
    zle ".$WIDGET"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    65
}
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
zle -N accept-line ft_accept_line_cd_up
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    68
# 2nd part, completion support...
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    69
function ft_complete_with_dots() {
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    70
    setopt local_options extended_glob
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    71
    local -a cmdline
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    72
    cmdline=( ${(z)BUFFER} )
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    73
    if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == ..## ]] ; then
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    74
        BUFFER='cd '
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
        for (( i = 2; i <= ${#${cmdline[1]}}; i++ )); do
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    76
            BUFFER="${BUFFER}../"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    77
        done
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    78
        CURSOR=${#BUFFER}
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    79
    fi
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    80
    zle ".$WIDGET"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    81
}
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    82
# Disabling for now as I don't know how to fallback to automatic correction...
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    83
#zle -N expand-or-complete ft_complete_with_dots
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    84
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    85
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
# genpass()
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    87
# Generates a tough password of a given length
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    88
# Borrowed (and slightly modifed) from Seth House github repository.
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    89
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    90
function genpass() {
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    91
    if [ ! "$1" ]; then
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    92
        echo "Usage: $0 20"
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    93
        echo "For a random, 20-character password."
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    94
        return 1
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    95
    fi
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    96
    dd if=/dev/urandom count=1 2>/dev/null | tr -cd 'A-Za-z0-9' | cut -c-$1
7215ca490221 Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    97
}