Adds emacs configs; updates tmux; updates vimrc

This commit is contained in:
William Carroll 2016-12-12 00:24:22 -05:00
parent 539b2fd32f
commit 4954544a5b
3 changed files with 145 additions and 132 deletions

79
configs/.emacs Normal file
View file

@ -0,0 +1,79 @@
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
(unless (require 'el-get nil 'noerror)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/dimitri/el-get/master/el-get-install.el")
(goto-char (point-max))
(eval-print-last-sexp)))
(add-to-list 'el-get-recipe-path "~/.emacs.d/el-get-user/recipes")
(el-get 'sync)
(load-theme 'monokai t)
;; Exit insert mode by pressing jk in sequence
(setq key-chord-two-keys-delay 0.5)
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
(key-chord-mode 1)
(setq
el-get-sources
'((:name evil
:after (progn
;; my vim bindings
; (define-key evil-normal-state-map "\C-;" 'comment-line)
;; (define-key evil-normal-state-map "vv" 'split-window-vertically)
;; (define-key evil-normal-state-map "vs" 'split-window-vertically)
;; (define-key evil-normal-state-map "ss" 'split-window-horizontally)
;; (define-key evil-normal-state-map "sp" 'split-window-horizontally)
(define-key evil-normal-state-map "\S-h" 'evil-beginning-of-line)
(define-key evil-normal-state-map "\S-l" 'evil-end-of-line)
(define-key evil-visual-state-map "\S-h" 'evil-beginning-of-line)
(define-key evil-visual-state-map "\S-l" 'evil-beginning-of-line)
(define-key evil-insert-state-map "\C-a" 'beginning-of-line)
(define-key evil-insert-state-map "\C-e" 'end-of-line)))
(:name auto-complete
:after (progn
(define-key ac-complete-mode-map "\C-n" 'ac-next)
(define-key ac-complete-mode-map "\C-p" 'ac-previous)))))
(setq
my:el-get-packages
'(el-get
alchemist
auto-complete
evil
monokai-theme
neotree))
(el-get 'sync my:el-get-packages)
;; Generic Settings
;; Line numbering
(line-number-mode 1) ; have line numbers and
(column-number-mode 1) ; column numbers in the mode line
(global-linum-mode 1) ; add line numbers on the left
;; activates evil-mode
(evil-mode 1)
;; evil-leader settings
;; enables evil-leader every time evil-mode is loaded.
(global-evil-leader-mode)
;; change the <leader> key
(evil-leader/set-leader "<SPC>")
;; neotree settings
(evil-leader/set-key
"n" 'neotree-toggle
)

View file

@ -105,15 +105,6 @@ bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}"
# Smart pane switching with awareness of vim splits
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# source '/usr/local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf' # source '/usr/local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf'
bind-key h set -g status bind-key h set -g status
@ -126,3 +117,13 @@ set-option -g status-left-length 60
set-option -g status-right-length 90 set-option -g status-right-length 90
# set-option -g status-left "#(~/dotfiles/tmux-powerline/powerline.sh left)" # set-option -g status-left "#(~/dotfiles/tmux-powerline/powerline.sh left)"
# set-option -g status-right "#(~/dotfiles/tmux-powerline/powerline.sh right)" # set-option -g status-right "#(~/dotfiles/tmux-powerline/powerline.sh right)"
# Bindings for "christoomey/vim-tmux-navigator"
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"

View file

@ -25,7 +25,6 @@ Plugin 'kien/ctrlp.vim'
Plugin 'mileszs/ack.vim' Plugin 'mileszs/ack.vim'
Plugin 'pangloss/vim-javascript' Plugin 'pangloss/vim-javascript'
Plugin 'scrooloose/nerdtree' Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/syntastic'
" Syntax Highlighting Support " Syntax Highlighting Support
Plugin 'lambdatoast/elm.vim' Plugin 'lambdatoast/elm.vim'
@ -43,9 +42,6 @@ Plugin 'sickill/vim-monokai'
Plugin 'altercation/vim-colors-solarized' Plugin 'altercation/vim-colors-solarized'
Plugin 'mhartington/oceanic-next' Plugin 'mhartington/oceanic-next'
" Tmux tooling
Plugin 'christoomey/vim-tmux-navigator'
" Executes shell commands and pipes output into new Vim buffer. " Executes shell commands and pipes output into new Vim buffer.
Plugin 'sjl/clam.vim' Plugin 'sjl/clam.vim'
@ -63,6 +59,12 @@ Plugin 'godlygeek/tabular'
" Visually Highlight and comment code. " Visually Highlight and comment code.
Plugin 'tpope/vim-commentary' Plugin 'tpope/vim-commentary'
" Seamlessly navigate Vim and Tmux with similar bindings.
Plugin 'christoomey/vim-tmux-navigator'
" Async `:make` for code linting etc.
Plugin 'neomake/neomake'
call vundle#end() " required call vundle#end() " required
filetype plugin indent on " required filetype plugin indent on " required
@ -70,6 +72,24 @@ filetype plugin indent on " required
" -- END: Vundle config -- " -- END: Vundle config --
" Neomake Settings
autocmd! BufWritePost * Neomake
" Elixir linting
let g:neomake_elixir_credo_maker = {
\ 'exe': 'mix',
\ 'args': ['credo', 'list', '%:p', '--format=oneline'],
\ 'errorformat':
\ '%W[F] %. %f:%l:%c %m,' .
\ '%W[F] %. %f:%l %m,' .
\ '%W[R] %. %f:%l:%c %m,' .
\ '%W[R] %. %f:%l %m,' .
\ '%I[C] %. %f:%l:%c %m,' .
\ '%I[C] %. %f:%l %m,' .
\ '%-Z%.%#'
\ }
" Airline Settings " Airline Settings
" Enables the list of buffers. " Enables the list of buffers.
let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#enabled = 1
@ -80,6 +100,9 @@ let g:airline#extensions#tabline#fnamemod = ':t'
" Allow glyphs in airline " Allow glyphs in airline
let g:airline_powerline_fonts = 1 let g:airline_powerline_fonts = 1
" Change Airline theme
let g:airline_theme = 'base16_google'
" It's the twenty-first century...no swaps. " It's the twenty-first century...no swaps.
set noswapfile set noswapfile
@ -127,6 +150,11 @@ nnoremap zK zC
nnoremap zk zc nnoremap zk zc
" Smart Comment code (has dependency 'tpope/vim-commentary')
nnoremap <C-/> Vgc
vnoremap <C-/> gc
" Changes <leader> to <space> character. " Changes <leader> to <space> character.
let mapleader = " " let mapleader = " "
@ -186,13 +214,15 @@ nnoremap ss <Esc>:sp<CR>
" Move around splits with <leader> " Move around splits with <leader>
nnoremap <leader>h <C-w>h " NOTE: no longer needed with tmux navigator plugin
nnoremap <leader>j <C-w>j " nnoremap <leader>h <C-w>h
nnoremap <leader>k <C-w>k " nnoremap <leader>j <C-w>j
nnoremap <leader>l <C-w>l " nnoremap <leader>k <C-w>k
" nnoremap <leader>l <C-w>l
" Delete (i.e. "close") the currently opened buffer " Delete (i.e. "close") the currently opened buffer
" TODO: unless it's a split window, which should be :q
nnoremap <leader>q :bdelete<CR> nnoremap <leader>q :bdelete<CR>
@ -216,8 +246,8 @@ nnoremap <leader>pm :CtrlPMRUFiles<CR>
" Buffer creation and management " Buffer creation and management
" Buffer movement " Buffer movement
nnoremap <C-l> :1bnext<CR> nnoremap <Tab> :1bnext<CR>
nnoremap <C-h> :1bprevious<CR> nnoremap <S-Tab> :1bprevious<CR>
" Buffer creation " Buffer creation
" nnoremap <C-t> :enew<CR> " nnoremap <C-t> :enew<CR>
@ -233,91 +263,15 @@ nnoremap <leader>bq :bp <BAR> bd #<CR>
nnoremap Y y$ nnoremap Y y$
" flip number keys to their shift+ counterparts
nnoremap t1 t!
nnoremap t2 t@
nnoremap t3 t#
nnoremap t4 t$
nnoremap t5 t%
nnoremap t6 t^
nnoremap t7 t&
nnoremap t8 t*
nnoremap t9 t(
nnoremap t0 t)
nnoremap T1 T!
nnoremap T2 T@
nnoremap T3 T#
nnoremap T4 T$
nnoremap T5 T%
nnoremap T6 T^
nnoremap T7 T&
nnoremap T8 T*
nnoremap T9 T(
nnoremap T0 T)
nnoremap f1 f!
nnoremap f2 f@
nnoremap f3 f#
nnoremap f4 f$
nnoremap f5 f%
nnoremap f6 f^
nnoremap f7 f&
nnoremap f8 f*
nnoremap f9 f(
nnoremap f0 f)
nnoremap F1 F!
nnoremap F2 F@
nnoremap F3 F#
nnoremap F4 F$
nnoremap F5 F%
nnoremap F6 F^
nnoremap F7 F&
nnoremap F8 F*
nnoremap F9 F(
nnoremap F0 F)
" Karate edits
nnoremap ca9 ca(
nnoremap da9 da(
nnoremap va9 va(
nnoremap ca0 ca)
nnoremap da0 da)
nnoremap va0 va)
nnoremap ci9 ci(
nnoremap di9 di(
nnoremap vi9 vi(
nnoremap ci0 ci)
nnoremap di0 di)
nnoremap vi0 vi)
" scrolling and maintaing mouse position " scrolling and maintaing mouse position
nnoremap <C-j> j<C-e> " nnoremap <C-j> j<C-e>
nnoremap <C-k> k<C-y> " nnoremap <C-k> k<C-y>
" reload file after git changes " reload file after git changes
nnoremap <C-r> :e<CR> nnoremap <C-r> :e<CR>
" -- Syntastic Settings --
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 1
let g:syntastic_javascript_checkers = ['gjslint']
" Basic settings " Basic settings
set number set number
set wrap! set wrap!
@ -327,7 +281,7 @@ set shiftwidth=2
set background=dark set background=dark
syntax enable syntax enable
colorscheme OceanicNext colorscheme solarized
set history=1000 set history=1000
set undolevels=1000 set undolevels=1000
@ -438,7 +392,7 @@ vnoremap L $
" Search for visually selected text " Search for visually selected text
" vnoremap // y/<C-r>"<CR>N vnoremap // y/<C-r>"<CR>N
" trim trailing whitespace on save " trim trailing whitespace on save
@ -460,38 +414,6 @@ let g:ctrlp_custom_ignore = {
\} \}
" Search within a visual selection
function! RangeSearch(direction)
call inputsave()
let g:srchstr = input(a:direction)
call inputrestore()
if strlen(g:srchstr) > 0
let g:srchstr = g:srchstr.
\ '\%>'.(line("'<")-1).'l'.
\ '\%<'.(line("'>")+1).'l'
else
let g:srchstr = ''
endif
endfunction
vnoremap <silent> / :<C-U>call RangeSearch('/')<CR>:if strlen(g:srchstr) > 0\|exec '/'.g:srchstr\|endif<CR>
vnoremap <silent> ? :<C-U>call RangeSearch('?')<CR>:if strlen(g:srchstr) > 0\|exec '?'.g:srchstr\|endif<CR>
" Elixir linting via Neomake
let g:neomake_elixir_credo_maker = {
\ 'exe': 'mix',
\ 'args': ['credo', 'list', '%:p', '--format=oneline'],
\ 'errorformat':
\ '%W[F] %. %f:%l:%c %m,' .
\ '%W[F] %. %f:%l %m,' .
\ '%W[R] %. %f:%l:%c %m,' .
\ '%W[R] %. %f:%l %m,' .
\ '%I[C] %. %f:%l:%c %m,' .
\ '%I[C] %. %f:%l %m,' .
\ '%-Z%.%#'
\ }
" WIP: Run elixir tests on that line " WIP: Run elixir tests on that line
nnoremap <leader>t :call ExTestToggle()<CR> nnoremap <leader>t :call ExTestToggle()<CR>
@ -501,7 +423,7 @@ fun! ExTestToggle()
if expand('%:e') == "ex" if expand('%:e') == "ex"
let l:test_file_name = expand('%:t:r') . "_test.exs" let l:test_file_name = expand('%:t:r') . "_test.exs"
let l:test_file_dir = substitute(expand('%:p:h'), "/lib/core/", "/test/", "") let l:test_file_dir = substitute(expand('%:p:h'), "/lib/core/", "/lib/test/", "")
let l:full_test_path = join([test_file_dir, test_file_name], "/") let l:full_test_path = join([test_file_dir, test_file_name], "/")
e `=full_test_path` e `=full_test_path`
@ -518,3 +440,14 @@ fun! ExTestToggle()
endfun endfun
" Creates intermediate directories and file to match current buffer's filepath
fun! CreateNonExistingDirsAndFile()
! echo "Creating directory..." && mkdir -p %:p:h && echo "Created directory." && echo "Creating file..." && touch %:t:p && echo "Created file."
" Write the buffer to the recently created file.
w
endfun