From ea50a8561ef706526952d0a6109ae2dcd7bb6f37 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Mon, 22 Aug 2016 23:06:24 +0200 Subject: add basic dotfiles Dotfiles for zsh, vim and herbstluftwm! --- herbstluftwm/.config/herbstluftwm/autostart | 186 ++++++++++++ herbstluftwm/.config/herbstluftwm/panel.sh | 204 +++++++++++++ vim/.vimrc | 425 ++++++++++++++++++++++++++++ zsh/.zshrc | 95 +++++++ 4 files changed, 910 insertions(+) create mode 100755 herbstluftwm/.config/herbstluftwm/autostart create mode 100755 herbstluftwm/.config/herbstluftwm/panel.sh create mode 100644 vim/.vimrc create mode 100644 zsh/.zshrc diff --git a/herbstluftwm/.config/herbstluftwm/autostart b/herbstluftwm/.config/herbstluftwm/autostart new file mode 100755 index 0000000..0d67429 --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/autostart @@ -0,0 +1,186 @@ +#!/bin/bash + +DMENU='dmenu_run -l 8 -fn "inconsolata-8"' + +hc() { + herbstclient "$@" +} + +hc emit_hook reload + +xsetroot -solid '#5A8E3A' +xset -b +setxkbmap -option grp:alt_space_toggle "de(nodeadkeys),ru" + +# remove all existing keybindings +hc keyunbind --all + + +#feh --no-fehbg --bg-center ~/Pictures/Death_note_l_1366x768.jpg +#feh --no-fehbg --bg-fill ~/Pictures/Music\ Wallpapers/defeater.jpg +#feh --no-fehbg --bg-fill ~/Pictures/house-m.d.-wallpaper-17.jpg +feh --no-fehbg --bg-fill ~/Pictures/NmigJ3H.jpg + +# keybindings +# if you have a super key you will be much happier with Mod set to Mod4 +#Mod=Mod1 # Use alt as the main modifier +Mod=Mod4 # Use the super key as the main modifier + +hc keybind $Mod-Escape spawn setxkbmap de nodeadkeys +hc keybind $Mod-Shift-q quit +hc keybind $Mod-Shift-r reload +hc keybind $Mod-Shift-c close +hc keybind $Mod-Return spawn urxvt +hc keybind $Mod-d spawn $DMENU +hc keybind $Mod-Shift-d spawn ~/Code/pappymenu/pappymenu.py +hc keybind $Mod-q close_or_remove + +# volume management +hc keybind XF86AudioLowerVolume spawn amixer set Master,0 1%- +hc keybind XF86AudioRaiseVolume spawn amixer set Master,0 1%+ +hc keybind $Mod-XF86AudioLowerVolume spawn amixer set Master,0 5%- +hc keybind $Mod-XF86AudioRaiseVolume spawn amixer set Master,0 5%+ + +# basic movement +# focusing clients +hc keybind $Mod-Left focus left +hc keybind $Mod-Down focus down +hc keybind $Mod-Up focus up +hc keybind $Mod-Right focus right +hc keybind $Mod-h focus left +hc keybind $Mod-j focus down +hc keybind $Mod-k focus up +hc keybind $Mod-l focus right + +# moving clients +hc keybind $Mod-Shift-Left shift left +hc keybind $Mod-Shift-Down shift down +hc keybind $Mod-Shift-Up shift up +hc keybind $Mod-Shift-Right shift right +hc keybind $Mod-Shift-h shift left +hc keybind $Mod-Shift-j shift down +hc keybind $Mod-Shift-k shift up +hc keybind $Mod-Shift-l shift right + +# splitting frames +# create an empty frame at the specified direction +hc keybind $Mod-u split bottom 0.5 +hc keybind $Mod-o split right 0.5 +# let the current frame explode into subframes +hc keybind $Mod-Control-space split explode + +# resizing frames +resizestep=0.05 +hc keybind $Mod-Control-h resize left +$resizestep +hc keybind $Mod-Control-j resize down +$resizestep +hc keybind $Mod-Control-k resize up +$resizestep +hc keybind $Mod-Control-l resize right +$resizestep +hc keybind $Mod-Control-Left resize left +$resizestep +hc keybind $Mod-Control-Down resize down +$resizestep +hc keybind $Mod-Control-Up resize up +$resizestep +hc keybind $Mod-Control-Right resize right +$resizestep + +# tags +tag_names=( {1..9} ) +tag_keys=( {1..9} 0 ) + +hc rename default "${tag_names[0]}" || true +for i in ${!tag_names[@]} ; do + hc add "${tag_names[$i]}" + key="${tag_keys[$i]}" + if ! [ -z "$key" ] ; then + hc keybind "$Mod-$key" use_index "$i" + hc keybind "$Mod-Shift-$key" move_index "$i" + fi +done + +# cycle through tags +hc keybind $Mod-period use_index +1 --skip-visible +hc keybind $Mod-comma use_index -1 --skip-visible + +# layouting +hc keybind $Mod-r remove +hc keybind $Mod-space cycle_layout 1 +hc keybind $Mod-s floating toggle +hc keybind $Mod-f fullscreen toggle +hc keybind $Mod-p pseudotile toggle + +# mouse +hc mouseunbind --all +hc mousebind $Mod-Button1 move +hc mousebind $Mod-Button2 zoom +hc mousebind $Mod-Button3 resize + +# focus +hc keybind $Mod-BackSpace cycle_monitor +hc keybind $Mod-Tab cycle_all +1 +hc keybind $Mod-Shift-Tab cycle_all -1 +hc keybind $Mod-c cycle +hc keybind $Mod-y spawn rofi -show window +hc keybind $Mod-i jumpto urgent + +# theme +hc attr theme.tiling.reset 1 +hc attr theme.floating.reset 1 +hc set frame_border_active_color '#222222' +hc set frame_border_normal_color '#101010' +hc set frame_bg_normal_color '#565656' +hc set frame_bg_active_color '#345F0C' +hc set frame_border_width 1 +hc set always_show_frame 1 +hc set frame_bg_transparent 1 +hc set frame_transparent_width 5 +hc set frame_gap 4 + +hc attr theme.active.color '#9fbc00' +hc attr theme.normal.color '#454545' +hc attr theme.urgent.color orange +hc attr theme.inner_width 1 +hc attr theme.inner_color black +hc attr theme.border_width 3 +hc attr theme.floating.border_width 4 +hc attr theme.floating.outer_width 1 +hc attr theme.floating.outer_color black +hc attr theme.active.inner_color '#3E4A00' +hc attr theme.active.outer_color '#3E4A00' +hc attr theme.background_color '#141414' + +hc set window_gap 0 +hc set frame_padding 0 +hc set smart_window_surroundings 0 +hc set smart_frame_surroundings 1 +hc set mouse_recenter_gap 0 + +# rules +hc unrule -F +#hc rule class=XTerm tag=3 # move all xterms to tag 3 +hc rule focus=on # normally focus new clients +#hc rule focus=off # normally do not focus new clients +# give focus to most common terminals +#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on +hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off + +# unlock, just to be sure +hc unlock + +herbstclient set tree_style '╾│ ├└╼─┐' + +# do multi monitor setup here, e.g.: +# hc set_monitors 1280x1024+0+0 1280x1024+1280+0 +# or simply: +# hc detect_monitors + +# find the panel +panel=~/.config/herbstluftwm/panel.sh +[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh +for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do + # start it on each monitor + "$panel" $monitor & +done + +[[ -z "$(pidof nm-applet)" ]] && nm-applet & +[[ -z "$(pidof pasystray)" ]] && pasystray >/dev/null 2>&1 & +pgrep -f /usr/bin/udiskie >/dev/null || udiskie -ans & + diff --git a/herbstluftwm/.config/herbstluftwm/panel.sh b/herbstluftwm/.config/herbstluftwm/panel.sh new file mode 100755 index 0000000..57a95b1 --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/panel.sh @@ -0,0 +1,204 @@ +#!/bin/bash + +hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;} +monitor=${1:-0} +geometry=( $(herbstclient monitor_rect "$monitor") ) +if [ -z "$geometry" ] ;then + echo "Invalid monitor $monitor" + exit 1 +fi +# geometry has the format W H X Y +x=${geometry[0]} +y=${geometry[1]} +tray_width=200 +panel_width=$(( ${geometry[2]} - $tray_width )) +panel_height=16 +font="-*-fixed-medium-*-*-*-12-*-*-*-*-*-*-*" +bgcolor=$(hc get frame_border_normal_color) +selbg=$(hc get window_border_active_color) +selfg='#101010' + +#### +# Try to find textwidth binary. +# In e.g. Ubuntu, this is named dzen2-textwidth. +if which textwidth &> /dev/null ; then + textwidth="textwidth"; +elif which dzen2-textwidth &> /dev/null ; then + textwidth="dzen2-textwidth"; +else + echo "This script requires the textwidth tool of the dzen2 project." + exit 1 +fi +#### +# true if we are using the svn version of dzen2 +# depending on version/distribution, this seems to have version strings like +# "dzen-" or "dzen-x.x.x-svn" +if dzen2 -v 2>&1 | head -n 1 | grep -q '^dzen-\([^,]*-svn\|\),'; then + dzen2_svn="true" +else + dzen2_svn="" +fi + +if awk -Wv 2>/dev/null | head -1 | grep -q '^mawk'; then + # mawk needs "-W interactive" to line-buffer stdout correctly + # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593504 + uniq_linebuffered() { + awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@" + } +else + # other awk versions (e.g. gawk) issue a warning with "-W interactive", so + # we don't want to use it there. + uniq_linebuffered() { + awk '$0 != l { print ; l=$0 ; fflush(); }' "$@" + } +fi + +hc pad $monitor $panel_height + +{ + ### Event generator ### + # based on different input data (mpc, date, hlwm hooks, ...) this generates events, formed like this: + # \t [...] + # e.g. + # date ^fg(#efefef)18:33^fg(#909090), 2013-10-^fg(#efefef)29 + + #mpc idleloop player & + while true ; do + # "date" output is checked once a second, but an event is only + # generated if the output changed compared to the previous run. + echo -e "addinfo\t^fg(#ff2200)$USER^fg()@^fg(#22ff00)$(hostname)^fg() -"\ + "Vol: ^fg(#66FF30)$(volume.sh)^fg() - Bat: ^fg(#66FF30)$(battery.sh)" + # date +$'date\t^fg(#efefef)%H:%M^fg(#909090), %Y-%m-^fg(#efefef)%d' + date +$'date\t^fg(#efefef)%H:%M:%S^fg(#909090), %Y-%m-^fg(#efefef)%d' + sleep 0.5 || break + done > >(uniq_linebuffered) & + childpid=$! + hc --idle + kill $childpid +} 2> /dev/null | { + IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)" + visible=true + date="" + windowtitle="" + addinfo="" + while true ; do + + ### Output ### + # This part prints dzen data based on the _previous_ data handling run, + # and then waits for the next event to happen. + #echo -n "^bg(#505050)^ca(1,~/Code/pappymenu/pappymenu.py) Apps ^ca()^bg()" + #echo -n "$separator" + bordercolor="#26221C" + separator="^bg()^fg($selbg)|" + # draw tags + for i in "${tags[@]}" ; do + case ${i:0:1} in + '#') + echo -n "^bg($selbg)^fg($selfg)" + ;; + '+') + echo -n "^bg(#9CA668)^fg(#141414)" + ;; + ':') + echo -n "^bg()^fg(#ffffff)" + ;; + '!') + echo -n "^bg(#FF0675)^fg(#141414)" + ;; + *) + echo -n "^bg()^fg(#ababab)" + ;; + esac + if [ ! -z "$dzen2_svn" ] ; then + # clickable tags if using SVN dzen + echo -n "^ca(1,\"${herbstclient_command[@]:-herbstclient}\" " + echo -n "focus_monitor \"$monitor\" && " + echo -n "\"${herbstclient_command[@]:-herbstclient}\" " + echo -n "use \"${i:1}\") ${i:1} ^ca()" + else + # non-clickable tags if using older dzen + echo -n " ${i:1} " + fi + done + echo -n "$separator" + echo -n "^bg()^fg() ${windowtitle//^/^^}" + # small adjustments + right="$separator $addinfo $separator^bg() $date $separator" + right_text_only=$(echo -n "$right" | sed 's.\^[^(]*([^)]*)..g') + # get width of right aligned text.. and add some space.. + width=$($textwidth "$font" "$right_text_only ") + echo -n "^pa($(($panel_width - $width)))$right" + echo + + ### Data handling ### + # This part handles the events generated in the event loop, and sets + # internal variables based on them. The event and its arguments are + # read into the array cmd, then action is taken depending on the event + # name. + # "Special" events (quit_panel/togglehidepanel/reload) are also handled + # here. + + # wait for next event + IFS=$'\t' read -ra cmd || break + # find out event origin + case "${cmd[0]}" in + tag*) + #echo "resetting tags" >&2 + IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)" + ;; + date) + #echo "resetting date" >&2 + date="${cmd[@]:1}" + ;; + addinfo) + #echo "resetting info" >&2 + addinfo="${cmd[@]:1}" + ;; + quit_panel) + exit + ;; + togglehidepanel) + currentmonidx=$(hc list_monitors | sed -n '/\[FOCUS\]$/s/:.*//p') + if [ "${cmd[1]}" -ne "$monitor" ] ; then + continue + fi + if [ "${cmd[1]}" = "current" ] && [ "$currentmonidx" -ne "$monitor" ] ; then + continue + fi + echo "^togglehide()" + if $visible ; then + visible=false + hc pad $monitor 0 + else + visible=true + hc pad $monitor $panel_height + fi + ;; + reload) + exit + ;; + focus_changed|window_title_changed) + windowtitle="${cmd[@]:2}" + ;; + #player) + # ;; + esac + done + + ### dzen2 ### + # After the data is gathered and processed, the output of the previous block + # gets piped to dzen2. + +} 2> /dev/null | dzen2 -w $panel_width -x $x -y $y -fn "$font" -h $panel_height \ + -e 'button3=;button4=exec:herbstclient use_index -1;button5=exec:herbstclient use_index +1' \ + -ta l -bg "$bgcolor" -fg '#efefef' & + +pids+=($!) + +trayer --edge top --align right --widthtype pixel --width $tray_width --heighttype pixel --height 16 \ + --tint "0xff${bgcolor:1}" --transparent true --alpha 0 & + +pids+=($!) + +herbstclient --wait '^(quit|reload).*' +kill -TERM "${pids[@]}" >/dev/null 2>&1 diff --git a/vim/.vimrc b/vim/.vimrc new file mode 100644 index 0000000..d306d12 --- /dev/null +++ b/vim/.vimrc @@ -0,0 +1,425 @@ +" ============================================================================ +" Vundle initialization +" Avoid modify this section, unless you are very sure of what you are doing + +" no vi-compatible +set nocompatible +set clipboard=unnamedplus +set cino=N-s +set relativenumber + +" Setting up Vundle - the vim plugin bundler +let iCanHazVundle=1 +let vundle_readme=expand('~/.vim/bundle/vundle/README.md') +if !filereadable(vundle_readme) + echo "Installing Vundle..." + echo "" + silent !mkdir -p ~/.vim/bundle + silent !git clone https://github.com/gmarik/vundle ~/.vim/bundle/vundle + let iCanHazVundle=0 +endif + +filetype off + +set rtp+=~/.vim/bundle/vundle/ +call vundle#rc() + +" let Vundle manage Vundle +Bundle 'gmarik/vundle' + +" ============================================================================ +" Active plugins +" You can disable or add new ones here: + +" Plugins from github repos: + +" Python and PHP Debugger +" Bundle 'fisadev/vim-debug.vim' +" Better file browser +Bundle 'scrooloose/nerdtree' +" Code commenter +Bundle 'scrooloose/nerdcommenter' +" Class/module browser +Bundle 'majutsushi/tagbar' +" Code and files fuzzy finder +Bundle 'kien/ctrlp.vim' +" Extension to ctrlp, for fuzzy command finder +Bundle 'fisadev/vim-ctrlp-cmdpalette' +" Zen coding +Bundle 'mattn/emmet-vim' +" Git integration +Bundle 'motemen/git-vim' +" Tab list panel +Bundle 'kien/tabman.vim' +" Airline +Bundle 'vim-airline/vim-airline' +Bundle 'vim-airline/vim-airline-themes' +" Terminal Vim with 256 colors colorscheme +Bundle 'fisadev/fisa-vim-colorscheme' +" Consoles as buffers +Bundle 'rosenfeld/conque-term' +" Pending tasks list +Bundle 'fisadev/FixedTaskList.vim' +" Surround +Bundle 'tpope/vim-surround' +" Autoclose +Bundle 'Townk/vim-autoclose' +" Indent text object +Bundle 'michaeljsmith/vim-indent-object' +" Python mode (indentation, doc, refactor, lints, code checking, motion and +" operators, highlighting, run and ipdb breakpoints) +Bundle 'klen/python-mode' +" Better autocompletion +"Bundle 'Shougo/neocomplcache.vim' +" Snippets manager (SnipMate), dependencies, and snippets repo +"Bundle 'MarcWeber/vim-addon-mw-utils' +"Bundle 'tomtom/tlib_vim' +"Bundle 'honza/vim-snippets' +"Bundle 'garbas/vim-snipmate' +" Git/mercurial/others diff icons on the side of the file lines +Bundle 'mhinz/vim-signify' +" Automatically sort python imports +Bundle 'fisadev/vim-isort' +" Drag visual blocks arround +Bundle 'fisadev/dragvisuals.vim' +" Window chooser +Bundle 't9md/vim-choosewin' +" Python and other languages code checker +"Bundle 'scrooloose/syntastic' +" Paint css colors with the real color +Bundle 'lilydjwg/colorizer' +" Relative numbering of lines (0 is the current line) +" (disabled by default because is very intrusive and can't be easily toggled +" on/off. When the plugin is present, will always activate the relative +" numbering every time you go to normal mode. Author refuses to add a setting +" to avoid that) +" Bundle 'myusuf3/numbers.vim' +Bundle 'rust-lang/rust.vim' + +" Plugins from vim-scripts repos: + +" Search results counter +Bundle 'IndexedSearch' +" XML/HTML tags navigation +Bundle 'matchit.zip' +" Gvim colorscheme +Bundle 'Wombat' +" Yank history navigation +Bundle 'YankRing.vim' + +" ============================================================================ +" Install plugins the first time vim runs + +if iCanHazVundle == 0 + echo "Installing Bundles, please ignore key map error messages" + echo "" + :BundleInstall +endif + +" ============================================================================ +" Vim settings and mappings +" You can edit them as you wish + +" allow plugins by file type (required for plugins!) +filetype plugin on +filetype indent on + +" tabs and spaces handling +set expandtab +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 + +" tab length exceptions on some file types +autocmd FileType html setlocal shiftwidth=4 tabstop=4 softtabstop=4 +autocmd FileType htmldjango setlocal shiftwidth=4 tabstop=4 softtabstop=4 +autocmd FileType javascript setlocal shiftwidth=4 tabstop=4 softtabstop=4 + +" always show status bar +set ls=2 + +" incremental search +set incsearch +" highlighted search results +set hlsearch + +" syntax highlight on +syntax on + +" show line numbers +set nu + +" tab navigation mappings +map tn :tabn +map tp :tabp +map tm :tabm +map tt :tabnew +map ts :tab split +map :tabn +imap :tabn +map :tabp +imap :tabp + +" navigate windows with meta+arrows +map l +map h +map k +map j +imap l +imap h +imap k +imap j + +" old autocomplete keyboard shortcut +imap + +" Comment this line to enable autocompletion preview window +" (displays documentation related to the selected completion option) +" Disabled by default because preview makes the window flicker +set completeopt-=preview + +" save as sudo +ca w!! w !sudo tee "%" + +" simple recursive grep +" both recursive grep commands with internal or external (fast) grep +command! -nargs=1 RecurGrep lvimgrep //gj ./**/*.* | lopen | set nowrap +command! -nargs=1 RecurGrepFast silent exec 'lgrep! ./**/*.*' | lopen +" mappings to call them +nmap ,R :RecurGrep +nmap ,r :RecurGrepFast +" mappings to call them with the default word as search text +nmap ,wR :RecurGrep +nmap ,wr :RecurGrepFast + +" use 256 colors when possible +if (&term =~? 'mlterm\|xterm\|xterm-256\|screen-256') || has('nvim') + let &t_Co = 256 + " colorscheme fisa + colorscheme desert +else + colorscheme desert +endif + +" colors for gvim +if has('gui_running') + colorscheme wombat +endif + +" when scrolling, keep cursor 3 lines away from screen border +set scrolloff=3 + +" autocompletion of files and commands behaves like shell +" (complete only the common part, list the options that match) +set wildmode=list:longest + +" better backup, swap and undos storage +set directory=~/.vim/dirs/tmp " directory to place swap files in +set backup " make backup files +set backupdir=~/.vim/dirs/backups " where to put backup files +set undofile " persistent undos - undo after you re-open the file +set undodir=~/.vim/dirs/undos +set viminfo+=n~/.vim/dirs/viminfo +" store yankring history file there too +let g:yankring_history_dir = '~/.vim/dirs/' + +" create needed directories if they don't exist +if !isdirectory(&backupdir) + call mkdir(&backupdir, "p") +endif +if !isdirectory(&directory) + call mkdir(&directory, "p") +endif +if !isdirectory(&undodir) + call mkdir(&undodir, "p") +endif + +" ============================================================================ +" Plugins settings and mappings +" Edit them as you wish. + +" Tagbar ----------------------------- + +" toggle tagbar display +map :TagbarToggle +" autofocus on tagbar open +let g:tagbar_autofocus = 1 + +" NERDTree ----------------------------- + +" toggle nerdtree display +map :NERDTreeToggle +" open nerdtree with the current file selected +nmap ,t :NERDTreeFind +" don;t show these file types +let NERDTreeIgnore = ['\.pyc$', '\.pyo$'] + + +" Tasklist ------------------------------ + +" show pending tasks list +map :TaskList + +" Vim-debug ------------------------------ + +" disable default mappings, have a lot of conflicts with other plugins +let g:vim_debug_disable_mappings = 1 +" add some useful mappings +map :Dbg over +map :Dbg into +map :Dbg out +map :Dbg here +map :Dbg break +map :Dbg watch +map :Dbg down +map :Dbg up + +" CtrlP ------------------------------ + +" file finder mapping +let g:ctrlp_map = ',e' +" tags (symbols) in current file finder mapping +nmap ,g :CtrlPBufTag +" tags (symbols) in all files finder mapping +nmap ,G :CtrlPBufTagAll +" general code finder in all files mapping +nmap ,f :CtrlPLine +" recent files finder mapping +nmap ,m :CtrlPMRUFiles +" commands finder mapping +nmap ,c :CtrlPCmdPalette +" to be able to call CtrlP with default search text +function! CtrlPWithSearchText(search_text, ctrlp_command_end) + execute ':CtrlP' . a:ctrlp_command_end + call feedkeys(a:search_text) +endfunction +" same as previous mappings, but calling with current word as default text +nmap ,wg :call CtrlPWithSearchText(expand(''), 'BufTag') +nmap ,wG :call CtrlPWithSearchText(expand(''), 'BufTagAll') +nmap ,wf :call CtrlPWithSearchText(expand(''), 'Line') +nmap ,we :call CtrlPWithSearchText(expand(''), '') +nmap ,pe :call CtrlPWithSearchText(expand(''), '') +nmap ,wm :call CtrlPWithSearchText(expand(''), 'MRUFiles') +nmap ,wc :call CtrlPWithSearchText(expand(''), 'CmdPalette') +" don't change working directory +let g:ctrlp_working_path_mode = 0 +" ignore these files and folders on file finder +let g:ctrlp_custom_ignore = { + \ 'dir': '\v[\/](\.git|\.hg|\.svn|node_modules)$', + \ 'file': '\.pyc$\|\.pyo$', + \ } + +" Syntastic ------------------------------ + +" show list of errors and warnings on the current file +nmap e :Errors +" check also when just opened the file +let g:syntastic_check_on_open = 1 +" don't put icons on the sign column (it hides the vcs status icons of signify) +let g:syntastic_enable_signs = 0 +" custom icons (enable them if you use a patched font, and enable the previous +" setting) +"let g:syntastic_error_symbol = '✗' +"let g:syntastic_warning_symbol = '⚠' +"let g:syntastic_style_error_symbol = '✗' +"let g:syntastic_style_warning_symbol = '⚠' + +" Python-mode ------------------------------ + +" don't use linter, we use syntastic for that +let g:pymode_lint_on_write = 0 +let g:pymode_lint_signs = 0 +" don't fold python code on open +let g:pymode_folding = 0 +" don't load rope by default. Change to 1 to use rope +let g:pymode_rope = 0 +" open definitions on same window, and custom mappings for definitions and +" occurrences +let g:pymode_rope_goto_definition_bind = ',d' +let g:pymode_rope_goto_definition_cmd = 'e' +nmap ,D :tab split:PymodePython rope.goto() +nmap ,o :RopeFindOccurrences + +" NeoComplCache ------------------------------ + +" most of them not documented because I'm not sure how they work +" (docs aren't good, had to do a lot of trial and error to make +" it play nice) +let g:neocomplcache_enable_at_startup = 1 +let g:neocomplcache_enable_ignore_case = 1 +let g:neocomplcache_enable_smart_case = 1 +let g:neocomplcache_enable_auto_select = 1 +let g:neocomplcache_enable_fuzzy_completion = 1 +let g:neocomplcache_enable_camel_case_completion = 1 +let g:neocomplcache_enable_underbar_completion = 1 +let g:neocomplcache_fuzzy_completion_start_length = 1 +let g:neocomplcache_auto_completion_start_length = 10 +let g:neocomplcache_manual_completion_start_length = 1 +let g:neocomplcache_min_keyword_length = 1 +let g:neocomplcache_min_syntax_length = 1 +" complete with workds from any opened file +let g:neocomplcache_same_filetype_lists = {} +let g:neocomplcache_same_filetype_lists._ = '_' + +" TabMan ------------------------------ + +" mappings to toggle display, and to focus on it +let g:tabman_toggle = 'tl' +let g:tabman_focus = 'tf' + +" Autoclose ------------------------------ + +" Fix to let ESC work as espected with Autoclose plugin +let g:AutoClosePumvisible = {"ENTER": "\", "ESC": "\"} + +" DragVisuals ------------------------------ + +" mappings to move blocks in 4 directions +vmap DVB_Drag('left') +vmap DVB_Drag('right') +vmap DVB_Drag('down') +vmap DVB_Drag('up') +" mapping to duplicate block +vmap D DVB_Duplicate() + +" Signify ------------------------------ + +" this first setting decides in which order try to guess your current vcs +" UPDATE it to reflect your preferences, it will speed up opening files +let g:signify_vcs_list = [ 'git', 'hg' ] +" mappings to jump to changed blocks +nmap sn (signify-next-hunk) +nmap sp (signify-prev-hunk) +" nicer colors +highlight DiffAdd cterm=bold ctermbg=none ctermfg=119 +highlight DiffDelete cterm=bold ctermbg=none ctermfg=167 +highlight DiffChange cterm=bold ctermbg=none ctermfg=227 +highlight SignifySignAdd cterm=bold ctermbg=237 ctermfg=119 +highlight SignifySignDelete cterm=bold ctermbg=237 ctermfg=167 +highlight SignifySignChange cterm=bold ctermbg=237 ctermfg=227 + +" Window Chooser ------------------------------ + +" mapping +nmap - (choosewin) +" show big letters +let g:choosewin_overlay_enable = 1 + +" Airline ------------------------------ + +let g:airline_powerline_fonts = 0 +let g:airline_theme = 'bubblegum' +let g:airline#extensions#whitespace#enabled = 0 + +" to use fancy symbols for airline, uncomment the following lines and use a +" patched font (more info on the README.rst) +"if !exists('g:airline_symbols') +" let g:airline_symbols = {} +"endif +"let g:airline_left_sep = '⮀' +"let g:airline_left_alt_sep = '⮁' +"let g:airline_right_sep = '⮂' +"let g:airline_right_alt_sep = '⮃' +"let g:airline_symbols.branch = '⭠' +"let g:airline_symbols.readonly = '⭤' +"let g:airline_symbols.linenr = '⭡' diff --git a/zsh/.zshrc b/zsh/.zshrc new file mode 100644 index 0000000..aeb0f6e --- /dev/null +++ b/zsh/.zshrc @@ -0,0 +1,95 @@ +autoload -U colors && colors + +zstyle ':completion:*' completer _complete _ignored +zstyle ':completion:*' menu select=1 +# use colors for file completion +zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} +# use groups for completion +zstyle ':completion:*:descriptions' format \ + "%{$fg[red]%}completing %B%d%b%{$reset_color%}" +zstyle ':completion:*:matches' group 'yes' +zstyle ':completion:*' group-name '' +# warn if there are no matches +zstyle ':completion:*:warnings' format \ + "%{$fg[red]%}No matches for:%{$reset_color%} %d" +# display all processes for killall/... +zstyle ':completion:*:processes-names' command \ + 'ps c -u ${USER} -o command | uniq' +# group man pages per section +zstyle ':completion:*:manuals' separate-sections true +zstyle ':completion:*:manuals.*' insert-sections true +# verbose output +zstyle ':completion:*' verbose true +# show file types +setopt listtypes +zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s +zstyle :compinstall filename '/home/daniel/.zshrc' + +autoload -Uz compinit +compinit +#HISTOPT=ignoreboth:erasedups +HISTFILE=~/.histfile +HISTSIZE=1000000 +SAVEHIST=1000000 +setopt appendhistory autocd extendedglob hist_ignore_all_dups hist_ignore_space +bindkey -v +PROMPT="[%{$fg[yellow]%}%n%{$reset_color%}@%m] %{$fg[cyan]%} %2~ %#%{$reset_color%} " + +precmd() +{ + print -Pn "\e]0;%n@%m: %~\a" +} + +unsetopt multibyte + +# key bindings +bindkey "\e[1~" beginning-of-line +bindkey "\e[4~" end-of-line +bindkey "\e[5~" beginning-of-history +bindkey "\e[6~" end-of-history +bindkey "\e[3~" delete-char +bindkey "\e[2~" quoted-insert +bindkey "\e[5C" forward-word +bindkey "\eOc" emacs-forward-word +bindkey "\e[5D" backward-word +bindkey "\eOd" emacs-backward-word +bindkey "\ee[C" forward-word +bindkey "\ee[D" backward-word +bindkey "^H" backward-delete-word +# for rxvt +bindkey "\e[8~" end-of-line +bindkey "\e[7~" beginning-of-line +# for non RH/Debian xterm, can't hurt for RH/DEbian xterm +bindkey "\eOH" beginning-of-line +bindkey "\eOF" end-of-line +# for freebsd console +bindkey "\e[H" beginning-of-line +bindkey "\e[F" end-of-line +# completion in the middle of a line +bindkey '^i' expand-or-complete-prefix +# up and down arrows for hist search +bindkey "^[[A" history-search-backward +bindkey "^[[B" history-search-forward +bindkey "^r" history-incremental-search-backward + +alias ls="ls --color=auto" +alias py="python" +alias rb="ruby" +alias hd="hexdump -C" +alias flux="xflux -l 49 -g 9" + +# Python's virtualenvwrapper +export WORKON_HOME="~/Code/PyEnvs" +export EDITOR="vim" +export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket" +export TERM=xterm-256color + +#if [[ "$SSH_AGENT_PID" == "" ]]; then +# eval $(<~/.ssh-agent-thing) +#fi + +source /usr/bin/virtualenvwrapper.sh +source /home/daniel/.profile + +# added by travis gem +[ -f /home/daniel/.travis/travis.sh ] && source /home/daniel/.travis/travis.sh -- cgit v1.2.3