Merge branch 'master' of git.epichack.com:barak/dotfiles
This commit is contained in:
commit
750300d11d
24 changed files with 1140 additions and 39 deletions
|
|
@ -10,30 +10,30 @@
|
|||
#alias dir='ls --color=auto --format=vertical'
|
||||
#alias vdir='ls --color=auto --format=long'
|
||||
|
||||
case `uname` in
|
||||
Linux)
|
||||
if [ "$TERM" != "dumb" ]; then
|
||||
eval "`dircolors -b`"
|
||||
fi
|
||||
alias ls='ls -F --color=auto'
|
||||
alias open='xdg-open'
|
||||
;;
|
||||
Darwin)
|
||||
alias ls='ls -FG'
|
||||
;;
|
||||
FreeBSD)
|
||||
alias ls='ls -FG'
|
||||
;;
|
||||
SunOS)
|
||||
alias ls='ls -F'
|
||||
;;
|
||||
*)
|
||||
if [ "$TERM" != "dumb" ]; then
|
||||
eval "`dircolors -b`"
|
||||
fi
|
||||
alias ls='ls --color=auto'
|
||||
;;
|
||||
esac
|
||||
#case `uname` in
|
||||
#Linux)
|
||||
#if [ "$TERM" != "dumb" ]; then
|
||||
#eval "`dircolors -b`"
|
||||
#fi
|
||||
#alias ls='ls -F --color=auto'
|
||||
#alias open='xdg-open'
|
||||
#;;
|
||||
#Darwin)
|
||||
#alias ls='ls -FG'
|
||||
#;;
|
||||
#FreeBSD)
|
||||
#alias ls='ls -FG'
|
||||
#;;
|
||||
#SunOS)
|
||||
#alias ls='ls -F'
|
||||
#;;
|
||||
#*)
|
||||
#if [ "$TERM" != "dumb" ]; then
|
||||
#eval "`dircolors -b`"
|
||||
#fi
|
||||
#alias ls='ls --color=auto'
|
||||
#;;
|
||||
#esac
|
||||
|
||||
|
||||
|
||||
|
|
@ -45,6 +45,7 @@ alias la='ls -alF'
|
|||
#alias l='ls -CF'
|
||||
|
||||
alias :e='vim'
|
||||
alias t='task'
|
||||
alias vi='vim'
|
||||
alias em='emacs'
|
||||
alias grep="grep --color=auto"
|
||||
|
|
@ -52,7 +53,7 @@ alias grep="grep --color=auto"
|
|||
alias dvtm="dvtm -m \"^w\""
|
||||
alias tm="tmux -2 attach"
|
||||
alias ppjson="python -mjson.tool"
|
||||
alias tmux-pwn='tmux list-clients | sed "s|^\(/dev/ttys[0-9]\+\).*\[\([0-9]\+x[0-9]\+\).*$|\2 \1|" | sort -r -n | tail -n +2 | cut -d " " -f 2 | xargs -n 1 tmux detach-client -t'
|
||||
#alias tmux-pwn='tmux list-clients | sed "s|^\(/dev/ttys[0-9]\+\).*\[\([0-9]\+x[0-9]\+\).*$|\2 \1|" | sort -r -n | tail -n +2 | cut -d " " -f 2 | xargs -n 1 tmux detach-client -t'
|
||||
|
||||
#Cosmetic/useful
|
||||
#alias naim="naim --noscreen"
|
||||
|
|
|
|||
7
.bashrc
7
.bashrc
|
|
@ -99,6 +99,13 @@ if [ -f ~/.bash_aliases ]; then
|
|||
. ~/.bash_aliases
|
||||
fi
|
||||
|
||||
fasd_cache="$HOME/.fasd-init-bash"
|
||||
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
|
||||
fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install >| "$fasd_cache"
|
||||
fi
|
||||
source "$fasd_cache"
|
||||
unset fasd_cache
|
||||
|
||||
# enable color support of ls and also add handy aliases
|
||||
#if [ "$TERM" != "dumb" ]; then
|
||||
# eval "`dircolors -b`"
|
||||
|
|
|
|||
|
|
@ -156,7 +156,6 @@ function (widget, args)
|
|||
return args[2]
|
||||
end , 120, "BAT0")
|
||||
|
||||
|
||||
-- Register CPU widget
|
||||
vicious.register(cpuwidget, vicious.widgets.cpu,
|
||||
function (widget, args)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
set PATH ~/bin /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin /usr/sbin ~/.cabal/bin /usr/lib/go/bin ~/.gem/ruby/1.9.1/bin $PATH
|
||||
|
||||
set fish_greeting ""
|
||||
|
||||
. ~/.bash_aliases
|
||||
|
|
|
|||
9
.gitmodules
vendored
9
.gitmodules
vendored
|
|
@ -10,9 +10,6 @@
|
|||
[submodule ".vim/bundle/NrrwRgn"]
|
||||
path = .vim/bundle/NrrwRgn
|
||||
url = git://github.com/chrisbra/NrrwRgn.git
|
||||
[submodule ".vim/bundle/sparkup"]
|
||||
path = .vim/bundle/sparkup
|
||||
url = git://github.com/rstacruz/sparkup.git
|
||||
[submodule ".vim/bundle/ack.vim"]
|
||||
path = .vim/bundle/ack.vim
|
||||
url = git://github.com/mileszs/ack.vim.git
|
||||
|
|
@ -64,3 +61,9 @@
|
|||
[submodule ".vim/bundle/vim-angry"]
|
||||
path = .vim/bundle/vim-angry
|
||||
url = https://github.com/b4winckler/vim-angry.git
|
||||
[submodule ".vim/bundle/YouCompleteMe"]
|
||||
path = .vim/bundle/YouCompleteMe
|
||||
url = https://github.com/Valloric/YouCompleteMe.git
|
||||
[submodule ".vim/bundle/vim-sparkup"]
|
||||
path = .vim/bundle/vim-sparkup
|
||||
url = git://github.com/tristen/vim-sparkup.git
|
||||
|
|
|
|||
29
.taskrc
Normal file
29
.taskrc
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# [Created by task 2.2.0 5/9/2013 17:01:23]
|
||||
# Taskwarrior program configuration file.
|
||||
# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-faq',
|
||||
# 'man task-tutorial', 'man task-color', 'man task-sync' or 'man taskrc'
|
||||
|
||||
# Here is an example of entries that use the default, override and blank values
|
||||
# variable=foo -- By specifying a value, this overrides the default
|
||||
# variable= -- By specifying no value, this means no default
|
||||
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
|
||||
|
||||
# Use the command 'task show' to see all defaults and overrides
|
||||
|
||||
# Files
|
||||
data.location=~/.task
|
||||
pull.default.uri=barak@miranda.barakmich.com:/fs/home/barak/.task
|
||||
push.default.uri=barak@miranda.barakmich.com:/fs/home/barak/.task
|
||||
|
||||
# Color theme (uncomment one to use)
|
||||
#include /usr/share/doc/task/rc/light-16.theme
|
||||
#include /usr/share/doc/task/rc/light-256.theme
|
||||
#include /usr/share/doc/task/rc/dark-16.theme
|
||||
#include /usr/share/doc/task/rc/dark-256.theme
|
||||
#include /usr/share/doc/task/rc/dark-red-256.theme
|
||||
#include /usr/share/doc/task/rc/dark-green-256.theme
|
||||
#include /usr/share/doc/task/rc/dark-blue-256.theme
|
||||
#include /usr/share/doc/task/rc/dark-violets-256.theme
|
||||
#include /usr/share/doc/task/rc/dark-yellow-green.theme
|
||||
#include /usr/share/doc/task/rc/dark-gray-256.theme
|
||||
|
||||
1
.vim/bundle/YouCompleteMe
Submodule
1
.vim/bundle/YouCompleteMe
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 0c19ee4fa78f69b4591fe107c104b07174cd661c
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 34883e28bbc021eae07d85f259150c4d5797457e
|
||||
Subproject commit 195fbd1d31d0bab944b0b92fb7ffa83fb50c4524
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit eaf19734e73dbaa5b30f10591079043b0eba0aab
|
||||
Subproject commit 448ad6f1bce0308329ccb020b51710227108b578
|
||||
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 5041a10515c98f69dd510b0486983eee1fa1697e
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 6f214cbb6d42256031aaa9670cf9ea7358e18431
|
||||
Subproject commit 7f0412e91dd6e2b48cbe8ae54bddcfeca0c127c1
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 4c7e649efba289df0e7e8bb9abfa37f95b28f8ed
|
||||
Subproject commit 54ead5abcbfdd776e1160b5510a129884c39f29c
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 935184bd1806e37c1e3319c7f7f3ae94ef5a5313
|
||||
Subproject commit ff031d022f2123353bc93a3aa97290287c10a287
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 00219a9f6f55394664abaeaad89de05fd5eaa7bc
|
||||
Subproject commit 679469ed357e141b8b028e1a0c0a12752704fd7a
|
||||
1
.vim/bundle/vim-sparkup
Submodule
1
.vim/bundle/vim-sparkup
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit b5e9269136ae8dc7d6fbd5ed8777cbcd8cc22fbf
|
||||
10
.vimrc
10
.vimrc
|
|
@ -162,7 +162,12 @@ let g:ConqueTerm_CWInsert = 1
|
|||
let g:ConqueTerm_InsertOnEnter = 0
|
||||
let g:ConqueTerm_SendVisKey = '<Leader>ss'
|
||||
|
||||
" * MiniBufExplorer
|
||||
" * YouCompleteMe
|
||||
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
|
||||
let g:ycm_confirm_extra_conf = 0
|
||||
"let g:ycm_add_preview_to_completeopt = 1
|
||||
|
||||
" * MinBufExplorer
|
||||
"let g:miniBufExplMapWindowNavVim = 1
|
||||
"let g:miniBufExplMapWindowNavArrows = 1
|
||||
"let g:miniBufExplMapCTabSwitchBufs = 1
|
||||
|
|
@ -180,7 +185,8 @@ let g:CommandTMaxDepth = 7
|
|||
" let g:org_todo_setup='TODO | DONE'
|
||||
" while g:org_tag_setup is itself a string
|
||||
"let g:org_tag_setup='{@home(h) @work(w) @tennisclub(t)} \n {easy(e) hard(d)} \n {computer(c) phone(p)}'
|
||||
|
||||
au! BufRead,BufWrite,BufWritePost,BufNewFile *.org
|
||||
au BufEnter *.org call org#SetOrgFileType()
|
||||
|
||||
|
||||
" ** STATUSLINE **
|
||||
|
|
|
|||
120
.ycm_extra_conf.py
Normal file
120
.ycm_extra_conf.py
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
import os
|
||||
import ycm_core
|
||||
from clang_helpers import PrepareClangFlags
|
||||
|
||||
# These are the compilation flags that will be used in case there's no
|
||||
# compilation database set (by default, one is not set).
|
||||
# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
|
||||
flags = [
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Werror',
|
||||
'-Wc++98-compat',
|
||||
'-Wno-long-long',
|
||||
'-Wno-variadic-macros',
|
||||
'-fexceptions',
|
||||
'-DNDEBUG',
|
||||
'-DUSE_CLANG_COMPLETER',
|
||||
# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
|
||||
# language to use when compiling headers. So it will guess. Badly. So C++
|
||||
# headers will be compiled as C headers. You don't want that so ALWAYS specify
|
||||
# a "-std=<something>".
|
||||
# For a C project, you would set this to something like 'c99' instead of
|
||||
# 'c++11'.
|
||||
'-std=c++11',
|
||||
# ...and the same thing goes for the magic -x option which specifies the
|
||||
# language that the files to be compiled are written in. This is mostly
|
||||
# relevant for c++ headers.
|
||||
# For a C project, you would set this to 'c' instead of 'c++'.
|
||||
'-x',
|
||||
'c++',
|
||||
'-isystem',
|
||||
'../BoostParts',
|
||||
'-isystem',
|
||||
# This path will only work on OS X, but extra paths that don't exist are not
|
||||
# harmful
|
||||
'/System/Library/Frameworks/Python.framework/Headers',
|
||||
'-isystem',
|
||||
'../llvm/include',
|
||||
'-isystem',
|
||||
'../llvm/tools/clang/include',
|
||||
'-I',
|
||||
'.',
|
||||
'-I',
|
||||
'./ClangCompleter',
|
||||
'-isystem',
|
||||
'./tests/gmock/gtest',
|
||||
'-isystem',
|
||||
'./tests/gmock/gtest/include',
|
||||
'-isystem',
|
||||
'./tests/gmock',
|
||||
'-isystem',
|
||||
'./tests/gmock/include'
|
||||
]
|
||||
|
||||
# Set this to the absolute path to the folder (NOT the file!) containing the
|
||||
# compile_commands.json file to use that instead of 'flags'. See here for
|
||||
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
|
||||
#
|
||||
# Most projects will NOT need to set this to anything; you can just change the
|
||||
# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
|
||||
compilation_database_folder = ''
|
||||
|
||||
if compilation_database_folder:
|
||||
database = ycm_core.CompilationDatabase( compilation_database_folder )
|
||||
else:
|
||||
database = None
|
||||
|
||||
|
||||
def DirectoryOfThisScript():
|
||||
return os.path.dirname( os.path.abspath( __file__ ) )
|
||||
|
||||
|
||||
def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
|
||||
if not working_directory:
|
||||
return flags
|
||||
new_flags = []
|
||||
make_next_absolute = False
|
||||
path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
|
||||
for flag in flags:
|
||||
new_flag = flag
|
||||
|
||||
if make_next_absolute:
|
||||
make_next_absolute = False
|
||||
if not flag.startswith( '/' ):
|
||||
new_flag = os.path.join( working_directory, flag )
|
||||
|
||||
for path_flag in path_flags:
|
||||
if flag == path_flag:
|
||||
make_next_absolute = True
|
||||
break
|
||||
|
||||
if flag.startswith( path_flag ):
|
||||
path = flag[ len( path_flag ): ]
|
||||
new_flag = path_flag + os.path.join( working_directory, path )
|
||||
break
|
||||
|
||||
if new_flag:
|
||||
new_flags.append( new_flag )
|
||||
return new_flags
|
||||
|
||||
|
||||
def FlagsForFile( filename ):
|
||||
if database:
|
||||
# Bear in mind that compilation_info.compiler_flags_ does NOT return a
|
||||
# python list, but a "list-like" StringVec object
|
||||
compilation_info = database.GetCompilationInfoForFile( filename )
|
||||
final_flags = PrepareClangFlags(
|
||||
MakeRelativePathsInFlagsAbsolute(
|
||||
compilation_info.compiler_flags_,
|
||||
compilation_info.compiler_working_dir_ ),
|
||||
filename )
|
||||
|
||||
else:
|
||||
relative_to = DirectoryOfThisScript()
|
||||
final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
|
||||
|
||||
return {
|
||||
'flags': final_flags,
|
||||
'do_cache': True
|
||||
}
|
||||
4
.zshenv
4
.zshenv
|
|
@ -10,8 +10,10 @@ bindkey '\e[6~' end-of-history # Page down key
|
|||
bindkey '\e[2~' redisplay # Insert key
|
||||
bindkey '\e[5~' insert-last-word # Page up key
|
||||
|
||||
export GOPATH="$HOME/.go/"
|
||||
|
||||
# remove /usr/games and /usr/X11R6/bin if you want
|
||||
PATH=$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/$HOME/.gem/ruby/1.9.1/bin:$HOME/.cabal/bin:/usr/lib/go/bin:$PATH; export PATH
|
||||
PATH=$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/$HOME/.gem/ruby/1.9.1/bin:$HOME/.cabal/bin:$HOME/.go/bin:/usr/lib/go/bin:$PATH; export PATH
|
||||
#PATH=$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/$HOME/.gem/ruby/1.9/bin; export PATH
|
||||
case `uname` in
|
||||
SunOS)
|
||||
|
|
|
|||
9
.zshrc
9
.zshrc
|
|
@ -82,6 +82,15 @@ source ~/.zprofile
|
|||
if [ -f ~/.bash_aliases ]; then
|
||||
source ~/.bash_aliases
|
||||
fi
|
||||
|
||||
fasd_cache="$HOME/.fasd-init-zsh"
|
||||
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
|
||||
fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcompinstall >| "$fasd_cache"
|
||||
fi
|
||||
source "$fasd_cache"
|
||||
unset fasd_cache
|
||||
|
||||
|
||||
source ~/.zshenv
|
||||
|
||||
##############################################################
|
||||
|
|
|
|||
108
bin/long-running.bash
Normal file
108
bin/long-running.bash
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
# Copyright (c) 2008-2012 undistract-me developers. See LICENSE for details.
|
||||
#
|
||||
# Source this, and then run notify_when_long_running_commands_finish_install
|
||||
#
|
||||
# Relies on http://www.twistedmatrix.com/users/glyph/preexec.bash.txt
|
||||
|
||||
# Generate a notification for any command that takes longer than this amount
|
||||
# of seconds to return to the shell. e.g. if LONG_RUNNING_COMMAND_TIMEOUT=10,
|
||||
# then 'sleep 11' will always generate a notification.
|
||||
|
||||
# Default timeout is 10 seconds.
|
||||
if [ -z "$LONG_RUNNING_COMMAND_TIMEOUT" ]; then
|
||||
LONG_RUNNING_COMMAND_TIMEOUT=10
|
||||
fi
|
||||
|
||||
# The pre-exec hook functionality is in a separate branch.
|
||||
if [ -z "$LONG_RUNNING_PREEXEC_LOCATION" ]; then
|
||||
LONG_RUNNING_PREEXEC_LOCATION=$HOME/bin/preexec.bash
|
||||
fi
|
||||
|
||||
if [ -f "$LONG_RUNNING_PREEXEC_LOCATION" ]; then
|
||||
. $LONG_RUNNING_PREEXEC_LOCATION
|
||||
else
|
||||
echo "Could not find preexec.bash"
|
||||
fi
|
||||
|
||||
|
||||
function notify_when_long_running_commands_finish_install() {
|
||||
|
||||
function active_window_id () {
|
||||
if [[ -n $DISPLAY ]] ; then
|
||||
set - $(xprop -root _NET_ACTIVE_WINDOW)
|
||||
echo $5
|
||||
return
|
||||
fi
|
||||
echo nowindowid
|
||||
}
|
||||
|
||||
function sec_to_human () {
|
||||
local H=''
|
||||
local M=''
|
||||
local S=''
|
||||
|
||||
local h=$(($1 / 3600))
|
||||
[ $h -gt 0 ] && H="${h} hour" && [ $h -gt 1 ] && H="${H}s"
|
||||
|
||||
local m=$((($1 / 60) % 60))
|
||||
[ $m -gt 0 ] && M=" ${m} min" && [ $m -gt 1 ] && M="${M}s"
|
||||
|
||||
local s=$(($1 % 60))
|
||||
[ $s -gt 0 ] && S=" ${s} sec" && [ $s -gt 1 ] && S="${S}s"
|
||||
|
||||
echo $H$M$S
|
||||
}
|
||||
|
||||
function precmd () {
|
||||
|
||||
if [[ -n "$__udm_last_command_started" ]]; then
|
||||
local now current_window
|
||||
|
||||
printf -v now "%(%s)T" -1
|
||||
current_window=$(active_window_id)
|
||||
if [[ $current_window != $__udm_last_window ]] ||
|
||||
[[ $current_window == "nowindowid" ]] ; then
|
||||
local time_taken=$(( $now - $__udm_last_command_started ))
|
||||
local time_taken_human=$(sec_to_human $time_taken)
|
||||
local appname=$(basename "${__udm_last_command%% *}")
|
||||
if [[ $time_taken -gt $LONG_RUNNING_COMMAND_TIMEOUT ]] &&
|
||||
[[ -n $DISPLAY ]] &&
|
||||
[[ ! " $LONG_RUNNING_IGNORE_LIST " == *" $appname "* ]] ; then
|
||||
local icon=dialog-information
|
||||
local urgency=low
|
||||
if [[ $__preexec_exit_status != 0 ]]; then
|
||||
icon=dialog-error
|
||||
urgency=normal
|
||||
fi
|
||||
notify=$(command -v notify-send)
|
||||
if [ -x "$notify" ]; then
|
||||
$notify \
|
||||
-i $icon \
|
||||
-u $urgency \
|
||||
"Long command completed" \
|
||||
"\"$__udm_last_command\" took $time_taken_human"
|
||||
else
|
||||
echo -ne "\a"
|
||||
fi
|
||||
fi
|
||||
if [[ -n $LONG_RUNNING_COMMAND_CUSTOM_TIMEOUT ]] &&
|
||||
[[ -n $LONG_RUNNING_COMMAND_CUSTOM ]] &&
|
||||
[[ $time_taken -gt $LONG_RUNNING_COMMAND_CUSTOM_TIMEOUT ]] ; then
|
||||
# put in brackets to make it quiet
|
||||
export __preexec_exit_status
|
||||
( $LONG_RUNNING_COMMAND_CUSTOM \
|
||||
"\"$__udm_last_command\" took $time_taken_human" & )
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function preexec () {
|
||||
# use __udm to avoid global name conflicts
|
||||
__udm_last_command_started=$(printf "%(%s)T\n" -1)
|
||||
__udm_last_command=$(echo "$1")
|
||||
__udm_last_window=$(active_window_id)
|
||||
}
|
||||
|
||||
preexec_install
|
||||
}
|
||||
180
bin/preexec.bash
Normal file
180
bin/preexec.bash
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
# Copyright (c) 2008-2012 undistract-me developers. See LICENSE for details.
|
||||
#
|
||||
# preexec.bash -- Bash support for ZSH-like 'preexec' and 'precmd' functions.
|
||||
|
||||
# The 'preexec' function is executed before each interactive command is
|
||||
# executed, with the interactive command as its argument. The 'precmd'
|
||||
# function is executed before each prompt is displayed.
|
||||
|
||||
# To use, in order:
|
||||
|
||||
# 1. source this file
|
||||
# 2. define 'preexec' and/or 'precmd' functions (AFTER sourcing this file),
|
||||
# 3. as near as possible to the end of your shell setup, run 'preexec_install'
|
||||
# to kick everything off.
|
||||
|
||||
# Note: this module requires 2 bash features which you must not otherwise be
|
||||
# using: the "DEBUG" trap, and the "PROMPT_COMMAND" variable. preexec_install
|
||||
# will override these and if you override one or the other this _will_ break.
|
||||
|
||||
# This is known to support bash3, as well as *mostly* support bash2.05b. It
|
||||
# has been tested with the default shells on MacOS X 10.4 "Tiger", Ubuntu 5.10
|
||||
# "Breezy Badger", Ubuntu 6.06 "Dapper Drake", and Ubuntu 6.10 "Edgy Eft".
|
||||
|
||||
|
||||
# Copy screen-run variables from the remote host, if they're available.
|
||||
|
||||
if [[ "$SCREEN_RUN_HOST" == "" ]]
|
||||
then
|
||||
SCREEN_RUN_HOST="$LC_SCREEN_RUN_HOST"
|
||||
SCREEN_RUN_USER="$LC_SCREEN_RUN_USER"
|
||||
fi
|
||||
|
||||
# Default do-nothing implementation of preexec.
|
||||
function preexec () {
|
||||
true
|
||||
}
|
||||
|
||||
# Default do-nothing implementation of precmd.
|
||||
function precmd () {
|
||||
true
|
||||
}
|
||||
|
||||
# This function is installed as the PROMPT_COMMAND; it is invoked before each
|
||||
# interactive prompt display. It sets a variable to indicate that the prompt
|
||||
# was just displayed, to allow the DEBUG trap, below, to know that the next
|
||||
# command is likely interactive.
|
||||
function preexec_invoke_cmd () {
|
||||
precmd
|
||||
trap 'preexec_invoke_exec' DEBUG
|
||||
}
|
||||
|
||||
# This function is installed as the DEBUG trap. It is invoked before each
|
||||
# interactive prompt display. Its purpose is to inspect the current
|
||||
# environment to attempt to detect if the current command is being invoked
|
||||
# interactively, and invoke 'preexec' if so.
|
||||
function preexec_invoke_exec () {
|
||||
if [[ -n "$COMP_LINE" ]]
|
||||
then
|
||||
# We're in the middle of a completer. This obviously can't be
|
||||
# an interactively issued command.
|
||||
return
|
||||
fi
|
||||
trap '' DEBUG
|
||||
|
||||
if [[ "preexec_invoke_cmd" == "$BASH_COMMAND" ]]
|
||||
then
|
||||
# Sadly, there's no cleaner way to detect two prompts being displayed
|
||||
# one after another. This makes it important that PROMPT_COMMAND
|
||||
# remain set _exactly_ as below in preexec_install. Let's switch back
|
||||
# out of interactive mode and not trace any of the commands run in
|
||||
# precmd.
|
||||
|
||||
# Given their buggy interaction between BASH_COMMAND and debug traps,
|
||||
# versions of bash prior to 3.1 can't detect this at all.
|
||||
return
|
||||
fi
|
||||
|
||||
# In more recent versions of bash, this could be set via the "BASH_COMMAND"
|
||||
# variable, but using history here is better in some ways: for example, "ps
|
||||
# auxf | less" will show up with both sides of the pipe if we use history,
|
||||
# but only as "ps auxf" if not.
|
||||
local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`;
|
||||
|
||||
# If none of the previous checks have earlied out of this function, then
|
||||
# the command is in fact interactive and we should invoke the user's
|
||||
# preexec hook with the running command as an argument.
|
||||
preexec "$this_command"
|
||||
}
|
||||
|
||||
function preexec_set_exit () {
|
||||
__preexec_exit_status=$?
|
||||
}
|
||||
|
||||
# Execute this to set up preexec and precmd execution.
|
||||
function preexec_install () {
|
||||
|
||||
# *BOTH* of these options need to be set for the DEBUG trap to be invoked
|
||||
# in ( ) subshells. This smells like a bug in bash to me. The null stderr
|
||||
# redirections are to quiet errors on bash2.05 (i.e. OSX's default shell)
|
||||
# where the options can't be set, and it's impossible to inherit the trap
|
||||
# into subshells.
|
||||
|
||||
set -o functrace > /dev/null 2>&1
|
||||
shopt -s extdebug > /dev/null 2>&1
|
||||
|
||||
# Finally, install the actual traps.
|
||||
if [ -n "$PROMPT_COMMAND" ]; then
|
||||
PROMPT_COMMAND="preexec_set_exit;${PROMPT_COMMAND};preexec_invoke_cmd";
|
||||
else
|
||||
PROMPT_COMMAND="preexec_set_exit;preexec_invoke_cmd";
|
||||
fi
|
||||
}
|
||||
|
||||
# Since this is the reason that 99% of everybody is going to bother with a
|
||||
# pre-exec hook anyway, we'll include it in this module.
|
||||
|
||||
# Change the title of the xterm.
|
||||
function preexec_xterm_title () {
|
||||
local title="$1"
|
||||
echo -ne "\033]0;$title\007" > /dev/stderr
|
||||
}
|
||||
|
||||
function preexec_screen_title () {
|
||||
local title="$1"
|
||||
echo -ne "\033k$1\033\\" > /dev/stderr
|
||||
}
|
||||
|
||||
# Abbreviate the "user@host" string as much as possible to preserve space in
|
||||
# screen titles. Elide the host if the host is the same, elide the user if the
|
||||
# user is the same.
|
||||
function preexec_screen_user_at_host () {
|
||||
local RESULT=""
|
||||
if [[ "$SCREEN_RUN_HOST" == "$SCREEN_HOST" ]]
|
||||
then
|
||||
return
|
||||
else
|
||||
if [[ "$SCREEN_RUN_USER" == "$USER" ]]
|
||||
then
|
||||
echo -n "@${SCREEN_HOST}"
|
||||
else
|
||||
echo -n "${USER}@${SCREEN_HOST}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function preexec_xterm_title_install () {
|
||||
# These functions are defined here because they only make sense with the
|
||||
# preexec_install below.
|
||||
function precmd () {
|
||||
preexec_xterm_title "${TERM} - ${USER}@${SCREEN_HOST} `dirs -0` $PROMPTCHAR"
|
||||
if [[ "${TERM}" == screen ]]
|
||||
then
|
||||
preexec_screen_title "`preexec_screen_user_at_host`${PROMPTCHAR}"
|
||||
fi
|
||||
}
|
||||
|
||||
function preexec () {
|
||||
preexec_xterm_title "${TERM} - $1 {`dirs -0`} (${USER}@${SCREEN_HOST})"
|
||||
if [[ "${TERM}" == screen ]]
|
||||
then
|
||||
local cutit="$1"
|
||||
local cmdtitle=`echo "$cutit" | cut -d " " -f 1`
|
||||
if [[ "$cmdtitle" == "exec" ]]
|
||||
then
|
||||
local cmdtitle=`echo "$cutit" | cut -d " " -f 2`
|
||||
fi
|
||||
if [[ "$cmdtitle" == "screen" ]]
|
||||
then
|
||||
# Since stacked screens are quite common, it would be nice to
|
||||
# just display them as '$$'.
|
||||
local cmdtitle="${PROMPTCHAR}"
|
||||
else
|
||||
local cmdtitle=":$cmdtitle"
|
||||
fi
|
||||
preexec_screen_title "`preexec_screen_user_at_host`${PROMPTCHAR}$cmdtitle"
|
||||
fi
|
||||
}
|
||||
|
||||
preexec_install
|
||||
}
|
||||
4
bin/tmux-pwn
Executable file
4
bin/tmux-pwn
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
|
||||
tmux list-clients | sed "s|^\(/dev/ttys[0-9]\+\).*\[\([0-9]\+x[0-9]\+\).*$|\2 \1|" | sort -r -n | tail -n +2 | cut -d " " -f 2 | xargs -n 1 tmux detach-client -t
|
||||
7
bin/undistract-me.sh
Executable file
7
bin/undistract-me.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
# Copyright (c) 2008-2012 undistract-me developers. See LICENSE for details.
|
||||
#
|
||||
# Check for interactive bash and that we haven't already been sourced.
|
||||
[ -z "$BASH_VERSION" -o -z "$PS1" -o -n "$last_command_started_cache" ] && return
|
||||
|
||||
. $HOME/bin/long-running.bash
|
||||
notify_when_long_running_commands_finish_install
|
||||
Loading…
Add table
Add a link
Reference in a new issue