about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2016-11-10T15·57-0500
committerWilliam Carroll <wpcarro@gmail.com>2016-11-10T15·57-0500
commitccd11f71971cfabd9f61666f403161a553266693 (patch)
tree16fceab39aeee6ef9e4eadf2d8e1e88edd1ae59d
parent251c7d72b955bdcd79870fa0d7b508e8b67792a3 (diff)
Updates config to support ctags
-rw-r--r--configs/.ctags89
-rwxr-xr-xconfigs/setup_configs.sh21
-rw-r--r--usbify/vim/.vimrc23
3 files changed, 132 insertions, 1 deletions
diff --git a/configs/.ctags b/configs/.ctags
new file mode 100644
index 000000000000..7899e7a21960
--- /dev/null
+++ b/configs/.ctags
@@ -0,0 +1,89 @@
+--recurse=yes
+--exclude=.git
+--exclude=vendor/
+--exclude=node_modules
+--exclude=db
+--exclude=log
+--exclude=tmp
+
+
+--regex-ruby=/.*alias(_method)?[[:space:]]+:([[:alnum:]_=!?]+),?[[:space:]]+:([[:alnum:]_=!]+)/\2/f,function/
+--regex-ruby=/(^|[:;])[ \t]*([A-Z][[:alnum:]_]+) *=/\2/c,class,constant/
+--regex-ruby=/(^|;)[ \t]*(has_many|belongs_to|has_one|has_and_belongs_to_many)\(? *:([[:alnum:]_]+)/\3/f,function,association/
+--regex-ruby=/(^|;)[ \t]*(named_)?scope\(? *:([[:alnum:]_]+)/\3/f,function,named_scope/
+--regex-ruby=/(^|;)[ \t]*expose\(? *:([[:alnum:]_]+)/\2/f,function,exposure/
+--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2/f,function,aasm_event/
+--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2!/f,function,aasm_event/
+--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2?/f,function,aasm_event/
+
+--langmap=Ruby:+(Rakefile)
+
+--langdef=js
+--langmap=js:.js
+--langmap=js:+.jsx
+
+--regex-js=/[ \t.]([A-Z][A-Z0-9._$]+)[ \t]*[=:][ \t]*([0-9"'\[\{]|null)/\1/n,constant/
+
+--regex-js=/\.([A-Za-z0-9._$]+)[ \t]*=[ \t]*\{/\1/o,object/
+--regex-js=/['"]*([A-Za-z0-9_$]+)['"]*[ \t]*:[ \t]*\{/\1/o,object/
+--regex-js=/([A-Za-z0-9._$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*\{/\1\.\2/o,object/
+
+--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\(function\(\)/\1/c,class/
+--regex-js=/['"]*([A-Za-z0-9_$]+)['"]*:[ \t]*\(function\(\)/\1/c,class/
+--regex-js=/class[ \t]+([A-Za-z0-9._$]+)[ \t]*/\1/c,class/
+--regex-js=/([A-Za-z$][A-Za-z0-9_$()]+)[ \t]*=[ \t]*[Rr]eact.createClass[ \t]*\(/\1/c,class/
+--regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*=[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/
+--regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*:[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/
+
+--regex-js=/([A-Za-z$][A-Za-z0-9_$]+)[ \t]*=[ \t]*function[ \t]*\(/\1/f,function/
+
+--regex-js=/(function)*[ \t]*([A-Za-z$_][A-Za-z0-9_$]+)[ \t]*\([^)]*\)[ \t]*\{/\2/f,function/
+--regex-js=/['"]*([A-Za-z$][A-Za-z0-9_$]+)['"]*:[ \t]*function[ \t]*\(/\1/m,method/
+--regex-js=/([A-Za-z0-9_$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*function[ \t]*\(/\2/m,method/
+
+
+--langdef=haskell
+--langmap=haskell:.hs
+--regex-haskell=/^module[ \t]*([A-Z][a-zA-Z0-9'_.]*)/\1/m,module/
+--regex-haskell=/^(new)?type[ \t]*([A-Z][a-zA-Z0-9'_]*)./\2/t,type/
+--regex-haskell=/^class[ \t]*([A-Z][a-zA-Z0-9'_]*)/\1/c,class/
+--regex-haskell=/^data[ \t]*([A-Z][a-zA-Z0-9'_]*)/\1/d,data/
+--regex-haskell=/^([a-z_][a-zA-Z0-9'_]*).*=/\1/v,function/
+
+--langmap=C++:+.mm
+
+--langdef=golang
+--langmap=golang:.go
+--regex-golang=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/
+--regex-golang=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/
+--regex-golang=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/
+
+--langdef=Rust
+--langmap=Rust:.rs
+--regex-Rust=/^[ \t]*(#\[[^\]]\][ \t]*)*(pub[ \t]+)?(extern[ \t]+)?("[^"]+"[ \t]+)?(unsafe[ \t]+)?fn[ \t]+([a-zA-Z0-9_]+)/\6/f,functions,function definitions/
+--regex-Rust=/^[ \t]*(pub[ \t]+)?type[ \t]+([a-zA-Z0-9_]+)/\2/T,types,type definitions/
+--regex-Rust=/^[ \t]*(pub[ \t]+)?enum[ \t]+([a-zA-Z0-9_]+)/\2/g,enum,enumeration names/
+--regex-Rust=/^[ \t]*(pub[ \t]+)?struct[ \t]+([a-zA-Z0-9_]+)/\2/s,structure names/
+--regex-Rust=/^[ \t]*(pub[ \t]+)?mod[ \t]+([a-zA-Z0-9_]+)/\2/m,modules,module names/
+--regex-Rust=/^[ \t]*(pub[ \t]+)?static[ \t]+([a-zA-Z0-9_]+)/\2/c,consts,static constants/
+--regex-Rust=/^[ \t]*(pub[ \t]+)?trait[ \t]+([a-zA-Z0-9_]+)/\2/t,traits,traits/
+--regex-Rust=/^[ \t]*(pub[ \t]+)?impl([ \t\n]*<[^>]*>)?[ \t]+(([a-zA-Z0-9_:]+)[ \t]*(<[^>]*>)?[ \t]+(for)[ \t]+)?([a-zA-Z0-9_]+)/\4 \6 \7/i,impls,trait implementations/
+--regex-Rust=/^[ \t]*macro_rules![ \t]+([a-zA-Z0-9_]+)/\1/d,macros,macro definitions/
+
+--langdef=typescript
+--langmap=typescript:.ts
+--regex-typescript=/^[ \t]*(export)?[ \t]*class[ \t]+([a-zA-Z0-9_]+)/\2/c,classes/
+--regex-typescript=/^[ \t]*(export)?[ \t]*module[ \t]+([a-zA-Z0-9_]+)/\2/n,modules/
+--regex-typescript=/^[ \t]*(export)?[ \t]*function[ \t]+([a-zA-Z0-9_]+)/\2/f,functions/
+--regex-typescript=/^[ \t]*export[ \t]+var[ \t]+([a-zA-Z0-9_]+)/\1/v,variables/
+--regex-typescript=/^[ \t]*var[ \t]+([a-zA-Z0-9_]+)[ \t]*=[ \t]*function[ \t]*\(\)/\1/v,varlambdas/
+--regex-typescript=/^[ \t]*(export)?[ \t]*(public|private)[ \t]+(static)?[ \t]*([a-zA-Z0-9_]+)/\4/m,members/
+--regex-typescript=/^[ \t]*(export)?[ \t]*interface[ \t]+([a-zA-Z0-9_]+)/\2/i,interfaces/
+--regex-typescript=/^[ \t]*(export)?[ \t]*enum[ \t]+([a-zA-Z0-9_]+)/\2/e,enums/
+--regex-typescript=/^[ \t]*import[ \t]+([a-zA-Z0-9_]+)/\1/I,imports/
+
+--langdef=elm
+--langmap=elm:.elm
+--regex-elm=/^module[ \t]*([A-Z][a-zA-Z0-9'_.]*)/\1/m,module/
+--regex-elm=/^type[ \t]*([A-Z][a-zA-Z0-9'_]*)./\1/t,type/
+--regex-elm=/^([a-z_][a-zA-Z0-9'_]*).*=/\1/v,function/
diff --git a/configs/setup_configs.sh b/configs/setup_configs.sh
index e1a742c4b199..2dbe15e118f9 100755
--- a/configs/setup_configs.sh
+++ b/configs/setup_configs.sh
@@ -20,7 +20,7 @@ else
 fi
 
 
-# backup .tmux.conf
+# .tmux.conf
 if [ -f "$HOME"/.tmux.conf ] && [ ! -L "$HOME"/.tmux.conf ]; then
     echo -n "Backing up .tmux.conf ... " && \
     mv "$HOME"/.tmux.conf "$HOME"/.tmux.conf.bak && \
@@ -37,3 +37,22 @@ else
     echo "Done."
 fi
 
+
+# .ctags
+if [ -f "$HOME"/.ctags ] && [ ! -L "$HOME"/.ctags ]; then
+    # backup .ctags
+    echo -n "Backing up .ctags ... " && \
+    mv "$HOME"/.ctags "$HOME"/.ctags.bak && \
+    echo "Done."
+fi
+
+if [ -L "$HOME"/.ctags ]; then
+    # TODO: make sure that .ctags is symlinked to the correct location.
+    echo ".ctags is already symlinked."
+else
+    # create symlink to pc_settings .ctags
+    echo -n "Symlinking to pc_settings/configs/.ctags ... " && \
+    ln -s "$HOME"/pc_settings/configs/.ctags "$HOME"/.ctags && \
+    echo "Done."
+fi
+
diff --git a/usbify/vim/.vimrc b/usbify/vim/.vimrc
index 236d79bc07b4..151391950a30 100644
--- a/usbify/vim/.vimrc
+++ b/usbify/vim/.vimrc
@@ -67,6 +67,14 @@ let g:airline_powerline_fonts = 1
 set noswapfile
 
 
+" Allow visual tab completion in command mode
+set wildmenu
+
+
+" Show Vim commands as they're being input.
+set showcmd
+
+
 " Changes <leader> to <space> character.
 let mapleader = " "
 
@@ -81,6 +89,10 @@ set hlsearch
 nnoremap <leader>/ :set hlsearch!<CR>
 
 
+" Use custom-made snippets.
+nnoremap ,jsfn :-1read $HOME/.vim/function_skeleton.js<CR>o
+
+
 " backspace settings
 set backspace=2
 set backspace=indent,eol,start
@@ -305,6 +317,7 @@ nnoremap <leader>w :set wrap!<CR>
 " Resize split to 10,20,...,100 chars
 " Uncomment the next lines for support at those sizes.
 " These bindings interfere with the highlight groups, however.
+" Increases the width of a vertical split.
 " nnoremap <leader>1 :vertical resize 10<CR>
 " nnoremap <leader>2 :vertical resize 20<CR>
 nnoremap <leader>3 :vertical resize 30<CR>
@@ -316,6 +329,16 @@ nnoremap <leader>8 :vertical resize 80<CR>
 nnoremap <leader>9 :vertical resize 90<CR>
 nnoremap <leader>0 :vertical resize 100<CR>
 
+" Increases the height of a horizontal split.
+nnoremap <leader>v1 :resize 5<CR>
+nnoremap <leader>v2 :resize 10<CR>
+nnoremap <leader>v3 :resize 15<CR>
+nnoremap <leader>v4 :resize 20<CR>
+nnoremap <leader>v5 :resize 25<CR>
+nnoremap <leader>v6 :resize 30<CR>
+nnoremap <leader>v7 :resize 35<CR>
+nnoremap <leader>v8 :resize 40<CR>
+
 
 " View Directory tree with ctrl + \
 nnoremap <C-\> :NERDTreeToggle<CR>