├── gitignore_global ├── agignore ├── bin ├── bin ├── replace ├── tat └── git-churn ├── zsh ├── zsh ├── completion │ ├── _staging │ ├── _production │ ├── _rspec │ ├── _ag │ └── _bundler └── functions │ ├── mcd │ ├── cs │ ├── change-extension │ ├── g │ └── envup ├── gvimrc ├── gitmessage ├── .gitignore ├── zshenv ├── aliases ├── setup ├── setup.sh ├── vscode.sh ├── shell.sh ├── dotfiles.sh ├── functions.sh ├── atom.sh ├── pre-setup.sh ├── applications.sh └── osxsettings.sh ├── atom ├── styles.less ├── init.coffee ├── keymap.cson ├── config.cson └── snippets.cson ├── LICENSE ├── README.md ├── gitconfig ├── Code └── User │ ├── snippets │ ├── jsx.json │ └── javascript.json │ ├── keybindings.json │ └── settings.json ├── tmux-client-92091.log ├── zshrc ├── tmux.conf ├── vimrc ├── vimrc.bundles └── com.googlecode.iterm2.plist /gitignore_global: -------------------------------------------------------------------------------- 1 | *.tmp 2 | -------------------------------------------------------------------------------- /agignore: -------------------------------------------------------------------------------- 1 | log 2 | tags 3 | tmp 4 | -------------------------------------------------------------------------------- /bin/bin: -------------------------------------------------------------------------------- 1 | /Users/colby/dotfiles/bin -------------------------------------------------------------------------------- /zsh/zsh: -------------------------------------------------------------------------------- 1 | /Users/colby/dotfiles/zsh -------------------------------------------------------------------------------- /zsh/completion/_staging: -------------------------------------------------------------------------------- 1 | #compdef staging 2 | compdef staging=heroku 3 | -------------------------------------------------------------------------------- /zsh/completion/_production: -------------------------------------------------------------------------------- 1 | #compdef production 2 | compdef production=heroku 3 | -------------------------------------------------------------------------------- /zsh/completion/_rspec: -------------------------------------------------------------------------------- 1 | #compdef rspec 2 | 3 | compadd -P spec/ `ls spec/**/*_spec.rb | sed -E "s/spec\///g"` 4 | -------------------------------------------------------------------------------- /zsh/functions/mcd: -------------------------------------------------------------------------------- 1 | # Make directory and change into it. 2 | 3 | function mcd() { 4 | mkdir -p "$1" && cd "$1"; 5 | } 6 | -------------------------------------------------------------------------------- /zsh/functions/cs: -------------------------------------------------------------------------------- 1 | function cs() { 2 | if [ $# -eq 0 ]; then 3 | cd && ls; 4 | else 5 | cd "$*" && ls; 6 | fi 7 | } 8 | alias cd='cs' 9 | -------------------------------------------------------------------------------- /zsh/completion/_ag: -------------------------------------------------------------------------------- 1 | #compdef ag 2 | 3 | if (( CURRENT == 2 )); then 4 | compadd $(cut -f 1 tmp/tags .git/tags 2>/dev/null) 5 | else; 6 | _files 7 | fi 8 | -------------------------------------------------------------------------------- /zsh/functions/change-extension: -------------------------------------------------------------------------------- 1 | # Change file extensions recursively in current directory 2 | # 3 | # change-extension erb haml 4 | 5 | function change-extension() { 6 | foreach f (**/*.$1) 7 | mv $f $f:r.$2 8 | end 9 | } 10 | -------------------------------------------------------------------------------- /zsh/functions/g: -------------------------------------------------------------------------------- 1 | # No arguments: `git status` 2 | # With arguments: acts like `git` 3 | g() { 4 | if [[ $# > 0 ]]; then 5 | git $@ 6 | else 7 | git status 8 | fi 9 | } 10 | 11 | # Complete g like git 12 | compdef g=git 13 | -------------------------------------------------------------------------------- /zsh/functions/envup: -------------------------------------------------------------------------------- 1 | # Load .env file into shell session for environment variables 2 | 3 | function envup() { 4 | if [ -f .env ]; then 5 | export `cat .env` 6 | else 7 | echo 'No .env file found' 1>&2 8 | return 1 9 | fi 10 | } 11 | -------------------------------------------------------------------------------- /gvimrc: -------------------------------------------------------------------------------- 1 | " No audible bell 2 | set vb 3 | 4 | " No toolbar 5 | set guioptions-=T 6 | 7 | " Use console dialogs 8 | set guioptions+=c 9 | 10 | " Local config 11 | if filereadable($HOME . "/.gvimrc.local") 12 | source ~/.gvimrc.local 13 | endif 14 | 15 | -------------------------------------------------------------------------------- /bin/replace: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Find and replace by a given list of files. 4 | # 5 | # replace foo bar **/*.rb 6 | 7 | find_this=$1 8 | shift 9 | replace_with=$1 10 | shift 11 | 12 | ag -l $find_this $* | xargs sed -i '' "s/$find_this/$replace_with/g" 13 | -------------------------------------------------------------------------------- /gitmessage: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 50-character subject line 4 | # 5 | # 72-character wrapped longer description. This should answer: 6 | # 7 | # * Why was this change necessary? 8 | # * How does it address the problem? 9 | # * Are there any side effects? 10 | # 11 | # Include a link to the ticket, if any. 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | !bin 2 | *.DS_store 3 | tmp/**/* 4 | !tmp/cache/.keep 5 | .env 6 | .bundle 7 | log/*.log 8 | 9 | atom/* 10 | !atom/config.cson 11 | !atom/init.coffee 12 | !atom/keymap.cson 13 | !atom/snippets.cson 14 | !atom/styles.less 15 | 16 | Code/User/workspaceStorage/* 17 | Code/User/globalStorage/* 18 | 19 | gitconfig.local 20 | -------------------------------------------------------------------------------- /zshenv: -------------------------------------------------------------------------------- 1 | # use vim as the visual editor 2 | export VISUAL=nvim 3 | export EDITOR=nvim 4 | 5 | # ensure dotfiles bin directory is loaded first 6 | export PATH="$HOME/.bin:/usr/local/sbin:$PATH" 7 | 8 | # load rbenv if available 9 | if which rbenv &>/dev/null ; then 10 | eval "$(rbenv init - --no-rehash)" 11 | fi 12 | 13 | # mkdir .git/safe in the root of repositories you trust 14 | export PATH=".git/safe/../../bin:$PATH" 15 | -------------------------------------------------------------------------------- /bin/tat: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Attach or create tmux session named the same as current directory. 4 | 5 | session_name="$(basename "$PWD" | tr . -)" 6 | 7 | not_in_tmux() { 8 | [ -z "$TMUX" ] 9 | } 10 | 11 | session_exists() { 12 | tmux list-sessions | sed -E 's/:.*$//' | grep -q "^$session_name$" 13 | } 14 | 15 | create_detached_session() { 16 | (TMUX='' tmux new-session -Ad -s "$session_name") 17 | } 18 | 19 | create_if_needed_and_attach() { 20 | if not_in_tmux; then 21 | tmux new-session -As "$session_name" 22 | else 23 | if ! session_exists; then 24 | create_detached_session 25 | fi 26 | tmux switch-client -t "$session_name" 27 | fi 28 | } 29 | 30 | create_if_needed_and_attach 31 | -------------------------------------------------------------------------------- /aliases: -------------------------------------------------------------------------------- 1 | # Unix 2 | alias tlf="tail -f" 3 | alias ln='ln -v' 4 | alias mkdir='mkdir -p' 5 | alias ...='../..' 6 | alias l='ls' 7 | alias ll='ls -al' 8 | alias lh='ls -Alh' 9 | alias -g G='| grep' 10 | alias -g M='| less' 11 | alias -g L='| wc -l' 12 | alias -g ONE="| awk '{ print \$1}'" 13 | alias e="$EDITOR" 14 | alias v="$VISUAL" 15 | 16 | # Pretty print the path 17 | alias path="echo $PATH | tr -s ':' '\n'" 18 | 19 | # Navigation 20 | alias cddot="cd ~/dotfiles" 21 | alias cdproj="cd ~/projects" 22 | 23 | # Go to the root of a project (git root) 24 | alias root='cd $(git rev-parse --show-cdup)' 25 | 26 | # kill a rogue process running on a specific port 27 | # usage: `killp 3000` 28 | killp() { lsof -n "-i4TCP:${1:-3002}" | grep LISTEN | tr -s ' ' | cut -f 2 -d ' ' | xargs kill -9} 29 | -------------------------------------------------------------------------------- /setup/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source ~/dotfiles/setup/functions.sh 3 | 4 | fancy_echo "Setting up git user info for .gitconfig.local" 5 | echo "Enter your git name." 6 | read git_name 7 | echo "Enter your Github email." 8 | read git_email 9 | echo "Enter your Github username." 10 | read github_username 11 | 12 | touch ~/dotfiles/gitconfig.local 13 | echo "[user]" >> ~/dotfiles/gitconfig.local 14 | echo " name = $git_name" >> ~/dotfiles/gitconfig.local 15 | echo " email = $git_email" >> ~/dotfiles/gitconfig.local 16 | echo "[github]" >> ~/dotfiles/gitconfig.local 17 | echo " user = $github_username" >> ~/dotfiles/gitconfig.local 18 | 19 | source ~/dotfiles/setup/shell.sh 20 | source ~/dotfiles/setup/applications.sh 21 | source ~/dotfiles/setup/dotfiles.sh 22 | source ~/dotfiles/setup/atom.sh 23 | source ~/dotfiles/setup/vscode.sh 24 | source ~/dotfiles/setup/osxsettings.sh 25 | -------------------------------------------------------------------------------- /atom/styles.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Your Stylesheet 3 | * 4 | * This stylesheet is loaded when Atom starts up and is reloaded automatically 5 | * when it is changed and saved. 6 | * 7 | * Add your own CSS or Less to fully customize Atom. 8 | * If you are unfamiliar with Less, you can read more about it here: 9 | * http://lesscss.org 10 | */ 11 | 12 | 13 | /* 14 | * Examples 15 | * (To see them, uncomment and save) 16 | */ 17 | 18 | // style the background color of the tree view 19 | .tree-view { 20 | // background-color: whitesmoke; 21 | } 22 | 23 | // style the background and foreground colors on the atom-text-editor-element itself 24 | atom-text-editor { 25 | // color: white; 26 | // background-color: hsl(180, 24%, 12%); 27 | } 28 | 29 | // To style other content in the text editor's shadow DOM, use the ::shadow expression 30 | atom-text-editor::shadow .cursor { 31 | // border-color: red; 32 | } 33 | -------------------------------------------------------------------------------- /setup/vscode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source ~/dotfiles/setup/functions.sh 3 | 4 | fancy_echo "Symlinking VSCode settings" 5 | ln -s ~/dotfiles/Code/User ~/Library/Application\ Support/Code/User 6 | 7 | fancy_echo "Installing Vscode" 8 | brew cask install visual-studio-code 9 | 10 | fancy_echo "Installing plugins" 11 | code --install-extension vscodevim.vim 12 | code --install-extension VisualStudioExptTeam.vscodeintellicode 13 | code --install-extension dbaeumer.vscode-eslint 14 | code --install-extension ryanolsonx.solarized 15 | code --install-extension PKief.material-icon-theme 16 | code --install-extension hoovercj.vscode-settings-cycler 17 | code --install-extension ionutvmi.path-autocomplete 18 | code --install-extension capaj.vscode-exports-autocomplete 19 | code --install-extension EditorConfig.EditorConfig 20 | code --install-extension mgmcdermott.vscode-language-babel 21 | code --install-extension jaspernorth.vscode-pigments 22 | code --install-extension stevencl.addDocComments 23 | -------------------------------------------------------------------------------- /atom/init.coffee: -------------------------------------------------------------------------------- 1 | # Your init script 2 | # 3 | # Atom will evaluate this file each time a new window is opened. It is run 4 | # after packages are loaded/activated and after the previous editor state 5 | # has been restored. 6 | # 7 | # An example hack to log to the console when each text editor is saved. 8 | # 9 | # atom.workspace.observeTextEditors (editor) -> 10 | # editor.onDidSave -> 11 | # console.log "Saved! #{editor.getPath()}" 12 | 13 | atom.commands.add atom.views.getView(atom.workspace), 'custom:insert-line-below', -> 14 | editor = atom.workspace.getActiveTextEditor() 15 | editor.newlineBelow() 16 | 17 | atom.commands.add atom.views.getView(atom.workspace), 'custom:insert-line-above', -> 18 | editor = atom.workspace.getActiveTextEditor() 19 | editor.newlineAbove() 20 | 21 | atom.commands.add atom.views.getView(atom.workspace), 'custom:semicolonize', -> 22 | editor = atom.workspace.getActiveTextEditor() 23 | position = editor.getCursorBufferPosition() 24 | editor.moveToEndOfLine() 25 | editor.insertText(";") 26 | editor.setCursorBufferPosition(position) 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | LICENSE 2 | 3 | The MIT License 4 | 5 | Copyright (c) 2015-2016 Colby Williams 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /setup/shell.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source ~/dotfiles/setup/functions.sh 3 | 4 | # shellcheck disable=SC2154 5 | trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT 6 | 7 | set -e 8 | 9 | if [ ! -d "$HOME/.bin/" ]; then 10 | mkdir "$HOME/.bin" 11 | fi 12 | 13 | if [ ! -f "$HOME/.zshrc" ]; then 14 | touch "$HOME/.zshrc" 15 | fi 16 | 17 | # shellcheck disable=SC2016 18 | append_to_zshrc 'export PATH="$HOME/.bin:$PATH"' 19 | 20 | HOMEBREW_PREFIX="/usr/local" 21 | 22 | if [ -d "$HOMEBREW_PREFIX" ]; then 23 | if ! [ -r "$HOMEBREW_PREFIX" ]; then 24 | sudo chown -R "$LOGNAME:admin" /usr/local 25 | fi 26 | else 27 | sudo mkdir "$HOMEBREW_PREFIX" 28 | sudo chflags norestricted "$HOMEBREW_PREFIX" 29 | sudo chown -R "$LOGNAME:admin" "$HOMEBREW_PREFIX" 30 | fi 31 | 32 | brew uninstall zsh 33 | case "$SHELL" in 34 | */zsh) : ;; 35 | *) 36 | fancy_echo "Changing your shell to zsh ..." 37 | chsh -s "$(which zsh)" 38 | ;; 39 | esac 40 | 41 | curl -L https://iterm2.com/misc/install_shell_integration_and_utilities.sh | bash 42 | 43 | git clone git@github.com:powerline/fonts.git ~/fonts-delete && ~/fonts-delete/install.sh && rm -rf ~/fonts-delete 44 | 45 | -------------------------------------------------------------------------------- /setup/dotfiles.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source ~/dotfiles/setup/functions.sh 3 | 4 | 5 | dotfiles=( 6 | zsh 7 | bin 8 | aliases 9 | agignore 10 | gitconfig 11 | gitconfig.local 12 | gitmessage 13 | gvimrc 14 | tmux.conf 15 | zshenv 16 | zshrc 17 | vimrc.bundles 18 | vimrc 19 | vim 20 | ) 21 | 22 | nvimrcpath="~/.config/nvim/init.vim" 23 | nvimpath="~/.config/nvimrc" 24 | 25 | fancy_echo "Backup current config" 26 | today=`date +%Y%m%d` 27 | for i in ${dotfiles[@]} ; do 28 | if [ "vimrc" == "$i" ]; then 29 | [ -e $nvimrcpath ] && [ ! -L $nvimrcpath ] && mv $nvimrcpath $nvimrcpath.bak.$today ; 30 | [ -L $nvimrcpath ] && unlink $nvimrcpath ; 31 | elif [ "vim" == "$i" ]; then 32 | [ -e ~$nvimpath ] && [ ! -L ~$nvimpath ] && mv ~$nvimpath ~$nvimpath.bak.$today ; 33 | [ -L ~$nvimpath ] && unlink ~$nvimpath ; 34 | else 35 | [ -e ~/.$i ] && [ ! -L ~/.$i ] && mv ~/.$i ~/.$i.bak.$today ; 36 | [ -L ~/.$i ] && unlink ~/.$i ; 37 | fi 38 | done 39 | 40 | fancy_echo "Symlinking dotfiles" 41 | for i in ${dotfiles[@]} ; do 42 | if [ "vimrc" == "$i" ]; then 43 | ln -s ~/dotfiles/vimrc $nvimrcpath 44 | elif [ "vim" == "$i" ]; then 45 | ln -s ~/.vim $nvimpath 46 | else 47 | ln -s ~/dotfiles/$i ~/.$i 48 | fi 49 | done 50 | -------------------------------------------------------------------------------- /setup/functions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | append_to_zshrc() { 4 | local text="$1" zshrc 5 | local skip_new_line="${2:-0}" 6 | 7 | if [ -w "$HOME/.zshrc.local" ]; then 8 | zshrc="$HOME/.zshrc.local" 9 | else 10 | zshrc="$HOME/.zshrc" 11 | fi 12 | 13 | if ! grep -Fqs "$text" "$zshrc"; then 14 | if [ "$skip_new_line" -eq 1 ]; then 15 | printf "%s\n" "$text" >> "$zshrc" 16 | else 17 | printf "\n%s\n" "$text" >> "$zshrc" 18 | fi 19 | fi 20 | } 21 | 22 | fancy_echo() { 23 | local fmt="$1"; shift 24 | 25 | # shellcheck disable=SC2059 26 | printf "\n$fmt\n" "$@" 27 | } 28 | 29 | fancy_echo_line() { 30 | local fmt="$1"; shift 31 | 32 | # shellcheck disable=SC2059 33 | printf "\n$fmt" "$@" 34 | } 35 | 36 | append_to_zshrc() { 37 | local text="$1" zshrc 38 | local skip_new_line="${2:-0}" 39 | 40 | if [ -w "$HOME/.zshrc.local" ]; then 41 | zshrc="$HOME/.zshrc.local" 42 | else 43 | zshrc="$HOME/.zshrc" 44 | fi 45 | 46 | if ! grep -Fqs "$text" "$zshrc"; then 47 | if [ "$skip_new_line" -eq 1 ]; then 48 | printf "%s\n" "$text" >> "$zshrc" 49 | else 50 | printf "\n%s\n" "$text" >> "$zshrc" 51 | fi 52 | fi 53 | } 54 | 55 | gem_install_or_update() { 56 | if gem list "$1" --installed > /dev/null; then 57 | gem update "$@" 58 | else 59 | gem install "$@" 60 | rbenv rehash 61 | fi 62 | } 63 | -------------------------------------------------------------------------------- /setup/atom.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source ~/dotfiles/setup/functions.sh 3 | 4 | fancy_echo "Installing Atom" 5 | ln -s ~/dotfiles/atom ~/.atom 6 | brew cask install atom 7 | 8 | fancy_echo "Installing Atom packages" 9 | apm install autocomplete-modules 10 | apm install autocomplete-paths 11 | apm install color-picker 12 | apm install editorconfig 13 | apm install file-icons 14 | apm install fonts 15 | apm install language-babel 16 | apm install linter 17 | apm install linter-eslint 18 | apm install pigments 19 | apm install gist 20 | apm install language-hjson 21 | 22 | fancy_echo "Installing atom packages for vim mode" 23 | apm install relative-numbers 24 | apm install atom-keyboard-macros-vim 25 | apm install vim-mode-plus 26 | apm install vim-mode-plus-keymaps-for-surround 27 | 28 | fancy_echo "Installing atom packages for Amazon dev stuff" 29 | apm install autocomplete-jsp 30 | 31 | mkdir ~/tlds 32 | wget -P ~/tlds https://raw.githubusercontent.com/javaee/jstl-api/master/impl/src/main/resources/META-INF/c.tld 33 | wget -P ~/tlds https://raw.githubusercontent.com/javaee/jstl-api/master/impl/src/main/resources/META-INF/fmt.tld 34 | wget -P ~/tlds https://raw.githubusercontent.com/javaee/jstl-api/master/impl/src/main/resources/META-INF/fn.tld 35 | wget -P ~/tlds https://raw.githubusercontent.com/javaee/jstl-api/master/impl/src/main/resources/META-INF/sql.tld 36 | wget -P ~/tlds https://raw.githubusercontent.com/javaee/jstl-api/master/impl/src/main/resources/META-INF/x.tld 37 | -------------------------------------------------------------------------------- /setup/pre-setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | fancy_echo() { 4 | local fmt="$1"; shift 5 | 6 | # shellcheck disable=SC2059 7 | printf "\n$fmt\n" "$@" 8 | } 9 | 10 | if ! command -v brew >/dev/null; then 11 | fancy_echo "Installing Homebrew ..." 12 | curl -fsS \ 13 | 'https://raw.githubusercontent.com/Homebrew/install/master/install' | ruby 14 | 15 | append_to_zshrc '# recommended by brew doctor' 16 | 17 | # shellcheck disable=SC2016 18 | append_to_zshrc 'export PATH="/usr/local/bin:$PATH"' 1 19 | 20 | export PATH="/usr/local/bin:$PATH" 21 | fi 22 | 23 | if brew list | grep -Fq brew-cask; then 24 | fancy_echo "Uninstalling old Homebrew-Cask ..." 25 | brew uninstall --force brew-cask 26 | fi 27 | 28 | fancy_echo "Installing git with Homebrew ..." 29 | brew install git 30 | brew tap caskroom/cask 31 | brew cask install github-desktop 32 | 33 | fancy_echo "Setting up Github SSH key pairs." 34 | echo "Please enter your github email." 35 | read github_email 36 | ssh-keygen -t rsa -b 4096 -C $github_email 37 | 38 | fancy_echo "Starting ssh-agent in the background." 39 | eval "$(ssh-agent -s)" 40 | 41 | fancy_echo "Adding your SSH key to ssh-agent." 42 | ssh-add ~/.ssh/id_rsa 43 | 44 | fancy_echo "Copying SSH key to your clipboard." 45 | pbcopy < ~/.ssh/id_rsa.pub 46 | 47 | fancy_echo "Add key to github to finish setup." 48 | echo "Press enter to open instructions." 49 | read throwaway_input 50 | open https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/ 51 | open https://github.com/settings/keys 52 | -------------------------------------------------------------------------------- /bin/git-churn: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | # 3 | # Put this on your $PATH (~/bin is recommended). 4 | # 5 | # Show churn for the files changed in the branch: 6 | # 7 | # $ git-churn 8 | # 9 | 10 | class GitChurn 11 | attr_accessor :all_files_with_churn_count, :changed_files, :result 12 | 13 | def calculate 14 | get_all_files_with_churn_count 15 | get_changed_files 16 | filter_into_result 17 | print_result 18 | end 19 | 20 | private 21 | 22 | def get_all_files_with_churn_count 23 | self.all_files_with_churn_count = 24 | `git log --all #{format_logs} | #{remove_blank_lines} | #{sort_by_ascending_churn_count}`.split("\n") 25 | end 26 | 27 | def format_logs 28 | "--name-only --format='format:'" 29 | end 30 | 31 | def remove_blank_lines 32 | "grep -v '^$'" 33 | end 34 | 35 | def sort_by_ascending_churn_count 36 | 'sort | uniq -c | sort' 37 | end 38 | 39 | def get_changed_files 40 | self.changed_files = 41 | `git log origin/master..HEAD #{format_logs} | #{remove_blank_lines} | #{remove_duplicates}`.split("\n") 42 | end 43 | 44 | def remove_duplicates 45 | 'sort | uniq' 46 | end 47 | 48 | def filter_into_result 49 | self.result = all_files_with_churn_count.select { |file| file_changed?(file) }.join("\n") 50 | end 51 | 52 | def file_changed?(file) 53 | changed_files.any? { |changed_file| file.include?(changed_file) } 54 | end 55 | 56 | def print_result 57 | puts result 58 | end 59 | end 60 | 61 | git_churn = GitChurn.new 62 | git_churn.calculate 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # New Mac Web Dev Setup scripts 2 | 3 | ## Customizing 4 | I do NOT recommend installing all of my setup without looking through what is happening and customizing it for yourself. Fork this repo and update anything you like. 5 | 6 | Look through the shell scripts in `setup` folder to see what programs are being installed. You can add or remove everything from there. Most likely, if you are not a VIM power user you will want to modify some of the shell and atom plugins/config to suit yours preferences. 7 | 8 | ## Pre-Setup (If you don't have Homebrew and/or Github setup with SSH access) 9 | Install Homebrew and git, and set up SSH for Github 10 | ```bash 11 | curl --remote-name https://raw.githubusercontent.com/colbycheeze/dotfiles/master/setup/pre-setup.sh 12 | chmod a+x pre-setup.sh 13 | ./pre-setup.sh 14 | ``` 15 | Manually Install latest (non beta) Xcode from the [app store](https://developer.apple.com/xcode/downloads/) 16 | 17 | ## Setup 18 | `git clone git@github.com:colbycheeze/dotfiles.git ~/dotfiles && cd ~/dotfiles/setup && git checkout amazon && chmod a+x applications.sh && chmod a+x finishSetup.sh ./applications.sh` 19 | 20 | ## Finishing touches 21 | 1. open `tmux` and install plugins: `CTRL + A, I` 22 | 1. open `nvim` and run `:PlugInstall` and `:UpdateRemotePlugins` 23 | 1. Register Divvy and add any hotkeys for window management 24 | 1. Change key repeat rate / delay to fast/short in keyboard preferences 25 | 1. Swap ESC and CAPS key in keyboard preferences (OSX Sierra now supports this) 26 | 1. Connect iterm2 profile to dotfiles: [(instructions)](http://stackoverflow.com/a/25122646/4298624) 27 | -------------------------------------------------------------------------------- /atom/keymap.cson: -------------------------------------------------------------------------------- 1 | # You can find more information about keymaps in these guides: 2 | # * https://atom.io/docs/latest/using-atom-basic-customization#customizing-key-bindings 3 | # * https://atom.io/docs/latest/behind-atom-keymaps-in-depth 4 | 5 | 'atom-text-editor.vim-mode-plus:not(.insert-mode)': 6 | 'ctrl-h': 'window:focus-pane-on-left' 7 | 'ctrl-l': 'window:focus-pane-on-right' 8 | 'ctrl-k': 'window:focus-pane-on-top' 9 | 'ctrl-j': 'window:focus-pane-on-bottom' 10 | 'g c': 'editor:toggle-line-comments' 11 | 'space q': 'atom-keyboard-macros-vim:execute_macro_vim' 12 | # '%': 'bracket-matcher:go-to-matching-bracket' 13 | # '%': 'vim-mode:bracket-matching-motion' 14 | 15 | 'atom-text-editor.vim-mode-plus.insert-mode': 16 | 'ctrl-;': 'custom:semicolonize' 17 | 18 | 'atom-text-editor.vim-mode-plus.normal-mode': 19 | 'space s': 'window:save-all' 20 | 'space x': 'core:close' 21 | 'enter': 'editor:newline-below' 22 | 'shift-enter': 'editor:newline-above' 23 | 'space ;': 'custom:semicolonize' 24 | 'ctrl-;': 'custom:semicolonize' 25 | 26 | '.platform-darwin': 27 | 'cmd-n': 'tree-view:toggle' 28 | 'ctrl-n': 'tree-view:toggle-focus' 29 | 'cmd-p': 'fuzzy-finder:toggle-file-finder' 30 | 'ctrl-p': 'fuzzy-finder:toggle-file-finder' 31 | 32 | '.fuzzy-finder atom-text-editor[mini]': 33 | 'ctrl-v': 'pane:split-right' 34 | 'ctrl-s': 'pane:split-down' 35 | 36 | '.tree-view': 37 | 'o': 'tree-view:expand-directory' 38 | 'O': 'tree-view:recursive-expand-directory' 39 | 'x': 'tree-view:collapse-directory' 40 | 'X': 'tree-view:recursive-collapse-directory' 41 | 's': 'tree-view:open-selected-entry-down' 42 | 'v': 'tree-view:open-selected-entry-right' 43 | 't': 'tree-view:open-selected-entry' 44 | 'd': 'tree-view:remove' 45 | 'c': 'tree-view:duplicate' 46 | 47 | 'atom-workspace atom-text-editor.autocomplete-active': 48 | 'tab': 'snippets:next-tab-stop' 49 | 'shift-tab': 'snippets:previous-tab-stop' 50 | -------------------------------------------------------------------------------- /gitconfig: -------------------------------------------------------------------------------- 1 | [init] 2 | templatedir = ~/.git_template 3 | [push] 4 | default = current 5 | [color] 6 | ui = auto 7 | [alias] 8 | aa = add --all 9 | ci = commit -v 10 | 11 | # Commit all changes 12 | ca = !git add -A && git commit -av 13 | 14 | # Add all changes to last commit 15 | caa = !git add -A && git commit --amend -av 16 | 17 | # Switch to a branch, creating it if necessary 18 | co = "!f() { git checkout -b \"$1\" 2> /dev/null || git checkout \"$1\"; }; f" 19 | 20 | # Rename local branch 21 | rn = "!f() { git branch -m $1; }; f" 22 | 23 | # Sync current branch by rebasing on top 24 | scb = !git pull --rebase 25 | 26 | # Sync current branch with mainline 27 | up = "!f() { git branch --set-upstream-to origin/$1; }; f" 28 | 29 | # View all branches, upstreams, info etc 30 | vv = !git branch -vv 31 | 32 | # Show the diff between the latest commit and the current state 33 | d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat" 34 | 35 | # deploy a folder to gh-pages branch (public by default) 36 | ghp = "!f() { git subtree push --prefix ${1:-public} origin gh-pages; }; f" 37 | 38 | current-branch = !sh -c 'git rev-parse --abbrev-ref HEAD' - 39 | delete-branch = !sh -c 'git push origin :refs/heads/$1 && git branch -D $1' - 40 | dag = log --graph --format='format:%C(yellow)%h%C(reset) %C(blue)\"%an\" <%ae>%C(reset) %C(magenta)%cr%C(reset)%C(auto)%d%C(reset)%n%s' --date-order 41 | [core] 42 | excludesfile = /Users/willcolb/.gitignore_global 43 | autocrlf = input 44 | pager = less -FMRiX 45 | [commit] 46 | template = ~/.gitmessage 47 | [fetch] 48 | prune = true 49 | [include] 50 | path = ~/.gitconfig.local 51 | [filter "hawser"] 52 | clean = git hawser clean %f 53 | smudge = git hawser smudge %f 54 | required = true 55 | [filter "lfs"] 56 | clean = git-lfs clean -- %f 57 | smudge = git-lfs smudge -- %f 58 | process = git-lfs filter-process 59 | required = true 60 | -------------------------------------------------------------------------------- /setup/applications.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source ~/dotfiles/setup/functions.sh 3 | 4 | if ! command -v brew >/dev/null; then 5 | fancy_echo "Installing Homebrew ..." 6 | curl -fsS \ 7 | 'https://raw.githubusercontent.com/Homebrew/install/master/install' | ruby 8 | 9 | append_to_zshrc '# recommended by brew doctor' 10 | 11 | # shellcheck disable=SC2016 12 | append_to_zshrc 'export PATH="/usr/local/bin:$PATH"' 1 13 | 14 | export PATH="/usr/local/bin:$PATH" 15 | fi 16 | 17 | if brew list | grep -Fq brew-cask; then 18 | fancy_echo "Uninstalling old Homebrew-Cask ..." 19 | brew uninstall --force brew-cask 20 | fi 21 | 22 | brew update && brew install `brew outdated` 23 | 24 | fancy_echo "Installing CLI tools" 25 | brew install openssl 26 | brew install zsh 27 | brew install zsh-completions 28 | brew install bash 29 | brew install bash-completion 30 | brew install fzf 31 | brew install the_silver_searcher 32 | brew install wget 33 | brew install watchman # needed for jest --watch 34 | 35 | fancy_echo "Installing python and setting up Neovim" 36 | brew install python 37 | brew install python3 38 | brew install neovim/neovim/neovim 39 | curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs \ 40 | https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 41 | pip3 install neovim 42 | 43 | 44 | fancy_echo "Setting up tmux" 45 | brew install tmux 46 | brew install reattach-to-user-namespace 47 | brew install tree 48 | git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm 49 | 50 | fancy_echo "Setting up Node with NVM" 51 | mkdir ~/.nvm 52 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash 53 | export NVM_DIR="$HOME/.nvm" 54 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 55 | nvm install node 56 | nvm alias default node 57 | 58 | fancy_echo "Installing global npm packages" 59 | npm install -g npm@latest 60 | npm install -g npm-check-updates browser-sync 61 | 62 | brew install chrome-cli 63 | brew install git 64 | 65 | brew tap caskroom/cask 66 | brew cask install google-chrome 67 | brew cask install iterm2 68 | brew cask install github-desktop 69 | brew cask install dropbox 70 | brew cask install divvy 71 | brew cask install caffeine 72 | brew cask install screenflow 73 | brew cask install macdown 74 | 75 | fancy_echo "Installing Misc Apps" 76 | brew cask install discord 77 | brew cask install disk-inventory-x 78 | brew cask install vlc 79 | -------------------------------------------------------------------------------- /atom/config.cson: -------------------------------------------------------------------------------- 1 | "*": 2 | "atom-ternjs": 3 | useSnippets: true 4 | "autocomplete-modules": 5 | vendors: [ 6 | "node_modules" 7 | "src" 8 | ] 9 | build: 10 | saveOnBuild: true 11 | core: 12 | disabledPackages: [ 13 | "linter-flow-plus" 14 | "autocomplete-flow" 15 | "linter-flow" 16 | "atom-ternjs" 17 | "linter-checkstyle" 18 | ] 19 | packagesWithKeymapsDisabled: [ 20 | "git-blame" 21 | ] 22 | projectHome: "/Users/colbywilliams/projects" 23 | telemetryConsent: "limited" 24 | themes: [ 25 | "one-light-ui" 26 | "solarized-light-syntax" 27 | ] 28 | editor: 29 | invisibles: {} 30 | preferredLineLength: 100 31 | scrollPastEnd: true 32 | "exception-reporting": 33 | userId: "a58af052-dcc6-4331-81cb-59b673e99ccc" 34 | fonts: {} 35 | gist: 36 | tokenFile: "~/.atom/gist-it.token" 37 | "gist-it": 38 | openAfterCreate: true 39 | "git-blame": 40 | columnWidth: 556 41 | showOnlyLastNames: false 42 | "git-diff": {} 43 | "language-babel": {} 44 | linter: {} 45 | "linter-eslint": 46 | disableEslintIgnore: true 47 | fixOnSave: true 48 | globalNodePath: "/usr/local" 49 | "linter-ui-default": 50 | panelHeight: 143 51 | tooltipFollows: "Keyboard" 52 | "merge-conflicts": 53 | gitPath: "/usr/local/bin/git" 54 | "one-dark-ui": {} 55 | "one-light-ui": {} 56 | pigments: 57 | autocompleteScopes: [ 58 | ".source.scss" 59 | ] 60 | extendAutocompleteToColorValue: true 61 | extendAutocompleteToVariables: true 62 | ignoreVcsIgnoredPaths: false 63 | ignoredNames: [ 64 | "src/node_modules/*" 65 | "node_modules/*" 66 | "public/*" 67 | "src/pre-atlas/**/*" 68 | ] 69 | sourceNames: [ 70 | "**/*.scss" 71 | ] 72 | "sync-settings": 73 | _analyticsUserId: "971b17cd-cd84-406f-aa72-4dd819000ce2" 74 | "tree-view": 75 | squashDirectoryNames: true 76 | "vim-mode": 77 | useSmartcaseForSearch: true 78 | "vim-mode-plus": {} 79 | "vim-surround": {} 80 | welcome: 81 | showOnStartup: false 82 | ".attribute-values.js.jsx.source": 83 | editor: 84 | preferredLineLength: 100 85 | ".babel.regexp.source": 86 | editor: 87 | preferredLineLength: 100 88 | ".dustjs.html.text": 89 | editor: 90 | preferredLineLength: 100 91 | ".ini.source": 92 | editor: 93 | scrollPastEnd: true 94 | showIndentGuide: true 95 | showInvisibles: true 96 | ".js.jsx.react.source": 97 | editor: 98 | preferredLineLength: 100 99 | ".js.jsx.source": 100 | editor: 101 | preferredLineLength: 100 102 | ".js.source.subtlegradient": 103 | editor: 104 | preferredLineLength: 100 105 | -------------------------------------------------------------------------------- /zsh/completion/_bundler: -------------------------------------------------------------------------------- 1 | #compdef bundle 2 | 3 | local curcontext="$curcontext" state line _gems _opts ret=1 4 | 5 | _arguments -C -A "-v" -A "--version" \ 6 | '(- 1 *)'{-v,--version}'[display version information]' \ 7 | '1: :->cmds' \ 8 | '*:: :->args' && ret=0 9 | 10 | case $state in 11 | cmds) 12 | _values "bundle command" \ 13 | "install[Install the gems specified by the Gemfile or Gemfile.lock]" \ 14 | "update[Update dependencies to their latest versions]" \ 15 | "package[Package the .gem files required by your application]" \ 16 | "exec[Execute a script in the context of the current bundle]" \ 17 | "config[Specify and read configuration options for bundler]" \ 18 | "check[Determine whether the requirements for your application are installed]" \ 19 | "list[Show all of the gems in the current bundle]" \ 20 | "show[Show the source location of a particular gem in the bundle]" \ 21 | "console[Start an IRB session in the context of the current bundle]" \ 22 | "open[Open an installed gem in the editor]" \ 23 | "viz[Generate a visual representation of your dependencies]" \ 24 | "init[Generate a simple Gemfile, placed in the current directory]" \ 25 | "gem[Create a simple gem, suitable for development with bundler]" \ 26 | "help[Describe available tasks or one specific task]" 27 | ret=0 28 | ;; 29 | args) 30 | case $line[1] in 31 | help) 32 | _values 'commands' 'install update package exec config check list show console open viz init gem help' && ret=0 33 | ;; 34 | install) 35 | _arguments \ 36 | '(--no-color)--no-color[disable colorization in output]' \ 37 | '(--local)--local[do not attempt to connect to rubygems.org]' \ 38 | '(--quiet)--quiet[only output warnings and errors]' \ 39 | '(--gemfile)--gemfile=-[use the specified gemfile instead of Gemfile]:gemfile' \ 40 | '(--system)--system[install to the system location]' \ 41 | '(--deployment)--deployment[install using defaults tuned for deployment environments]' \ 42 | '(--frozen)--frozen[do not allow the Gemfile.lock to be updated after this install]' \ 43 | '(--path)--path=-[specify a different path than the system default]:path:_files' \ 44 | '(--binstubs)--binstubs=-[generate bin stubs for bundled gems to ./bin]:directory:_files' \ 45 | '(--without)--without=-[exclude gems that are part of the specified named group]:groups' 46 | ret=0 47 | ;; 48 | exec) 49 | _normal && ret=0 50 | ;; 51 | (open|show) 52 | _gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') ) 53 | if [[ $_gems != "" ]]; then 54 | _values 'gems' $_gems && ret=0 55 | fi 56 | ;; 57 | *) 58 | _opts=( $(bundle help $line[1] | sed -e '/^ \[-/!d; s/^ \[\(-[^=]*\)=.*/\1/') ) 59 | _opts+=( $(bundle help $line[1] | sed -e '/^ -/!d; s/^ \(-.\), \[\(-[^=]*\)=.*/\1 \2/') ) 60 | if [[ $_opts != "" ]]; then 61 | _values 'options' $_opts && ret=0 62 | fi 63 | ;; 64 | esac 65 | ;; 66 | esac 67 | 68 | return ret 69 | 70 | -------------------------------------------------------------------------------- /Code/User/snippets/jsx.json: -------------------------------------------------------------------------------- 1 | { 2 | // Place your snippets for jsx here. Each snippet is defined under a snippet name and has a prefix, body and 3 | // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 4 | // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 5 | // same ids are connected. 6 | // Example: 7 | // "Print to console": { 8 | // "prefix": "log", 9 | // "body": [ 10 | // "console.log('$1');", 11 | // "$2" 12 | // ], 13 | // "description": "Log output to console" 14 | // } 15 | "React Class Starter": { 16 | "prefix": "rcc", 17 | "body": "import React, { PureComponent } from 'react';\nimport PT from 'prop-types';\n\nexport default class ${1:ComponentName} extends PureComponent {\n static propTypes = {\n name: PT.string,\n }\n\n static defaultProps = {\n name: 'Colby',\n }\n\n render() {\n const { name } = this.props;\n\n return (\n
\n Hello {name}\n
\n );\n }\n}$0" 18 | }, 19 | "Redux Connect": { 20 | "prefix": "redcon", 21 | "body": "import { connect } from 'react-redux';\nimport { selectThing } from '../modules/things';\n\nconst mapStateToProps = (state, ownProps) => ({\n name: selectThing(state, ownProps.id).name,\n createdAt: selectThing(state, ownProps.id).createdAt,\n});\nconst actions = {\n doSomethingWithThing,\n};\n\nexport default connect(mapStateToProps, actions)(${1:ComponentName});$0" 22 | }, 23 | "Mocked Storybook Starter": { 24 | "prefix": "stbm", 25 | "body": "import React from 'react'\nimport { storiesOf, action } from '@kadira/storybook'\n\nimport { Provider } from 'react-redux'\nimport reduxThunk from 'redux-thunk'\nimport configureStore from 'redux-mock-store'\nimport axios from 'axios'\nimport MockAdapter from 'axios-mock-adapter'\n\nimport snippetFactory from './factoryStarter.js'\n\nconst mockStore = configureStore([reduxThunk])(snippetFactory)\nconst mockApi = new MockAdapter(axios)\nmockApi.onAny().reply(200, {})\n\nstoriesOf('${1:Feature Name}', module)\n .addDecorator((story) => (\n \n {story()}\n \n ))\n .add('component with mocked store', () => (\n
I am a component of some sort
\n ))$0" 26 | }, 27 | "Styled Component theme fn": { 28 | "prefix": "theme", 29 | "body": "${({ theme }) => theme.${1:something}};$0" 30 | }, 31 | "className": { 32 | "prefix": ".", 33 | "body": "className={classes.$1}$0" 34 | }, 35 | "Validate Children": { 36 | "prefix": "children", 37 | "body": "children: PT.oneOfType([PT.element, PT.arrayOf(PT.element)])$0" 38 | }, 39 | "Element Ref": { 40 | "prefix": "ref", 41 | "body": "ref={element => { this.${1:refName} = element; }}$0" 42 | }, 43 | "Storybook Starter": { 44 | "prefix": "stb", 45 | "body": "import React from 'react'\nimport { storiesOf, action } from '@kadira/storybook'\n\nstoriesOf('${1:Feature Name}', module)\n .addDecorator((story) => (\n
\n

I decorate the story!

\n {story()}\n
\n ))\n .add('Basic story', () => (\n
I am a component of some sort
\n ))$0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Code/User/keybindings.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "key": "escape", 4 | "command": "extension.vim_escape", 5 | "when": "editorTextFocus && vim.active && !inDebugRepl" 6 | }, 7 | { 8 | "key": "v", 9 | "command": "explorer.openToSide", 10 | "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus" 11 | }, 12 | { 13 | "key": "ctrl+enter", 14 | "command": "-explorer.openToSide", 15 | "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus" 16 | }, 17 | { 18 | "key": "f", 19 | "command": "explorer.newFile", 20 | "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus" 21 | }, 22 | { 23 | "key": "shift+f", 24 | "command": "explorer.newFolder", 25 | "when": "explorerViewletFocus && explorerViewletVisible && !inputFocus" 26 | }, 27 | { 28 | "key": "d", 29 | "command": "moveFileToTrash", 30 | "when": "config.files.enableTrash && explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" 31 | }, 32 | { 33 | "key": "delete", 34 | "command": "-moveFileToTrash", 35 | "when": "config.files.enableTrash && explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" 36 | }, 37 | { 38 | "key": "ctrl+n", 39 | "command": "workbench.action.focusActiveEditorGroup", 40 | "when": "explorerViewletFocus && explorerViewletVisible" 41 | }, 42 | { 43 | "key": "ctrl+n", 44 | "command": "-workbench.action.files.newUntitledFile", 45 | "when": "explorerViewletFocus && explorerViewletVisible" 46 | }, 47 | { 48 | "key": "ctrl+n", 49 | "command": "workbench.files.action.focusFilesExplorer", 50 | "when": "!explorerViewletFocus" 51 | }, 52 | { 53 | "key": "shift+enter", 54 | "command": "editor.action.insertLineBefore", 55 | "when": "editorTextFocus && !editorReadonly" 56 | }, 57 | { 58 | "key": "ctrl+shift+enter", 59 | "command": "-editor.action.insertLineBefore", 60 | "when": "editorTextFocus && !editorReadonly" 61 | }, 62 | { 63 | "key": "x", 64 | "command": "list.collapse", 65 | "when": "listFocus && !inputFocus" 66 | }, 67 | { 68 | "key": "left", 69 | "command": "-list.collapse", 70 | "when": "listFocus && !inputFocus" 71 | }, 72 | { 73 | "key": "shift+escape", 74 | "command": "-workbench.action.terminal.hideFindWidget", 75 | "when": "terminalFindWidgetVisible && terminalFocus" 76 | }, 77 | { 78 | "key": "capslock", 79 | "command": "closeFindWidget", 80 | "when": "editorFocus && findWidgetVisible" 81 | }, 82 | { 83 | "key": "escape", 84 | "command": "-closeFindWidget", 85 | "when": "editorFocus && findWidgetVisible" 86 | }, 87 | { 88 | "key": "ctrl+n", 89 | "command": "-workbench.action.files.newUntitledFile" 90 | }, 91 | { 92 | "key": "m", 93 | "command": "renameFile", 94 | "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" 95 | }, 96 | { 97 | "key": "f2", 98 | "command": "-renameFile", 99 | "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" 100 | }, 101 | { 102 | "key": "enter", 103 | "command": "-renameFile", 104 | "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" 105 | }, 106 | { 107 | "key": "cmd+n", 108 | "command": "workbench.action.toggleSidebarVisibility" 109 | }, 110 | { 111 | "key": "cmd+b", 112 | "command": "-workbench.action.toggleSidebarVisibility" 113 | }, 114 | { 115 | "key": "ctrl+p", 116 | "command": "workbench.action.quickOpen" 117 | }, 118 | { 119 | "key": "cmd+p", 120 | "command": "-workbench.action.quickOpen" 121 | } 122 | ] 123 | -------------------------------------------------------------------------------- /Code/User/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.lineNumbers": "on", 3 | "editor.tabSize": 2, 4 | "editor.fontSize": 14, 5 | "editor.fontWeight": "400", 6 | // "editor.fontFamily": "DejaVu Sans Mono", 7 | "editor.fontFamily": "Menlo", 8 | "editor.renderIndentGuides": false, 9 | "workbench.iconTheme": "material-icon-theme", 10 | 11 | "eslint.autoFixOnSave": true, 12 | 13 | "settings.cycle": [ 14 | { 15 | "id": "lineNumber", // must be unique 16 | "overrideWorkspaceSettings": false, 17 | "values": [ 18 | { "editor.lineNumbers": "on" }, 19 | { "editor.lineNumbers": "relative" } 20 | ] 21 | } 22 | ], 23 | 24 | "vim.enableNeovim": true, 25 | "vim.neovimPath": "/usr/bin/nvim", 26 | "vim.easymotion": false, 27 | "vim.sneak": false, 28 | "vim.incsearch": true, 29 | "vim.useSystemClipboard": true, 30 | "vim.useCtrlKeys": true, 31 | "vim.hlsearch": true, 32 | "vim.leader": "", 33 | 34 | "vim.insertModeKeyBindings": [ 35 | { 36 | "before": [ "j", "k" ], 37 | "after": [ "" ], 38 | "commands": [{ "command": "settings.cycle.lineNumber" }] 39 | }, 40 | { 41 | "before": [""], 42 | "after": [""], 43 | "commands": [{ "command": "settings.cycle.lineNumber" }] 44 | }, 45 | { 46 | "before": [""], 47 | "after": [""], 48 | "commands": [{ "command": "settings.cycle.lineNumber" }] 49 | }, 50 | ], 51 | 52 | "vim.visualModeKeyBindingsNonRecursive": [ 53 | { 54 | "before": [ "" ], 55 | "commands": [ "editor.action.indentLines" ] 56 | }, 57 | ], 58 | 59 | "vim.normalModeKeyBindingsNonRecursive": [ 60 | { 61 | "before": [ "" ], 62 | "commands": [ "editor.action.indentLines" ] 63 | }, 64 | { 65 | "before": [ "" ], 66 | "commands": [ "editor.action.insertLineAfter" ] 67 | }, 68 | { 69 | "before": [ "" ], 70 | "commands": [ "workbench.files.action.focusFilesExplorer" ] 71 | }, 72 | { 73 | "before": [ "", "," ], 74 | "commands": [ ":nohl" ] 75 | }, 76 | { 77 | "before": [ "" ], 78 | "commands": [ "workbench.action.closeActiveEditor" ] 79 | }, 80 | { 81 | "before": [ "", "x" ], 82 | "commands": [ ":x" ] 83 | }, 84 | { 85 | "before": [ "", "s" ], 86 | "commands": [ "workbench.action.files.saveAll" ] 87 | }, 88 | { 89 | "before": [ "" ], 90 | "commands": [ "workbench.action.focusLeftGroup" ] 91 | }, 92 | { 93 | "before": [ "" ], 94 | "commands": [ "workbench.action.focusRightGroup" ] 95 | }, 96 | { 97 | "before": [ "" ], 98 | "commands": [ "workbench.action.focusBelowGroup" ] 99 | }, 100 | { 101 | "before": [ "" ], 102 | "commands": [ "workbench.action.focusAboveGroup" ] 103 | }, 104 | 105 | // fixes for relative numbers 106 | { 107 | "before": [ "i" ], 108 | "after": [ "i" ], 109 | "commands": [{ "command": "settings.cycle.lineNumber" }] 110 | }, 111 | { 112 | "before": [ "I" ], 113 | "after": [ "I" ], 114 | "commands": [{ "command": "settings.cycle.lineNumber" }] 115 | }, 116 | { 117 | "before": [ "a" ], 118 | "after": [ "a" ], 119 | "commands": [{ "command": "settings.cycle.lineNumber" }] 120 | }, 121 | { 122 | "before": [ "A" ], 123 | "after": [ "A" ], 124 | "commands": [{ "command": "settings.cycle.lineNumber" }] 125 | }, 126 | { 127 | "before": [ "o" ], 128 | "after": [ "o" ], 129 | "commands": [{ "command": "settings.cycle.lineNumber" }] 130 | }, 131 | { 132 | "before": [ "O" ], 133 | "after": [ "O" ], 134 | "commands": [{ "command": "settings.cycle.lineNumber" }] 135 | } 136 | ], 137 | "vim.handleKeys": { 138 | "": false, 139 | "": false 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /tmux-client-92091.log: -------------------------------------------------------------------------------- 1 | 1505243135.386233 client started (92091): version 2.5, socket /private/tmp/tmux-569491803/default, protocol 8 2 | 1505243135.386265 on Darwin 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64; libevent 2.1.8-stable (select) 3 | 1505243135.386299 socket is /private/tmp/tmux-569491803/default 4 | 1505243135.386313 trying connect 5 | 1505243135.386386 add peer 0x7fb298802000: 6 (0x0) 6 | 1505243135.388262 sending message 100 to peer 0x7fb298802000 (4 bytes) 7 | 1505243135.388281 sending message 101 to peer 0x7fb298802000 (16 bytes) 8 | 1505243135.388285 sending message 102 to peer 0x7fb298802000 (13 bytes) 9 | 1505243135.388288 sending message 108 to peer 0x7fb298802000 (25 bytes) 10 | 1505243135.388298 sending message 104 to peer 0x7fb298802000 (0 bytes) 11 | 1505243135.388301 sending message 107 to peer 0x7fb298802000 (4 bytes) 12 | 1505243135.388304 sending message 105 to peer 0x7fb298802000 (76 bytes) 13 | 1505243135.388307 sending message 105 to peer 0x7fb298802000 (40 bytes) 14 | 1505243135.388310 sending message 105 to peer 0x7fb298802000 (11 bytes) 15 | 1505243135.388313 sending message 105 to peer 0x7fb298802000 (15 bytes) 16 | 1505243135.388322 sending message 105 to peer 0x7fb298802000 (12 bytes) 17 | 1505243135.388325 sending message 105 to peer 0x7fb298802000 (21 bytes) 18 | 1505243135.388328 sending message 105 to peer 0x7fb298802000 (28 bytes) 19 | 1505243135.388331 sending message 105 to peer 0x7fb298802000 (61 bytes) 20 | 1505243135.388345 sending message 105 to peer 0x7fb298802000 (17 bytes) 21 | 1505243135.388348 sending message 105 to peer 0x7fb298802000 (17 bytes) 22 | 1505243135.388352 sending message 105 to peer 0x7fb298802000 (146 bytes) 23 | 1505243135.388355 sending message 105 to peer 0x7fb298802000 (54 bytes) 24 | 1505243135.388358 sending message 105 to peer 0x7fb298802000 (16 bytes) 25 | 1505243135.388361 sending message 105 to peer 0x7fb298802000 (29 bytes) 26 | 1505243135.388364 sending message 105 to peer 0x7fb298802000 (42 bytes) 27 | 1505243135.388367 sending message 105 to peer 0x7fb298802000 (46 bytes) 28 | 1505243135.388370 sending message 105 to peer 0x7fb298802000 (60 bytes) 29 | 1505243135.388373 sending message 105 to peer 0x7fb298802000 (32 bytes) 30 | 1505243135.388376 sending message 105 to peer 0x7fb298802000 (272 bytes) 31 | 1505243135.388379 sending message 105 to peer 0x7fb298802000 (132 bytes) 32 | 1505243135.388382 sending message 105 to peer 0x7fb298802000 (29 bytes) 33 | 1505243135.388385 sending message 105 to peer 0x7fb298802000 (16 bytes) 34 | 1505243135.388389 sending message 105 to peer 0x7fb298802000 (15 bytes) 35 | 1505243135.388392 sending message 105 to peer 0x7fb298802000 (8 bytes) 36 | 1505243135.388395 sending message 105 to peer 0x7fb298802000 (66 bytes) 37 | 1505243135.388398 sending message 105 to peer 0x7fb298802000 (21 bytes) 38 | 1505243135.388401 sending message 105 to peer 0x7fb298802000 (23 bytes) 39 | 1505243135.388404 sending message 105 to peer 0x7fb298802000 (28 bytes) 40 | 1505243135.388407 sending message 105 to peer 0x7fb298802000 (60 bytes) 41 | 1505243135.388410 sending message 105 to peer 0x7fb298802000 (57 bytes) 42 | 1505243135.388413 sending message 105 to peer 0x7fb298802000 (48 bytes) 43 | 1505243135.388416 sending message 105 to peer 0x7fb298802000 (14 bytes) 44 | 1505243135.388419 sending message 105 to peer 0x7fb298802000 (56 bytes) 45 | 1505243135.388422 sending message 105 to peer 0x7fb298802000 (14 bytes) 46 | 1505243135.388427 sending message 105 to peer 0x7fb298802000 (12 bytes) 47 | 1505243135.388430 sending message 105 to peer 0x7fb298802000 (14 bytes) 48 | 1505243135.388433 sending message 105 to peer 0x7fb298802000 (19 bytes) 49 | 1505243135.388436 sending message 105 to peer 0x7fb298802000 (22 bytes) 50 | 1505243135.388439 sending message 105 to peer 0x7fb298802000 (43 bytes) 51 | 1505243135.388442 sending message 105 to peer 0x7fb298802000 (82 bytes) 52 | 1505243135.388445 sending message 105 to peer 0x7fb298802000 (17 bytes) 53 | 1505243135.388448 sending message 105 to peer 0x7fb298802000 (15 bytes) 54 | 1505243135.388451 sending message 106 to peer 0x7fb298802000 (0 bytes) 55 | 1505243135.388458 sending message 200 to peer 0x7fb298802000 (4 bytes) 56 | 1505243135.388463 client loop enter 57 | 1505243135.388773 peer 0x7fb298802000 message 211 58 | 1505243135.388806 peer 0x7fb298802000 message 203 59 | 1505243135.388812 client loop exit 60 | -------------------------------------------------------------------------------- /zshrc: -------------------------------------------------------------------------------- 1 | # Setup for NVM 2 | export NVM_DIR="$HOME/.nvm" 3 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 4 | 5 | # Setup for Yarn 6 | export PATH="$PATH:`yarn global bin`" 7 | 8 | # Configure autoload of nvm version based on presence of .nvmrc file 9 | autoload -U add-zsh-hook 10 | load-nvmrc() { 11 | local node_version="$(nvm version)" 12 | local nvmrc_path="$(nvm_find_nvmrc)" 13 | if [ -n "$nvmrc_path" ]; then 14 | local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") 15 | if [ "$nvmrc_node_version" = "N/A" ]; then 16 | nvm install 17 | elif [ "$nvmrc_node_version" != "$node_version" ]; then 18 | nvm use 19 | fi 20 | elif [ "$node_version" != "$(nvm version default)" ]; then 21 | echo "Reverting to nvm default version" 22 | nvm use default 23 | fi 24 | } 25 | add-zsh-hook chpwd load-nvmrc 26 | load-nvmrc 27 | 28 | # modify the prompt to contain git branch name if applicable 29 | git_prompt_info() { 30 | current_branch=$(git current-branch 2> /dev/null) 31 | if [[ -n $current_branch ]]; then 32 | if [[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]]; 33 | then 34 | echo " @ %{$fg_bold[red]%}%{$current_branch✷ %}%{$reset_color%}%{$fg[blue]%}%{$reset_color%}" 35 | # elif [[ ! $(git diff-index --cached --quiet HEAD --ignore-submodules --) ]]; 36 | elif [[ $(git diff --cached --exit-code) ]]; 37 | then 38 | echo " @ %{$fg_bold[yellow]%}%{$current_branch ⦿%}%{$reset_color%}%{$fg[blue]%}%{$reset_color%}" 39 | else 40 | echo " @ %{$fg_bold[green]%}%{$current_branch ✔%}%{$reset_color%}%{$fg[blue]%}%{$reset_color%}" 41 | fi 42 | fi 43 | } 44 | setopt promptsubst 45 | 46 | export PS1='${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$(echo " 🧀 : ")%}%{$fg_bold[blue]%}%c%{$reset_color%}$(git_prompt_info) ➝ ' 47 | 48 | # load our own completion functions 49 | fpath=(~/.zsh/completion $fpath) 50 | 51 | # completion 52 | autoload -U compinit 53 | compinit 54 | 55 | # load custom executable functions 56 | for function in ~/.zsh/functions/*; do 57 | source $function 58 | done 59 | 60 | # makes color constants available 61 | autoload -U colors 62 | colors 63 | 64 | # enable colored output from ls, etc 65 | export CLICOLOR=1 66 | 67 | # history settings 68 | setopt hist_ignore_all_dups inc_append_history 69 | HISTFILE=~/.zhistory 70 | HISTSIZE=4096 71 | SAVEHIST=4096 72 | 73 | # awesome cd movements from zshkit 74 | setopt autocd autopushd pushdminus pushdsilent pushdtohome cdablevars 75 | DIRSTACKSIZE=5 76 | 77 | # Enable extended globbing 78 | setopt extendedglob 79 | 80 | # Allow [ or ] whereever you want 81 | unsetopt nomatch 82 | 83 | # vi mode 84 | bindkey -v 85 | bindkey "^F" vi-cmd-mode 86 | bindkey jj vi-cmd-mode 87 | 88 | # handy keybindings 89 | bindkey "^A" beginning-of-line 90 | bindkey "^E" end-of-line 91 | bindkey "^R" history-incremental-search-backward 92 | bindkey "^P" history-search-backward 93 | bindkey "^Y" accept-and-hold 94 | bindkey "^N" insert-last-word 95 | bindkey -s "^T" "^[Isudo ^[A" # "t" for "toughguy" 96 | 97 | # aliases 98 | [[ -f ~/.aliases ]] && source ~/.aliases 99 | 100 | # extra files in ~/.zsh/configs/pre , ~/.zsh/configs , and ~/.zsh/configs/post 101 | # these are loaded first, second, and third, respectively. 102 | _load_settings() { 103 | _dir="$1" 104 | if [ -d "$_dir" ]; then 105 | if [ -d "$_dir/pre" ]; then 106 | for config in "$_dir"/pre/**/*(N-.); do 107 | . $config 108 | done 109 | fi 110 | 111 | for config in "$_dir"/**/*(N-.); do 112 | case "$config" in 113 | "$_dir"/pre/*) 114 | : 115 | ;; 116 | "$_dir"/post/*) 117 | : 118 | ;; 119 | *) 120 | if [ -f $config ]; then 121 | . $config 122 | fi 123 | ;; 124 | esac 125 | done 126 | 127 | if [ -d "$_dir/post" ]; then 128 | for config in "$_dir"/post/**/*(N-.); do 129 | . $config 130 | done 131 | fi 132 | fi 133 | } 134 | _load_settings "$HOME/.zsh/configs" 135 | 136 | stty -ixon 137 | 138 | [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh 139 | 140 | export PATH="$HOME/.bin:$PATH" 141 | eval "$(rbenv init - --no-rehash)" 142 | 143 | test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" 144 | 145 | # Brazil 146 | export PATH=$BRAZIL_CLI_BIN:$PATH 147 | export PATH=$HOME/.toolbox/bin:$PATH 148 | export PATH="/usr/local/opt/python/libexec/bin:$PATH" 149 | 150 | -------------------------------------------------------------------------------- /setup/osxsettings.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source ~/dotfiles/setup/functions.sh 3 | 4 | fancy_echo "Apply system and application defaults." 5 | 6 | fancy_echo_line "System - Disable the 'Are you sure you want to open this application?' dialog" 7 | defaults write com.apple.LaunchServices LSQuarantine -bool false 8 | 9 | fancy_echo_line "System - Disable auto-correct" 10 | defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false 11 | 12 | fancy_echo_line "System - Disable smart quotes (not useful when writing code)" 13 | defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false 14 | 15 | fancy_echo_line "System - Disable smart dashes (not useful when writing code)" 16 | defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false 17 | 18 | fancy_echo_line "System - Avoid creating .DS_Store files on network volumes" 19 | defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true 20 | 21 | fancy_echo_line "System - Automatically restart if system freezes" 22 | sudo systemsetup -setrestartfreeze on 23 | 24 | fancy_echo_line "Keyboard - Enable keyboard access for all controls" 25 | defaults write NSGlobalDomain AppleKeyboardUIMode -int 3 26 | 27 | fancy_echo_line "Keyboard - Set a fast keyboard repeat rate" 28 | defaults write NSGlobalDomain KeyRepeat -int 0 29 | 30 | fancy_echo_line "Trackpad - Map bottom right corner to right-click" 31 | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 2 32 | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true 33 | defaults -currentHost write NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 1 34 | defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true 35 | 36 | fancy_echo_line "Trackpad - Enable tap to click for current user and the login screen" 37 | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true 38 | defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 39 | defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 40 | 41 | fancy_echo_line "Trackpad - Use CONTROL (^) with scroll to zoom" 42 | defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true 43 | defaults write com.apple.universalaccess HIDScrollZoomModifierMask -int 262144 44 | 45 | fancy_echo_line "Trackpad - Follow keyboard focus while zoomed in" 46 | defaults write com.apple.universalaccess closeViewZoomFollowsFocus -bool true 47 | 48 | fancy_echo_line "Bluetooth - Increase sound quality for headphones/headsets" 49 | defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40 50 | 51 | fancy_echo_line "Dock - Automatically hide and show" 52 | defaults write com.apple.dock autohide -bool true 53 | 54 | fancy_echo_line "Dock - Remove the auto-hiding delay" 55 | defaults write com.apple.Dock autohide-delay -float 0 56 | 57 | fancy_echo_line "Dock - Don’t show Dashboard as a Space" 58 | defaults write com.apple.dock "dashboard-in-overlay" -bool true 59 | 60 | fancy_echo_line "Finder - Show the $HOME/Library folder" 61 | chflags nohidden $HOME/Library 62 | 63 | fancy_echo_line "Finder - Show hidden files" 64 | defaults write com.apple.finder AppleShowAllFiles -bool true 65 | 66 | fancy_echo_line "Finder - Show filename extensions" 67 | defaults write NSGlobalDomain AppleShowAllExtensions -bool true 68 | 69 | fancy_echo_line "Finder - Disable the warning when changing a file extension" 70 | defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false 71 | 72 | fancy_echo_line "Finder - Show path bar" 73 | defaults write com.apple.finder ShowPathbar -bool true 74 | 75 | fancy_echo_line "Finder - Show status bar" 76 | defaults write com.apple.finder ShowStatusBar -bool true 77 | 78 | fancy_echo_line "Finder - Display full POSIX path as window title" 79 | defaults write com.apple.finder _FXShowPosixPathInTitle -bool true 80 | 81 | fancy_echo_line "Finder - Use list view in all Finder windows" 82 | defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv" 83 | 84 | fancy_echo_line "Finder - Disable the warning before emptying the Trash" 85 | defaults write com.apple.finder WarnOnEmptyTrash -bool false 86 | 87 | fancy_echo_line "Finder - Allow text selection in Quick Look" 88 | defaults write com.apple.finder QLEnableTextSelection -bool true 89 | 90 | fancy_echo_line "VSCode - Allow key repeat with Vim Mode" 91 | defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false 92 | defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false 93 | -------------------------------------------------------------------------------- /tmux.conf: -------------------------------------------------------------------------------- 1 | # improve colors 2 | set -g default-terminal 'screen-256color' 3 | 4 | # Reload config 5 | bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded" 6 | 7 | # act like vim 8 | setw -g mode-keys vi 9 | bind h select-pane -L 10 | bind j select-pane -D 11 | bind k select-pane -U 12 | bind l select-pane -R 13 | bind-key -r C-h select-window -t :- 14 | bind-key -r C-l select-window -t :+ 15 | 16 | # act like GNU screen 17 | unbind C-b 18 | set -g prefix C-a 19 | 20 | # start window numbers at 1 to match keyboard order with tmux window order 21 | set -g base-index 1 22 | set-window-option -g pane-base-index 1 23 | 24 | # renumber windows sequentially after closing any of them 25 | set -g renumber-windows on 26 | 27 | # increase scrollback lines 28 | set -g history-limit 10000 29 | 30 | # switch to last pane 31 | bind-key C-a last-pane 32 | 33 | # Status Bar --------------------- 34 | # 35 | set -g status on 36 | 37 | # soften status bar colors 38 | set -g status-bg '#586e75' 39 | set -g status-fg '#eee8d5' 40 | 41 | # More colors from Solarized 42 | # $base03: #002b36; 43 | # $base02: #073642; 44 | # $base01: #586e75; 45 | # $base00: #657b83; 46 | # $base0: #839496; 47 | # $base1: #93a1a1; 48 | # $base2: #eee8d5; 49 | # $base3: #fdf6e3; 50 | # $yellow: #b58900; 51 | # $orange: #cb4b16; 52 | # $red: #dc322f; 53 | # $magenta: #d33682; 54 | # $violet: #6c71c4; 55 | # $blue: #268bd2; 56 | # $cyan: #2aa198; 57 | # $green: #859900; 58 | 59 | # remove administrative debris (session name, hostname, time) in status bar 60 | set -g status-left '' 61 | set -g status-right '' 62 | 63 | set -g status-justify centre 64 | set-option -g status-left-length 50 65 | set-option -g status-right "Battery: #{battery_icon} #{battery_percentage} #{battery_remain} | #(date '+%a, %b %d - %I:%M')" 66 | set -g status-left "Session: #S" 67 | 68 | # Shift + arrows to resize pane 69 | bind -n S-Left resize-pane -L 2 70 | bind -n S-Right resize-pane -R 2 71 | bind -n S-Down resize-pane -D 1 72 | bind -n S-Up resize-pane -U 1 73 | 74 | bind-key c new-window -c '#{pane_current_path}' 75 | bind-key k confirm kill-window 76 | 77 | bind-key K run-shell 'tmux switch-client -n \; kill-session -t "$(tmux display-message -p "#S")" || tmux kill-session' 78 | 79 | # --- VIM style tmux config ---- 80 | # smart pane switching with awareness of vim splits 81 | is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"' 82 | bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L" 83 | bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D" 84 | bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U" 85 | bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R" 86 | bind -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l" 87 | 88 | # Allow mouse usage and copy pasting behavior (Compat with Tmux 2.4+) 89 | set -g mouse on 90 | bind-key -T copy-mode-vi WheelUpPane send-keys -X scroll-up 91 | bind-key -T copy-mode-vi WheelDownPane send-keys -X scroll-down 92 | unbind -T copy-mode-vi MouseDragEnd1Pane 93 | 94 | bind-key -T edit-mode-vi Up send-keys -X history-up 95 | bind-key -T edit-mode-vi Down send-keys -X history-down 96 | unbind-key -T copy-mode-vi Space ; bind-key -T copy-mode-vi v send-keys -X begin-selection 97 | unbind-key -T copy-mode-vi Enter ; bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy" 98 | unbind-key -T copy-mode-vi C-v ; bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle 99 | unbind-key -T copy-mode-vi [ ; bind-key -T copy-mode-vi [ send-keys -X begin-selection 100 | unbind-key -T copy-mode-vi ] ; bind-key -T copy-mode-vi ] send-keys -X copy-selection 101 | 102 | bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded" 103 | 104 | bind-key h split-window -v -c '#{pane_current_path}' 105 | bind-key v split-window -h -c '#{pane_current_path}' 106 | 107 | bind-key ` new-session -s work 108 | bind-key c new-window -c '#{pane_current_path}' 109 | bind-key k confirm kill-window 110 | 111 | # Quickly edit todo list 112 | bind-key t split-window -h "vim" 113 | 114 | bind-key K run-shell 'tmux switch-client -n \; kill-session -t "$(tmux display-message -p "#S")" || tmux kill-session' 115 | 116 | # List of plugins 117 | set -g @plugin 'tmux-plugins/tpm' # Tmux package manager 118 | set -g @plugin 'tmux-plugins/tmux-sensible' 119 | set -g @plugin 'tmux-plugins/tmux-open' # Open highlighted selection directly from Tmux 120 | set -g @plugin 'tmux-plugins/tmux-resurrect' # Restore previous sessions on reboot 121 | set -g @plugin 'tmux-plugins/tmux-continuum' # Restore previous sessions on reboot 122 | set -g @plugin 'tmux-plugins/tmux-battery' #Show battery icon/status 123 | 124 | # Tmux will auto-start on system boot 125 | set -g @continuum-boot 'on' 126 | set -g @continuum-boot-options 'iterm' 127 | set -g @continuum-restore 'on' 128 | set -g @continuum-save-interval '5' 129 | set -g @resurrect-strategy-vim 'session' 130 | set -g @resurrect-strategy-nvim 'session' #for Neo Vim 131 | 132 | # How to install other plugins from Github: 133 | # To install new plugins press: prefix + I 134 | # set -g @plugin 'github_username/plugin_name' 135 | # set -g @plugin 'git@github.com/user/plugin' 136 | # set -g @plugin 'git@bitbucket.com/user/plugin' 137 | 138 | 139 | # Initializes Tmux plugin manager. 140 | # Keep this line at the very bottom of tmux.conf. 141 | run-shell '~/.tmux/plugins/tpm/tpm' 142 | -------------------------------------------------------------------------------- /vimrc: -------------------------------------------------------------------------------- 1 | " Type :so % to refresh .vimrc after making changes 2 | 3 | " Use Vim settings, rather then Vi settings. This setting must be as early as 4 | " possible, as it has side effects. 5 | set nocompatible 6 | 7 | " Leader - ( Spacebar ) 8 | let mapleader = " " 9 | 10 | set backspace=2 " Backspace deletes like most programs in insert mode 11 | set nobackup 12 | set nowritebackup 13 | set noswapfile " http://robots.thoughtbot.com/post/18739402579/global-gitignore#comment-458413287 14 | set history=50 15 | set ruler " show the cursor position all the time 16 | set showcmd " display incomplete command 17 | set laststatus=2 " Always display the status line 18 | set autowrite " Automatically :write before running commands 19 | set autoread " Reload files changed outside vim 20 | " Trigger autoread when changing buffers or coming back to vim in terminal. 21 | au FocusGained,BufEnter * :silent! ! 22 | 23 | "Set default font in mac vim and gvim 24 | set guifont=Inconsolata\ for\ Powerline:h24 25 | set cursorline " highlight the current line 26 | set visualbell " stop that ANNOYING beeping 27 | set wildmenu 28 | set wildmode=list:longest,full 29 | 30 | "Allow usage of mouse in iTerm 31 | set ttyfast 32 | set mouse=a 33 | " set ttymouse=xterm2 34 | 35 | " Make searching better 36 | set gdefault " Never have to type /g at the end of search / replace again 37 | set ignorecase " case insensitive searching (unless specified) 38 | set smartcase 39 | set hlsearch 40 | nnoremap , :noh " Stop highlight after searching 41 | set incsearch 42 | set showmatch 43 | 44 | " Softtabs, 2 spaces 45 | set tabstop=2 46 | set shiftwidth=2 47 | set shiftround 48 | set expandtab 49 | 50 | " Display extra whitespace 51 | set list listchars=tab:»·,trail:·,nbsp:· 52 | 53 | " Make it obvious where 100 characters is 54 | set textwidth=100 55 | " set formatoptions=cq 56 | set formatoptions=qrn1 57 | set wrapmargin=0 58 | set colorcolumn=+1 59 | 60 | " Numbers 61 | set number 62 | set numberwidth=5 63 | 64 | " Open new split panes to right and bottom, which feels more natural 65 | " set splitbelow 66 | set splitright 67 | 68 | " Auto resize Vim splits to active split 69 | set winwidth=104 70 | set winheight=5 71 | set winminheight=5 72 | set winheight=999 73 | 74 | "HTML Editing 75 | set matchpairs+=<:> 76 | 77 | " Treat
  • and

    tags like the block tags they are 78 | let g:html_indent_tags = 'li\|p' 79 | 80 | " ================ Scrolling ======================== 81 | 82 | set scrolloff=8 "Start scrolling when we're 8 lines away from margins 83 | set sidescrolloff=15 84 | set sidescroll=1 85 | 86 | "Toggle relative numbering, and set to absolute on loss of focus or insert mode 87 | set rnu 88 | function! ToggleNumbersOn() 89 | set nu! 90 | set rnu 91 | endfunction 92 | function! ToggleRelativeOn() 93 | set rnu! 94 | set nu 95 | endfunction 96 | autocmd FocusLost * call ToggleRelativeOn() 97 | autocmd FocusGained * call ToggleRelativeOn() 98 | autocmd InsertEnter * call ToggleRelativeOn() 99 | autocmd InsertLeave * call ToggleRelativeOn() 100 | 101 | "Use enter to create new lines w/o entering insert mode 102 | nnoremap o 103 | "Below is to fix issues with the ABOVE mappings in quickfix window 104 | autocmd CmdwinEnter * nnoremap 105 | autocmd BufReadPost quickfix nnoremap 106 | 107 | " Quicker window movement 108 | nnoremap j 109 | nnoremap k 110 | nnoremap h 111 | nnoremap l 112 | " is interpreted as in neovim 113 | " This is a bandaid fix until the team decides how 114 | " they want to handle fixing it...(https://github.com/neovim/neovim/issues/2048) 115 | nnoremap :TmuxNavigateLeft 116 | 117 | " Navigate properly when lines are wrapped 118 | nnoremap j gj 119 | nnoremap k gk 120 | 121 | " Use tab to jump between blocks, because it's easier 122 | nnoremap % 123 | vnoremap % 124 | 125 | " Set spellfile to location that is guaranteed to exist, can be symlinked to 126 | " Dropbox or kept in Git and managed outside of thoughtbot/dotfiles using rcm. 127 | set spellfile=$HOME/.vim-spell-en.utf-8.add 128 | 129 | " Always use vertical diffs 130 | set diffopt+=vertical 131 | 132 | " Switch syntax highlighting on, when the terminal has colors 133 | " Also switch on highlighting the last used search pattern. 134 | if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on") 135 | syntax on 136 | endif 137 | 138 | " Load up all of our plugins 139 | if filereadable(expand("~/.vimrc.bundles")) 140 | source ~/.vimrc.bundles 141 | endif 142 | 143 | filetype plugin indent on 144 | 145 | """ SYSTEM CLIPBOARD COPY & PASTE SUPPORT 146 | set pastetoggle= "F2 before pasting to preserve indentation 147 | "Copy paste to/from clipboard 148 | vnoremap "*y 149 | map p :set pasteo"*]p:set nopaste" 150 | map :set pasteO"*]p:set nopaste" 151 | 152 | """ MORE AWESOME HOTKEYS 153 | " 154 | " 155 | " Run the q macro 156 | nnoremap q @q 157 | 158 | " bind K to grep word under cursor 159 | nnoremap K :grep! "\b\b":cw 160 | 161 | " bind \ (backward slash) to grep shortcut 162 | command! -nargs=+ -complete=file -bar Ag silent! grep! |cwindow|redraw! 163 | nnoremap \ :Ag 164 | " Ag will search from project root 165 | let g:ag_working_path_mode="r" 166 | 167 | "Map Ctrl + S to save in any mode 168 | noremap :update 169 | vnoremap :update 170 | inoremap :update 171 | " Also map leader + s 172 | map s 173 | 174 | " Quickly close windows 175 | nnoremap x :x 176 | nnoremap X :q! 177 | 178 | " zoom a vim pane, = to re-balance 179 | nnoremap - :wincmd _:wincmd \| 180 | nnoremap = :wincmd = 181 | 182 | " resize panes 183 | nnoremap :vertical resize +5 184 | nnoremap :vertical resize -5 185 | nnoremap :resize +5 186 | nnoremap :resize -5 187 | 188 | inoremap =InsertTabWrapper() 189 | inoremap 190 | 191 | " Switch between the last two files 192 | nnoremap 193 | 194 | " AUTOCOMMANDS - Do stuff 195 | 196 | " Save whenever switching windows or leaving vim. This is useful when running 197 | " the tests inside vim without having to save all files first. 198 | au FocusLost,WinLeave * :silent! wa 199 | 200 | " automatically rebalance windows on vim resize 201 | autocmd VimResized * :wincmd = 202 | 203 | "update dir to current file 204 | autocmd BufEnter * silent! cd %:p:h 205 | 206 | augroup vimrcEx 207 | autocmd! 208 | 209 | " When editing a file, always jump to the last known cursor position. 210 | " Don't do it for commit messages, when the position is invalid, or when 211 | " inside an event handler (happens when dropping a file on gvim). 212 | autocmd BufReadPost * 213 | \ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") | 214 | \ exe "normal g`\"" | 215 | \ endif 216 | 217 | " Set syntax highlighting for specific file types 218 | autocmd BufRead,BufNewFile *.md set filetype=markdown 219 | 220 | " autocmd BufRead *.jsx set ft=jsx.html 221 | " autocmd BufNewFile *.jsx set ft=jsx.html 222 | 223 | " Enable spellchecking for Markdown 224 | autocmd FileType markdown setlocal spell 225 | 226 | " Automatically wrap at 100 characters for Markdown 227 | autocmd BufRead,BufNewFile *.md setlocal textwidth=100 228 | 229 | " Automatically wrap at 100 characters and spell check git commit messages 230 | autocmd FileType gitcommit setlocal textwidth=100 231 | autocmd FileType gitcommit setlocal spell 232 | 233 | " Allow stylesheets to autocomplete hyphenated words 234 | autocmd FileType css,scss,sass,less setlocal iskeyword+=- 235 | augroup END 236 | 237 | 238 | " TODO: Don't think I need this anymore? Pretty sure supertab handles it 239 | " Tab completion 240 | " will insert tab at beginning of line, 241 | " will use completion if not at beginning 242 | " function! InsertTabWrapper() 243 | " let col = col('.') - 1 244 | " if !col || getline('.')[col - 1] !~ '\k' 245 | " return "\" 246 | " else 247 | " return "\" 248 | " endif 249 | " endfunction 250 | -------------------------------------------------------------------------------- /vimrc.bundles: -------------------------------------------------------------------------------- 1 | " 2 | " :so % to refresh .vimrc after making changes 3 | " :PlugInstall to install new stuff 4 | " :PlugUpdate to update to latest versions 5 | " 6 | 7 | if &compatible 8 | set nocompatible 9 | end 10 | 11 | call plug#begin('~/.vim/plugged') 12 | 13 | """ Theme / Pretty stuff 14 | """ 15 | " [1] 16 | Plug 'altercation/vim-colors-solarized' 17 | Plug 'endel/vim-github-colorscheme' 18 | " Awesome looking meta at bottom 19 | " Fugitive will help with git related stuff, and show branch on statusline 20 | Plug 'tpope/vim-fugitive' | Plug 'vim-airline/vim-airline' | Plug 'vim-airline/vim-airline-themes' 21 | "" 22 | 23 | """ Some ESSENTIAL IDE like plugins for Vim 24 | """ 25 | " [2] File tree viewer 26 | Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } 27 | 28 | " [3] 29 | " Several plugins to help work with Tmux 30 | Plug 'christoomey/vim-tmux-navigator' 31 | Plug 'https://github.com/christoomey/vim-tmux-runner' 32 | Plug 'christoomey/vim-run-interactive' 33 | 34 | " [4] search filesystem with ctrl+p 35 | Plug 'ctrlpvim/ctrlp.vim' 36 | " Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } 37 | 38 | " [5] Code highlighting and linting 39 | Plug 'scrooloose/syntastic' "Run linters and display errors etc 40 | " Plug 'benekastah/neomake' "Async Jobs (can use it instead of syntastic, but hard to setup) 41 | Plug 'pangloss/vim-javascript' | Plug 'mxw/vim-jsx' 42 | Plug 'jimmyhchan/dustjs.vim' "Highlighting for Dust 43 | Plug 'elmcast/elm-vim' "Highlighting for Elm 44 | 45 | " [6] Adds a ; at the end of a line by pressing ; 46 | Plug 'lfilho/cosco.vim' 47 | 48 | Plug 'jiangmiao/auto-pairs' "MANY features, but mostly closes ([{' etc 49 | Plug 'vim-scripts/HTML-AutoCloseTag' "close tags after > 50 | Plug 'vim-scripts/tComment' "Comment easily with gcc 51 | Plug 'tpope/vim-repeat' "allow plugins to utilize . command 52 | Plug 'tpope/vim-surround' "easily surround things...just read docs for info 53 | Plug 'vim-scripts/matchit.zip' " % also matches HTML tags / words / etc 54 | Plug 'duff/vim-scratch' "Open a throwaway scratch buffer 55 | "" 56 | 57 | """ Utilities / Extras / Etc 58 | """ 59 | " [7] Make gists of current buffer 60 | " View (https://github.com/mattn/gist-vim) for setup instructions 61 | Plug 'mattn/webapi-vim' | Plug 'mattn/gist-vim' 62 | 63 | " [8] Diary, notes, whatever. It's amazing 64 | Plug 'vimwiki/vimwiki' 65 | 66 | " Opens a browser to preview markdown files 67 | Plug 'suan/vim-instant-markdown', {'do': 'npm install -g instant-markdown-d'} 68 | "" 69 | 70 | " [9] 71 | Plug 'SirVer/ultisnips' | Plug 'justinj/vim-react-snippets' | Plug 'colbycheeze/vim-snippets' 72 | 73 | " [10] 74 | " supertab makes tab work with autocomplete and ultisnips 75 | Plug 'ervandew/supertab' 76 | " For YouCompleteMe, have you installed using: 77 | " ./install.py --tern-completer 78 | " Provides Async autocomplete with Tern 79 | Plug 'https://github.com/Shougo/deoplete.nvim' 80 | " IDE like code intelligence for Javascript 81 | Plug 'ternjs/tern_for_vim', {'do': 'npm install'} 82 | 83 | " Reads any .editorconfig files and sets spacing etc automatically 84 | Plug 'editorconfig/editorconfig-vim' 85 | 86 | 87 | """ TODO / Plugins to evaluate 88 | " Figure out how to change matchit to ALSO use 89 | " Plug 'junegunn/vim-easy-align' 90 | call plug#end() 91 | 92 | """" PLUGIN RELATED TWEAKS 93 | "" 94 | " 95 | 96 | " [1] 97 | " Color scheme 98 | syntax enable 99 | " let g:solarized_termcolors=16 100 | let g:colarized_termtrans = 1 101 | let g:solarized_termcolors=256 102 | let g:solarized_visibility = "high" 103 | let g:solarized_contrast = "high" 104 | colorscheme solarized 105 | " set background=dark 106 | " Allow powerline symbols to show up 107 | let g:airline_powerline_fonts = 1 108 | 109 | " [2] 110 | map :NERDTreeToggle 111 | nnoremap :call ToggleRelativeOn() 112 | " Close vim if only NERDTree is open 113 | autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif 114 | 115 | " [3] 116 | " Allow moving around between Tmux windows 117 | nnoremap :TmuxNavigateLeft 118 | nnoremap :TmuxNavigateDown 119 | nnoremap :TmuxNavigateUp 120 | nnoremap :TmuxNavigateRight 121 | let g:tmux_navigator_no_mappings = 1 122 | let g:tmux_navigator_save_on_switch = 1 123 | " 124 | "Open a tmux pane with Node 125 | nnoremap node :VtrOpenRunner {'orientation': 'h', 'percentage': 50, 'cmd': 'node'} 126 | 127 | " [4] 128 | " Use The Silver Searcher https://github.com/ggreer/the_silver_searcher 129 | if executable('ag') 130 | " Use Ag over Grep 131 | set grepprg=ag\ --nogroup\ --nocolor 132 | 133 | " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore 134 | let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' 135 | let g:ctrlp_working_path_mode = 'r' 136 | 137 | " ag is fast enough that CtrlP doesn't need to cache 138 | let g:ctrlp_use_caching = 0 139 | 140 | let g:ctrlp_extensions = ['line'] 141 | endif 142 | 143 | " [5] 144 | " Setup for NEOMAKE plugin ~~~~~~~ 145 | " let g:neomake_scss_csslint_maker = ['sass-lint'] 146 | " let g:neomake_javascript_enabled_makers = ['eslint'] 147 | " let g:neomake_open_list = 0 148 | " let g:neomake_warning_sign = { 149 | " \ 'texthl': 'WarningMsg', 150 | " \ } 151 | " 152 | " let g:neomake_error_sign = { 153 | " \ 'texthl': 'ErrorMsg', 154 | " \ } 155 | " autocmd! BufWritePost,BufEnter * Neomake 156 | " ~~~~~~~~~~~~~~~~ 157 | " configure syntastic syntax checking to check on open as well as save 158 | let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute \"ng-"] 159 | let g:syntastic_mode_map = { 'mode': 'active', 'active_filetypes': ['javascript'], 'passive_filetypes': [] } 160 | 161 | set statusline+=%#warningmsg# 162 | set statusline+=%{SyntasticStatuslineFlag()} 163 | set statusline+=%* 164 | 165 | let g:syntastic_always_populate_loc_list = 1 166 | let g:syntastic_auto_loc_list = 1 167 | let g:syntastic_check_on_open = 1 168 | let g:syntastic_check_on_wq = 0 169 | " " Syntastic will search for an .eslintrc in your project, otherwise it defaults 170 | autocmd FileType javascript let b:syntastic_checkers = findfile('.eslintrc', '.;') != '' ? ['eslint'] : ['standard'] 171 | " these 2 lines check to see if eslint is installed via local npm and runs that before going global 172 | let s:eslint_path = system('PATH=$(npm bin):$PATH && which eslint') 173 | let b:syntastic_javascript_eslint_exec = substitute(s:eslint_path, '^\n*\s*\(.\{-}\)\n*\s*$', '\1', '') 174 | " " Allow highlighting of HTML within Javascript (for React) 175 | let g:javascript_enable_domhtmlcss = 1 176 | let g:jsx_ext_required = 0 177 | 178 | " [6] Key mapping for Cosco.vim - space + ; to add semicolon or comma in Javascript or CSS 179 | autocmd FileType javascript,css nnoremap ; :call cosco#commaOrSemiColon() 180 | autocmd FileType javascript,css inoremap ; :call cosco#commaOrSemiColon() 181 | 182 | " [7] Gist setup 183 | let g:gist_clip_command = 'pbcopy' "Using Gist will copy URL to clipboard automatically 184 | let g:gist_detect_filetype = 1 185 | let g:gist_open_browser_after_post = 1 186 | 187 | " [8] Set Vim Wiki to my Dropbox directory 188 | let g:vimwiki_list = [{'path':'$HOME/Dropbox/vimwiki'}] 189 | 190 | " [9] 191 | " Set ultisnips triggers 192 | let g:UltiSnipsExpandTrigger="" 193 | let g:UltiSnipsJumpForwardTrigger="" 194 | let g:UltiSnipsJumpBackwardTrigger="" 195 | let g:UltiSnipsEditSplit="vertical" 196 | 197 | " [10] make YCM compatible with UltiSnips (using supertab) 198 | let g:SuperTabDefaultCompletionType = '' 199 | 200 | let g:deoplete#enable_at_startup = 1 201 | if !exists('g:deoplete#omni#input_patterns') 202 | let g:deoplete#omni#input_patterns = {} 203 | endif 204 | autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif 205 | 206 | " omnifuncs 207 | augroup omnifuncs 208 | autocmd! 209 | autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS 210 | autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags 211 | autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS 212 | autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags 213 | augroup end 214 | 215 | " tern 216 | if exists('g:plugs["tern_for_vim"]') 217 | let g:tern_show_argument_hints = 'on_hold' 218 | let g:tern_show_signature_in_pum = 1 219 | let g:tern_map_keys = 1 220 | 221 | autocmd FileType javascript setlocal omnifunc=tern#Complete 222 | endif 223 | 224 | "set up path to editorconfig 225 | let g:EditorConfig_exec_path = findfile('.editorconfig', '.;') 226 | 227 | " Not sure what the below code does...look into Tern docs etc and figure it out? 228 | " Found this snippet on a forum post that says it gets everything working 229 | " https://github.com/Valloric/YouCompleteMe/issues/570 230 | " autocmd FileType javascript setlocal omnifunc=tern#Complete 231 | 232 | " " Run commands that require an interactive shell 233 | " nnoremap r :RunInInteractiveShell 234 | " 235 | -------------------------------------------------------------------------------- /Code/User/snippets/javascript.json: -------------------------------------------------------------------------------- 1 | { 2 | // Place your snippets for javascript here. Each snippet is defined under a snippet name and has a prefix, body and 3 | // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 4 | // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 5 | // same ids are connected. 6 | // Example: 7 | "Print to console": { 8 | "prefix": "log", 9 | "body": [ 10 | "console.log('$1');", 11 | "$2" 12 | ], 13 | "description": "Log output to console" 14 | }, 15 | "Error to console": { 16 | "prefix": "error", 17 | "body": [ 18 | "console.error('$1');", 19 | "$2" 20 | ], 21 | "description": "Error output to console" 22 | }, 23 | "Warn to console": { 24 | "prefix": "warn", 25 | "body": [ 26 | "console.warn('$1');", 27 | "$2" 28 | ], 29 | "description": "Warn output to console" 30 | }, 31 | "Class": { 32 | "prefix": "class", 33 | "body": "class ${1:ClassName} extends ${2:ParentName} {\n constructor($3) {\n super($3);\n $4\n }\n}", 34 | "description": "New Class" 35 | }, 36 | "Big Block Comment": { 37 | "prefix": "bbcom", 38 | "body": "// ====================================\n// $1\n// ====================================$0" 39 | }, 40 | "Block Comment": { 41 | "prefix": "bcom", 42 | "body": "// ------------------------------------\n// $1\n// ------------------------------------$0" 43 | }, 44 | "Debugger": { 45 | "prefix": "debug", 46 | "body": "debugger // eslint-disable-line$0" 47 | }, 48 | "Component Setup for Tests": { 49 | "prefix": "setup", 50 | "body": "const setup = () => {\n const spies = {\n someFunction: jest.fn(),\n };\n\n const props = {\n id: '1',\n isLoading: true,\n ...spies,\n };\n\n return { spies, props };\n}$0" 51 | }, 52 | "describe block": { 53 | "prefix": "desc", 54 | "body": "describe('${1:Unit being tested}', () => {\n $2\n});$0" 55 | }, 56 | "test block": { 57 | "prefix": "test", 58 | "body": "test('${1:will do something}', () => {\n $2\n});$0" 59 | }, 60 | "it style test block": { 61 | "prefix": "it", 62 | "body": "it('${1:will do something}', () => {\n $2\n});$0" 63 | }, 64 | "expect": { 65 | "prefix": "xp", 66 | "body": "expect($1).$2();$0" 67 | }, 68 | "toBe": { 69 | "prefix": "xp=", 70 | "body": "expect($1).toBe($2);$0" 71 | }, 72 | "toBeTruthy": { 73 | "prefix": "xpt", 74 | "body": "expect($1).toBeTruthy($2);$0" 75 | }, 76 | "toBeFalsy": { 77 | "prefix": "xpf", 78 | "body": "expect($1).toBeFalsy($2);$0" 79 | }, 80 | "toBeDefined": { 81 | "prefix": "xpd", 82 | "body": "expect($1).toBeDefined();$0" 83 | }, 84 | "toBeNull": { 85 | "prefix": "xpn", 86 | "body": "expect($1).toBeNull();$0" 87 | }, 88 | "toBeGreaterThan": { 89 | "prefix": "xp>", 90 | "body": "expect(${1:aNumber}).toBeGreaterThan(${2:anotherNumber});$0" 91 | }, 92 | "toBeGreaterThanOrEqual": { 93 | "prefix": "xp>=", 94 | "body": "expect(${1:aNumber}).toBeGreaterThanOrEqual(${2:anotherNumber});$0" 95 | }, 96 | "toBeLessThan": { 97 | "prefix": "xp<", 98 | "body": "expect(${1:aNumber}).toBeLessThan(${2:anotherNumber});$0" 99 | }, 100 | "toBeLessThanOrEqual": { 101 | "prefix": "xp<=", 102 | "body": "expect(${1:aNumber}).toBeLessThanOrEqual(${2:anotherNumber});$0" 103 | }, 104 | "toEqual (Deep Equal)": { 105 | "prefix": "xpde", 106 | "body": "expect(${1:deepNestedObject}).toEqual(${2:matchingObject});$0" 107 | }, 108 | "toMatch (Regexp)": { 109 | "prefix": "xpreg", 110 | "body": "expect(${1:'string'}).toMatch(${2:/matcher/});$0" 111 | }, 112 | "toHaveLength": { 113 | "prefix": "xplen", 114 | "body": "expect(${1:[1, 2, 3]}).toHaveLength(${2:3});$0" 115 | }, 116 | "toContain (item in array)": { 117 | "prefix": "xpin", 118 | "body": "expect(${1:['orange', 'apple', 'pineapple']}).toContain(${2:'apple'});$0" 119 | }, 120 | "toContainEqual (deep equal in array)": { 121 | "prefix": "xpinde", 122 | "body": "expect(${1:[object1, object2]}).toContainEqual(${2:{age: 21}});$0" 123 | }, 124 | "toMatchObject (match a subset of key/val in object)": { 125 | "prefix": "xpmo", 126 | "body": "expect(${1:objectWithManyKeys}).toMatchObject(${2:objectWithSomeKeys});$0" 127 | }, 128 | "toThrow": { 129 | "prefix": "xpthrow", 130 | "body": "expect(() => ${1:someFunction}($2)).toThrow();$0" 131 | }, 132 | "toBeCalled": { 133 | "prefix": "xptbc", 134 | "body": "expect(${1:someFunction}).toBeCalled();$0" 135 | }, 136 | "toBeCalledWith": { 137 | "prefix": "xptbcw", 138 | "body": "expect(${1:someFunction}).toBeCalledWith(${2:'value'});$0" 139 | }, 140 | "toHaveBeenCalledTimes": { 141 | "prefix": "xptbct", 142 | "body": "expect(${1:someFunction}).toHaveBeenCalledTimes(${2:numberOfTimes});$0" 143 | }, 144 | "toHaveBeenLastCalledWith": { 145 | "prefix": "xptbcwl", 146 | "body": "expect(${1:someFunction}).toHaveBeenLastCalledWith(${2:'value'});$0" 147 | }, 148 | "toMatchSnapshot": { 149 | "prefix": "xpsnap", 150 | "body": "expect(${1:wrapper}).toMatchSnapshot();$0" 151 | }, 152 | "(Enzyme) Shallow": { 153 | "prefix": "shallow", 154 | "body": "const { props, spies } = setup();\nconst wrapper = shallow(<${1:ComponentName} {...props} />);\n\nexpect(wrapper).toMatchSnapshot();$0" 155 | }, 156 | "(Enzyme) Mount": { 157 | "prefix": "mount", 158 | "body": "const { props, spies } = setup();\nconst wrapper = mount(<${1:ComponentName} {...props} />);\n\nexpect(wrapper).toMatchSnapshot();$0" 159 | }, 160 | "(Enzyme) Render": { 161 | "prefix": "render", 162 | "body": "const { props, spies } = setup();\nconst wrapper = render(<${1:ComponentName} {...props} />);\n\nexpect(wrapper).toMatchSnapshot();$0" 163 | }, 164 | "index": { 165 | "prefix": "index", 166 | "body": "export { default } from './$1';$0" 167 | }, 168 | "import from": { 169 | "prefix": "imp", 170 | "body": "import ${1:ComponentName} from '${2:./pathto/ComponentName}';$0" 171 | }, 172 | "Function": { 173 | "prefix": "f", 174 | "body": "${1:doSomething} = (${2:param1, param2}) => {\n ${3:// do some things}\n}$0" 175 | }, 176 | "Redux Factory Starter": { 177 | "prefix": "redfact", 178 | "body": "import { MODULE_NAME } from './reduxModuleStarter';\n\nexport const snippetData = {\n 1: {\n id: '1',\n isAmazing: true,\n name: 'Amazing Data',\n awards: ['1', '2', '3', '4'],\n },\n 2: {\n id: '2',\n isAmazing: false,\n name: 'Failure Data',\n awards: [],\n },\n}\n\nexport default {\n [MODULE_NAME]: {\n snippetData,\n isLoading: false,\n },\n}$0" 179 | }, 180 | "Redux Action Group": { 181 | "prefix": "action", 182 | "body": "export const ${1:ACTION_NAME} = `${STORE_KEY}/${1:ACTION_NAME}`;\nexport const ${2:actionNameFunction} = payload => ({\n type: ${1:ACTION_NAME},\n payload,\n});\nactions[${1:ACTION_NAME}] = (state, { payload }) => ({\n ...state,\n ...payload,\n});$0" 183 | }, 184 | "Redux Thunk": { 185 | "prefix": "thunk", 186 | "body": "export const ${3:thunkName} = () => async dispatch => {\n dispatch(${2:actionNameFunction}())\n };$0" 187 | }, 188 | "Redux Async Action Group": { 189 | "prefix": "aaction", 190 | "body": "export const ${1:ACTION_NAME}_REQUEST = `${STORE_KEY}/${1:ACTION_NAME}_REQUEST`;\nexport const ${2:actionName}Request = payload => ({\n type: ${1:ACTION_NAME}_REQUEST,\n payload,\n});\nactions[${1:ACTION_NAME}_REQUEST] = state => ({\n ...state,\n isLoading: true,\n});\n\nexport const ${1:ACTION_NAME}_SUCCESS = `${STORE_KEY}/${1:ACTION_NAME}_SUCCESS`;\nexport const ${2:actionName}Success = payload => ({\n type: ${1:ACTION_NAME}_SUCCESS,\n payload,\n});\nactions[${1:ACTION_NAME}_SUCCESS] = (state, { payload: { data } }) => ({\n ...state,\n data,\n isLoading: false,\n});\n\nexport const ${1:ACTION_NAME}_ERROR = `${STORE_KEY}/${1:ACTION_NAME}_ERROR`;\nexport const ${2:actionName}Error = error => ({\n type: ${1:ACTION_NAME}_ERROR,\n payload: { error },\n});\nactions[${1:ACTION_NAME}_ERROR] = (state, { payload: { error } }) => ({\n ...state,\n error,\n});\n\nexport const ${2:thunkName} = (data) => async dispatch => {\n try {\n dispatch(${2:actionName}Request({ data }));\n // const response = await api.doSomething({ data });\n\n dispatch(${2:actionName}Success(response));\n } catch (error) {\n dispatch(${2:actionName}Error(error));\n }\n}\n$0" 191 | }, 192 | "Schema Starter": { 193 | "prefix": "schs", 194 | "body": "import { schema } from 'normalizr'\n\nconst entity = new schema.Entity('entities', {\n awards: [award],\n}, {\n processStrategy: (value) => ({\n id: value.id,\n name: value.attributes.name,\n isAmazing: value.attributes.is_amazing,\n awards: value.awards,\n }),\n})\n\nconst child = new schema.Entity('children')\n\nexport default {\n data: [entity],\n}$0" 195 | }, 196 | "Redux Module": { 197 | "prefix": "redmod", 198 | "body": "// ------------------------------------\n// Selectors\n// ------------------------------------\nexport const STORE_KEY = '${1:moduleName}'; // Dont forget to hookup in rootReducers!\nexport const select${2:ModuleName}State = state => state[STORE_KEY];\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst actions = {};\nconst initialState = {\n ${1:moduleName}Data: {},\n hasLoaded: false,\n errors: null,\n};\nconst ${1:moduleName}Reducer = (state = initialState, action) => {\n const handler = actions[action.type];\n\n return handler ? handler(state, action) : state;\n};\nexport default ${1:moduleName}Reducer;\n\n// ------------------------------------\n// Rest of your logic goes here\n// Use action or aaction snippets\n// ------------------------------------\n\n$0" 199 | }, 200 | } 201 | -------------------------------------------------------------------------------- /atom/snippets.cson: -------------------------------------------------------------------------------- 1 | '.source.sass, .source.css.sass, .source.css.scss, .source.scss, .source.css': 2 | 'Big Block Comment': 3 | 'prefix': 'bbcom' 4 | 'body': """ 5 | // ==================================== 6 | // $1 7 | // ==================================== 8 | """ 9 | 10 | 'Block Comment': 11 | 'prefix': 'bcom' 12 | 'body': """ 13 | // ------------------------------------ 14 | // $1 15 | // ------------------------------------ 16 | """ 17 | 18 | '.source.js, .source.javascript, .source.jsx': 19 | 'Debugger': 20 | 'prefix': 'debug' 21 | 'body': 'debugger // eslint-disable-line' 22 | 23 | 'Console log': 24 | 'prefix': 'log' 25 | 'body': 'console.log($1);' 26 | 27 | 'Console warning': 28 | 'prefix': 'warn' 29 | 'body': 'console.warn($1);' 30 | 31 | 'Console error': 32 | 'prefix': 'error' 33 | 'body': 'console.error($1);' 34 | 35 | 'Styled Component theme fn': 36 | 'prefix': 'theme' 37 | 'body': '${({ theme }) => theme.${1:something}};' 38 | 39 | 'Component Setup for Tests': 40 | 'prefix': 'setup' 41 | 'body': """ 42 | const setup = () => { 43 | const spies = { 44 | someFunction: jest.fn(), 45 | }; 46 | 47 | const props = { 48 | id: '1', 49 | isLoading: true, 50 | ...spies, 51 | }; 52 | 53 | return { spies, props }; 54 | } 55 | """ 56 | 57 | 'describe block': 58 | 'prefix': 'desc' 59 | 'body': """ 60 | describe('${1:Unit being tested}', () => { 61 | $2 62 | }); 63 | """ 64 | 65 | 'test block': 66 | 'prefix': 'test' 67 | 'body': """ 68 | test('${1:will do something}', () => { 69 | $2 70 | }); 71 | """ 72 | 73 | 'it style test block': 74 | 'prefix': 'it' 75 | 'body': """ 76 | it('${1:will do something}', () => { 77 | $2 78 | }); 79 | """ 80 | 81 | 'expect': 82 | 'prefix': 'xp' 83 | 'body': "expect($1).$2();" 84 | 85 | 'toBe': 86 | 'prefix': 'xp=' 87 | 'body': "expect($1).toBe($2);" 88 | 89 | 'toBeTruthy': 90 | 'prefix': 'xpt' 91 | 'body': "expect($1).toBeTruthy($2);" 92 | 93 | 'toBeFalsy': 94 | 'prefix': 'xpf' 95 | 'body': "expect($1).toBeFalsy($2);" 96 | 97 | 'toBeDefined': 98 | 'prefix': 'xpd' 99 | 'body': "expect($1).toBeDefined();" 100 | 101 | 'toBeNull': 102 | 'prefix': 'xpn' 103 | 'body': "expect($1).toBeNull();" 104 | 105 | 'toBeGreaterThan': 106 | 'prefix': 'xp>' 107 | 'body': "expect(${1:aNumber}).toBeGreaterThan(${2:anotherNumber});" 108 | 109 | 'toBeGreaterThanOrEqual': 110 | 'prefix': 'xp>=' 111 | 'body': "expect(${1:aNumber}).toBeGreaterThanOrEqual(${2:anotherNumber});" 112 | 113 | 'toBeLessThan': 114 | 'prefix': 'xp<' 115 | 'body': "expect(${1:aNumber}).toBeLessThan(${2:anotherNumber});" 116 | 117 | 'toBeLessThanOrEqual': 118 | 'prefix': 'xp<=' 119 | 'body': "expect(${1:aNumber}).toBeLessThanOrEqual(${2:anotherNumber});" 120 | 121 | 'toEqual (Deep Equal)': 122 | 'prefix': 'xpde' 123 | 'body': "expect(${1:deepNestedObject}).toEqual(${2:matchingObject});" 124 | 125 | 'toMatch (Regexp)': 126 | 'prefix': 'xpreg' 127 | 'body': "expect(${1:'string'}).toMatch(${2:/matcher/});" 128 | 129 | 'toHaveLength': 130 | 'prefix': 'xplen' 131 | 'body': "expect(${1:[1, 2, 3]}).toHaveLength(${2:3});" 132 | 133 | 'toContain (item in array)': 134 | 'prefix': 'xpin' 135 | 'body': "expect(${1:['orange', 'apple', 'pineapple']}).toContain(${2:'apple'});" 136 | 137 | 'toContainEqual (deep equal in array)': 138 | 'prefix': 'xpinde' 139 | 'body': "expect(${1:[object1, object2]}).toContainEqual(${2:{age: 21}});" 140 | 141 | 'toMatchObject (match a subset of key/val in object)': 142 | 'prefix': 'xpmo' 143 | 'body': "expect(${1:objectWithManyKeys}).toMatchObject(${2:objectWithSomeKeys});" 144 | 145 | 'toThrow': 146 | 'prefix': 'xpthrow' 147 | 'body': "expect(() => ${1:someFunction}($2)).toThrow();" 148 | 149 | 'toBeCalled': 150 | 'prefix': 'xptbc' 151 | 'body': "expect(${1:someFunction}).toBeCalled();" 152 | 153 | 'toBeCalledWith': 154 | 'prefix': 'xptbcw' 155 | 'body': "expect(${1:someFunction}).toBeCalledWith(${2:'value'});" 156 | 157 | 'toHaveBeenCalledTimes': 158 | 'prefix': 'xptbct' 159 | 'body': "expect(${1:someFunction}).toHaveBeenCalledTimes(${2:numberOfTimes});" 160 | 161 | 'toHaveBeenLastCalledWith': 162 | 'prefix': 'xptbcwl' 163 | 'body': "expect(${1:someFunction}).toHaveBeenLastCalledWith(${2:'value'});" 164 | 165 | 'toMatchSnapshot': 166 | 'prefix': 'xpsnap' 167 | 'body': "expect(${1:wrapper}).toMatchSnapshot();" 168 | 169 | '(Enzyme) Shallow': 170 | 'prefix': 'shallow' 171 | 'body': """ 172 | const { props, spies } = setup(); 173 | const wrapper = shallow(<${1:ComponentName} {...props} />); 174 | 175 | expect(wrapper).toMatchSnapshot(); 176 | """ 177 | 178 | '(Enzyme) Mount': 179 | 'prefix': 'mount' 180 | 'body': """ 181 | const { props, spies } = setup(); 182 | const wrapper = mount(<${1:ComponentName} {...props} />); 183 | 184 | expect(wrapper).toMatchSnapshot(); 185 | """ 186 | 187 | '(Enzyme) Render': 188 | 'prefix': 'render' 189 | 'body': """ 190 | const { props, spies } = setup(); 191 | const wrapper = render(<${1:ComponentName} {...props} />); 192 | 193 | expect(wrapper).toMatchSnapshot(); 194 | """ 195 | 196 | 'Big Block Comment': 197 | 'prefix': 'bbcom' 198 | 'body': """ 199 | // ==================================== 200 | // $1 201 | // ==================================== 202 | """ 203 | 204 | 'Block Comment': 205 | 'prefix': 'bcom' 206 | 'body': """ 207 | // ------------------------------------ 208 | // $1 209 | // ------------------------------------ 210 | """ 211 | 212 | 'index': 213 | 'prefix': 'index' 214 | 'body': "export { default } from './$1';" 215 | 216 | 'className': 217 | 'prefix': '.' 218 | 'body': 'className={classes.$1}' 219 | 220 | 'import from': 221 | 'prefix': 'imp' 222 | 'body': "import ${1:ComponentName} from '${2:./pathto/ComponentName}';" 223 | 224 | 'Validate Children': 225 | 'prefix': 'children' 226 | 'body': "children: PT.oneOfType([PT.element, PT.arrayOf(PT.element)])" 227 | 228 | 'Function': 229 | 'prefix': 'f' 230 | 'body': """ 231 | ${1:doSomething} = (${2:param1, param2}) => { 232 | ${3:// do some things} 233 | } 234 | """ 235 | 'Element Ref': 236 | 'prefix': 'ref' 237 | 'body': 'ref={element => { this.${1:refName} = element; }}' 238 | 239 | 'React Class Starter': 240 | 'prefix': 'rcc' 241 | 'body': """ 242 | import React, { PureComponent } from 'react'; 243 | import PT from 'prop-types'; 244 | 245 | export default class ${1:ComponentName} extends PureComponent { 246 | static propTypes = { 247 | name: PT.string, 248 | } 249 | 250 | static defaultProps = { 251 | name: 'Colby', 252 | } 253 | 254 | render() { 255 | const { name } = this.props; 256 | 257 | return ( 258 |

    259 | Hello {name} 260 |
    261 | ); 262 | } 263 | } 264 | """ 265 | 266 | 'Redux Factory Starter': 267 | 'prefix': 'redfact' 268 | 'body': """ 269 | import { MODULE_NAME } from './reduxModuleStarter'; 270 | 271 | export const snippetData = { 272 | 1: { 273 | id: '1', 274 | isAmazing: true, 275 | name: 'Amazing Data', 276 | awards: ['1', '2', '3', '4'], 277 | }, 278 | 2: { 279 | id: '2', 280 | isAmazing: false, 281 | name: 'Failure Data', 282 | awards: [], 283 | }, 284 | } 285 | 286 | export default { 287 | [MODULE_NAME]: { 288 | snippetData, 289 | isLoading: false, 290 | }, 291 | } 292 | """ 293 | 294 | 'Redux Action Group': 295 | 'prefix': 'action' 296 | 'body': """ 297 | export const ${1:ACTION_NAME} = `${STORE_KEY}/${1:ACTION_NAME}`; 298 | export const ${2:actionNameFunction} = payload => ({ 299 | type: ${1:ACTION_NAME}, 300 | payload, 301 | }); 302 | actions[${1:ACTION_NAME}] = (state, { payload }) => ({ 303 | ...state, 304 | ...payload, 305 | }); 306 | """ 307 | 308 | 309 | 'Redux Thunk': 310 | 'prefix': 'thunk' 311 | 'body': """ 312 | export const ${3:thunkName} = () => async dispatch => { 313 | dispatch(${2:actionNameFunction}()) 314 | }; 315 | """ 316 | 317 | 'Redux Async Action Group': 318 | 'prefix': 'aaction' 319 | 'body': """ 320 | export const ${1:ACTION_NAME}_REQUEST = `${STORE_KEY}/${1:ACTION_NAME}_REQUEST`; 321 | export const ${2:actionName}Request = payload => ({ 322 | type: ${1:ACTION_NAME}_REQUEST, 323 | payload, 324 | }); 325 | actions[${1:ACTION_NAME}_REQUEST] = state => ({ 326 | ...state, 327 | isLoading: true, 328 | }); 329 | 330 | export const ${1:ACTION_NAME}_SUCCESS = `${STORE_KEY}/${1:ACTION_NAME}_SUCCESS`; 331 | export const ${2:actionName}Success = payload => ({ 332 | type: ${1:ACTION_NAME}_SUCCESS, 333 | payload, 334 | }); 335 | actions[${1:ACTION_NAME}_SUCCESS] = (state, { payload: { data } }) => ({ 336 | ...state, 337 | data, 338 | isLoading: false, 339 | }); 340 | 341 | export const ${1:ACTION_NAME}_ERROR = `${STORE_KEY}/${1:ACTION_NAME}_ERROR`; 342 | export const ${2:actionName}Error = error => ({ 343 | type: ${1:ACTION_NAME}_ERROR, 344 | payload: { error }, 345 | }); 346 | actions[${1:ACTION_NAME}_ERROR] = (state, { payload: { error } }) => ({ 347 | ...state, 348 | error, 349 | }); 350 | 351 | export const ${2:thunkName} = (data) => async dispatch => { 352 | try { 353 | dispatch(${2:actionName}Request({ data })); 354 | // const response = await api.doSomething({ data }); 355 | 356 | dispatch(${2:actionName}Success(response)); 357 | } catch (error) { 358 | dispatch(${2:actionName}Error(error)); 359 | } 360 | } 361 | $3 362 | """ 363 | 364 | 'Redux Connect': 365 | 'prefix': 'redcon' 366 | 'body': """ 367 | import { connect } from 'react-redux'; 368 | import { selectThing } from '../modules/things'; 369 | 370 | const mapStateToProps = (state, ownProps) => ({ 371 | name: selectThing(state, ownProps.id).name, 372 | createdAt: selectThing(state, ownProps.id).createdAt, 373 | }); 374 | const actions = { 375 | doSomethingWithThing, 376 | }; 377 | 378 | export default connect(mapStateToProps, actions)(${1:ComponentName}); 379 | """ 380 | 381 | 'Mocked Storybook Starter': 382 | 'prefix': 'stbm' 383 | 'body': """ 384 | import React from 'react' 385 | import { storiesOf, action } from '@kadira/storybook' 386 | 387 | import { Provider } from 'react-redux' 388 | import reduxThunk from 'redux-thunk' 389 | import configureStore from 'redux-mock-store' 390 | import axios from 'axios' 391 | import MockAdapter from 'axios-mock-adapter' 392 | 393 | import snippetFactory from './factoryStarter.js' 394 | 395 | const mockStore = configureStore([reduxThunk])(snippetFactory) 396 | const mockApi = new MockAdapter(axios) 397 | mockApi.onAny().reply(200, {}) 398 | 399 | storiesOf('${1:Feature Name}', module) 400 | .addDecorator((story) => ( 401 | 402 | {story()} 403 | 404 | )) 405 | .add('component with mocked store', () => ( 406 |
    I am a component of some sort
    407 | )) 408 | """ 409 | 410 | 'Storybook Starter': 411 | 'prefix': 'stb' 412 | 'body': """ 413 | import React from 'react' 414 | import { storiesOf, action } from '@kadira/storybook' 415 | 416 | storiesOf('${1:Feature Name}', module) 417 | .addDecorator((story) => ( 418 |
    419 |

    I decorate the story!

    420 | {story()} 421 |
    422 | )) 423 | .add('Basic story', () => ( 424 |
    I am a component of some sort
    425 | )) 426 | """ 427 | 428 | 'Schema Starter': 429 | 'prefix': 'schs' 430 | 'body': """ 431 | import { schema } from 'normalizr' 432 | 433 | const entity = new schema.Entity('entities', { 434 | awards: [award], 435 | }, { 436 | processStrategy: (value) => ({ 437 | id: value.id, 438 | name: value.attributes.name, 439 | isAmazing: value.attributes.is_amazing, 440 | awards: value.awards, 441 | }), 442 | }) 443 | 444 | const child = new schema.Entity('children') 445 | 446 | export default { 447 | data: [entity], 448 | } 449 | """ 450 | 451 | 'Redux Module': 452 | 'prefix': 'redmod' 453 | 'body': """ 454 | // ------------------------------------ 455 | // Selectors 456 | // ------------------------------------ 457 | export const STORE_KEY = '${1:moduleName}'; // Dont forget to hookup in rootReducers! 458 | export const select${2:ModuleName}State = state => state[STORE_KEY]; 459 | 460 | // ------------------------------------ 461 | // Reducer 462 | // ------------------------------------ 463 | const actions = {}; 464 | const initialState = { 465 | ${1:moduleName}Data: {}, 466 | hasLoaded: false, 467 | errors: null, 468 | }; 469 | const ${1:moduleName}Reducer = (state = initialState, action) => { 470 | const handler = actions[action.type]; 471 | 472 | return handler ? handler(state, action) : state; 473 | }; 474 | export default ${1:moduleName}Reducer; 475 | 476 | // ------------------------------------ 477 | // Rest of your logic goes here 478 | // Use action or aaction snippets 479 | // ------------------------------------ 480 | 481 | $3 482 | """ 483 | -------------------------------------------------------------------------------- /com.googlecode.iterm2.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AdjustWindowForFontSizeChange 6 | 7 | AllowClipboardAccess 8 | 9 | AnimateDimming 10 | 11 | AppleAntiAliasingThreshold 12 | 1 13 | AppleScrollAnimationEnabled 14 | 0 15 | AppleSmoothFixedFontsSizeThreshold 16 | 1 17 | AppleWindowTabbingMode 18 | manual 19 | AutoHideTmuxClientSession 20 | 21 | CheckTestRelease 22 | 23 | ClosingHotkeySwitchesSpaces 24 | 25 | CommandSelection 26 | 27 | Control 28 | 1 29 | CopyLastNewline 30 | 31 | CopySelection 32 | 33 | Custom Color Presets 34 | 35 | Solarized Dark 36 | 37 | Ansi 0 Color 38 | 39 | Blue Component 40 | 0.19370138645172119 41 | Green Component 42 | 0.15575926005840302 43 | Red Component 44 | 0.0 45 | 46 | Ansi 1 Color 47 | 48 | Blue Component 49 | 0.14145714044570923 50 | Green Component 51 | 0.10840655118227005 52 | Red Component 53 | 0.81926977634429932 54 | 55 | Ansi 10 Color 56 | 57 | Blue Component 58 | 0.38298487663269043 59 | Green Component 60 | 0.35665956139564514 61 | Red Component 62 | 0.27671992778778076 63 | 64 | Ansi 11 Color 65 | 66 | Blue Component 67 | 0.43850564956665039 68 | Green Component 69 | 0.40717673301696777 70 | Red Component 71 | 0.32436618208885193 72 | 73 | Ansi 12 Color 74 | 75 | Blue Component 76 | 0.51685798168182373 77 | Green Component 78 | 0.50962930917739868 79 | Red Component 80 | 0.44058024883270264 81 | 82 | Ansi 13 Color 83 | 84 | Blue Component 85 | 0.72908437252044678 86 | Green Component 87 | 0.33896297216415405 88 | Red Component 89 | 0.34798634052276611 90 | 91 | Ansi 14 Color 92 | 93 | Blue Component 94 | 0.56363654136657715 95 | Green Component 96 | 0.56485837697982788 97 | Red Component 98 | 0.50599193572998047 99 | 100 | Ansi 15 Color 101 | 102 | Blue Component 103 | 0.86405980587005615 104 | Green Component 105 | 0.95794391632080078 106 | Red Component 107 | 0.98943418264389038 108 | 109 | Ansi 2 Color 110 | 111 | Blue Component 112 | 0.020208755508065224 113 | Green Component 114 | 0.54115492105484009 115 | Red Component 116 | 0.44977453351020813 117 | 118 | Ansi 3 Color 119 | 120 | Blue Component 121 | 0.023484811186790466 122 | Green Component 123 | 0.46751424670219421 124 | Red Component 125 | 0.64746475219726562 126 | 127 | Ansi 4 Color 128 | 129 | Blue Component 130 | 0.78231418132781982 131 | Green Component 132 | 0.46265947818756104 133 | Red Component 134 | 0.12754884362220764 135 | 136 | Ansi 5 Color 137 | 138 | Blue Component 139 | 0.43516635894775391 140 | Green Component 141 | 0.10802463442087173 142 | Red Component 143 | 0.77738940715789795 144 | 145 | Ansi 6 Color 146 | 147 | Blue Component 148 | 0.52502274513244629 149 | Green Component 150 | 0.57082360982894897 151 | Red Component 152 | 0.14679534733295441 153 | 154 | Ansi 7 Color 155 | 156 | Blue Component 157 | 0.79781103134155273 158 | Green Component 159 | 0.89001238346099854 160 | Red Component 161 | 0.91611063480377197 162 | 163 | Ansi 8 Color 164 | 165 | Blue Component 166 | 0.15170273184776306 167 | Green Component 168 | 0.11783610284328461 169 | Red Component 170 | 0.0 171 | 172 | Ansi 9 Color 173 | 174 | Blue Component 175 | 0.073530435562133789 176 | Green Component 177 | 0.21325300633907318 178 | Red Component 179 | 0.74176257848739624 180 | 181 | Background Color 182 | 183 | Blue Component 184 | 0.15170273184776306 185 | Green Component 186 | 0.11783610284328461 187 | Red Component 188 | 0.0 189 | 190 | Bold Color 191 | 192 | Blue Component 193 | 0.56363654136657715 194 | Green Component 195 | 0.56485837697982788 196 | Red Component 197 | 0.50599193572998047 198 | 199 | Cursor Color 200 | 201 | Blue Component 202 | 0.51685798168182373 203 | Green Component 204 | 0.50962930917739868 205 | Red Component 206 | 0.44058024883270264 207 | 208 | Cursor Text Color 209 | 210 | Blue Component 211 | 0.19370138645172119 212 | Green Component 213 | 0.15575926005840302 214 | Red Component 215 | 0.0 216 | 217 | Foreground Color 218 | 219 | Blue Component 220 | 0.51685798168182373 221 | Green Component 222 | 0.50962930917739868 223 | Red Component 224 | 0.44058024883270264 225 | 226 | Selected Text Color 227 | 228 | Blue Component 229 | 0.56363654136657715 230 | Green Component 231 | 0.56485837697982788 232 | Red Component 233 | 0.50599193572998047 234 | 235 | Selection Color 236 | 237 | Blue Component 238 | 0.19370138645172119 239 | Green Component 240 | 0.15575926005840302 241 | Red Component 242 | 0.0 243 | 244 | 245 | Solarized Light 246 | 247 | Ansi 0 Color 248 | 249 | Blue Component 250 | 0.19370138645172119 251 | Green Component 252 | 0.15575926005840302 253 | Red Component 254 | 0.0 255 | 256 | Ansi 1 Color 257 | 258 | Blue Component 259 | 0.14145712554454803 260 | Green Component 261 | 0.10840645432472229 262 | Red Component 263 | 0.81926983594894409 264 | 265 | Ansi 10 Color 266 | 267 | Blue Component 268 | 0.38298487663269043 269 | Green Component 270 | 0.35665956139564514 271 | Red Component 272 | 0.27671992778778076 273 | 274 | Ansi 11 Color 275 | 276 | Blue Component 277 | 0.43850564956665039 278 | Green Component 279 | 0.40717673301696777 280 | Red Component 281 | 0.32436618208885193 282 | 283 | Ansi 12 Color 284 | 285 | Blue Component 286 | 0.51685798168182373 287 | Green Component 288 | 0.50962930917739868 289 | Red Component 290 | 0.44058024883270264 291 | 292 | Ansi 13 Color 293 | 294 | Blue Component 295 | 0.72908437252044678 296 | Green Component 297 | 0.33896297216415405 298 | Red Component 299 | 0.34798634052276611 300 | 301 | Ansi 14 Color 302 | 303 | Blue Component 304 | 0.56363654136657715 305 | Green Component 306 | 0.56485837697982788 307 | Red Component 308 | 0.50599193572998047 309 | 310 | Ansi 15 Color 311 | 312 | Blue Component 313 | 0.86405980587005615 314 | Green Component 315 | 0.95794391632080078 316 | Red Component 317 | 0.98943418264389038 318 | 319 | Ansi 2 Color 320 | 321 | Blue Component 322 | 0.020208755508065224 323 | Green Component 324 | 0.54115492105484009 325 | Red Component 326 | 0.44977453351020813 327 | 328 | Ansi 3 Color 329 | 330 | Blue Component 331 | 0.023484811186790466 332 | Green Component 333 | 0.46751424670219421 334 | Red Component 335 | 0.64746475219726562 336 | 337 | Ansi 4 Color 338 | 339 | Blue Component 340 | 0.78231418132781982 341 | Green Component 342 | 0.46265947818756104 343 | Red Component 344 | 0.12754884362220764 345 | 346 | Ansi 5 Color 347 | 348 | Blue Component 349 | 0.43516635894775391 350 | Green Component 351 | 0.10802463442087173 352 | Red Component 353 | 0.77738940715789795 354 | 355 | Ansi 6 Color 356 | 357 | Blue Component 358 | 0.52502274513244629 359 | Green Component 360 | 0.57082360982894897 361 | Red Component 362 | 0.14679534733295441 363 | 364 | Ansi 7 Color 365 | 366 | Blue Component 367 | 0.79781103134155273 368 | Green Component 369 | 0.89001238346099854 370 | Red Component 371 | 0.91611063480377197 372 | 373 | Ansi 8 Color 374 | 375 | Blue Component 376 | 0.15170273184776306 377 | Green Component 378 | 0.11783610284328461 379 | Red Component 380 | 0.0 381 | 382 | Ansi 9 Color 383 | 384 | Blue Component 385 | 0.073530435562133789 386 | Green Component 387 | 0.21325300633907318 388 | Red Component 389 | 0.74176257848739624 390 | 391 | Background Color 392 | 393 | Blue Component 394 | 0.86405980587005615 395 | Green Component 396 | 0.95794391632080078 397 | Red Component 398 | 0.98943418264389038 399 | 400 | Bold Color 401 | 402 | Blue Component 403 | 0.38298487663269043 404 | Green Component 405 | 0.35665956139564514 406 | Red Component 407 | 0.27671992778778076 408 | 409 | Cursor Color 410 | 411 | Blue Component 412 | 0.43850564956665039 413 | Green Component 414 | 0.40717673301696777 415 | Red Component 416 | 0.32436618208885193 417 | 418 | Cursor Text Color 419 | 420 | Blue Component 421 | 0.79781103134155273 422 | Green Component 423 | 0.89001238346099854 424 | Red Component 425 | 0.91611063480377197 426 | 427 | Foreground Color 428 | 429 | Blue Component 430 | 0.43850564956665039 431 | Green Component 432 | 0.40717673301696777 433 | Red Component 434 | 0.32436618208885193 435 | 436 | Selected Text Color 437 | 438 | Blue Component 439 | 0.38298487663269043 440 | Green Component 441 | 0.35665956139564514 442 | Red Component 443 | 0.27671992778778076 444 | 445 | Selection Color 446 | 447 | Blue Component 448 | 0.79781103134155273 449 | Green Component 450 | 0.89001238346099854 451 | Red Component 452 | 0.91611063480377197 453 | 454 | 455 | cobalt2 456 | 457 | Ansi 0 Color 458 | 459 | Blue Component 460 | 0.0 461 | Green Component 462 | 0.0 463 | Red Component 464 | 0.0 465 | 466 | Ansi 1 Color 467 | 468 | Blue Component 469 | 0.0 470 | Green Component 471 | 0.0 472 | Red Component 473 | 1 474 | 475 | Ansi 10 Color 476 | 477 | Blue Component 478 | 0.11517760157585144 479 | Green Component 480 | 0.81519794464111328 481 | Red Component 482 | 0.23300750553607941 483 | 484 | Ansi 11 Color 485 | 486 | Blue Component 487 | 0.035555899143218994 488 | Green Component 489 | 0.78536456823348999 490 | Red Component 491 | 0.92833864688873291 492 | 493 | Ansi 12 Color 494 | 495 | Blue Component 496 | 1 497 | Green Component 498 | 0.3333333432674408 499 | Red Component 500 | 0.3333333432674408 501 | 502 | Ansi 13 Color 503 | 504 | Blue Component 505 | 1 506 | Green Component 507 | 0.3333333432674408 508 | Red Component 509 | 1 510 | 511 | Ansi 14 Color 512 | 513 | Blue Component 514 | 0.97867441177368164 515 | Green Component 516 | 0.89121149225051699 517 | Red Component 518 | 0.41672572861338453 519 | 520 | Ansi 15 Color 521 | 522 | Blue Component 523 | 1 524 | Green Component 525 | 1 526 | Red Component 527 | 1 528 | 529 | Ansi 2 Color 530 | 531 | Blue Component 532 | 0.13008742736566298 533 | Green Component 534 | 0.87031603506787336 535 | Red Component 536 | 0.21895777543895642 537 | 538 | Ansi 3 Color 539 | 540 | Blue Component 541 | 0.039139740169048309 542 | Green Component 543 | 0.89706093072891235 544 | Red Component 545 | 0.99814993143081665 546 | 547 | Ansi 4 Color 548 | 549 | Blue Component 550 | 0.82438474893569946 551 | Green Component 552 | 0.37805050611495972 553 | Red Component 554 | 0.079237513244152069 555 | 556 | Ansi 5 Color 557 | 558 | Blue Component 559 | 0.36536297202110291 560 | Green Component 561 | 0.0 562 | Red Component 563 | 1 564 | 565 | Ansi 6 Color 566 | 567 | Blue Component 568 | 0.73333334922790527 569 | Green Component 570 | 0.73333334922790527 571 | Red Component 572 | 0.0 573 | 574 | Ansi 7 Color 575 | 576 | Blue Component 577 | 0.73333334922790527 578 | Green Component 579 | 0.73333334922790527 580 | Red Component 581 | 0.73333334922790527 582 | 583 | Ansi 8 Color 584 | 585 | Blue Component 586 | 0.33333333333333331 587 | Green Component 588 | 0.33333333333333331 589 | Red Component 590 | 0.33333333333333331 591 | 592 | Ansi 9 Color 593 | 594 | Blue Component 595 | 0.090362116694450378 596 | Green Component 597 | 0.052976857870817184 598 | Red Component 599 | 0.95708823204040527 600 | 601 | Background Color 602 | 603 | Blue Component 604 | 0.21839480102062225 605 | Green Component 606 | 0.15233974158763885 607 | Red Component 608 | 0.073702715337276459 609 | 610 | Bold Color 611 | 612 | Blue Component 613 | 1 614 | Green Component 615 | 0.98771905899047852 616 | Red Component 617 | 0.96919095516204834 618 | 619 | Cursor Color 620 | 621 | Blue Component 622 | 0.03614787757396698 623 | Green Component 624 | 0.79959547519683838 625 | Red Component 626 | 0.94297069311141968 627 | 628 | Cursor Text Color 629 | 630 | Blue Component 631 | 0.9480862021446228 632 | Green Component 633 | 1 634 | Red Component 635 | 0.99659550189971924 636 | 637 | Foreground Color 638 | 639 | Blue Component 640 | 1 641 | Green Component 642 | 1 643 | Red Component 644 | 1 645 | 646 | Selected Text Color 647 | 648 | Blue Component 649 | 0.70916998386383057 650 | Green Component 651 | 0.70916998386383057 652 | Red Component 653 | 0.70916998386383057 654 | 655 | Selection Color 656 | 657 | Blue Component 658 | 0.31055498123168945 659 | Green Component 660 | 0.20615114271640778 661 | Red Component 662 | 0.09597768634557724 663 | 664 | 665 | 666 | Default Bookmark Guid 667 | C22DCFD2-1303-4D7E-AA0C-1326DD84A9E0 668 | DimBackgroundWindows 669 | 670 | DimInactiveSplitPanes 671 | 672 | DimOnlyText 673 | 674 | DisableFullscreenTransparency 675 | 676 | EnableRendezvous 677 | 678 | FocusFollowsMouse 679 | 680 | FsTabDelay 681 | 1 682 | GlobalKeyMap 683 | 684 | 0x9-0x40000 685 | 686 | Action 687 | 32 688 | Text 689 | 690 | 691 | 0xf700-0x300000 692 | 693 | Action 694 | 7 695 | Text 696 | 697 | 698 | 0xf701-0x300000 699 | 700 | Action 701 | 6 702 | Text 703 | 704 | 705 | 0xf702-0x300000 706 | 707 | Action 708 | 2 709 | Text 710 | 711 | 712 | 0xf702-0x320000 713 | 714 | Action 715 | 33 716 | Text 717 | 718 | 719 | 0xf703-0x300000 720 | 721 | Action 722 | 0 723 | Text 724 | 725 | 726 | 0xf703-0x320000 727 | 728 | Action 729 | 34 730 | Text 731 | 732 | 733 | 0xf729-0x100000 734 | 735 | Action 736 | 5 737 | Text 738 | 739 | 740 | 0xf72b-0x100000 741 | 742 | Action 743 | 4 744 | Text 745 | 746 | 747 | 0xf72c-0x100000 748 | 749 | Action 750 | 9 751 | Text 752 | 753 | 754 | 0xf72c-0x20000 755 | 756 | Action 757 | 9 758 | Text 759 | 760 | 761 | 0xf72d-0x100000 762 | 763 | Action 764 | 8 765 | Text 766 | 767 | 768 | 0xf72d-0x20000 769 | 770 | Action 771 | 8 772 | Text 773 | 774 | 775 | 776 | HiddenAFRStrokeThickness 777 | 0.0 778 | HiddenAdvancedFontRendering 779 | 780 | HideActivityIndicator 781 | 782 | HideMenuBarInFullscreen 783 | 784 | HideScrollbar 785 | 786 | HideTab 787 | 788 | HighlightTabLabels 789 | 790 | HotKeyBookmark 791 | 186BBF41-F689-4C9E-AFCB-048349A0F9FC 792 | HotKeyTogglesWindow 793 | 794 | Hotkey 795 | 796 | HotkeyChar 797 | 0 798 | HotkeyCode 799 | 0 800 | HotkeyMigratedFromSingleToMulti 801 | 802 | HotkeyModifiers 803 | 0 804 | IRMemory 805 | 4 806 | JobName 807 | 808 | LeftCommand 809 | 7 810 | LeftOption 811 | 2 812 | LoadPrefsFromCustomFolder 813 | 814 | MaxVertically 815 | 816 | NSNavLastRootDirectory 817 | ~/dotfiles 818 | NSNavPanelExpandedSizeForOpenMode 819 | {712, 448} 820 | NSQuotedKeystrokeBinding 821 | 822 | NSRepeatCountBinding 823 | 824 | NSScrollAnimationEnabled 825 | 826 | NSScrollViewShouldScrollUnderTitlebar 827 | 828 | NSTableView Columns v2 KeyBingingTable 829 | 830 | YnBsaXN0MDDUAQIDBAUGNjdYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS 831 | AAGGoK4HCA8aGxwdHh8gJjAxMlUkbnVsbNIJCgsOWk5TLm9iamVjdHNWJGNsYXNzogwN 832 | gAKACoAN0xAJChEVGVdOUy5rZXlzoxITFIADgASABaMWFxiABoAHgAiACVpJZGVudGlm 833 | aWVyVVdpZHRoVkhpZGRlblEwI0BowAAAAAAACNIhIiMkWiRjbGFzc25hbWVYJGNsYXNz 834 | ZXNcTlNEaWN0aW9uYXJ5oiMlWE5TT2JqZWN00xAJCicrGaMSExSAA4AEgAWjLC0YgAuA 835 | DIAIgAlRMSNAc7Gdsi0OVtIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP 836 | TlNLZXllZEFyY2hpdmVy0Tg5VUFycmF5gAEACAARABoAIwAtADIANwBGAEwAUQBcAGMA 837 | ZgBoAGoAbABzAHsAfwCBAIMAhQCJAIsAjQCPAJEAnACiAKkAqwC0ALUAugDFAM4A2wDe 838 | AOcA7gDyAPQA9gD4APwA/gEAAQIBBAEGAQ8BFAEjAScBLwFBAUQBSgAAAAAAAAIBAAAA 839 | AAAAADoAAAAAAAAAAAAAAAAAAAFM 840 | 841 | NSTableView Sort Ordering v2 KeyBingingTable 842 | 843 | YnBsaXN0MDDUAQIDBAUGFBVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS 844 | AAGGoKMHCA1VJG51bGzSCQoLDFpOUy5vYmplY3RzViRjbGFzc6CAAtIODxARWiRjbGFz 845 | c25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjEBITV05TQXJyYXlYTlNPYmplY3Rf 846 | EA9OU0tleWVkQXJjaGl2ZXLRFhdVQXJyYXmAAQgRGiMtMjc7QUZRWFlbYGt0g4ePmKqt 847 | swAAAAAAAAEBAAAAAAAAABgAAAAAAAAAAAAAAAAAAAC1 848 | 849 | NSTableView Supports v2 KeyBingingTable 850 | 851 | NSWindow Frame SUUpdateAlert 852 | 972 768 620 392 0 0 2560 1417 853 | NSWindow Frame SharedPreferences 854 | 557 480 796 486 0 0 2560 1417 855 | NSWindow Frame iTerm Window 0 856 | 1720 12 1873 1405 0 0 3440 1417 857 | NSWindow Frame iTerm Window 1 858 | 474 181 585 352 0 0 3440 1417 859 | New Bookmarks 860 | 861 | 862 | ASCII Anti Aliased 863 | 864 | Allow Title Reporting 865 | 866 | Ambiguous Double Width 867 | 868 | Ansi 0 Color 869 | 870 | Blue Component 871 | 0.19370138645172119 872 | Green Component 873 | 0.15575926005840302 874 | Red Component 875 | 0.0 876 | 877 | Ansi 1 Color 878 | 879 | Blue Component 880 | 0.14145712554454803 881 | Green Component 882 | 0.10840645432472229 883 | Red Component 884 | 0.81926983594894409 885 | 886 | Ansi 10 Color 887 | 888 | Blue Component 889 | 0.38298487663269043 890 | Green Component 891 | 0.35665956139564514 892 | Red Component 893 | 0.27671992778778076 894 | 895 | Ansi 11 Color 896 | 897 | Blue Component 898 | 0.43850564956665039 899 | Green Component 900 | 0.40717673301696777 901 | Red Component 902 | 0.32436618208885193 903 | 904 | Ansi 12 Color 905 | 906 | Blue Component 907 | 0.51685798168182373 908 | Green Component 909 | 0.50962930917739868 910 | Red Component 911 | 0.44058024883270264 912 | 913 | Ansi 13 Color 914 | 915 | Blue Component 916 | 0.72908437252044678 917 | Green Component 918 | 0.33896297216415405 919 | Red Component 920 | 0.34798634052276611 921 | 922 | Ansi 14 Color 923 | 924 | Blue Component 925 | 0.56363654136657715 926 | Green Component 927 | 0.56485837697982788 928 | Red Component 929 | 0.50599193572998047 930 | 931 | Ansi 15 Color 932 | 933 | Blue Component 934 | 0.86405980587005615 935 | Green Component 936 | 0.95794391632080078 937 | Red Component 938 | 0.98943418264389038 939 | 940 | Ansi 2 Color 941 | 942 | Blue Component 943 | 0.020208755508065224 944 | Green Component 945 | 0.54115492105484009 946 | Red Component 947 | 0.44977453351020813 948 | 949 | Ansi 3 Color 950 | 951 | Blue Component 952 | 0.023484811186790466 953 | Green Component 954 | 0.46751424670219421 955 | Red Component 956 | 0.64746475219726562 957 | 958 | Ansi 4 Color 959 | 960 | Blue Component 961 | 0.78231418132781982 962 | Green Component 963 | 0.46265947818756104 964 | Red Component 965 | 0.12754884362220764 966 | 967 | Ansi 5 Color 968 | 969 | Blue Component 970 | 0.43516635894775391 971 | Green Component 972 | 0.10802463442087173 973 | Red Component 974 | 0.77738940715789795 975 | 976 | Ansi 6 Color 977 | 978 | Blue Component 979 | 0.52502274513244629 980 | Green Component 981 | 0.57082360982894897 982 | Red Component 983 | 0.14679534733295441 984 | 985 | Ansi 7 Color 986 | 987 | Blue Component 988 | 0.79781103134155273 989 | Green Component 990 | 0.89001238346099854 991 | Red Component 992 | 0.91611063480377197 993 | 994 | Ansi 8 Color 995 | 996 | Blue Component 997 | 0.15170273184776306 998 | Green Component 999 | 0.11783610284328461 1000 | Red Component 1001 | 0.0 1002 | 1003 | Ansi 9 Color 1004 | 1005 | Blue Component 1006 | 0.073530435562133789 1007 | Green Component 1008 | 0.21325300633907318 1009 | Red Component 1010 | 0.74176257848739624 1011 | 1012 | Automatically Log 1013 | 1014 | BM Growl 1015 | 1016 | Background Color 1017 | 1018 | Blue Component 1019 | 0.86405980587005615 1020 | Green Component 1021 | 0.95794391632080078 1022 | Red Component 1023 | 0.98943418264389038 1024 | 1025 | Background Image Is Tiled 1026 | 1027 | Background Image Location 1028 | 1029 | Blend 1030 | 0.30000001192092896 1031 | Blink Allowed 1032 | 1033 | Blinking Cursor 1034 | 1035 | Blur 1036 | 1037 | Blur Radius 1038 | 2 1039 | Bold Color 1040 | 1041 | Blue Component 1042 | 0.38298487663269043 1043 | Green Component 1044 | 0.35665956139564514 1045 | Red Component 1046 | 0.27671992778778076 1047 | 1048 | Character Encoding 1049 | 4 1050 | Close Sessions On End 1051 | 1052 | Columns 1053 | 80 1054 | Command 1055 | 1056 | Cursor Color 1057 | 1058 | Blue Component 1059 | 0.43850564956665039 1060 | Green Component 1061 | 0.40717673301696777 1062 | Red Component 1063 | 0.32436618208885193 1064 | 1065 | Cursor Text Color 1066 | 1067 | Blue Component 1068 | 0.79781103134155273 1069 | Green Component 1070 | 0.89001238346099854 1071 | Red Component 1072 | 0.91611063480377197 1073 | 1074 | Cursor Type 1075 | 2 1076 | Custom Command 1077 | No 1078 | Custom Directory 1079 | No 1080 | Default Bookmark 1081 | No 1082 | Disable Printing 1083 | 1084 | Disable Smcup Rmcup 1085 | 1086 | Disable Window Resizing 1087 | 1088 | Flashing Bell 1089 | 1090 | Foreground Color 1091 | 1092 | Blue Component 1093 | 0.43850564956665039 1094 | Green Component 1095 | 0.40717673301696777 1096 | Red Component 1097 | 0.32436618208885193 1098 | 1099 | Guid 1100 | 186BBF41-F689-4C9E-AFCB-048349A0F9FC 1101 | Hide After Opening 1102 | 1103 | Horizontal Spacing 1104 | 1 1105 | Idle Code 1106 | 0 1107 | Initial Text 1108 | 1109 | Jobs to Ignore 1110 | 1111 | rlogin 1112 | ssh 1113 | slogin 1114 | telnet 1115 | 1116 | Keyboard Map 1117 | 1118 | 0x2d-0x40000 1119 | 1120 | Action 1121 | 11 1122 | Text 1123 | 0x1f 1124 | 1125 | 0x32-0x40000 1126 | 1127 | Action 1128 | 11 1129 | Text 1130 | 0x00 1131 | 1132 | 0x33-0x40000 1133 | 1134 | Action 1135 | 11 1136 | Text 1137 | 0x1b 1138 | 1139 | 0x34-0x40000 1140 | 1141 | Action 1142 | 11 1143 | Text 1144 | 0x1c 1145 | 1146 | 0x35-0x40000 1147 | 1148 | Action 1149 | 11 1150 | Text 1151 | 0x1d 1152 | 1153 | 0x36-0x40000 1154 | 1155 | Action 1156 | 11 1157 | Text 1158 | 0x1e 1159 | 1160 | 0x37-0x40000 1161 | 1162 | Action 1163 | 11 1164 | Text 1165 | 0x1f 1166 | 1167 | 0x38-0x40000 1168 | 1169 | Action 1170 | 11 1171 | Text 1172 | 0x7f 1173 | 1174 | 0xf700-0x220000 1175 | 1176 | Action 1177 | 10 1178 | Text 1179 | [1;2A 1180 | 1181 | 0xf700-0x240000 1182 | 1183 | Action 1184 | 10 1185 | Text 1186 | [1;5A 1187 | 1188 | 0xf700-0x260000 1189 | 1190 | Action 1191 | 10 1192 | Text 1193 | [1;6A 1194 | 1195 | 0xf700-0x280000 1196 | 1197 | Action 1198 | 11 1199 | Text 1200 | 0x1b 0x1b 0x5b 0x41 1201 | 1202 | 0xf701-0x220000 1203 | 1204 | Action 1205 | 10 1206 | Text 1207 | [1;2B 1208 | 1209 | 0xf701-0x240000 1210 | 1211 | Action 1212 | 10 1213 | Text 1214 | [1;5B 1215 | 1216 | 0xf701-0x260000 1217 | 1218 | Action 1219 | 10 1220 | Text 1221 | [1;6B 1222 | 1223 | 0xf701-0x280000 1224 | 1225 | Action 1226 | 11 1227 | Text 1228 | 0x1b 0x1b 0x5b 0x42 1229 | 1230 | 0xf702-0x220000 1231 | 1232 | Action 1233 | 10 1234 | Text 1235 | [1;2D 1236 | 1237 | 0xf702-0x240000 1238 | 1239 | Action 1240 | 10 1241 | Text 1242 | [1;5D 1243 | 1244 | 0xf702-0x260000 1245 | 1246 | Action 1247 | 10 1248 | Text 1249 | [1;6D 1250 | 1251 | 0xf702-0x280000 1252 | 1253 | Action 1254 | 11 1255 | Text 1256 | 0x1b 0x1b 0x5b 0x44 1257 | 1258 | 0xf703-0x220000 1259 | 1260 | Action 1261 | 10 1262 | Text 1263 | [1;2C 1264 | 1265 | 0xf703-0x240000 1266 | 1267 | Action 1268 | 10 1269 | Text 1270 | [1;5C 1271 | 1272 | 0xf703-0x260000 1273 | 1274 | Action 1275 | 10 1276 | Text 1277 | [1;6C 1278 | 1279 | 0xf703-0x280000 1280 | 1281 | Action 1282 | 11 1283 | Text 1284 | 0x1b 0x1b 0x5b 0x43 1285 | 1286 | 0xf704-0x20000 1287 | 1288 | Action 1289 | 10 1290 | Text 1291 | [1;2P 1292 | 1293 | 0xf705-0x20000 1294 | 1295 | Action 1296 | 10 1297 | Text 1298 | [1;2Q 1299 | 1300 | 0xf706-0x20000 1301 | 1302 | Action 1303 | 10 1304 | Text 1305 | [1;2R 1306 | 1307 | 0xf707-0x20000 1308 | 1309 | Action 1310 | 10 1311 | Text 1312 | [1;2S 1313 | 1314 | 0xf708-0x20000 1315 | 1316 | Action 1317 | 10 1318 | Text 1319 | [15;2~ 1320 | 1321 | 0xf709-0x20000 1322 | 1323 | Action 1324 | 10 1325 | Text 1326 | [17;2~ 1327 | 1328 | 0xf70a-0x20000 1329 | 1330 | Action 1331 | 10 1332 | Text 1333 | [18;2~ 1334 | 1335 | 0xf70b-0x20000 1336 | 1337 | Action 1338 | 10 1339 | Text 1340 | [19;2~ 1341 | 1342 | 0xf70c-0x20000 1343 | 1344 | Action 1345 | 10 1346 | Text 1347 | [20;2~ 1348 | 1349 | 0xf70d-0x20000 1350 | 1351 | Action 1352 | 10 1353 | Text 1354 | [21;2~ 1355 | 1356 | 0xf70e-0x20000 1357 | 1358 | Action 1359 | 10 1360 | Text 1361 | [23;2~ 1362 | 1363 | 0xf70f-0x20000 1364 | 1365 | Action 1366 | 10 1367 | Text 1368 | [24;2~ 1369 | 1370 | 0xf729-0x20000 1371 | 1372 | Action 1373 | 10 1374 | Text 1375 | [1;2H 1376 | 1377 | 0xf729-0x40000 1378 | 1379 | Action 1380 | 10 1381 | Text 1382 | [1;5H 1383 | 1384 | 0xf72b-0x20000 1385 | 1386 | Action 1387 | 10 1388 | Text 1389 | [1;2F 1390 | 1391 | 0xf72b-0x40000 1392 | 1393 | Action 1394 | 10 1395 | Text 1396 | [1;5F 1397 | 1398 | 1399 | Log Directory 1400 | 1401 | Minimum Contrast 1402 | 0.0 1403 | Mouse Reporting 1404 | 1405 | Name 1406 | Default 1407 | Non Ascii Font 1408 | SourceCodeProForPowerline-Regular 11 1409 | Non-ASCII Anti Aliased 1410 | 1411 | Normal Font 1412 | SourceCodeProForPowerline-Regular 11 1413 | Option Key Sends 1414 | 0 1415 | Prompt Before Closing 2 1416 | 0 1417 | Right Option Key Sends 1418 | 0 1419 | Rows 1420 | 25 1421 | Screen 1422 | -1 1423 | Scrollback Lines 1424 | 1000 1425 | Scrollback With Status Bar 1426 | 1427 | Scrollback in Alternate Screen 1428 | 1429 | Selected Text Color 1430 | 1431 | Blue Component 1432 | 0.38298487663269043 1433 | Green Component 1434 | 0.35665956139564514 1435 | Red Component 1436 | 0.27671992778778076 1437 | 1438 | Selection Color 1439 | 1440 | Blue Component 1441 | 0.79781103134155273 1442 | Green Component 1443 | 0.89001238346099854 1444 | Red Component 1445 | 0.91611063480377197 1446 | 1447 | Semantic History 1448 | 1449 | action 1450 | best editor 1451 | editor 1452 | com.sublimetext.3 1453 | text 1454 | 1455 | 1456 | Send Code When Idle 1457 | 1458 | Set Local Environment Vars 1459 | 1460 | Shortcut 1461 | 1462 | Silence Bell 1463 | 1464 | Smart Cursor Color 1465 | 1466 | Smart Selection Rules 1467 | 1468 | 1469 | notes 1470 | Word bounded by whitespace 1471 | precision 1472 | low 1473 | regex 1474 | \S+ 1475 | 1476 | 1477 | notes 1478 | C++ namespace::identifier 1479 | precision 1480 | normal 1481 | regex 1482 | ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ 1483 | 1484 | 1485 | notes 1486 | Paths 1487 | precision 1488 | normal 1489 | regex 1490 | \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? 1491 | 1492 | 1493 | notes 1494 | Quoted string 1495 | precision 1496 | normal 1497 | regex 1498 | @?"(?:[^"\\]|\\.)*" 1499 | 1500 | 1501 | notes 1502 | Java/Python include paths 1503 | precision 1504 | normal 1505 | regex 1506 | ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ 1507 | 1508 | 1509 | notes 1510 | mailto URL 1511 | precision 1512 | normal 1513 | regex 1514 | \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b 1515 | 1516 | 1517 | notes 1518 | Obj-C selector 1519 | precision 1520 | high 1521 | regex 1522 | @selector\([^)]+\) 1523 | 1524 | 1525 | notes 1526 | email address 1527 | precision 1528 | high 1529 | regex 1530 | \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b 1531 | 1532 | 1533 | notes 1534 | HTTP URL 1535 | precision 1536 | very_high 1537 | regex 1538 | https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?[a-z0-9A-Z]+(\.[a-z0-9A-Z]+)*((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%~?&@=#\(\)]*)? 1539 | 1540 | 1541 | notes 1542 | SSH URL 1543 | precision 1544 | very_high 1545 | regex 1546 | \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b 1547 | 1548 | 1549 | notes 1550 | Telnet URL 1551 | precision 1552 | very_high 1553 | regex 1554 | \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b 1555 | 1556 | 1557 | Sync Title 1558 | 1559 | Tags 1560 | 1561 | Terminal Type 1562 | xterm-256color 1563 | Transparency 1564 | 0.0 1565 | Triggers 1566 | 1567 | Unlimited Scrollback 1568 | 1569 | Use Bold Font 1570 | 1571 | Use Bright Bold 1572 | 1573 | Use Canonical Parser 1574 | 1575 | Use Italic Font 1576 | 1577 | Vertical Spacing 1578 | 1 1579 | Visual Bell 1580 | 1581 | Window Type 1582 | 0 1583 | Working Directory 1584 | /Users/colbywilliams 1585 | 1586 | 1587 | ASCII Anti Aliased 1588 | 1589 | Allow Title Reporting 1590 | 1591 | Ambiguous Double Width 1592 | 1593 | Ansi 0 Color 1594 | 1595 | Blue Component 1596 | 0.0 1597 | Green Component 1598 | 0.0 1599 | Red Component 1600 | 0.0 1601 | 1602 | Ansi 1 Color 1603 | 1604 | Blue Component 1605 | 0.0 1606 | Green Component 1607 | 0.0 1608 | Red Component 1609 | 1 1610 | 1611 | Ansi 10 Color 1612 | 1613 | Blue Component 1614 | 0.11517760157585144 1615 | Green Component 1616 | 0.81519794464111328 1617 | Red Component 1618 | 0.23300750553607941 1619 | 1620 | Ansi 11 Color 1621 | 1622 | Blue Component 1623 | 0.035555899143218994 1624 | Green Component 1625 | 0.78536456823348999 1626 | Red Component 1627 | 0.92833864688873291 1628 | 1629 | Ansi 12 Color 1630 | 1631 | Blue Component 1632 | 1 1633 | Green Component 1634 | 0.3333333432674408 1635 | Red Component 1636 | 0.3333333432674408 1637 | 1638 | Ansi 13 Color 1639 | 1640 | Blue Component 1641 | 1 1642 | Green Component 1643 | 0.3333333432674408 1644 | Red Component 1645 | 1 1646 | 1647 | Ansi 14 Color 1648 | 1649 | Blue Component 1650 | 0.97867441177368164 1651 | Green Component 1652 | 0.89121150970458984 1653 | Red Component 1654 | 0.41672572493553162 1655 | 1656 | Ansi 15 Color 1657 | 1658 | Blue Component 1659 | 1 1660 | Green Component 1661 | 1 1662 | Red Component 1663 | 1 1664 | 1665 | Ansi 2 Color 1666 | 1667 | Blue Component 1668 | 0.13008742034435272 1669 | Green Component 1670 | 0.8703160285949707 1671 | Red Component 1672 | 0.21895778179168701 1673 | 1674 | Ansi 3 Color 1675 | 1676 | Blue Component 1677 | 0.039139740169048309 1678 | Green Component 1679 | 0.89706093072891235 1680 | Red Component 1681 | 0.99814993143081665 1682 | 1683 | Ansi 4 Color 1684 | 1685 | Blue Component 1686 | 0.82438474893569946 1687 | Green Component 1688 | 0.37805050611495972 1689 | Red Component 1690 | 0.079237513244152069 1691 | 1692 | Ansi 5 Color 1693 | 1694 | Blue Component 1695 | 0.36536297202110291 1696 | Green Component 1697 | 0.0 1698 | Red Component 1699 | 1 1700 | 1701 | Ansi 6 Color 1702 | 1703 | Blue Component 1704 | 0.73333334922790527 1705 | Green Component 1706 | 0.73333334922790527 1707 | Red Component 1708 | 0.0 1709 | 1710 | Ansi 7 Color 1711 | 1712 | Blue Component 1713 | 0.73333334922790527 1714 | Green Component 1715 | 0.73333334922790527 1716 | Red Component 1717 | 0.73333334922790527 1718 | 1719 | Ansi 8 Color 1720 | 1721 | Blue Component 1722 | 0.3333333432674408 1723 | Green Component 1724 | 0.3333333432674408 1725 | Red Component 1726 | 0.3333333432674408 1727 | 1728 | Ansi 9 Color 1729 | 1730 | Blue Component 1731 | 0.090362116694450378 1732 | Green Component 1733 | 0.052976857870817184 1734 | Red Component 1735 | 0.95708823204040527 1736 | 1737 | Automatically Log 1738 | 1739 | BM Growl 1740 | 1741 | Background Color 1742 | 1743 | Blue Component 1744 | 0.21839480102062225 1745 | Green Component 1746 | 0.15233974158763885 1747 | Red Component 1748 | 0.073702715337276459 1749 | 1750 | Background Image Is Tiled 1751 | 1752 | Background Image Location 1753 | 1754 | Blend 1755 | 0.30000001192092896 1756 | Blink Allowed 1757 | 1758 | Blinking Cursor 1759 | 1760 | Blur 1761 | 1762 | Blur Radius 1763 | 2 1764 | Bold Color 1765 | 1766 | Blue Component 1767 | 1 1768 | Green Component 1769 | 0.98771905899047852 1770 | Red Component 1771 | 0.96919095516204834 1772 | 1773 | Character Encoding 1774 | 4 1775 | Close Sessions On End 1776 | 1777 | Columns 1778 | 80 1779 | Command 1780 | 1781 | Cursor Color 1782 | 1783 | Blue Component 1784 | 0.03614787757396698 1785 | Green Component 1786 | 0.79959547519683838 1787 | Red Component 1788 | 0.94297069311141968 1789 | 1790 | Cursor Text Color 1791 | 1792 | Blue Component 1793 | 0.9480862021446228 1794 | Green Component 1795 | 1 1796 | Red Component 1797 | 0.99659550189971924 1798 | 1799 | Cursor Type 1800 | 2 1801 | Custom Command 1802 | No 1803 | Custom Directory 1804 | No 1805 | Default Bookmark 1806 | No 1807 | Disable Printing 1808 | 1809 | Disable Smcup Rmcup 1810 | 1811 | Disable Window Resizing 1812 | 1813 | Flashing Bell 1814 | 1815 | Foreground Color 1816 | 1817 | Blue Component 1818 | 1 1819 | Green Component 1820 | 1 1821 | Red Component 1822 | 1 1823 | 1824 | Guid 1825 | C22DCFD2-1303-4D7E-AA0C-1326DD84A9E0 1826 | Hide After Opening 1827 | 1828 | Horizontal Spacing 1829 | 1 1830 | Idle Code 1831 | 0 1832 | Initial Text 1833 | 1834 | Jobs to Ignore 1835 | 1836 | rlogin 1837 | ssh 1838 | slogin 1839 | telnet 1840 | 1841 | Keyboard Map 1842 | 1843 | 0x2d-0x40000 1844 | 1845 | Action 1846 | 11 1847 | Text 1848 | 0x1f 1849 | 1850 | 0x32-0x40000 1851 | 1852 | Action 1853 | 11 1854 | Text 1855 | 0x00 1856 | 1857 | 0x33-0x40000 1858 | 1859 | Action 1860 | 11 1861 | Text 1862 | 0x1b 1863 | 1864 | 0x34-0x40000 1865 | 1866 | Action 1867 | 11 1868 | Text 1869 | 0x1c 1870 | 1871 | 0x35-0x40000 1872 | 1873 | Action 1874 | 11 1875 | Text 1876 | 0x1d 1877 | 1878 | 0x36-0x40000 1879 | 1880 | Action 1881 | 11 1882 | Text 1883 | 0x1e 1884 | 1885 | 0x37-0x40000 1886 | 1887 | Action 1888 | 11 1889 | Text 1890 | 0x1f 1891 | 1892 | 0x38-0x40000 1893 | 1894 | Action 1895 | 11 1896 | Text 1897 | 0x7f 1898 | 1899 | 0xf700-0x220000 1900 | 1901 | Action 1902 | 10 1903 | Text 1904 | [1;2A 1905 | 1906 | 0xf700-0x240000 1907 | 1908 | Action 1909 | 10 1910 | Text 1911 | [1;5A 1912 | 1913 | 0xf700-0x260000 1914 | 1915 | Action 1916 | 10 1917 | Text 1918 | [1;6A 1919 | 1920 | 0xf700-0x280000 1921 | 1922 | Action 1923 | 11 1924 | Text 1925 | 0x1b 0x1b 0x5b 0x41 1926 | 1927 | 0xf701-0x220000 1928 | 1929 | Action 1930 | 10 1931 | Text 1932 | [1;2B 1933 | 1934 | 0xf701-0x240000 1935 | 1936 | Action 1937 | 10 1938 | Text 1939 | [1;5B 1940 | 1941 | 0xf701-0x260000 1942 | 1943 | Action 1944 | 10 1945 | Text 1946 | [1;6B 1947 | 1948 | 0xf701-0x280000 1949 | 1950 | Action 1951 | 11 1952 | Text 1953 | 0x1b 0x1b 0x5b 0x42 1954 | 1955 | 0xf702-0x220000 1956 | 1957 | Action 1958 | 10 1959 | Text 1960 | [1;2D 1961 | 1962 | 0xf702-0x240000 1963 | 1964 | Action 1965 | 10 1966 | Text 1967 | [1;5D 1968 | 1969 | 0xf702-0x260000 1970 | 1971 | Action 1972 | 10 1973 | Text 1974 | [1;6D 1975 | 1976 | 0xf702-0x280000 1977 | 1978 | Action 1979 | 11 1980 | Text 1981 | 0x1b 0x1b 0x5b 0x44 1982 | 1983 | 0xf703-0x220000 1984 | 1985 | Action 1986 | 10 1987 | Text 1988 | [1;2C 1989 | 1990 | 0xf703-0x240000 1991 | 1992 | Action 1993 | 10 1994 | Text 1995 | [1;5C 1996 | 1997 | 0xf703-0x260000 1998 | 1999 | Action 2000 | 10 2001 | Text 2002 | [1;6C 2003 | 2004 | 0xf703-0x280000 2005 | 2006 | Action 2007 | 11 2008 | Text 2009 | 0x1b 0x1b 0x5b 0x43 2010 | 2011 | 0xf704-0x20000 2012 | 2013 | Action 2014 | 10 2015 | Text 2016 | [1;2P 2017 | 2018 | 0xf705-0x20000 2019 | 2020 | Action 2021 | 10 2022 | Text 2023 | [1;2Q 2024 | 2025 | 0xf706-0x20000 2026 | 2027 | Action 2028 | 10 2029 | Text 2030 | [1;2R 2031 | 2032 | 0xf707-0x20000 2033 | 2034 | Action 2035 | 10 2036 | Text 2037 | [1;2S 2038 | 2039 | 0xf708-0x20000 2040 | 2041 | Action 2042 | 10 2043 | Text 2044 | [15;2~ 2045 | 2046 | 0xf709-0x20000 2047 | 2048 | Action 2049 | 10 2050 | Text 2051 | [17;2~ 2052 | 2053 | 0xf70a-0x20000 2054 | 2055 | Action 2056 | 10 2057 | Text 2058 | [18;2~ 2059 | 2060 | 0xf70b-0x20000 2061 | 2062 | Action 2063 | 10 2064 | Text 2065 | [19;2~ 2066 | 2067 | 0xf70c-0x20000 2068 | 2069 | Action 2070 | 10 2071 | Text 2072 | [20;2~ 2073 | 2074 | 0xf70d-0x20000 2075 | 2076 | Action 2077 | 10 2078 | Text 2079 | [21;2~ 2080 | 2081 | 0xf70e-0x20000 2082 | 2083 | Action 2084 | 10 2085 | Text 2086 | [23;2~ 2087 | 2088 | 0xf70f-0x20000 2089 | 2090 | Action 2091 | 10 2092 | Text 2093 | [24;2~ 2094 | 2095 | 0xf729-0x20000 2096 | 2097 | Action 2098 | 10 2099 | Text 2100 | [1;2H 2101 | 2102 | 0xf729-0x40000 2103 | 2104 | Action 2105 | 10 2106 | Text 2107 | [1;5H 2108 | 2109 | 0xf72b-0x20000 2110 | 2111 | Action 2112 | 10 2113 | Text 2114 | [1;2F 2115 | 2116 | 0xf72b-0x40000 2117 | 2118 | Action 2119 | 10 2120 | Text 2121 | [1;5F 2122 | 2123 | 2124 | Log Directory 2125 | 2126 | Minimum Contrast 2127 | 0.0 2128 | Mouse Reporting 2129 | 2130 | Name 2131 | Pretty Pretty 2132 | Non Ascii Font 2133 | SauceCodePowerline-Regular 14 2134 | Non-ASCII Anti Aliased 2135 | 2136 | Normal Font 2137 | SauceCodePowerline-Regular 14 2138 | Option Key Sends 2139 | 0 2140 | Prompt Before Closing 2 2141 | 0 2142 | Right Option Key Sends 2143 | 0 2144 | Rows 2145 | 25 2146 | Screen 2147 | -1 2148 | Scrollback Lines 2149 | 1000 2150 | Scrollback With Status Bar 2151 | 2152 | Scrollback in Alternate Screen 2153 | 2154 | Selected Text Color 2155 | 2156 | Blue Component 2157 | 0.70916998386383057 2158 | Green Component 2159 | 0.70916998386383057 2160 | Red Component 2161 | 0.70916998386383057 2162 | 2163 | Selection Color 2164 | 2165 | Blue Component 2166 | 0.31055498123168945 2167 | Green Component 2168 | 0.20615114271640778 2169 | Red Component 2170 | 0.09597768634557724 2171 | 2172 | Semantic History 2173 | 2174 | action 2175 | best editor 2176 | editor 2177 | com.sublimetext.3 2178 | text 2179 | 2180 | 2181 | Send Code When Idle 2182 | 2183 | Set Local Environment Vars 2184 | 2185 | Shortcut 2186 | 2187 | Silence Bell 2188 | 2189 | Smart Cursor Color 2190 | 2191 | Smart Selection Rules 2192 | 2193 | 2194 | notes 2195 | Word bounded by whitespace 2196 | precision 2197 | low 2198 | regex 2199 | \S+ 2200 | 2201 | 2202 | notes 2203 | C++ namespace::identifier 2204 | precision 2205 | normal 2206 | regex 2207 | ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ 2208 | 2209 | 2210 | notes 2211 | Paths 2212 | precision 2213 | normal 2214 | regex 2215 | \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? 2216 | 2217 | 2218 | notes 2219 | Quoted string 2220 | precision 2221 | normal 2222 | regex 2223 | @?"(?:[^"\\]|\\.)*" 2224 | 2225 | 2226 | notes 2227 | Java/Python include paths 2228 | precision 2229 | normal 2230 | regex 2231 | ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ 2232 | 2233 | 2234 | notes 2235 | mailto URL 2236 | precision 2237 | normal 2238 | regex 2239 | \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b 2240 | 2241 | 2242 | notes 2243 | Obj-C selector 2244 | precision 2245 | high 2246 | regex 2247 | @selector\([^)]+\) 2248 | 2249 | 2250 | notes 2251 | email address 2252 | precision 2253 | high 2254 | regex 2255 | \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b 2256 | 2257 | 2258 | notes 2259 | HTTP URL 2260 | precision 2261 | very_high 2262 | regex 2263 | https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?[a-z0-9A-Z]+(\.[a-z0-9A-Z]+)*((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%~?&@=#\(\)]*)? 2264 | 2265 | 2266 | notes 2267 | SSH URL 2268 | precision 2269 | very_high 2270 | regex 2271 | \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b 2272 | 2273 | 2274 | notes 2275 | Telnet URL 2276 | precision 2277 | very_high 2278 | regex 2279 | \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b 2280 | 2281 | 2282 | Sync Title 2283 | 2284 | Tags 2285 | 2286 | Terminal Type 2287 | xterm-256color 2288 | Transparency 2289 | 0.0 2290 | Triggers 2291 | 2292 | Unlimited Scrollback 2293 | 2294 | Use Bold Font 2295 | 2296 | Use Bright Bold 2297 | 2298 | Use Canonical Parser 2299 | 2300 | Use Italic Font 2301 | 2302 | Vertical Spacing 2303 | 1 2304 | Visual Bell 2305 | 2306 | Window Type 2307 | 0 2308 | Working Directory 2309 | /Users/colbywilliams 2310 | 2311 | 2312 | NoSyncCommandHistoryHasEverBeenUsed 2313 | 2314 | NoSyncHaveWarnedAboutPasteConfirmationChange 2315 | 2316 | NoSyncInstallationId 2317 | 55B8F3C6-D70A-48D6-9B1C-CE429B0CE451 2318 | NoSyncNeverRemindPrefsChangesLostForFile 2319 | 2320 | NoSyncNeverRemindPrefsChangesLostForFile_selection 2321 | 0 2322 | NoSyncPermissionToShowTip 2323 | 2324 | NoSyncTimeOfFirstLaunchOfVersionWithTip 2325 | 539559522.97760296 2326 | OnlyWhenMoreTabs 2327 | 2328 | OpenArrangementAtStartup 2329 | 2330 | OpenBookmark 2331 | 2332 | OpenTmuxWindowsIn 2333 | 0 2334 | PMPrintingExpandedStateForPrint2 2335 | 2336 | PassOnControlClick 2337 | 2338 | PasteFromClipboard 2339 | 2340 | PasteTabToStringTabStopSize 2341 | 4 2342 | PointerActions 2343 | 2344 | Button,1,1,, 2345 | 2346 | Action 2347 | kContextMenuPointerAction 2348 | 2349 | Button,2,1,, 2350 | 2351 | Action 2352 | kPasteFromClipboardPointerAction 2353 | 2354 | Gesture,ThreeFingerSwipeDown,, 2355 | 2356 | Action 2357 | kPrevWindowPointerAction 2358 | 2359 | Gesture,ThreeFingerSwipeLeft,, 2360 | 2361 | Action 2362 | kPrevTabPointerAction 2363 | 2364 | Gesture,ThreeFingerSwipeRight,, 2365 | 2366 | Action 2367 | kNextTabPointerAction 2368 | 2369 | Gesture,ThreeFingerSwipeUp,, 2370 | 2371 | Action 2372 | kNextWindowPointerAction 2373 | 2374 | 2375 | PrefsCustomFolder 2376 | /Users/willcolb/dotfiles 2377 | Print In Black And White 2378 | 2379 | PromptOnQuit 2380 | 2381 | QuitWhenAllWindowsClosed 2382 | 2383 | RightCommand 2384 | 8 2385 | RightOption 2386 | 3 2387 | SUEnableAutomaticChecks 2388 | 2389 | SUFeedAlternateAppNameKey 2390 | iTerm 2391 | SUFeedURL 2392 | https://iterm2.com/appcasts/final.xml?shard=51 2393 | SUHasLaunchedBefore 2394 | 2395 | SULastCheckTime 2396 | 2018-09-14T23:42:09Z 2397 | SUSendProfileInfo 2398 | 2399 | SavePasteHistory 2400 | 2401 | ShowBookmarkName 2402 | 2403 | ShowPaneTitles 2404 | 2405 | SmartPlacement 2406 | 2407 | SplitPaneDimmingAmount 2408 | 0.40000000596046448 2409 | SwitchTabModifier 2410 | 4 2411 | SwitchWindowModifier 2412 | 6 2413 | TabViewType 2414 | 0 2415 | ThreeFingerEmulates 2416 | 2417 | TmuxDashboardLimit 2418 | 10 2419 | TripleClickSelectsFullWrappedLines 2420 | 2421 | URLHandlersByGuid 2422 | 2423 | UseBorder 2424 | 2425 | UseCompactLabel 2426 | 2427 | UseLionStyleFullscreen 2428 | 2429 | WebKitDefaultFontSize 2430 | 11 2431 | WebKitStandardFont 2432 | .AppleSystemUIFont 2433 | WindowNumber 2434 | 2435 | WindowStyle 2436 | 0 2437 | WordCharacters 2438 | /-+\~_. 2439 | findIgnoreCase_iTerm 2440 | 2441 | findMode_iTerm 2442 | 0 2443 | findRegex_iTerm 2444 | 2445 | iTerm Version 2446 | 3.2.0 2447 | 2448 | 2449 | --------------------------------------------------------------------------------