Script: prepend + zshcd let ranger start a shell in current dir

master
Pierre Neidhardt 2013-07-26 15:16:15 +02:00
parent 01bef24497
commit f73902496e
4 changed files with 66 additions and 7 deletions

View File

@ -150,4 +150,7 @@ map K move up=5
map J move down=5
## New tab in current folder. Use 'gn' for home folder.
map <c-n> eval fm.tab_new('%d')
map <c-n> eval fm.tab_new('%d')
## Start shell in current folder. Needs zshcd script.
map S shell zshcd %d

15
.scripts/prepend Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
if [ $# -eq 0 ] || [ "$1" = "-h" ]; then
cat <<EOF
Usage: ${0##*/} STRING FILES
Prepend STRING to FILES. STRING may not contain pipes ('|').
EOF
exit
fi
VAR="$1"
shift
sed -ni '1{s|^|'$VAR'\n|;h};1!H;${x;p}' "$@"

35
.scripts/zshcd Executable file
View File

@ -0,0 +1,35 @@
#!/bin/sh
## Start zsh in directory specified as first argument.
## Default files.
ZDIRS="$HOME/.cache/zsh/dirs"
SHELL_DIR="$HOME/.shell.d"
## Fetch file location dynamically.
if [ ! -f "$ZDIRS" ]; then
if [ ! -f ~/.zshrc ]; then
echo '~/.zshrc not found. Exiting.'
exit
fi
SHELL_DIR_GREP="$(grep "SHELL_DIR=" ~/.zshrc | cut -f2 -d=)"
[ -n "$SHELL_DIR_GREP" ] && SHELL_DIR="$(eval echo "$SHELL_DIR_GREP")"
ZDIRS_GREP="$(grep -rm1 'DIRSTACKFILE=' "$SHELL_DIR" | cut -f2 -d=)"
[ -n "$ZDIRS_GREP" ] && ZDIRS="$(eval echo "$ZDIRS_GREP")"
fi
if [ ! -f "$ZDIRS" ]; then
echo 'DIRSTACKFILE not found. Exiting.'
fi
if [ ! -d "$1" ]; then
zsh
else
if [ -n "$(grep "$1" "$ZCACHE")" ]; then
BUF="$(grep -v "$1" "$ZCACHE")"
echo "$BUF"
echo "$BUF" > "$ZCACHE"
fi
prepend "$1" "$ZCACHE"
zsh
fi

View File

@ -1,13 +1,16 @@
## -*- mode:sh -*- #
################################################################################
## Zsh specific options
## Date 2011-11-19
## Date 2013-07-26
################################################################################
ZCACHE=~/.cache/zsh/
[ ! -e "$ZCACHE" ] && mkdir -p "$ZCACHE"
##==============================================================================
## History options
##==============================================================================
HISTFILE=~/.zshistfile
HISTFILE="$ZCACHE/history"
HISTSIZE=1000
SAVEHIST=1000
setopt hist_ignore_all_dups
@ -35,14 +38,16 @@ unsetopt flowcontrol
## VCS
##==============================================================================
## TODO: to be continued...
# autoload -Uz vcs_info zstyle ':vcs_info:*' enable git hg svn
# autoload -Uz vcs_info zstyle ':vcs_info:*' enable git hg
# autoload -Uz vcs_info
##==============================================================================
## Directory stack
##==============================================================================
DIRSTACKFILE=~/.zdirs
## We use expanded path for DIRSTACKFILE since we need to locate it for the
## zshcd script.
DIRSTACKFILE="$HOME/.cache/zsh/dirs"
if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then
dirstack=( ${(f)"$(< $DIRSTACKFILE)"} )
[[ -d $dirstack[1] ]] && cd $dirstack[1]
@ -62,7 +67,7 @@ setopt pushdminus
##==============================================================================
## ???
##==============================================================================
zstyle :compinstall filename "$HOME/.zshrc"
# zstyle :compinstall filename "$HOME/.zshrc"
##==============================================================================
## Completion
@ -72,7 +77,8 @@ zstyle :compinstall filename "$HOME/.zshrc"
fpath=(~/.shell.d/completion $fpath)
autoload -Uz compinit
compinit
# compinit
compinit -d "$ZCACHE/compdump"
zstyle ':completion:*' menu select
zstyle ':completion:*:descriptions' format '%U%B%d%b%u'