Full Code of aereal/dotfiles for AI

main ba0e4159c3ca cached
139 files
192.5 KB
67.1k tokens
11 symbols
1 requests
Download .txt
Showing preview only (221K chars total). Download the full file or copy to clipboard to get everything.
Repository: aereal/dotfiles
Branch: main
Commit: ba0e4159c3ca
Files: 139
Total size: 192.5 KB

Directory structure:
gitextract_iqt6khwm/

├── .bundle/
│   └── config
├── .caprc
├── .colordiffrc
├── .config/
│   └── ghostty/
│       └── config
├── .dotfiles.ignore
├── .gemrc
├── .gitconfig
├── .gitignore
├── .gitmodules
├── .global.gitignore
├── .hammerspoon/
│   └── init.lua
├── .my.cnf
├── .peco/
│   └── config.json
├── .powenv
├── .proverc
├── .pryrc
├── .screenrc
├── .slate.d/
│   └── google_chrome.sh
├── .slate.js
├── .tigrc
├── .tmux.conf
├── .tmux.d/
│   └── scripts/
│       ├── macbook-battery
│       └── today
├── .travis.yml
├── .uim
├── .vim/
│   ├── .eskk/
│   │   └── .keep
│   ├── after/
│   │   ├── ftplugin/
│   │   │   ├── go.vim
│   │   │   ├── haskell.vim
│   │   │   ├── html.vim
│   │   │   ├── javascript.vim
│   │   │   ├── perl.vim
│   │   │   ├── ruby.vim
│   │   │   ├── scala.vim
│   │   │   ├── sh.vim
│   │   │   ├── tt2html.vim
│   │   │   ├── typescript.vim
│   │   │   └── vim.vim
│   │   └── syntax/
│   │       └── sh.vim
│   ├── bin/
│   │   └── prove-wrapper
│   ├── colors/
│   │   ├── freya.vim
│   │   ├── github.vim
│   │   ├── liquidcarbon.vim
│   │   ├── navajo-night.vim
│   │   ├── railscasts.vim
│   │   ├── shandy.vim
│   │   ├── tiro_finale.vim
│   │   ├── wombat256mod.vim
│   │   ├── xoria256.vim
│   │   └── zenesque.vim
│   ├── etc/
│   │   ├── lazy.toml
│   │   ├── operator.toml
│   │   └── plugins.toml
│   ├── filetype.vim
│   ├── gvimrc
│   ├── plugin/
│   │   └── memolist-templates/
│   │       └── hatena.txt
│   ├── rc/
│   │   ├── 00_autocmd.vim
│   │   ├── 00_base.vim
│   │   ├── 10_dein.vim
│   │   ├── 20_command.vim
│   │   ├── 20_key.vim
│   │   ├── 20_tab.vim
│   │   ├── command_line_window.vim
│   │   └── plugins/
│   │       ├── denite.added.vim
│   │       ├── denite.sourced.vim
│   │       ├── lightline.vim
│   │       ├── neocomplete.vim
│   │       ├── quickrun.vim
│   │       ├── syntastic.added.vim
│   │       ├── unite.added.vim
│   │       └── watchdogs.vim
│   ├── snippets/
│   │   ├── eruby.snip
│   │   ├── io.snip
│   │   ├── javascript.snippet
│   │   ├── markdown.snippet
│   │   ├── objc.snip
│   │   ├── perl.snip
│   │   ├── rspec.snip
│   │   ├── ruby.snip
│   │   ├── tap.snip
│   │   ├── textile.snip
│   │   ├── tt2.snip
│   │   ├── tt2html.snip
│   │   ├── vim.snip
│   │   └── zsh.snip
│   ├── tools/
│   │   └── efm_perl.pl
│   └── vimrc
├── .vimperator/
│   └── colors/
│       └── solarized_light.vimp
├── .vimperatorrc
├── .vimperatorrc.js
├── .zsh.d/
│   └── functions/
│       ├── _carton
│       ├── _padrino
│       ├── _pkgutil
│       ├── _prove
│       ├── _proxychains4
│       ├── _rails
│       ├── _tsocks
│       ├── git_info
│       ├── gyapbox
│       ├── llenv_version_origin
│       ├── prompt_aereal_setup
│       ├── prompt_aereal_unicode_setup
│       ├── prompt_lambda_setup
│       └── prompt_yuno_setup
├── .zshenv
├── .zshrc
├── Brewfile
├── README.md
├── Rakefile
├── bin/
│   ├── abbrev-cwd.go
│   ├── diff-highlight-wrapper
│   ├── generate-typable-words
│   ├── git-authors.go
│   ├── git-catchup
│   ├── git-check-dirty
│   ├── git-git
│   ├── git-issue-checkout
│   ├── git-normalize-url
│   ├── git-recent-branches
│   ├── git-refresh-branch
│   ├── git-run
│   ├── git-topic-rebase
│   ├── git-up
│   ├── macvim
│   ├── man
│   ├── metacpan
│   ├── mkproj
│   ├── os-version
│   ├── paginate
│   ├── pm-version
│   ├── screenshot2slack
│   └── ts-project
├── colors/
│   └── Japanesque/
│       ├── Japanesque.itermcolors
│       └── README.markdown
├── osx/
│   ├── defaults/
│   │   ├── alfred.bash
│   │   └── config.bash
│   └── keyremap4macbook/
│       ├── config.sh
│       └── private.xml
└── test/
    ├── Gemfile
    └── dotfiles_test.rb

================================================
FILE CONTENTS
================================================

================================================
FILE: .bundle/config
================================================
---
BUNDLE_BIN: ".bundle/bin"
BUNDLE_JOBS: '4'


================================================
FILE: .caprc
================================================
# vim:set ft=ruby:

begin
  require 'capistrano_colors'
rescue LoadError
end


================================================
FILE: .colordiffrc
================================================
# Example colordiffrc file for dark backgrounds
#
# Set banner=no to suppress authorship info at top of
# colordiff output
banner=no
# By default, when colordiff output is being redirected
# to a file, it detects this and does not colour-highlight
# To make the patch file *include* colours, change the option
# below to 'yes'
color_patches=no
# Sometimes it can be useful to specify which diff command to
# use: that can be specified here
diff_cmd=diff
# 
# available colours are: white, yellow, green, blue,
#                        cyan, red, magenta, black,
#                        darkwhite, darkyellow, darkgreen,
#                        darkblue, darkcyan, darkred,
#                        darkmagenta, darkblack
#
# Can also specify 'none', 'normal' or 'off' which are all
# aliases for the same thing, namely "don't colour highlight
# this, use the default output colour"
#
plain=off
newtext=darkgreen
oldtext=red
diffstuff=magenta
cvsstuff=green


================================================
FILE: .config/ghostty/config
================================================
font-family = "Cascadia Code"
font-family = "HackGen Console"
font-size = 18
theme = "/Applications/Ghostty.app/Contents/Resources/ghostty/themes/One Half Light"
cursor-style-blink = true
copy-on-select = false
macos-titlebar-style = transparent
macos-option-as-alt = true


================================================
FILE: .dotfiles.ignore
================================================
.git
.gitmodules
.travis.yml
.dotfiles.ignore


================================================
FILE: .gemrc
================================================
---
:backtrace: true
:benchmark: false
:verbose: true
gem: -N
search: -r


================================================
FILE: .gitconfig
================================================
[user]
	email = trasty.loose@gmail.com
	name = aereal

[gui]
	encoding = utf-8

[github]
	user = aereal

[alias]
	abort-rebase       = rebase --abort
	branch-name        = name-rev --name-only
	ci                 = commit -v
	co                 = checkout
	continue-rebase    = rebase --continue
	cp                 = cherry-pick
	df                 = diff
	ds                 = diff --staged
	fdf                = diff --function-context
	fetch-pulls        = fetch origin +refs/pull/*:refs/remotes/pull/*
	fix                = commit --amend
	gr = grep
	interactive-rebase = rebase --interactive
	network            = log --graph --all --decorate --oneline
	onelog             = log --oneline
	squashed-merge     = merge --squash
	st                 = status --branch --short --untracked-files=normal --ignore-submodules=dirty
	ls                 = ls-files
	delete-branch      = branch -d
	current-branch = symbolic-ref --short HEAD
	curret-remote-branch = rev-parse --abbrev-ref --symbolic-full-name @{u}
	hard-revert-merge-commit = reset --hard ORIG_HEAD
	medetai = !git rev-list HEAD | rg -P '(.)\\1\\1'
	medetai4 = !git rev-list HEAD | rg -P '(.)\\1\\1\\1'
	medetai5 = !git rev-list HEAD | rg -P '(.)\\1\\1\\1\\1'
	medetai6 = !git rev-list HEAD | rg -P '(.)\\1\\1\\1\\1\\1'
	medetai7 = !git rev-list HEAD | rg -P '(.)\\1\\1\\1\\1\\1\\1'
	pr = pull-request
	recently-added = log --grep \"Revert\" --invert-grep --diff-filter=A --format=\"\" --name-only

[color]
	branch      = true
	diff        = true
	grep        = true
	interactive = true
	pager       = true
	status      = true

[color "branch"]
	current = green reverse
	local   = green
	remote  = yellow

[color "status"]
	changed   = green
	untracked = cyan
	updated   = yellow

[i18n]
	commitencoding= utf-8

[core]
	quotepath = false
	whitespace = cr-at-eol
	pager = $PAGER
	precomposeunicode = true
	excludesfile = ~/.global.gitignore

[push]
	default = simple
	autoSetupRemote = true

[branch]
	autosetuprebase = always

[grep]
	lineNumber = true
	patternType = perl

[rebase]
	stat = true

[diff "gzip"]
	textconv = gzcat

[log]
	date = iso

[merge]
	stat = true

[interactive]
	singlekey = true

[ghq]
	root = /Users/aereal/devel/src

[diff]
	algorithm = histogram
[include]
	path = ~/.secret.gitconfig
[advice]
	statusHints = false
[pager]
	log = git-diff-highlight | less
	show = git-diff-highlight | less
	diff = git-diff-highlight | less
	grep = false
[url "git@github.com:"]
	pushInsteadOf = https://github.com/
	pushInsteadOf = git://github.com/
[pull]
	rebase = true
[init]
	defaultBranch = main


================================================
FILE: .gitignore
================================================
.vim/cookies/
.vim/netrwhist
.vim/.netrwhist
.vim/swp/*
.vim/.neocon/*
.vim/.ref/*
.vim/.unite/*
.vim/undo/*
.vim/bundle/*
src
.zcompcache/
.zcompdump
/.vimperator/info/default/
/.vim/snippets/*/private/
.vim/.eskk/log
.vim/cache


================================================
FILE: .gitmodules
================================================
[submodule "colors/dircolors-solarized"]
	path = colors/dircolors-solarized
	url = git://github.com/seebi/dircolors-solarized.git


================================================
FILE: .global.gitignore
================================================
MYMETA.json
MYMETA.yml
/vendor/bundle
/.bundle/
.DS_Store
tags
.envrc
.local.vimrc


================================================
FILE: .hammerspoon/init.lua
================================================
hs.window.animationDuration = 0

viKey = hs.hotkey.modal.new('ctrl-cmd-option', 'space', 'hammerspoon')
function viKey:entered() hs.alert'Enter' end
function viKey:exited() hs.alert'Exit' end
viKey:bind('', 'escape', function() viKey:exit() end)
units = {
  enter = { x = 0.0, y = 0.0, w = 1.0, h = 1.0 },
  spc   = { x = 0.125, y = 0.125, w = 0.75, h = 0.75 },
  h     = { x = 0.0, y = 0.0, w = 0.5, h = 1.0 },
  l     = { x = 0.5, y = 0.0, w = 0.5, h = 1.0 },
  j     = { x = 0.0, y = 0.5, w = 1.0, h = 0.5 },
  k     = { x = 0.0, y = 0.0, w = 1.0, h = 0.5 },
  i     = { x = 0.0, y = 0.0, w = 0.5, h = 0.5 },
  o     = { x = 0.5, y = 0.0, w = 0.5, h = 0.5 },
  n     = { x = 0.0, y = 0.5, w = 0.5, h = 0.5 },
  m     = { x = 0.5, y = 0.5, w = 0.5, h = 0.5 },
}
viKey:bind('', 'return', function()
  hs.window.focusedWindow():move(units.enter)
end)
viKey:bind('', 'space', function()
  hs.window.focusedWindow():move(units.spc)
end)
viKey:bind('', 'h', function()
  hs.window.focusedWindow():move(units.h)
end)
viKey:bind('', 'l', function()
  hs.window.focusedWindow():move(units.l)
end)
viKey:bind('', 'j', function()
  hs.window.focusedWindow():move(units.j)
end)
viKey:bind('', 'k', function()
  hs.window.focusedWindow():move(units.k)
end)
viKey:bind('', 'i', function()
  hs.window.focusedWindow():move(units.i)
end)
viKey:bind('', 'o', function()
  hs.window.focusedWindow():move(units.o)
end)
viKey:bind('', 'n', function()
  hs.window.focusedWindow():move(units.n)
end)
viKey:bind('', 'm', function()
  hs.window.focusedWindow():move(units.m)
end)


================================================
FILE: .my.cnf
================================================
[mysql]
prompt="\u@\h[\d]> "
auto-rehash


================================================
FILE: .peco/config.json
================================================
{
  "Prompt": ">",
  "Keymap": {
    "M-x": "peco.ToggleSelectionAndSelectNext",
    "C-g": "peco.Cancel"
  },
  "Style": {
    "SavedSelection": [
      "bold"
    ],
    "Selected": [
      "underline"
    ],
    "Query": [
      "yellow"
    ],
    "Matched": [
      "cyan",
      "reverse"
    ]
  }
}


================================================
FILE: .powenv
================================================
# vim:set ft=sh:

export PATH=$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH


================================================
FILE: .proverc
================================================
--color
--lib
--failure
--recurse
--timer
--trap


================================================
FILE: .pryrc
================================================
# vim:set ft=ruby:

def pbcopy(str)
  IO.popen('pbcopy', 'r+') {|io| io.puts str }
end

Pry.config.commands.command 'hcopy', 'Copy a history to clipboard' do |n|
  pbcopy _pry_.input_array[n ? n.to_i : -1]
end

Pry.config.commands.command 'copy', 'Copy a text to clipboard' do |str|
  pbcopy str
end

Pry.config.commands.command 'lastcopy', 'Copy the last result to clipboard' do
  pbcopy _pry_.last_result.chomp
end

if defined?(Hirb)
  Hirb::View.instance_eval do
    def enable_output_method
      @output_method = true
      @original_print = Pry.config.print
      Pry.config.print = -> (output, value) {
        Hirb::View.view_or_page_output(value) || @original_print.call(output, value)
      }
    end

    def disable_output_method
      Pry.config.print = @original_print
      @output_method = nil
    end
  end

  Hirb.enable
end


================================================
FILE: .screenrc
================================================
escape ^tt
defscrollback 10000
defutf8 on
defkanji utf-8
encoding utf-8 utf-8
defencoding utf-8
startup_message off
autodetach on
logfile "/tmp/screen-log-%Y%m%d-%n.log"
log on
deflog on
altscreen on
defbce on
termcapinfo xterm-256color|xterm-color|screen-256color ti@:te@
term screen-256color
vbell off
bell_msg "Bell in window %^G"

bind j focus down
bind k focus up
bind w eval 'echo "Operate window"' 'command -c operate'
bind -c operate ^] command
bind -c operate j  eval 'focus down'   'command -c operate'
bind -c operate k  eval 'focus up'     'command -c operate'
bind -c operate \^ eval 'focus top'    'command -c operate'
bind -c operate $  eval 'focus bottom' 'command -c operate'
bind -c operate x  eval 'remove'       'command -c operate'
bind -c operate s  eval 'split'        'command -c operate'
bind -c operate v  eval 'split -v'     'command -c operate'
bind -c operate +  eval 'resize +1'    'command -c operate'
bind -c operate -  eval 'resize -1'    'command -c operate'

caption splitonly "%3n %f %t"
hardstatus alwayslastline "%{.wk}[%S] %-w %{.rd}%{!}%n %f%t%{.wk} %+w"


================================================
FILE: .slate.d/google_chrome.sh
================================================
#!/bin/sh

open -a "Google Chrome"


================================================
FILE: .slate.js
================================================
S.configAll({
  defaultToCurrentScreen: true,
  checkDefaultsOnLoad: true,
  modalEscapeKey: 'esc'
});

var VI_LIKE_WINDOW_PLACEMENT_PREFIX_KEY = ['delete', 'ctrl', 'cmd'].join(',');

var vi = function(key) {
  return [key, VI_LIKE_WINDOW_PLACEMENT_PREFIX_KEY, 'toggle'].join(':');
};

var pushLeftOp = slate.op('push', {
  direction: 'left',
  style: 'bar-resize:screenSizeX/2'
});
var pushDownOp = slate.op('push', {
  direction: 'down',
  style: 'bar-resize:screenSizeY/2'
});
var pushUpOp = slate.op('push', {
  direction: 'up',
  style: 'bar-resize:screenSizeY/2'
});
var pushRightOp = slate.op('push', {
  direction: 'right',
  style: 'bar-resize:screenSizeX/2'
});
var moveTopLeftOp = slate.op('move', {
  x: 0,
  y: 0,
  width: 'screenSizeX/2',
  height: 'screenSizeY/2'
});
var moveTopRightOp =  slate.op('move', {
  x: 'screenSizeX/2',
  y: 0,
  width: 'screenSizeX/2',
  height: 'screenSizeY/2'
});
var moveBottomRightOp =  S.op('move', {
  x: 'screenSizeX/2',
  y: 'screenSizeY/2',
  width: 'screenSizeX/2',
  height: 'screenSizeY/2'
});
var moveBottomLeftOp = slate.op('move', {
  x: 0,
  y: 'screenSizeY/2',
  width: 'screenSizeX/2',
  height: 'screenSizeY/2'
});
var moveFullOp = slate.op('move', {
  x: 0,
  y: 0,
  width: 'screenSizeX',
  height: 'screenSizeY'
});
var moveCenterOp = (function () {
  var ratio = 0.75;
  var op = slate.op('move', {
    x: function () {
      return slate.screen().rect().width * ((1 - ratio) / 2);
    },
    y: function () {
      return slate.screen().rect().height * ((1 - ratio) / 2);
    },
    width: 'screenSizeX*0.75',
    height: 'screenSizeY*0.75',
  });
  return op;
})();

var viLikeWindowPlacements = {
  h: pushLeftOp,
  j: pushDownOp,
  k: pushUpOp,
  l: pushRightOp,
  i: moveTopLeftOp,
  o: moveTopRightOp,
  m: moveBottomRightOp,
  n: moveBottomLeftOp,
  'return': moveFullOp,
  'space': moveCenterOp,
};

for (var key in viLikeWindowPlacements) {
  var op = viLikeWindowPlacements[key];
  S.bind(vi(key), op);
}

S.bindAll({
  'r:ctrl,cmd': S.op('relaunch'),
  'f:ctrl,cmd,shift': S.op('hint'),
});


================================================
FILE: .tigrc
================================================
set commit-order = topo
set tab-size = 2

bind generic g move-first-line
bind generic G move-last-line
bind main    o !@hub browse -- commit/%(commit)
bind diff    o !@hub browse -- commit/%(commit)
bind log     o !@hub browse -- commit/%(commit)
bind generic C !@sh -c '/bin/echo -n %(commit) | pbcopy'
bind diff    C !@sh -c '/bin/echo -n %(commit) | pbcopy'
bind diff    r !git rebase --interactive %(commit)~1


================================================
FILE: .tmux.conf
================================================
# key bindings
## prefix key
unbind C-b
bind C-k send-prefix
set -g prefix C-k

bind ^n next-window
bind ^p previous-window
bind ^c new-window

bind n next-window
bind p previous-window
bind c new-window
bind r source-file ~/.tmux.conf
bind k confirm-before 'kill-window'
bind -r ^"[" copy-mode
bind -r ^] paste-buffer -s ''
bind | split-window -h
bind _ split-window -v

## copy mode
unbind -T copy-mode-vi Space
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-pipe "pbcopy"

# options
set -g history-limit 1000000
set -g default-terminal screen-256color

## status
set -g status on
set -g status-interval 1
set -g status-justify left
set -g status-position top
set -g status-left  ""
set -g status-left-length 20
set -g status-right "Battery:#($HOME/.tmux.d/scripts/macbook-battery) #($HOME/.tmux.d/scripts/today)"
set -g status-bg black
set -g status-fg white

# window options
setw -g automatic-rename off
setw -g allow-rename on
setw -g mode-keys vi

setw -g window-status-current-style reverse
setw -g window-status-current-format "#{window_index} #{window_name}"
setw -g window-status-format "#{window_index} #{window_name}"

set -g default-command 'reattach-to-user-namespace -l $SHELL'

set -sg escape-time 30


================================================
FILE: .tmux.d/scripts/macbook-battery
================================================
#!/bin/bash

/usr/bin/pmset -g ps | /usr/bin/tail -1 | /usr/bin/awk '{ print $3 }' | /usr/bin/sed -e 's/;//g'


================================================
FILE: .tmux.d/scripts/today
================================================
#!/bin/bash

set -ue
export PATH=/usr/bin:/usr/sbin:/bin:/sbin

date +'%H:%M'


================================================
FILE: .travis.yml
================================================
---
language: ruby
rvm:
  - 2.1.1
install:
  - echo "Install"
before_script:
  - mkdir -p $INSTALL_DIRECTORY
script:
  - rake
env:
  - INSTALL_DIRECTORY=tmp/home


================================================
FILE: .uim
================================================
;; vim:set ft=scheme:

(define default-im-name 'skk)
(define skk-use-skkserv? #t)
(define skk-serv-hostname "localhost")
(define skk-serv-portnum 1178)


================================================
FILE: .vim/.eskk/.keep
================================================


================================================
FILE: .vim/after/ftplugin/go.vim
================================================
inoremap <buffer><expr> = smartchr#loop(' := ', ' = ', ' == ', ' != ')
inoremap <buffer><expr> , smartchr#loop(', ', '<-', ',')


================================================
FILE: .vim/after/ftplugin/haskell.vim
================================================
inoremap <buffer><expr> = smartchr#loop(' = ', '=')
inoremap <buffer><expr> . smartchr#one_of('.', ' -> ', ' => ', '.')
inoremap <buffer><expr> , smartchr#one_of(', ', ' <- ', ',')

setlocal et


================================================
FILE: .vim/after/ftplugin/html.vim
================================================
inoremap <buffer> = =


================================================
FILE: .vim/after/ftplugin/javascript.vim
================================================
inoremap <buffer><expr> = smartchr#loop(' = ', ' == ', ' === ')
inoremap <buffer><expr> \ smartchr#one_of(' => ', '\')

nnoremap <silent><buffer> <Space>kj :<C-u>Unite -start-insert -default-action=split ref/javascript<CR>
nnoremap <silent><buffer> <Space>kq :<C-u>Unite -start-insert -default-action=split ref/jquery<CR>


================================================
FILE: .vim/after/ftplugin/perl.vim
================================================
let b:tap_run_command = expand('~/.vim/bin/prove-wrapper')

inoremap <buffer><expr> . smartchr#one_of('.', '->', '.')
inoremap <buffer><expr> , smartchr#one_of(', ', ' => ', ',')
inoremap <buffer><expr> = smartchr#loop(' = ', ' == ', ' != ', ' =~ ', ' !~ ', ' <=> ', '=')


================================================
FILE: .vim/after/ftplugin/ruby.vim
================================================
inoremap <buffer><expr> = smartchr#loop(' = ', ' == ', ' === ', ' != ')
inoremap <buffer><expr> , smartchr#loop(', ', ' => ', ',')

nnoremap <silent><buffer> <Space>k :<C-u>Unite -start-insert -default-action=split ref/refe<CR>
nnoremap <silent><buffer> <S-k>    :<C-u>UniteWithCursorWord -default-action=split ref/refe<CR>


================================================
FILE: .vim/after/ftplugin/scala.vim
================================================
inoremap <buffer> ,t :EnType<CR>


================================================
FILE: .vim/after/ftplugin/sh.vim
================================================
inoremap <buffer><expr> = smartchr#loop('=', ' = ', ' != ')


================================================
FILE: .vim/after/ftplugin/tt2html.vim
================================================
autocmd MyInit FileType tt2html inoremap <buffer> = =


================================================
FILE: .vim/after/ftplugin/typescript.vim
================================================
inoremap <buffer><expr> \ smartchr#one_of(' => ', '\')


================================================
FILE: .vim/after/ftplugin/vim.vim
================================================
inoremap <buffer> = =


================================================
FILE: .vim/after/syntax/sh.vim
================================================
" exclude `--foo)` matches from within `$(cmd --foo)`
syntax match shOption "\s\zs--[^ \t$`'"|)]\+"


================================================
FILE: .vim/bin/prove-wrapper
================================================
#!/bin/bash

set -e

env PERL5LIB="$PWD/lib:$PWD/local/lib/perl5" \
  plenv exec perl $@


================================================
FILE: .vim/colors/freya.vim
================================================
set background=dark

hi clear

if exists("syntax_on")
    syntax reset
endif

let colors_name = "freya"

hi Normal ctermbg=0 ctermfg=7 cterm=none guibg=#2a2a2a guifg=#dcdccc gui=none

hi Cursor guibg=fg guifg=bg gui=none
hi CursorColumn guibg=#3f3f3f gui=none
hi CursorLine guibg=#3f3f3f gui=none
hi DiffAdd guibg=#008b00 guifg=fg gui=none
hi DiffChange guibg=#00008b guifg=fg gui=none
hi DiffDelete guibg=#8b0000 guifg=fg gui=none
hi DiffText guibg=#0000cd guifg=fg gui=bold
hi Directory guibg=bg guifg=#d4b064 gui=none
hi ErrorMsg guibg=bg guifg=#f07070 gui=bold
hi FoldColumn ctermbg=bg guibg=bg guifg=#c2b680 gui=none
hi Folded guibg=#101010 guifg=#c2b680 gui=none
hi IncSearch guibg=#866a4f guifg=fg gui=none
hi LineNr guibg=bg guifg=#9f8f80 gui=none
hi ModeMsg guibg=bg guifg=fg gui=bold
hi MoreMsg guibg=bg guifg=#dabfa5 gui=bold
hi NonText ctermfg=8 guibg=bg guifg=#9f8f80 gui=bold
hi Pmenu guibg=#a78869 guifg=#000000 gui=none
hi PmenuSbar guibg=#B99F86 guifg=fg gui=none
hi PmenuSel guibg=#c0aa94 guifg=bg gui=none
hi PmenuThumb guibg=#f7f7f1 guifg=bg gui=none
hi Question guibg=bg guifg=#dabfa5 gui=bold
hi Search guibg=#c0aa94 guifg=bg gui=none
hi SignColumn ctermbg=bg guibg=bg guifg=#c2b680 gui=none
hi SpecialKey guibg=bg guifg=#d4b064 gui=none
if has("spell")
    hi SpellBad guisp=#f07070 gui=undercurl
    hi SpellCap guisp=#7070f0 gui=undercurl
    hi SpellLocal guisp=#70f0f0 gui=undercurl
    hi SpellRare guisp=#f070f0 gui=undercurl
endif
hi StatusLine ctermbg=7 ctermfg=0 guibg=#736559 guifg=#f7f7f1 gui=bold
hi StatusLineNC ctermbg=8 ctermfg=0 guibg=#564d43 guifg=#f7f7f1 gui=none
hi TabLine guibg=#564d43 guifg=#f7f7f1 gui=underline
hi TabLineFill guibg=#564d43 guifg=#f7f7f1 gui=underline
hi TabLineSel guibg=bg guifg=#f7f7f1 gui=bold
hi Title ctermbg=0 ctermfg=15 guifg=#f7f7f1 gui=bold
hi VertSplit ctermbg=7 ctermfg=0 guibg=#564d43 guifg=#f7f7f1 gui=none
if version >= 700
    hi Visual ctermbg=7 ctermfg=0 guibg=#5f5f5f gui=none
else
    hi Visual ctermbg=7 ctermfg=0 guibg=#5f5f5f guifg=fg gui=none
endif
hi VisualNOS guibg=bg guifg=#c0aa94 gui=bold,underline
hi WarningMsg guibg=bg guifg=#f07070 gui=none
hi WildMenu guibg=#c0aa94 guifg=bg gui=bold

hi Comment guibg=bg guifg=#c2b680 gui=none
hi Constant guibg=bg guifg=#afe091 gui=none
hi Error guibg=bg guifg=#f07070 gui=none
hi Identifier guibg=bg guifg=#dabfa5 gui=none
hi Ignore guibg=bg guifg=bg gui=none
hi lCursor guibg=#c0aa94 guifg=bg gui=none
hi MatchParen guibg=#008b8b gui=none
hi PreProc guibg=bg guifg=#c2aed0 gui=none
hi Special guibg=bg guifg=#d4b064 gui=none
hi Statement guibg=bg guifg=#e0af91 gui=bold
hi Todo guibg=#aed0ae guifg=bg gui=none
hi Type guibg=bg guifg=#dabfa5 gui=bold
hi Underlined guibg=bg guifg=#d4b064 gui=underline

hi htmlBold ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold
hi htmlItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=italic
hi htmlUnderline ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=underline
hi htmlBoldItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold,italic
hi htmlBoldUnderline ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold,underline
hi htmlBoldUnderlineItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=bold,underline,italic
hi htmlUnderlineItalic ctermbg=0 ctermfg=15 guibg=bg guifg=fg gui=underline,italic


================================================
FILE: .vim/colors/github.vim
================================================
" Vim color file
"
" Author: Anthony Carapetis <anthony.carapetis@gmail.com>
"
" Note: Based on github's syntax highlighting theme
"       Used Brian Mock's darkspectrum as a starting point/template
"       Thanks to Ryan Heath for an easy list of some of the colours:
"       http://rpheath.com/posts/356-github-theme-for-syntax-gem

hi clear

set background=light
if version > 580
    " no guarantees for version 5.8 and below, but this makes it stop
    " complaining
    hi clear
    if exists("syntax_on")
	syntax reset
    endif
endif
let g:colors_name="github"

hi Normal       guifg=#000000 guibg=#F8F8FF

" {{{ Cursor
hi Cursor		guibg=#444454 guifg=#F8F8FF
hi CursorLine	guibg=#D8D8DD
hi CursorColumn	guibg=#E8E8EE
" }}}

" {{{ Diff
hi DiffAdd         guifg=#003300 guibg=#DDFFDD gui=none
hi DiffChange                    guibg=#ececec gui=none
hi DiffText        guifg=#000033 guibg=#DDDDFF gui=none
hi DiffDelete      guifg=#DDCCCC guibg=#FFDDDD gui=none
" }}}

" {{{ Folding / Line Numbering / Status Lines
hi Folded		guibg=#ECECEC guifg=#808080 gui=bold
hi vimFold		guibg=#ECECEC guifg=#808080 gui=bold
hi FoldColumn	guibg=#ECECEC guifg=#808080 gui=bold

hi LineNr		guifg=#959595 guibg=#ECECEC gui=bold
hi NonText		guifg=#808080 guibg=#ECECEC
hi Folded		guifg=#808080 guibg=#ECECEC gui=bold
hi FoldeColumn  guifg=#808080 guibg=#ECECEC gui=bold

hi VertSplit	guibg=#bbbbbb guifg=#bbbbbb gui=none
hi StatusLine   guibg=#bbbbbb guifg=#404040 gui=bold
hi StatusLineNC guibg=#d4d4d4 guifg=#404040 gui=italic
" }}}

" {{{ Misc
hi ModeMsg		guifg=#990000
hi MoreMsg		guifg=#990000

hi Title		guifg=#ef5939
hi WarningMsg	guifg=#ef5939
hi SpecialKey   guifg=#177F80 gui=italic

hi MatchParen	guibg=#cdcdfd guifg=#000000
hi Underlined	guifg=#000000 gui=underline
hi Directory	guifg=#990000
" }}}

" {{{ Search, Visual, etc
hi Visual		guifg=#FFFFFF guibg=#3465a4 gui=none
hi VisualNOS    guifg=#FFFFFF guibg=#204a87 gui=none
hi IncSearch	guibg=#cdcdfd guifg=#000000 gui=italic
hi Search		guibg=#cdcdfd guifg=#000000 gui=italic
" }}}

" {{{ Syntax groups
hi Ignore		guifg=#808080
hi Identifier	guifg=#0086B3
hi PreProc		guifg=#A0A0A0 gui=bold
hi Comment		guifg=#999988
hi Constant		guifg=#177F80 gui=none
hi String		guifg=#D81745
hi Function		guifg=#990000 gui=bold
hi Statement	guifg=#000000 gui=bold
hi Type			guifg=#445588 gui=bold
hi Number		guifg=#1C9898
hi Todo			guifg=#FFFFFF guibg=#990000 gui=bold
hi Special		guifg=#159828 gui=bold
hi rubySymbol   guifg=#960B73
hi Error        guibg=#f8f8ff guifg=#ff1100 gui=undercurl
hi Todo         guibg=#f8f8ff guifg=#ff1100 gui=underline
hi Label        guifg=#000000 gui=bold
hi StorageClass guifg=#000000 gui=bold
hi Structure    guifg=#000000 gui=bold
hi TypeDef      guifg=#000000 gui=bold
" }}}

" {{{ Completion menus
hi WildMenu     guifg=#7fbdff guibg=#425c78 gui=none

hi Pmenu        guibg=#808080 guifg=#ffffff gui=bold
hi PmenuSel     guibg=#cdcdfd guifg=#000000 gui=italic
hi PmenuSbar    guibg=#000000 guifg=#444444
hi PmenuThumb   guibg=#aaaaaa guifg=#aaaaaa
" }}}

" {{{ Spelling
hi spellBad     guisp=#fcaf3e
hi spellCap     guisp=#73d216
hi spellRare    guisp=#fcaf3e
hi spellLocal   guisp=#729fcf
" }}}

" {{{ Aliases
hi link cppSTL          Function
hi link cppSTLType      Type
hi link Character		Number
hi link htmlTag			htmlEndTag
"hi link htmlTagName     htmlTag
hi link htmlLink		Underlined
hi link pythonFunction	Identifier
hi link Question		Type
hi link CursorIM		Cursor
hi link VisualNOS		Visual
hi link xmlTag			Identifier
hi link xmlTagName		Identifier
hi link shDeref			Identifier
hi link shVariable		Function
hi link rubySharpBang	Special
hi link perlSharpBang	Special
hi link schemeFunc      Statement
"hi link shSpecialVariables Constant
"hi link bashSpecialVariables Constant
" }}}

" {{{ Tabs (non-gui0
hi TabLine		guifg=#404040 guibg=#dddddd gui=none
hi TabLineFill	guifg=#404040 guibg=#dddddd gui=none
hi TabLineSel	guifg=#404040 gui=bold
" }}}
"
" vim: sw=4 ts=4 foldmethod=marker


================================================
FILE: .vim/colors/liquidcarbon.vim
================================================
" File: liquidcarbon.vim
" Author: Jeet Sukumaran
" Description: Vim color file
" Last Modified: October 06, 2010

" Initialization and Setup {{{1
" ============================================================================
set background=dark
highlight clear
if exists("syntax_on")
  syntax reset
endif
let colors_name = "liquidcarbon"
" 1}}}

" Normal Color {{{1
" ============================================================================
if exists("g:liquidcarbon_high_contrast") && g:liquidcarbon_high_contrast
    hi Normal          guifg=#bdcdcd   guibg=#202020
    hi CursorLine      guifg=NONE      guibg=#292929   gui=NONE
    hi ColorColumn     guifg=NONE      guibg=#292929
else
    hi Normal          guifg=#bdcdcd   guibg=#303030
    hi CursorLine      guifg=NONE      guibg=#3a3a3a   gui=NONE
    hi ColorColumn     guifg=NONE      guibg=#3a3a3a
endif

" 1}}}

" Core Highlights {{{1
" ============================================================================
hi  Cursor          guifg=bg        guibg=fg        gui=NONE
hi  CursorIM        guifg=bg        guibg=fg        gui=NONE
hi  lCursor         guifg=bg        guibg=fg        gui=NONE
hi  DiffAdd         guifg=#000000   guibg=#3cb371   gui=NONE
hi  DiffChange      guifg=#000000   guibg=#4f94cd   gui=NONE
hi  DiffDelete      guifg=#000000   guibg=#8b3626   gui=NONE
hi  DiffText        guifg=#000000   guibg=#8ee5ee   gui=NONE
hi  Directory       guifg=#1e90ff   guibg=bg        gui=NONE
hi  ErrorMsg        guifg=#ff6a6a   guibg=NONE      gui=bold
hi  FoldColumn      guifg=#68838b   guibg=#4B4B4B   gui=bold
hi  Folded          guifg=#68838b   guibg=#4B4B4B   gui=NONE
hi  IncSearch       guifg=#ffffff   guibg=#ff4500   gui=bold
hi  LineNr          guifg=#767676   guibg=#000000   gui=NONE
hi  MatchParen      guifg=#fff000   guibg=#000000   gui=bold
hi  ModeMsg         guifg=#000000   guibg=#00ff00   gui=bold
hi  MoreMsg         guifg=#2e8b57   guibg=bg        gui=bold
hi  NonText         guifg=#9ac0cd   guibg=bg        gui=NONE
hi  Pmenu           guifg=#0000ff   guibg=#c0c8cf   gui=bold
hi  PmenuSel        guifg=#c0c8cf   guibg=#0000ff   gui=bold
hi  PmenuSbar       guifg=#ffffff   guibg=#c1cdc1   gui=NONE
hi  PmenuThumb      guifg=#ffffff   guibg=#838b83   gui=NONE
hi  Question        guifg=#00ee00   guibg=NONE      gui=bold
hi  Search          guifg=#000000   guibg=#fff68f   gui=bold
hi  SignColumn      guifg=#ffffff   guibg=#cdcdb4   gui=NONE
hi  SpecialKey      guifg=#666666   guibg=NONE      gui=NONE
hi  SpellBad        guisp=#ee2c2c   gui=undercurl
hi  SpellCap        guisp=#0000ff   gui=undercurl
hi  SpellLocal      guisp=#008b8b   gui=undercurl
hi  SpellRare       guisp=#ff00ff   gui=undercurl
hi  StatusLine      guifg=#ddeeff   guibg=#445566   gui=NONE
hi  StatusLineNC    guifg=#999999   guibg=#445566   gui=italic
hi  TabLine         guifg=fg        guibg=#d3d3d3   gui=underline
hi  TabLineFill     guifg=fg        guibg=bg        gui=reverse
hi  TabLineSel      guifg=fg        guibg=bg        gui=bold
hi  Title           guifg=#009acd   guibg=bg        gui=bold
hi  VertSplit       guifg=#445566   guibg=#445566
hi  Visual          guifg=#000000   guibg=#90ccff   gui=NONE
hi  WarningMsg      guifg=#ee9a00   guibg=bg        gui=NONE
hi  WildMenu        guifg=#000000   guibg=#87ceeb   gui=NONE
" 1}}}

" Syntax {{{1
" ============================================================================

"  General {{{2
" -----------------------------------------------------------------------------
hi  Comment         guifg=#809090   guibg=NONE      gui=italic
hi  Constant        guifg=#cdad00   guibg=NONE      gui=NONE
hi  String          guifg=#559b70   guibg=NONE      gui=NONE
hi  Boolean         guifg=#cd69c9   guibg=NONE      gui=NONE
hi  Identifier      guifg=#9f79ee   guibg=NONE      gui=NONE
hi  Function        guifg=#92a5de   guibg=NONE      gui=NONE
hi  Statement       guifg=#009acd   guibg=NONE      gui=NONE
hi  PreProc         guifg=#009acd   guibg=NONE      gui=NONE
hi  Keyword         guifg=#7ac5cd   guibg=NONE      gui=NONE
hi  Type            guifg=#4169e1   guibg=NONE      gui=NONE
hi  Special         guifg=#7f9f44   guibg=NONE      gui=NONE
hi  Ignore          guifg=bg        guibg=NONE      gui=NONE
hi  Error           guifg=#ff3030   guibg=NONE      gui=underline
hi  Todo            guifg=#ff88ee   guibg=NONE      gui=bold
" 2}}}

" Vim {{{2
" -----------------------------------------------------------------------------
hi VimError         guifg=#ff0000   guibg=#000000   gui=bold
hi VimCommentTitle  guifg=#528b8b   guibg=bg        gui=bold,italic
" 2}}}

" QuickFix {{{2
" -----------------------------------------------------------------------------
hi qfFileName       guifg=#607b8b   guibg=NONE      gui=italic
hi qfLineNr         guifg=#0088aa   guibg=NONE      gui=bold
hi qfError          guifg=#ff0000   guibg=NONE      gui=bold
" 2}}}

" Python {{{2
" -----------------------------------------------------------------------------
hi pythonDecorator  guifg=#cd8500   guibg=NONE      gui=NONE
hi link pythonDecoratorFunction pythonDecorator
" 2}}}

" Diff {{{2
" -----------------------------------------------------------------------------
hi diffOldFile      guifg=#da70d6   guibg=NONE      gui=italic
hi diffNewFile      guifg=#ffff00   guibg=NONE      gui=italic
hi diffFile         guifg=#ffa500   guibg=NONE      gui=italic
hi diffLine         guifg=#ff00ff   guibg=NONE      gui=italic
hi link             diffOnly        Constant
hi link             diffIdentical   Constant
hi link             diffDiffer      Constant
hi link             diffBDiffer     Constant
hi link             diffIsA         Constant
hi link             diffNoEOL       Constant
hi link             diffCommon      Constant
hi diffRemoved      guifg=#cd5555   guibg=NONE      gui=NONE
hi diffChanged      guifg=#4f94cd   guibg=NONE      gui=NONE
hi diffAdded        guifg=#00cd00   guibg=NONE      gui=NONE
hi link             diffSubname     diffLine
hi link             diffComment     Comment
" 2}}}

" 1}}}


================================================
FILE: .vim/colors/navajo-night.vim
================================================
" Vim colour file
" Maintainer: Matthew Hawkins <matt@mh.dropbear.id.au>
" Last Change:	Mon, 22 Apr 2002 15:28:04 +1000
" URI: http://mh.dropbear.id.au/vim/navajo-night.png
"
" This colour scheme uses a "navajo-black" background
" I have added colours for the statusbar and for spell checking 
" as taken from Cream (http://cream.sf.net/) 


set background=dark
hi clear
if exists("syntax_on")
  syntax reset
endif

let g:colors_name = "navajo-night"

" This is the list of colour changes from Navajo that
" weren't a simple mathematical subtraction from 0xffffff
" DarkBlue -> #ffff74
" DarkRed -> #74ffff 
" DarkGreen -> #ff9bff 
" DarkCyan -> #ff7474 
" DarkMagenta -> #74ff74 
" DarkYellow -> #7474ff 
" DarkGray -> #565656 
" Blue -> Yellow
" Red -> Cyan 
" Yellow -> Blue 
" Gray -> #414141 
" Brown -> #5ad5d5 
" #ff8060 -> #007f9f 
" #f6e8d0 -> #09172f 
" #edb5cd -> #124a32 
" #c0c0c0 -> #3f3f3f 
" #907050 -> #6f8faf 
" #808080 -> #7f7f7f
" #707070 -> #8f8f8f
" SeaGreen -> #d174a8 
" LightRed (assuming #ee9090) -> #116f6f 
" LightBlue -> #522719 

hi Normal ctermfg=White guifg=White guibg=#35536f

hi SpecialKey term=bold ctermfg=darkblue guifg=Yellow
hi NonText term=bold ctermfg=darkblue cterm=bold gui=bold guifg=#7f7f7f
hi Directory term=bold ctermfg=darkblue guifg=Yellow
hi ErrorMsg term=standout ctermfg=grey ctermbg=darkred cterm=bold gui=bold guifg=Black guibg=Cyan
hi IncSearch term=reverse cterm=reverse gui=reverse
hi Search term=reverse ctermbg=White ctermfg=Black cterm=reverse guibg=Black guifg=Yellow
hi MoreMsg term=bold ctermfg=green gui=bold guifg=#d174a8
hi ModeMsg term=bold cterm=bold gui=bold
hi LineNr term=underline ctermfg=darkcyan ctermbg=grey guibg=#7f7f7f gui=bold guifg=White
hi Question term=standout ctermfg=darkgreen gui=bold guifg=#d174a8
hi StatusLine term=bold,reverse cterm=bold,reverse gui=bold guifg=Black guibg=White
hi StatusLineNC term=reverse cterm=reverse gui=bold guifg=#116f6f guibg=#8f8f8f
hi VertSplit term=reverse cterm=reverse gui=bold guifg=Black guibg=#8f8f8f
hi Title term=bold ctermfg=green gui=bold guifg=#74ff74
"+++ Cream:
"hi Visual term=reverse cterm=reverse gui=reverse guifg=#3f3f3f guibg=White
"+++
hi VisualNOS term=bold,underline cterm=bold,underline gui=reverse guifg=#414141 guibg=Black
hi WarningMsg term=standout ctermfg=darkred gui=bold guifg=Cyan
hi WildMenu term=standout ctermfg=White ctermbg=darkyellow guifg=White guibg=Blue
hi Folded term=standout ctermfg=darkblue ctermbg=grey guifg=White guibg=NONE guifg=#afcfef
hi FoldColumn term=standout ctermfg=darkblue ctermbg=grey guifg=#ffff74 guibg=#3f3f3f
hi DiffAdd term=bold ctermbg=darkblue guibg=Black
hi DiffChange term=bold ctermbg=darkmagenta guibg=#124a32
hi DiffDelete term=bold ctermfg=darkblue ctermbg=blue cterm=bold gui=bold guifg=#522719 guibg=#09172f
hi DiffText term=reverse ctermbg=darkblue cterm=bold gui=bold guibg=#007f9f
hi Cursor gui=reverse guifg=#bfbfef guibg=Black
hi lCursor guifg=fg guibg=bg
hi Match term=bold,reverse ctermbg=Blue ctermfg=Yellow cterm=bold,reverse gui=bold,reverse guifg=Blue guibg=Yellow


" Colours for syntax highlighting
hi Comment term=bold ctermfg=darkblue guifg=#e7e77f
hi Constant term=underline ctermfg=darkred guifg=#3fffa7
hi Special term=bold ctermfg=darkgreen guifg=#bfbfef
hi Identifier term=underline ctermfg=darkcyan cterm=NONE guifg=#ef9f9f
hi Statement term=bold ctermfg=darkred cterm=bold gui=bold guifg=#5ad5d5
hi PreProc term=underline ctermfg=darkmagenta guifg=#74ff74
hi Type term=underline ctermfg=green gui=bold guifg=#d174a8
hi Ignore ctermfg=grey cterm=bold guifg=bg

hi Error term=reverse ctermfg=grey ctermbg=darkred cterm=bold gui=bold guifg=Black guibg=Cyan
hi Todo term=standout ctermfg=darkblue ctermbg=Blue guifg=Yellow guibg=Blue

"+++ Cream: statusbar
" Colours for statusbar
"hi User1        gui=bold guifg=#565656  guibg=#0c0c0c
"hi User2        gui=bold guifg=White     guibg=#0c0c0c
"hi User3        gui=bold guifg=Yellow      guibg=#0c0c0c
"hi User4        gui=bold guifg=Cyan       guibg=#0c0c0c
highlight User1        gui=bold guifg=#999933  guibg=#45637f
highlight User2        gui=bold guifg=#e7e77f     guibg=#45637f
highlight User3        gui=bold guifg=Black      guibg=#45637f
highlight User4        gui=bold guifg=#33cc99       guibg=#45637f
"+++

"+++ Cream: selection
highlight Visual    gui=bold    guifg=Black guibg=#aacc77
"+++

"+++ Cream: bookmarks
highlight Cream_ShowMarksHL ctermfg=blue ctermbg=lightblue cterm=bold guifg=Black guibg=#aacc77 gui=bold
"+++

"+++ Cream: spell check
" Colour misspelt words
"hi BadWord ctermfg=White ctermbg=darkred cterm=bold guifg=Yellow guibg=#522719 gui=bold
" mathematically correct:
"highlight BadWord ctermfg=black ctermbg=lightblue gui=NONE guifg=White guibg=#003333
" adjusted:
highlight BadWord ctermfg=black ctermbg=lightblue gui=NONE guifg=#ff9999 guibg=#003333
"+++




================================================
FILE: .vim/colors/railscasts.vim
================================================
" Vim color scheme
"
" Name:         railscasts.vim
" Maintainer:   Nick Moffitt <nick@zork.net>
" Last Change:  01 Mar 2008
" License:      WTFPL <http://sam.zoy.org/wtfpl/>
" Version:      2.1
"
" This theme is based on Josh O'Rourke's Vim clone of the railscast
" textmate theme.  The key thing I have done here is supply 256-color
" terminal equivalents for as many of the colors as possible, and fixed
" up some of the funny behaviors for editing e-mails and such.
"
" To use for gvim:
" 1: install this file as ~/.vim/colors/railscasts.vim
" 2: put "colorscheme railscasts" in your .gvimrc
"
" If you are using Ubuntu, you can get the benefit of this in your
" terminals using ordinary vim by taking the following steps:
"
" 1: sudo apt-get install ncurses-term
" 2: put the following in your .vimrc
"     if $COLORTERM == 'gnome-terminal'
"         set term=gnome-256color
"         colorscheme railscasts
"     else
"         colorscheme default
"     endif
" 3: if you wish to use this with screen, add the following to your .screenrc:
"     attrcolor b ".I"
"     termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
"     defbce "on"
"     term screen-256color-bce

set background=dark
hi clear
if exists("syntax_on")
  syntax reset
endif

let g:colors_name = "railscasts"

hi link htmlTag                     xmlTag
hi link htmlTagName                 xmlTagName
hi link htmlEndTag                  xmlEndTag

highlight Normal                    guifg=#E6E1DC guibg=#111111 
highlight Cursor                    guifg=#000000 ctermfg=0 guibg=#FFFFFF ctermbg=15	
highlight CursorLine                guibg=#000000 ctermbg=233 cterm=NONE

highlight Comment                   guifg=#BC9458 ctermfg=180 gui=italic
highlight Constant                  guifg=#6D9CBE ctermfg=73
highlight Define                    guifg=#CC7833 ctermfg=173
highlight Error                     guifg=#FFC66D ctermfg=221 guibg=#990000 ctermbg=88
highlight Function                  guifg=#FFC66D ctermfg=221 gui=NONE cterm=NONE
highlight Identifier                guifg=#6D9CBE ctermfg=73 gui=NONE cterm=NONE
highlight Include                   guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
highlight PreCondit                 guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
highlight Keyword                   guifg=#CC7833 ctermfg=173 cterm=NONE
highlight LineNr                    guifg=#2B2B2B ctermfg=159 guibg=#C0C0FF
highlight Number                    guifg=#A5C261 ctermfg=107
highlight PreProc                   guifg=#E6E1DC ctermfg=103
highlight Search                    guifg=NONE ctermfg=NONE guibg=#2b2b2b ctermbg=235 gui=italic cterm=underline
highlight Statement                 guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
highlight String                    guifg=#A5C261 ctermfg=107
highlight Title                     guifg=#FFFFFF ctermfg=15
highlight Type                      guifg=#DA4939 ctermfg=167 gui=NONE cterm=NONE
highlight Visual                    guibg=#5A647E ctermbg=60

highlight DiffAdd                   guifg=#E6E1DC ctermfg=7 guibg=#519F50 ctermbg=71
highlight DiffDelete                guifg=#E6E1DC ctermfg=7 guibg=#660000 ctermbg=52
highlight Special                   guifg=#DA4939 ctermfg=167 

highlight pythonBuiltin             guifg=#6D9CBE ctermfg=73 gui=NONE cterm=NONE
highlight rubyBlockParameter        guifg=#FFFFFF ctermfg=15
highlight rubyClass                 guifg=#FFFFFF ctermfg=15
highlight rubyConstant              guifg=#DA4939 ctermfg=167
highlight rubyInstanceVariable      guifg=#D0D0FF ctermfg=189
highlight rubyInterpolation         guifg=#519F50 ctermfg=107
highlight rubyLocalVariableOrMethod guifg=#D0D0FF ctermfg=189
highlight rubyPredefinedConstant    guifg=#DA4939 ctermfg=167
highlight rubyPseudoVariable        guifg=#FFC66D ctermfg=221
highlight rubyStringDelimiter       guifg=#A5C261 ctermfg=143

highlight xmlTag                    guifg=#E8BF6A ctermfg=179
highlight xmlTagName                guifg=#E8BF6A ctermfg=179
highlight xmlEndTag                 guifg=#E8BF6A ctermfg=179

highlight mailSubject               guifg=#A5C261 ctermfg=107
highlight mailHeaderKey             guifg=#FFC66D ctermfg=221
highlight mailEmail                 guifg=#A5C261 ctermfg=107 gui=italic cterm=underline

highlight SpellBad                  guifg=#D70000 ctermfg=160 ctermbg=NONE cterm=underline
highlight SpellRare                 guifg=#D75F87 ctermfg=168 guibg=NONE ctermbg=NONE gui=underline cterm=underline
highlight SpellCap                  guifg=#D0D0FF ctermfg=189 guibg=NONE ctermbg=NONE gui=underline cterm=underline
highlight MatchParen                guifg=#FFFFFF ctermfg=15 guibg=#005f5f ctermbg=23


================================================
FILE: .vim/colors/shandy.vim
================================================
set bg=dark
hi clear

if exists("syntax_on")
	syntax reset
endif

let colors_name = "shandy"

" blue: #7d95a6
" red: #a67d7d
" yellow: #a6a67d
" green: #7da67d
" light green: #7da69d
" purple: #817da6
" violet: #997da6
" magenta: #a67d92

hi Normal       guifg=#aaacb3 guibg=#1a1a1a
hi Cursor       guifg=bg      guibg=fg
hi MatchParen   guifg=fg      guibg=bg      gui=underline
hi NonText      guifg=#454545
hi SpecialKey   guifg=#454545
hi LineNr       guifg=#626872
hi Visual       guifg=fg      guibg=#738499
hi Title        guifg=#a6a67d

hi StatusLine   guifg=fg      guibg=#5b6477 gui=none
hi StatusLineNC guifg=#000000 guibg=#c1c8d6 gui=none
" DiffAdd
" DiffChange
" DiffDelete
" DiffText

hi ModeMsg      guifg=#98a3b2
hi MoreMsg      guifg=#98a3b2
hi ErrorMsg     guifg=#a67d7d guibg=fg      gui=reverse
hi WarningMsg   guifg=#a6a67d guibg=fg      gui=reverse

hi Pmenu        guibg=#5b6477
hi PmenuSel     guifg=fg      guibg=bg      gui=reverse

hi Comment      guifg=#575d66
hi Constant     guifg=#7d95a6
hi Identifier   guifg=#7d95a6
hi Statement    guifg=#626872
hi PreProc      guifg=#626872
hi Type         guifg=#997da6
hi Delimiter    guifg=#98a3b2
hi Special      guifg=#a6a67d
hi Error        guifg=#a67d7d guibg=fg      gui=reverse
hi Todo         guifg=#98a3b2 gui=underline



================================================
FILE: .vim/colors/tiro_finale.vim
================================================
hi clear
if exists("syntax_on")
	syntax reset
endif

let colors_name = "tiro_finale"

set background=dark

" #e7abc2 #e78baf #c2537e #754d5c #550726
" #633008 #876d59 #e19860 #f3bc92 #f3cfb4
" #053d39 #365351 #3b8a84 #7ed1cb #9bd1cd
" #345a08 #677a50 #96cc57 #c0eb8d #cfebae

hi Normal guifg=#eaeaea guibg=#121111
hi SpecialKey guifg=#555555
hi Cursor guifg=bg guibg=fg
hi CursorLine guifg=fg guibg=bg gui=underline
hi LineNr guifg=#e7abc2
hi MatchParen gui=underline cterm=underline
hi NonText guifg=#872c2a
hi DiffAdd guifg=#5f8486 guibg=bg
hi DiffChange guifg=#e19860 guibg=bg
hi DiffDelete guifg=#876d59 guibg=bg
hi DiffText guifg=fg guibg=bg gui=underline
hi Pmenu guibg=#6e0b23
hi PmenuSel guifg=#121111 guibg=#dddddd gui=bold
hi PmenuSbar guifg=#dddddd guibg=#dddddd
hi Search guifg=bg guibg=#e39343 gui=underline,bold
hi IncSearch guifg=bg guibg=#e39343 gui=underline,bold
hi StatusLine guifg=#121111 guibg=#e19860 gui=NONE
hi StatusLineNC guifg=#e19860 guibg=#121111 gui=underline
hi MoreMsg guifg=#306ada
hi ModeMsg guifg=#cccccc
hi ErrorMsg guifg=white guibg=#6e0b23
hi Todo guifg=fg guibg=bg gui=underline
hi Title guifg=#c2537e
hi WarningMsg guifg=#e39343

hi Comment guifg=#876d59
hi Constant guifg=#f3bc92
hi Statement guifg=#e19860
hi PreProc guifg=#e19860
hi Identifier guifg=#5f8486
hi Type guifg=#c2537e
hi Delimiter guifg=#555555
hi Special guifg=#e39343



================================================
FILE: .vim/colors/wombat256mod.vim
================================================
" Vim color file
" Original Maintainer:  Lars H. Nielsen (dengmao@gmail.com)
" Last Change:  2010-07-23
"
" Modified version of wombat for 256-color terminals by
"   David Liang (bmdavll@gmail.com)
" based on version by
"   Danila Bespalov (danila.bespalov@gmail.com)

set background=dark

if version > 580
	hi clear
	if exists("syntax_on")
		syntax reset
	endif
endif

let colors_name = "wombat256mod"


" General colors
hi Normal		ctermfg=252		ctermbg=234		cterm=none		guifg=#e3e0d7	guibg=#242424	gui=none
hi Cursor		ctermfg=234		ctermbg=228		cterm=none		guifg=#242424	guibg=#eae788	gui=none
hi Visual		ctermfg=251		ctermbg=239		cterm=none		guifg=#c3c6ca	guibg=#554d4b	gui=none
hi VisualNOS	ctermfg=251		ctermbg=236		cterm=none		guifg=#c3c6ca	guibg=#303030	gui=none
hi Search		ctermfg=177		ctermbg=241		cterm=none		guifg=#d787ff	guibg=#636066	gui=none
hi Folded		ctermfg=103		ctermbg=237		cterm=none		guifg=#a0a8b0	guibg=#3a4046	gui=none
hi Title		ctermfg=230						cterm=bold		guifg=#ffffd7					gui=bold
hi StatusLine	ctermfg=230		ctermbg=238		cterm=none		guifg=#ffffd7	guibg=#444444	gui=italic
hi VertSplit	ctermfg=238		ctermbg=238		cterm=none		guifg=#444444	guibg=#444444	gui=none
hi StatusLineNC	ctermfg=241		ctermbg=238		cterm=none		guifg=#857b6f	guibg=#444444	gui=none
hi LineNr		ctermfg=241		ctermbg=232		cterm=none		guifg=#857b6f	guibg=#080808	gui=none
hi SpecialKey	ctermfg=241		ctermbg=235		cterm=none		guifg=#626262	guibg=#2b2b2b	gui=none
hi WarningMsg	ctermfg=203										guifg=#ff5f55
hi ErrorMsg		ctermfg=196		ctermbg=236		cterm=bold		guifg=#ff2026	guibg=#3a3a3a	gui=bold

" Vim >= 7.0 specific colors
if version >= 700
hi CursorLine					ctermbg=236		cterm=none						guibg=#32322f
hi MatchParen	ctermfg=228		ctermbg=101		cterm=bold		guifg=#eae788	guibg=#857b6f	gui=bold
hi Pmenu		ctermfg=230		ctermbg=238						guifg=#ffffd7	guibg=#444444
hi PmenuSel		ctermfg=232		ctermbg=192						guifg=#080808	guibg=#cae982
endif

" Diff highlighting
hi DiffAdd						ctermbg=17										guibg=#2a0d6a
hi DiffDelete	ctermfg=234		ctermbg=60		cterm=none		guifg=#242424	guibg=#3e3969	gui=none
hi DiffText						ctermbg=53		cterm=none						guibg=#73186e	gui=none
hi DiffChange					ctermbg=237										guibg=#382a37

"hi CursorIM
"hi Directory
"hi IncSearch
"hi Menu
"hi ModeMsg
"hi MoreMsg
"hi PmenuSbar
"hi PmenuThumb
"hi Question
"hi Scrollbar
"hi SignColumn
"hi SpellBad
"hi SpellCap
"hi SpellLocal
"hi SpellRare
"hi TabLine
"hi TabLineFill
"hi TabLineSel
"hi Tooltip
"hi User1
"hi User9
"hi WildMenu


" Syntax highlighting
hi Keyword		ctermfg=111		cterm=none		guifg=#88b8f6	gui=none
hi Statement	ctermfg=111		cterm=none		guifg=#88b8f6	gui=none
hi Constant		ctermfg=173		cterm=none		guifg=#e5786d	gui=none
hi Number		ctermfg=173		cterm=none		guifg=#e5786d	gui=none
hi PreProc		ctermfg=173		cterm=none		guifg=#e5786d	gui=none
hi Function		ctermfg=192		cterm=none		guifg=#cae982	gui=none
hi Identifier	ctermfg=192		cterm=none		guifg=#cae982	gui=none
hi Type			ctermfg=186		cterm=none		guifg=#d4d987	gui=none
hi Special		ctermfg=229		cterm=none		guifg=#eadead	gui=none
hi String		ctermfg=113		cterm=none		guifg=#95e454	gui=italic
hi Comment		ctermfg=246		cterm=none		guifg=#9c998e	gui=italic
hi Todo			ctermfg=101		cterm=none		guifg=#857b6f	gui=italic


" Links
hi! link FoldColumn		Folded
hi! link CursorColumn	CursorLine
hi! link NonText		LineNr

" vim:set ts=4 sw=4 noet:


================================================
FILE: .vim/colors/xoria256.vim
================================================
" Vim color file
"
" Name:       xoria256.vim
" Version:    1.5
" Maintainer:	Dmitriy Y. Zotikov (xio) <xio@ungrund.org>
"
" Should work in recent 256 color terminals.  88-color terms like urxvt are
" NOT supported.
"
" Don't forget to install 'ncurses-term' and set TERM to xterm-256color or
" similar value.
"
" Color numbers (0-255) see:
" http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
"
" For a specific filetype highlighting rules issue :syntax list when a file of
" that type is opened.

" Initialization {{{
if &t_Co != 256 && ! has("gui_running")
  echomsg ""
  echomsg "err: please use GUI or a 256-color terminal (so that t_Co=256 could be set)"
  echomsg ""
  finish
endif

set background=dark

hi clear

if exists("syntax_on")
  syntax reset
endif

let colors_name = "xoria256"
"}}}
" Colours {{{1
"" General {{{2
hi Normal       ctermfg=252 guifg=#d0d0d0 ctermbg=234 guibg=#1c1c1c cterm=none gui=none
hi Cursor                                 ctermbg=214 guibg=#ffaf00
hi CursorColumn                           ctermbg=238 guibg=#444444
hi CursorLine                             ctermbg=237 guibg=#3a3a3a cterm=none gui=none
hi Error        ctermfg=15  guifg=#ffffff ctermbg=1   guibg=#800000
hi ErrorMsg     ctermfg=15  guifg=#ffffff ctermbg=1   guibg=#800000
hi FoldColumn   ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
hi Folded       ctermfg=255 guifg=#eeeeee ctermbg=60  guibg=#5f5f87
hi IncSearch    ctermfg=0   guifg=#000000 ctermbg=223 guibg=#ffdfaf cterm=none gui=none
hi LineNr       ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
hi MatchParen   ctermfg=188 guifg=#dfdfdf ctermbg=68  guibg=#5f87df cterm=bold gui=bold
" TODO
" hi MoreMsg
hi NonText      ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 cterm=bold gui=bold
hi Pmenu        ctermfg=0   guifg=#000000 ctermbg=250 guibg=#bcbcbc
hi PmenuSel     ctermfg=255 guifg=#eeeeee ctermbg=243 guibg=#767676
hi PmenuSbar                              ctermbg=252 guibg=#d0d0d0
hi PmenuThumb   ctermfg=243 guifg=#767676
hi Search       ctermfg=0   guifg=#000000 ctermbg=149 guibg=#afdf5f
hi SignColumn   ctermfg=248 guifg=#a8a8a8
hi SpecialKey   ctermfg=77  guifg=#5fdf5f
hi SpellBad     ctermfg=160 guifg=fg      ctermbg=bg                cterm=underline               guisp=#df0000
hi SpellCap     ctermfg=189 guifg=#dfdfff ctermbg=bg  guibg=bg      cterm=underline gui=underline
hi SpellRare    ctermfg=168 guifg=#df5f87 ctermbg=bg  guibg=bg      cterm=underline gui=underline
hi SpellLocal   ctermfg=98  guifg=#875fdf ctermbg=bg  guibg=bg      cterm=underline gui=underline
hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none
hi TabLine      ctermfg=fg  guifg=fg      ctermbg=242 guibg=#666666 cterm=none gui=none
hi TabLineFill  ctermfg=fg  guifg=fg      ctermbg=237 guibg=#3a3a3a cterm=none gui=none
" FIXME
hi Title        ctermfg=225 guifg=#ffdfff
hi Todo         ctermfg=0   guifg=#000000 ctermbg=184 guibg=#dfdf00
hi Underlined   ctermfg=39  guifg=#00afff                           cterm=underline gui=underline
hi VertSplit    ctermfg=237 guifg=#3a3a3a ctermbg=237 guibg=#3a3a3a cterm=none gui=none
" hi VIsualNOS    ctermfg=24  guifg=#005f87 ctermbg=153 guibg=#afdfff cterm=none gui=none
" hi Visual       ctermfg=24  guifg=#005f87 ctermbg=153 guibg=#afdfff
hi Visual       ctermfg=255 guifg=#eeeeee ctermbg=96  guibg=#875f87
" hi Visual       ctermfg=255 guifg=#eeeeee ctermbg=24  guibg=#005f87
hi VisualNOS    ctermfg=255 guifg=#eeeeee ctermbg=60  guibg=#5f5f87
hi WildMenu     ctermfg=0   guifg=#000000 ctermbg=150 guibg=#afdf87 cterm=bold gui=bold

"" Syntax highlighting {{{2
hi Comment      ctermfg=244 guifg=#808080
hi Constant     ctermfg=229 guifg=#ffffaf
hi Identifier   ctermfg=182 guifg=#dfafdf                           cterm=none
hi Ignore       ctermfg=238 guifg=#444444
hi Number       ctermfg=180 guifg=#dfaf87
hi PreProc      ctermfg=150 guifg=#afdf87
hi Special      ctermfg=174 guifg=#df8787
hi Statement    ctermfg=110 guifg=#87afdf                           cterm=none gui=none
hi Type         ctermfg=146 guifg=#afafdf                           cterm=none gui=none

"" Special {{{2
""" .diff {{{3
hi diffAdded    ctermfg=150 guifg=#afdf87
hi diffRemoved  ctermfg=174 guifg=#df8787
""" vimdiff {{{3
hi diffAdd      ctermfg=bg  guifg=bg      ctermbg=151 guibg=#afdfaf
"hi diffDelete   ctermfg=bg  guifg=bg      ctermbg=186 guibg=#dfdf87 cterm=none gui=none
hi diffDelete   ctermfg=bg  guifg=bg      ctermbg=246 guibg=#949494 cterm=none gui=none
hi diffChange   ctermfg=bg  guifg=bg      ctermbg=181 guibg=#dfafaf
hi diffText     ctermfg=bg  guifg=bg      ctermbg=174 guibg=#df8787 cterm=none gui=none
""" HTML {{{3
" hi htmlTag      ctermfg=146  guifg=#afafdf
" hi htmlEndTag   ctermfg=146  guifg=#afafdf
hi htmlTag      ctermfg=244
hi htmlEndTag   ctermfg=244
hi htmlArg	ctermfg=182  guifg=#dfafdf
hi htmlValue	ctermfg=187  guifg=#dfdfaf
hi htmlTitle	ctermfg=254  ctermbg=95
" hi htmlArg	ctermfg=146
" hi htmlTagName	ctermfg=146
" hi htmlString	ctermfg=187
""" django {{{3
hi djangoVarBlock ctermfg=180
hi djangoTagBlock ctermfg=150
hi djangoStatement ctermfg=146
hi djangoFilter ctermfg=174
""" python {{{3
hi pythonExceptions ctermfg=174
""" NERDTree {{{3
hi Directory      ctermfg=110  guifg=#87afdf
hi treeCWD        ctermfg=180  guifg=#dfaf87
hi treeClosable   ctermfg=174  guifg=#df8787
hi treeOpenable   ctermfg=150  guifg=#afdf87
hi treePart       ctermfg=244  guifg=#808080
hi treeDirSlash   ctermfg=244  guifg=#808080
hi treeLink       ctermfg=182  guifg=#dfafdf

""" VimDebug {{{3
" FIXME
" you may want to set SignColumn highlight in your .vimrc
" :help sign
" :help SignColumn

" hi currentLine term=reverse cterm=reverse gui=reverse
" hi breakPoint  term=NONE    cterm=NONE    gui=NONE
" hi empty       term=NONE    cterm=NONE    gui=NONE

" sign define currentLine linehl=currentLine
" sign define breakPoint  linehl=breakPoint  text=>>
" sign define both        linehl=currentLine text=>>
" sign define empty       linehl=empty



================================================
FILE: .vim/colors/zenesque.vim
================================================
" =============================================================================
" File:        zenesque.vim
" Description: Vim color scheme file
" Maintainer:  Paul L
" =============================================================================
set background=light
highlight clear
if exists("syntax_on")
  syntax reset
endif
let colors_name = "zenesque"
" =============================================================================

" default scheme

hi Normal       guifg=#000000          guibg=#e0e0d8   gui=NONE
hi CursorLine   guifg=NONE             guibg=#e1e1d0   gui=NONE
hi CursorColumn guifg=NONE             guibg=#e1e1d0   gui=NONE
hi LineNr       guifg=#a9a99e          guibg=NONE      gui=NONE
hi Constant     guifg=#353535          guibg=NONE      gui=bold
hi Statement    guifg=#363636          guibg=NONE      gui=italic
hi Function     guifg=fg               guibg=NONE      gui=bold
hi String       guifg=#3c3c3c          guibg=NONE      gui=NONE
hi Type         guifg=#616161          guibg=NONE      gui=bold,italic
hi Conditional  guifg=#4d4d4d          guibg=NONE      gui=bold
hi Todo         guifg=fg               guibg=NONE      gui=bold,underline
hi Comment      guifg=#797979          guibg=NONE      gui=italic
hi PmenuSel     guifg=fg               guibg=#a9a9aa   gui=bold
hi ColorColumn  guifg=NONE             guibg=#e6e6e6
hi Cursor       guifg=bg               guibg=fg        gui=NONE
hi CursorIM     guifg=bg               guibg=fg        gui=NONE
hi lCursor      guifg=bg               guibg=fg        gui=NONE
hi DiffAdd      guifg=NONE             guibg=#d1d1d1   gui=NONE
hi DiffChange   guifg=NONE             guibg=#9d9d9d   gui=NONE
hi DiffDelete   guifg=NONE             guibg=#949494   gui=NONE
hi DiffText     guifg=#000000          guibg=#bababa   gui=bold
hi Directory    guifg=#525252          guibg=bg        gui=NONE
hi ErrorMsg     guifg=#6f6f6f          guibg=NONE      gui=NONE
hi FoldColumn   guifg=#555555          guibg=#cccbcb   gui=bold
hi Folded       guifg=#555555          guibg=#cccccc   gui=italic

hi IncSearch    guifg=#000000          guibg=#adadad   gui=NONE
hi Search       guifg=#000000          guibg=#c5c3c3   gui=NONE
hi MatchParen   guifg=#000000          guibg=#a8a8a8   gui=bold
hi ModeMsg      guifg=#ffffff          guibg=#767676   gui=bold
hi MoreMsg      guifg=#7c7c7c          guibg=bg        gui=bold
hi NonText      guifg=#7e7e7e          guibg=bg        gui=bold

hi Pmenu        guifg=#646564          guibg=#b1b2b1   gui=reverse
hi PmenuSbar    guifg=#ffffff          guibg=#989898   gui=NONE
hi PmenuThumb   guifg=#ffffff          guibg=#777777   gui=NONE

hi Question     guifg=#454545          guibg=bg        gui=bold
hi SignColumn   guifg=#ffffff          guibg=#696969   gui=NONE

hi SpecialKey   guifg=#ffffff          guibg=#696969    gui=NONE

hi SpellBad     guisp=#323232          guibg=#d1cdcd   gui=undercurl
hi SpellCap     guisp=#5d5d5d                          gui=undercurl
hi SpellLocal   guisp=#434343                          gui=undercurl
hi SpellRare    guisp=#7d7d7d                          gui=undercurl
hi StatusLine   guifg=#e8e8e8          guibg=#858585   gui=bold
hi StatusLineNC guifg=#808080          guibg=#bbbbbb   gui=italic
hi TabLine      guifg=fg               guibg=#898a8b   gui=underline
hi TabLineFill  guifg=fg               guibg=bg        gui=reverse
hi TabLineSel   guifg=fg               guibg=bg        gui=bold
hi Title        guifg=#6d6d6d          guibg=bg        gui=bold
hi VertSplit    guifg=#b9b9b9          guibg=#b9b9b9
hi Visual       guifg=#ffffff          guibg=#9a9a9a   gui=NONE
hi WarningMsg   guifg=#cfcfcf          guibg=#5b5b5b   gui=NONE
hi WildMenu     guifg=#000000          guibg=#c2c2c2   gui=NONE

hi Boolean      guifg=#616060          guibg=NONE      gui=bold
hi Identifier   guifg=#141414          guibg=NONE      gui=bold
hi Keyword      guifg=#666666          guibg=NONE      gui=underline
hi PreProc      guifg=#6b6b6b          guibg=NONE      gui=NONE
hi Special      guifg=#6e6e6e          guibg=NONE      gui=NONE
hi Ignore       guifg=bg               guibg=NONE      gui=NONE
hi Error        guifg=#727272          guibg=NONE      gui=undercurl
" -----------------------------------------------------------------------------
hi VimError         guifg=#b6b6b6      guibg=#313131   gui=bold
hi VimCommentTitle  guifg=#5c5c5c      guibg=bg        gui=bold,italic
hi qfFileName       guifg=#6a6a6a      guibg=NONE      gui=italic
hi qfLineNr         guifg=fg           guibg=NONE      gui=NONE
hi qfError          guifg=fg           guibg=#c4c2c2   gui=undercurl

" -----------------------------------------------------------------------------
hi pythonDecorator  guifg=#3b3b3b      guibg=NONE      gui=bold
hi link pythonDecoratorFunction pythonDecorator

" -----------------------------------------------------------------------------
hi htmlLink             guifg=#666666          guibg=NONE      gui=underline,italic

if exists('g:zenesque_colors') && g:zenesque_colors==1
    " light scheme with colors
    
    hi Normal       guifg=#0b092c          guibg=#e5e5d8   gui=NONE
    hi CursorLine   guifg=NONE             guibg=#d4d4c0   gui=NONE
    hi CursorColumn guifg=NONE             guibg=#d4d4c0   gui=NONE
    hi LineNr       guifg=#888875          guibg=NONE      gui=NONE
    hi Constant     guifg=#73221A          guibg=NONE      gui=NONE
    hi String       guifg=#073010          guibg=NONE      gui=NONE
    hi Function     guifg=#3b1c5b          guibg=NONE      gui=bold
    hi Statement    guifg=#100051          guibg=NONE      gui=italic
    hi Conditional  guifg=#6e220e          guibg=NONE      gui=NONE
    hi Type         guifg=#421b4d          guibg=NONE      gui=italic
    hi Todo         guifg=#6c0303          guibg=NONE      gui=NONE
    hi Comment      guifg=#6e6e6e          guibg=NONE      gui=italic
    hi PmenuSel     guifg=fg               guibg=#c37a23   gui=bold
    hi ColorColumn  guifg=NONE             guibg=#e6e6e6
    hi Cursor       guifg=bg               guibg=fg        gui=NONE
    hi CursorIM     guifg=bg               guibg=fg        gui=NONE
    hi lCursor      guifg=bg               guibg=fg        gui=NONE

    hi diffAdd      guifg=bg               guibg=#5a7e5d   gui=none
    hi diffDelete   guifg=#bf6a6a          guibg=#3d2424   gui=none
    hi diffChange   guifg=bg               guibg=#b55c5c   gui=none
    hi diffText     guifg=bg               guibg=#264928   gui=none

    hi Directory    guifg=#525252          guibg=bg        gui=NONE
    hi ErrorMsg     guifg=#6f6f6f          guibg=NONE      gui=NONE
    hi FoldColumn   guifg=#555555          guibg=#cccbcb   gui=bold
    hi Folded       guifg=#555555          guibg=#cccccc   gui=italic

    hi IncSearch    guifg=#000000          guibg=#adadad   gui=NONE
    hi Search       guifg=#000000          guibg=#c5c3c3   gui=NONE
    hi MatchParen   guifg=#000000          guibg=#a8a8a8   gui=bold
    hi ModeMsg      guifg=#ffffff          guibg=#767676   gui=bold
    hi MoreMsg      guifg=#7c7c7c          guibg=bg        gui=bold
    hi NonText      guifg=#7e7e7e          guibg=bg        gui=bold

    hi Pmenu        guifg=#646564          guibg=#b1b2b1   gui=reverse
    hi PmenuSbar    guifg=#ffffff          guibg=#989898   gui=NONE
    hi PmenuThumb   guifg=#ffffff          guibg=#777777   gui=NONE

    hi Question     guifg=#454545          guibg=bg        gui=bold
    hi SignColumn   guifg=#ffffff          guibg=#696969   gui=NONE

    hi SpecialKey   guifg=#ffffff          guibg=#696969   gui=NONE

    hi SpellBad     guisp=#323232          guibg=#d1cdcd   gui=undercurl
    hi SpellCap     guisp=#5d5d5d                          gui=undercurl
    hi SpellLocal   guisp=#434343                          gui=undercurl
    hi SpellRare    guisp=#7d7d7d                          gui=undercurl
    hi StatusLine   guifg=fg               guibg=#c0bebe   gui=bold
    hi StatusLineNC guifg=#808080          guibg=#c5c5af   gui=italic
    hi TabLine      guifg=fg               guibg=#898a8b   gui=underline
    hi TabLineFill  guifg=fg               guibg=bg        gui=reverse
    hi TabLineSel   guifg=fg               guibg=bg        gui=bold
    hi Title        guifg=#6d6d6d          guibg=bg        gui=bold
    hi VertSplit    guifg=#c5c5af          guibg=#c5c5af
    hi Visual       guifg=#ffffff          guibg=#9a9a9a   gui=NONE
    hi WarningMsg   guifg=#cfcfcf          guibg=#5b5b5b   gui=NONE
    hi WildMenu     guifg=#000000          guibg=#c2c2c2   gui=NONE
    hi Boolean      guifg=#616060          guibg=NONE      gui=bold
    hi Identifier   guifg=#141414          guibg=NONE      gui=bold
    hi Keyword      guifg=#666666          guibg=NONE      gui=underline
    hi PreProc      guifg=#272c61          guibg=NONE      gui=NONE
    hi Special      guifg=#6e6e6e          guibg=NONE      gui=NONE
    hi Ignore       guifg=bg               guibg=NONE      gui=NONE
    hi Error        guifg=#727272          guibg=NONE      gui=undercurl
    " -----------------------------------------------------------------------------
hi VimError         guifg=#b6b6b6      guibg=#313131   gui=bold
hi VimCommentTitle  guifg=#5c5c5c      guibg=bg        gui=bold,italic
hi qfFileName       guifg=#6a6a6a      guibg=NONE      gui=italic
hi qfLineNr         guifg=fg           guibg=NONE      gui=NONE
hi qfError          guifg=fg           guibg=#c4c2c2   gui=undercurl

" -----------------------------------------------------------------------------
hi pythonDecorator  guifg=#3b3b3b      guibg=NONE      gui=bold
hi link pythonDecoratorFunction pythonDecorator
" -----------------------------------------------------------------------------
hi htmlLink             guifg=#666666          guibg=NONE      gui=underline,italic
elseif exists('g:zenesque_colors') && g:zenesque_colors==2
    " dark scheme without colors

    set background=dark

    hi Normal       guifg=#adadad          guibg=#1a1a1a   gui=NONE
    hi CursorLine   guifg=NONE             guibg=#000000   gui=NONE
    hi CursorColumn guifg=NONE             guibg=#000000   gui=NONE
    hi LineNr       guifg=#555555          guibg=NONE      gui=NONE
    hi Constant     guifg=#848484          guibg=NONE      gui=bold
    hi Statement    guifg=#a6a6a6          guibg=NONE      gui=italic
    hi Function     guifg=#919191          guibg=NONE      gui=bold
    hi String       guifg=#838383          guibg=NONE      gui=italic
    hi Type         guifg=#838383          guibg=NONE      gui=bold,italic
    hi Conditional  guifg=#787878          guibg=NONE      gui=bold
    hi Todo         guifg=#ffffff          guibg=NONE      gui=underline
    hi Comment      guifg=#555555          guibg=NONE      gui=NONE
    hi PmenuSel     guifg=#000000          guibg=#a9a9aa   gui=bold
    hi Special      guifg=#868585          guibg=NONE      gui=NONE
    hi Identifier   guifg=#626262          guibg=NONE      gui=bold
    hi Keyword      guifg=#858585          guibg=NONE      gui=underline
    hi PreProc      guifg=#6b6b6b          guibg=NONE      gui=italic


    hi Visual       guifg=NONE             guibg=#313131   gui=NONE
    hi ColorColumn  guifg=NONE             guibg=#e6e6e6 
    hi Cursor       guifg=bg               guibg=fg        gui=NONE
    hi CursorIM     guifg=bg               guibg=fg        gui=NONE
    hi lCursor      guifg=bg               guibg=fg        gui=NONE

    hi DiffAdd      guifg=fg               guibg=#444444   gui=NONE
    hi DiffChange   guifg=bg               guibg=#909090   gui=NONE
    hi DiffDelete   guifg=NONE             guibg=#292929   gui=NONE
    hi DiffText     guifg=NONE             guibg=#383838   gui=NONE

    hi Directory    guifg=#525252          guibg=bg        gui=NONE
    hi ErrorMsg     guifg=#6f6f6f          guibg=NONE      gui=NONE
    hi FoldColumn   guifg=#555555           guibg=#414141   gui=bold
    hi Folded       guifg=#828282           guibg=#212121   gui=italic

    hi IncSearch    guifg=#000000          guibg=#adadad   gui=NONE
    hi Search       guifg=#000000          guibg=#c5c3c3   gui=NONE
    hi MatchParen   guifg=#000000          guibg=#a8a8a8   gui=bold
    hi ModeMsg      guifg=#ffffff          guibg=#767676   gui=bold
    hi MoreMsg      guifg=#7c7c7c          guibg=bg        gui=bold
    hi NonText      guifg=#7e7e7e          guibg=bg        gui=bold

    hi Pmenu        guifg=#656565          guibg=#3f3f3f   gui=NONE
    hi PmenuSbar    guifg=fg               guibg=#5d5d5d   gui=NONE
    hi PmenuThumb   guifg=fg               guibg=#777777   gui=NONE

    hi Question     guifg=#454545          guibg=bg        gui=bold
    hi SignColumn   guifg=#ffffff          guibg=#696969   gui=NONE

    hi SpecialKey   guifg=#ffffff          guibg=#696969   gui=NONE

    hi SpellBad     guisp=#ffffff          guibg=#000000   gui=undercurl
    hi SpellCap     guisp=#5d5d5d                          gui=undercurl
    hi SpellLocal   guisp=#434343                          gui=undercurl
    hi SpellRare    guisp=#7d7d7d                          gui=undercurl
    hi StatusLine   guifg=#000000          guibg=#727272   gui=bold
    hi StatusLineNC guifg=#5a5959          guibg=#222222   gui=italic
    hi TabLine      guifg=fg               guibg=#757575   gui=underline
    hi TabLineFill  guifg=fg               guibg=bg        gui=reverse
    hi TabLineSel   guifg=fg               guibg=bg        gui=bold
    hi Title        guifg=#6d6d6d          guibg=bg        gui=bold
    hi VertSplit    guifg=#222222          guibg=#222222
    hi WarningMsg   guifg=#cfcfcf          guibg=#5b5b5b   gui=NONE
    hi WildMenu     guifg=#000000          guibg=#828282   gui=NONE
    hi Boolean      guifg=#616060          guibg=NONE      gui=bold
    hi Ignore       guifg=bg               guibg=NONE      gui=NONE
    hi Error        guifg=#727272          guibg=NONE      gui=undercurl
    " -----------------------------------------------------------------------------
    hi VimError         guifg=#b6b6b6      guibg=#313131   gui=bold
    hi VimCommentTitle  guifg=#5c5c5c      guibg=bg        gui=bold,italic
    hi qfFileName       guifg=#6a6a6a      guibg=NONE      gui=italic
    hi qfLineNr         guifg=fg           guibg=NONE      gui=NONE
    hi qfError          guifg=fg           guibg=#000000   gui=undercurl

    " -----------------------------------------------------------------------------
    hi pythonDecorator  guifg=#3b3b3b      guibg=NONE      gui=bold
    hi link pythonDecoratorFunction pythonDecorator
    " -----------------------------------------------------------------------------
    hi htmlLink         guifg=#666666      guibg=NONE      gui=underline,italic

elseif exists('g:zenesque_colors') && g:zenesque_colors==3
    " dark scheme with colors
    
    set background=dark

    hi Normal       guifg=#adadad          guibg=#0f1216   gui=NONE
    hi CursorLine   guifg=NONE             guibg=#000000   gui=NONE
    hi CursorColumn guifg=NONE             guibg=#000000   gui=NONE
    hi LineNr       guifg=#4d4d44          guibg=NONE      gui=NONE
    hi Constant     guifg=#8d5c57          guibg=NONE      gui=NONE
    hi String       guifg=#5d7a64          guibg=NONE      gui=NONE
    hi Function     guifg=#9784a2          guibg=NONE      gui=NONE
    hi Statement    guifg=#5a89a4          guibg=NONE      gui=italic
    hi Conditional  guifg=#8c7867          guibg=NONE      gui=NONE
    hi Type         guifg=#518991          guibg=NONE      gui=italic
    hi Todo         guifg=#9b3535          guibg=NONE      gui=NONE
    hi Comment      guifg=#777777          guibg=NONE      gui=NONE
    hi PmenuSel     guifg=bg               guibg=#9b601a   gui=bold
    hi Special      guifg=#a7a863          guibg=NONE      gui=NONE
    hi Identifier   guifg=#a16f51          guibg=NONE      gui=NONE
    hi Keyword      guifg=#737354          guibg=NONE      gui=underline
    hi PreProc      guifg=#5567a1          guibg=NONE      gui=NONE
    hi Visual       guifg=NONE             guibg=#462e44   gui=NONE
    hi ColorColumn  guifg=NONE             guibg=#e6e6e6
    hi Cursor       guifg=bg               guibg=fg        gui=NONE
    hi CursorIM     guifg=bg               guibg=fg        gui=NONE
    hi lCursor      guifg=bg               guibg=fg        gui=NONE
    hi diffAdd      guifg=bg               guibg=#5a7e5d   gui=none
    hi diffDelete   guifg=#bf6a6a          guibg=#2d1212   gui=none
    hi diffChange   guifg=bg               guibg=#7e4444   gui=none
    hi diffText     guifg=bg               guibg=#345535   gui=none

    
    hi Directory    guifg=#525252          guibg=bg        gui=NONE
    hi ErrorMsg     guifg=#6f6f6f          guibg=NONE      gui=NONE
    hi FoldColumn   guifg=#555555          guibg=#414141   gui=bold
    hi Folded       guifg=#828282          guibg=#212121   gui=italic

    hi IncSearch    guifg=#000000          guibg=#adadad   gui=NONE
    hi Search       guifg=#000000          guibg=#c5c3c3   gui=NONE
    hi MatchParen   guifg=#000000          guibg=#a8a8a8   gui=bold
    hi ModeMsg      guifg=#ffffff          guibg=#767676   gui=bold
    hi MoreMsg      guifg=#7c7c7c          guibg=bg        gui=bold
    hi NonText      guifg=#7e7e7e          guibg=bg        gui=bold

    hi Pmenu        guifg=#656565          guibg=#3f3f3f   gui=NONE
    hi PmenuSbar    guifg=fg               guibg=#5d5d5d   gui=NONE
    hi PmenuThumb   guifg=fg               guibg=#777777   gui=NONE

    hi Question     guifg=#454545          guibg=bg        gui=bold
    hi SignColumn   guifg=#ffffff          guibg=#696969   gui=NONE

    hi SpecialKey   guifg=#ffffff          guibg=#696969   gui=NONE

    hi SpellBad     guisp=#ffffff          guibg=#000000   gui=undercurl
    hi SpellCap     guisp=#5d5d5d                          gui=undercurl
    hi SpellLocal   guisp=#434343                          gui=undercurl
    hi SpellRare    guisp=#7d7d7d                          gui=undercurl
    hi StatusLine   guifg=#000000          guibg=#727272   gui=bold
    hi StatusLineNC guifg=#5a5959          guibg=#222222   gui=italic
    hi TabLine      guifg=fg               guibg=#5f5f5f   gui=underline
    hi TabLineFill  guifg=fg               guibg=bg        gui=reverse
    hi TabLineSel   guifg=fg               guibg=bg        gui=bold
    hi Title        guifg=#6d6d6d          guibg=bg        gui=bold
    hi VertSplit    guifg=#222222          guibg=#222222
    hi WarningMsg   guifg=#cfcfcf          guibg=#5b5b5b   gui=NONE
    hi WildMenu     guifg=#000000          guibg=#828282   gui=NONE
    hi Boolean      guifg=#616060          guibg=NONE      gui=bold
    hi Ignore       guifg=bg               guibg=NONE      gui=NONE
    hi Error        guifg=#727272          guibg=NONE      gui=undercurl
    " -----------------------------------------------------------------------------
    hi VimError         guifg=#b6b6b6      guibg=#313131   gui=bold
    hi VimCommentTitle  guifg=#5c5c5c      guibg=bg        gui=bold,italic
    hi qfFileName       guifg=#6a6a6a      guibg=NONE      gui=italic
    hi qfLineNr         guifg=fg           guibg=NONE      gui=NONE
    hi qfError          guifg=fg           guibg=#000000   gui=undercurl

    " -----------------------------------------------------------------------------
    hi pythonDecorator  guifg=#3b3b3b      guibg=NONE      gui=bold
    hi link pythonDecoratorFunction pythonDecorator
    " -----------------------------------------------------------------------------
    hi htmlLink             guifg=#666666          guibg=NONE      gui=underline,italic
endif

hi htmlTagName          guifg=NONE             guibg=NONE      gui=NONE
hi link htmlScriptTag htmlTagName
hi link htmlTagN htmlTagName
hi link htmlEndTag htmlTagName
hi link htmlSpecialTagName htmlTagName

hi link cssRenderAttr Constant 
hi link cssTextAttr Constant
hi link cssUIAttr Constant
hi link cssTableAttr Constant
hi link cssColorAttr Constant
hi link cssBoxAttr Constant
hi link cssCommonAttr Constant
hi link cssFunctionName Constant
hi link cssRenderProp Type
hi link cssBoxProp cssRenderProp

hi link cssTagName Statement
hi link cssClassName cssTagName
hi link cssIdentifier cssTagName
hi link cssPseudoClass cssTagName
hi link cssPseudoClassId cssTagName

hi cssBraces            guifg=fg            guibg=bg              gui=NONE
hi javaScript           guifg=fg            guibg=NONE
hi link javaScriptFunction Statement
hi link javaScriptMember Statement
hi link javaScriptValue Constant

hi link objcClass Type
hi link cocoaClass objcClass
hi link objcSubclass objcClass
hi link objcSuperclass objcClass
hi link cocoaFunction Function
hi link objcMethodName Identifier
hi link objcMethodArg Normal
hi link objcMessageName Identifier

hi link javaType Statement
hi link cppStatement  Statement




================================================
FILE: .vim/etc/lazy.toml
================================================
[[plugins]]
repo = 'groenewege/vim-less'
on_ft = ['less']

[[plugins]]
repo = 'hail2u/vim-css3-syntax'
on_ft = ['css']

[[plugins]]
repo = 'hallison/vim-markdown'
on_ft = ['markdown']

[[plugins]]
repo = 'motemen/hatena-vim'
on_ft = ['hatena']

[[plugins]]
repo = 'othree/html5.vim'
on_ft = ['html']

[[plugins]]
repo = 'pangloss/vim-javascript'
on_ft = ['typescript', 'javascript']

[[plugins]]
repo = 'MaxMEllon/vim-jsx-pretty'
on_ft = ['javascript']

[[plugins]]
repo = 'vim-perl/vim-perl'
on_ft = ['perl']
hook_add = '''
let g:perl_fold = 0
'''

[[plugins]]
repo = 'vim-ruby/vim-ruby'
on_ft = ['ruby']

[[plugins]]
repo = 'davidoc/taskpaper.vim'
on_ft = ['taskpaper']

[[plugins]]
repo = 'motemen/tap-vim'
on_ft = ['perl']
hook_add = '''
let g:tap#use_vimproc = 1
'''

[[plugins]]
repo = 'eagletmt/ghcmod-vim'
external_commands = 'ghc-mod'
on_ft = ['haskell']

[[plugins]]
repo = 'eagletmt/ghci-vim'
external_commands = ['ghc']
on_ft = ['haskell']

[[plugins]]
repo = 'eagletmt/neco-ghc'
on_ft = ['haskell']
external_commands = ['ghc', 'ghc-mod']

[[plugins]]
repo = 'itchyny/vim-haskell-indent'
on_ft = ['haskell']

[[plugins]]
repo = 'ekalinin/Dockerfile.vim'
on_ft = 'dockerfile'

[[plugins]]
repo = 'leafgarland/typescript-vim'
on_ft = ['typescript']

[[plugins]]
repo = 'Quramy/tsuquyomi'
on_ft = ['typescript']

[[plugins]]
repo = 'keith/swift.vim'
on_ft = ['swift']

[[plugins]]
repo = 'derekwyatt/vim-scala'
on_ft = ['scala']

[[plugins]]
repo = 'mattn/emmet-vim'
on_ft = ['html', 'haml', 'slim', 'css', 'tt2html']
hook_add = '''
let g:user_emmet_leader_key = '<C-e>'
'''

[[plugins]]
repo = 'vim-scripts/sudo.vim'
on_cmd = ['SudoWrite', 'SudoRead']

[[plugins]]
repo = 'haya14busa/incsearch.vim'
on_map = ['<Plug>']
hook_add = '''
let g:incsearch#auto_nohlsearch = 1
map / <Plug>(incsearch-forward)
map ? <Plug>(incsearch-backward)
map g/ <Plug>(incsearch-stay)

map n <Plug>(incsearch-nohl-n)
map N <Plug>(incsearch-nohl-N)
nmap n <Plug>(incsearch-nohl)<Plug>(anzu-n-with-echo)
nmap N <Plug>(incsearch-nohl)<Plug>(anzu-N-with-echo)
'''

[[plugins]]
repo = 'h1mesuke/vim-alignta'
on_cmd = ['Alignta']
hook_add = '''
vmap ,a :Alignta
vmap ,= :Alignta =<CR>
vmap ,> :Alignta =><CR>
'''

[[plugins]]
repo = 'cespare/vim-toml'
on_ft = ['toml']

[[plugins]]
repo = 'motemen/xslate-vim'
on_ft = ['xslate']

[[plugins]]
repo = 'Shougo/neomru.vim'
if = '!has("nvim")'
on_unite = ['file_mru']
hook_source = '''
call unite#custom#source(
      \ 'file_mru', 'matchers',
      \ ['matcher_project_files', 'matcher_fuzzy'],
      \ )
'''


[[plugins]]
repo = 'subosito/nginx.vim'
on_ft = ['nginx']

[[plugins]]
repo = 'fatih/vim-go'
on_ft = ['go']

[[plugins]]
repo = 'flowtype/vim-flow'
on_ft = ['javascript']
hook_add = '''
let g:flow#autoclose = 1
'''


================================================
FILE: .vim/etc/operator.toml
================================================
[[plugins]]
repo = 'rhysd/vim-operator-surround'
on_map = ['<Plug>(operator-surround-']
depends = ['vim-operator-user']
hook_add = '''
map <silent> sa <Plug>(operator-surround-append)
map <silent> sd <Plug>(operator-surround-delete)
map <silent> sr <Plug>(operator-surround-replace)
'''

[[plugins]]
repo = 'haya14busa/vim-operator-flashy'
on_map = ['<Plug>(operator-flashy']
depends = ['vim-operator-user']
hook_add = '''
map y <Plug>(operator-flashy)
nmap Y <Plug>(operator-flashy)$
'''

[[plugins]]
repo = 'emonkak/vim-operator-comment'
on_map = ['<Plug>(operator-comment)', '<Plug>(operator-uncomment)']


================================================
FILE: .vim/etc/plugins.toml
================================================
[[plugins]]
repo = 'thinca/vim-quickrun'
hook_source = '''
runtime rc/plugins/quickrun.vim
'''

[[plugins]]
repo = 'kana/vim-textobj-user'

[[plugins]]
repo = 'kana/vim-textobj-indent'
depends = ['kana/vim-textobj-user']

[[plugins]]
repo = 'kana/vim-textobj-line'
depends = ['kana/vim-textobj-user']

[[plugins]]
repo = 'vim-jp/vimdoc-ja'
if = '!has("nvim")'

[[plugins]]
repo = 'Shougo/unite.vim'
if = '!has("nvim")'
hook_add = '''
runtime rc/plugins/unite.added.vim
'''

[[plugins]]
repo = 'Shougo/neocomplete.vim'
vim_version = '7.3.885'
if = '!has("nvim")'
disabled = '!has("lua")'
hook_add = '''
let g:neocomplete#enable_at_startup = 1
let g:neocomplete#data_directory = $VIM_CACHE_DIR . '/neocomplete'
'''
hook_source = '''
runtime rc/plugins/neocomplete.vim
'''

[[plugins]]
repo = 'Shougo/deoplete.nvim'
if = 'has("nvim")'
hook_add = '''
let g:deoplete#enable_at_startup = 1
'''

[[plugins]]
repo = 'LeafCage/foldCC'
hook_source = '''
set foldtext=FoldCCtext()
set foldcolumn=4
'''

[[plugins]]
repo = 'tyru/current-func-info.vim'

[[plugins]]
repo = 'Yggdroot/indentLine'
hook_source = '''
let g:indentLine_char = '|'
let g:indentLine_showFirstIndentLevel = 1

autocmd MyInit BufEnter \* :IndentLinesReset<CR>
'''

[[plugins]]
repo = 'itchyny/lightline.vim'
hook_add = '''
runtime rc/plugins/lightline.vim
'''

[[plugins]]
repo = 'osyo-manga/vim-anzu'
hook_add = '''
nmap n <Plug>(anzu-n-with-echo)
nmap N <Plug>(anzu-N-with-echo)
nmap * <Plug>(anzu-star-with-echo)
nmap # <Plug>(anzu-sharp-with-echo)
nmap <Esc><Esc> <Plug>(anzu-clear-search-status)
'''

[[plugins]]
repo = 'Shougo/neosnippet'
hook_add = '''
let g:neosnippet#disable_select_mode_mappings = 0
let g:neosnippet#snippets_directory = '~/.vim/snippets'

imap <expr><TAB> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
'''

[[plugins]]
repo = 'kana/vim-smartinput'
hook_add = '''
call smartinput#map_to_trigger('i', '<Plug>(smartinput_BS)',  '<BS>',    '<BS>')
call smartinput#map_to_trigger('i', '<Plug>(smartinput_C-h)', '<BS>',    '<C-h>')
call smartinput#map_to_trigger('i', '<Plug>(smartinput_CR)',  '<Enter>', '<Enter>')
call smartinput#define_rule({
      \   'at'    : '\s\+\%#',
      \   'char'  : '<CR>',
      \   'input' : "<C-o>:call setline('.', substitute(getline('.'), '\\s\\+$', '', ''))<CR><CR>",
      \ })
call smartinput#define_rule({
      \ 'at' : '\%#',
      \ 'char' : '[',
      \ 'input' : '[%%]<Left><Left>',
      \ 'filetype': ['tt2html'],
      \ })
'''

[[plugins]]
repo = 'kana/vim-smartchr'
hook_add = '''
inoremap <expr> = smartchr#loop(' = ', ' == ', '=')
'''

[[plugins]]
repo = 'sickill/vim-pasta'

[[plugins]]
repo = 'Shougo/neosnippet-snippets'

[[plugins]]
repo = 'Shougo/vimproc'
build = 'make -f make_mac.mak'

[[plugins]]
repo = 'editorconfig/editorconfig-vim'

[[plugins]]
repo = 'thinca/vim-localrc'

[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'tpope/vim-fugitive'
hook_add = '''
nnoremap [fugitive] <Nop>
nmap ,g [fugitive]

nnoremap [fugitive]s :<C-u>Gstatus<CR>
nnoremap [fugitive]c :<C-u>Gcommit<CR>
nnoremap [fugitive]C :<C-u>Gcommit --amend<CR>
nnoremap [fugitive]b :<C-u>Gblame<CR>
nnoremap [fugitive]a :<C-u>Gwrite<CR>
nnoremap [fugitive]d :<C-u>Gdiff<CR>
nnoremap [fugitive]D :<C-u>Gdiff --staged<CR>

vmap ,go :Gbrowse<CR>

autocmd MyInit BufReadPost fugitive://* set bufhidden=delete
'''

[[plugins]]
repo = 'tyru/eskk.vim'
hook_add = '''
imap <C-o> <Plug>(eskk:toggle)
let g:eskk#directory = expand('~/.vim/.eskk')

let user_dictionary = expand('~/Library/Application Support/AquaSKK/skk-jisyo.utf8')
let large_dictionary = expand('~/Library/Application Support/AquaSKK/SKK-JISYO.L')

if filereadable(user_dictionary)
  let g:eskk#dictionary = user_dictionary
endif

if filereadable(large_dictionary)
  let g:eskk#large_dictionary = large_dictionary
endif
'''

[[plugins]]
repo = 'toupeira/vim-desertink'

[[plugins]]
repo = 'KeitaNakamura/neodark.vim'

[[plugins]]
repo = 'crusoexia/vim-monokai'

[[plugins]]
repo = 'roosta/vim-srcery'

[[plugins]]
repo = 'altercation/vim-colors-solarized'
if = '!has("nvim")'

[[plugins]]
repo = 'lifepillar/vim-solarized8'
if = 'has("nvim")'

[[plugins]]
repo = 'nanotech/jellybeans.vim'

[[plugins]]
repo = 'hail2u/h2u_colorscheme'

[[plugins]]
repo = 'ajh17/Spacegray.vim'

[[plugins]]
repo = 'jdkanani/vim-material-theme'

[[plugins]]
repo = 'morhetz/gruvbox'

[[plugins]]
repo = 'Shougo/tabpagebuffer.vim'

[[plugins]]
repo = 'Shougo/unite-outline'

[[plugins]]
repo = 'thinca/vim-unite-history'

[[plugins]]
repo = 'sorah/unite-ghq'

[[plugins]]
repo = 'ujihisa/unite-colorscheme'

[[plugins]]
repo = 'kana/vim-operator-user'

[[plugins]]
repo = 'tpope/vim-rhubarb'

[[plugins]]
repo = 'w0rp/ale'
hook_add = '''
let g:ale_sign_error = 'E'
let g:ale_sign_warning = 'W'
let g:ale_statusline_format = ['E%d', 'W%d', '']
let g:ale_lint_on_enter = 0
let g:ale_lint_on_text_changed = 'never'
let g:ale_set_loclist = 1
let g:ale_set_quickfix = 1
let g:ale_open_list = 1
let g:ale_keep_list_window_open = 0

let g:ale_javascript_eslint_options = '--quiet'
let g:ale_linters = { 'javascript': ['eslint', 'flow'] }

let g:ale_perl_perl_executable = 'env PERL5LIB="./local/lib/perl5" perl'
'''

[[plugins]]
repo = 'Shougo/denite.nvim'
if = 'has("nvim")'
on_cmd = 'Denite'
hook_add    = 'runtime rc/plugins/denite.added.vim'
hook_source = 'runtime rc/plugins/denite.sourced.vim'

[[plugins]]
repo = 'aereal/vim-colors-japanesque'


================================================
FILE: .vim/filetype.vim
================================================
autocmd BufEnter */templates/*.html setf tt2html
autocmd BufEnter *.tt setf tt2html

autocmd BufEnter *.es6,*.es setf javascript

autocmd BufEnter */nginx/*.conf setf nginx
autocmd BufEnter */*.nginx.conf setf nginx

autocmd BufEnter cpanfile setf cpanfile
autocmd BufEnter cpanfile set syntax=perl.cpanfile
autocmd BufEnter *.t setf perl
autocmd BufEnter *.psgi setf perl

autocmd BufEnter *.podspec setf ruby
autocmd BufEnter Podfile   setf ruby

autocmd BufEnter *.hatena setf hatena

autocmd BufEnter *.scala setf scala

autocmd BufEnter *.toml setf toml


================================================
FILE: .vim/gvimrc
================================================
let g:macvim_skip_cmd_opt_movement = 1

set bg=dark

if has("gui_running")
  try
    colorscheme japanesque
  catch
    colorscheme desert
  endtry

  set guifontwide=SourceHanCodeJP-Regular:h14
  set guifont=FiraMono-Regular:h14
  set tranparency=15
endif


================================================
FILE: .vim/plugin/memolist-templates/hatena.txt
================================================
* {{_title_}}



================================================
FILE: .vim/rc/00_autocmd.vim
================================================
augroup MyInit
  autocmd!
augroup END

" screen title {{{
if ! has('gui_running')
  autocmd MyInit BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]://" | silent! exe '!echo -n "k%:t\\"' | endif
endif " }}}
" Markdown {{{
autocmd MyInit FileType markdown setlocal et ts=4 sts=4 sw=4
" }}}
" Close window with `q` key {{{
autocmd MyInit FileType help,ref-*,tap-result nnoremap <buffer> q :q<CR>
" }}}
" Git config {{{
autocmd MyInit FileType gitconfig setlocal noexpandtab
" }}}

" function! ReloadConfig() abort
"   call dein#clear_state()
"   source $MYVIMRC
"   if has('gui_running')
"     source $MYGVIMRC
"   endif
" endfunction
" autocmd MyInit BufWritePost *vimrc,*gvimrc,*/rc/*.vim call ReloadConfig()

function! LooksLikePerlProject(project_root) abort
  let cpanfile = a:project_root . '/cpanfile'
  if filereadable(cpanfile)
    return 1
  else
    return 0
  endif
endfunction

function! ConfigureCartonPath() abort
  let project_root = getcwd()
  let is_perl = LooksLikePerlProject(project_root)
  let t:is_perl_project = is_perl
  let w:is_perl_project = is_perl
  if is_perl
    let paths = [
          \ project_root . '/lib',
          \ project_root . '/local/lib/perl5',
          \ project_root . '/templates',
          \ ]
    execute "setlocal path+=" . join(paths, ',')
  endif
endfunction
autocmd MyInit BufEnter,TabEnter * call ConfigureCartonPath()


function! SetupCustomHighlightLinks() abort
  highlight! link Noise Conceal

  " Perl
  highlight! link perlVarPlain Identifier
  highlight! link perlVarPlain2 Identifier
  highlight! link perlStatementStorage StorageClass
  highlight! link perlSharpBang Comment
  highlight! link perlStringStartEnd Conceal
  highlight! link perlMatchStartEnd Conceal
  highlight! link perlFunction Statement
  highlight! link perlSubName Function
  highlight! link perlOperator Operator
  highlight! link perlMethod Function
  highlight! link perlStatementInclude Include

  " JavaScript
  highlight! link jsObjectKey Type
  highlight! link jsFuncCall Function

  " HTML
  highlight! link htmlTag Conceal
  highlight! link htmlEndTag Conceal
  highlight! link htmlTagName Identifier

  " TT2
  highlight! link tt2_tag Conceal
  highlight! link tt2_bracket_r Conceal
  highlight! link tt2_operator Conceal

  " TypeScript
  highlight! link typescriptEndColons Conceal
  highlight! link typescriptParens Conceal
  highlight! link typescriptBraces Conceal

  " Git
  highlight! link gitcommitWarning WarningMsg

  " Fugitive
  highlight! link FugitiveblameDelimiter Delimiter

  " Ruby
  highlight! link rubyStringDelimiter Conceal

  " Vim
  highlight! link vimParenSep Conceal

  " Markdown
  highlight! link mkdDelimiter Statement

  " YAML
  highlight! link yamlKeyValueDelimiter Statement

  highlight! link SignColumn LineNr
endfunction

autocmd MyInit ColorScheme * call SetupCustomHighlightLinks()

" vim:set foldmethod=marker:


================================================
FILE: .vim/rc/00_base.vim
================================================
set hidden
set history=1000
set autoread
set fileformats=unix,dos,mac
set scrolloff=100000 " 常にカーソルのある行を中心に (したい)
set backspace=indent,eol,start
set formatoptions-=ro
set ttyfast
" set lazyredraw
set completeopt=menuone,menu

" Cache directory {{{
if !exists('$VIM_CACHE_DIR')
  if isdirectory(expand($TMPDIR))
    let tmp_dir = expand($TMPDIR)
  else
    let tmp_dir = '/tmp'
  endif
  let path_separator = '/'
  let path_cmps = split(simplify(tmp_dir), path_separator, 1)
  let $VIM_CACHE_DIR = simplify(join(extend(path_cmps, ['vim']), path_separator))
  unlet tmp_dir path_separator path_cmps
endif

if !isdirectory(expand($VIM_CACHE_DIR))
  call mkdir($VIM_CACHE_DIR, 'p')
endif
" }}}

" Backup & Swap {{{
set nobackup
set swapfile
set directory=~/.vim/swp
" }}}
" Indentation {{{
set autoindent
set nosmartindent
set nocindent
set smarttab
set shiftwidth=2
set tabstop=2
set softtabstop=2
set expandtab
set shiftround
" }}}
" Encoding {{{
set fileencodings=utf-8,iso-2022-jp,euc-jp,cp932,ucs-bom,default,latin1
set encoding=utf-8
set termencoding=utf-8
" }}}
" Search {{{
set ignorecase
set smartcase
set hlsearch
set incsearch
set wrapscan
" }}}
" Visualization {{{
set ambiwidth=double
set list
set listchars=tab:»\ ,precedes:<,extends:>,trail:_,eol:↲
" }}}
" UI {{{
set langmenu=none " メニューをローカライズしない
set laststatus=2
set number
set ruler
set modeline
set noshowcmd
set noshowmode
set shortmess+=I

if v:version >= 704
  " set relativenumber " 7.4 以降だと絶対行数も表示される
endif
" }}}
" IME {{{
set noimdisable
set iminsert=0 imsearch=0
set noimcmdline
" }}}
" Persistent Undo {{{
if has('persistent_undo')
  set undodir=~/.vim/undo
  set undofile
endif
" }}}
" Clipboard Integration {{{
if has('clipboard')
  if has('nvim')
    set clipboard+=unnamedplus
  else
    set clipboard=unnamed,autoselect
  endif
endif
" }}}
" fish-shell fix {{{
if $SHELL =~# 'fish$'
  if executable('zsh')
    set shell=zsh
  else
    set shell=sh
  endif
endif
" }}}

if has('gui_running')
  set guioptions&
  set guioptions-=T
  set guioptions-=m
  set guioptions-=r
  set guioptions-=R
  set guioptions-=l
  set guioptions-=l
  set guioptions-=L
  set guioptions-=L
  set guioptions-=b
  set guioptions-=e
endif

" vim:set foldmethod=marker:


================================================
FILE: .vim/rc/10_dein.vim
================================================
set runtimepath& runtimepath^=~/devel/src/github.com/Shougo/dein.vim

let s:dein_cache_dir = expand('~/.vim/cache/dein')
let s:plugins_toml = expand('~/.vim/etc/plugins.toml')
let s:lazy_plugins_toml = expand('~/.vim/etc/lazy.toml')
let s:operator_plugins_toml = expand('~/.vim/etc/operator.toml')

if dein#load_state(s:dein_cache_dir)
  call dein#begin(s:dein_cache_dir, [
        \ expand('<sfile>'),
        \ s:plugins_toml,
        \ s:lazy_plugins_toml,
        \ s:operator_plugins_toml,
        \ ])

  call dein#load_toml(s:plugins_toml)
  call dein#load_toml(s:lazy_plugins_toml, { 'lazy': 1 })
  call dein#load_toml(s:operator_plugins_toml, { 'lazy': 1, 'depends': ['vim-operator-user'] })
  call dein#local('~/devel/src/github.com/aereal', {
        \ 'frozen': 1,
        \ 'merged': 1,
        \ }, ['vim-*'])

  call dein#end()
  call dein#save_state()
endif

if dein#check_install()
  call dein#install()
endif

unlet s:dein_cache_dir


================================================
FILE: .vim/rc/20_command.vim
================================================
command! Sketch call s:sketch() " {{{
function! s:sketch() " {{{
  if !exists('g:sketch_dir')
    let g:sketch_dir = expand('~/sketches')
  endif

  if !isdirectory(g:sketch_dir)
    call mkdir(g:sketch_dir, 'p')
  endif

  let basename = strftime('%Y%m%d%H%M%S')
  let filename = g:sketch_dir . '/' . basename
  execute ':edit ' . filename
endfunction " }}}
" }}}

command! Prove call s:prove()
function! s:prove()
  let func_name = cfi#format('%s', '')
  if func_name != ''
    let $TEST_METHOD = func_name
  endif
  call tap#prove()
endfunction " }}}

command! Memo call s:memo()
function! s:memo()
  let memo_root = expand('~/memo')
  let dt = strftime('%Y%m%d-%H%M%S')
  let suffix = '.md'
  let filename = memo_root . '/' . dt . suffix

  execute ":edit " . filename
endfunction

function! s:get_syn_id(transparent)
  let synid = synID(line("."), col("."), 1)
  if a:transparent
    return synIDtrans(synid)
  else
    return synid
  endif
endfunction
function! s:get_syn_attr(synid)
  let name = synIDattr(a:synid, "name")
  let ctermfg = synIDattr(a:synid, "fg", "cterm")
  let ctermbg = synIDattr(a:synid, "bg", "cterm")
  let guifg = synIDattr(a:synid, "fg", "gui")
  let guibg = synIDattr(a:synid, "bg", "gui")
  return {
        \ "name": name,
        \ "ctermfg": ctermfg,
        \ "ctermbg": ctermbg,
        \ "guifg": guifg,
        \ "guibg": guibg}
endfunction
function! s:get_syn_info()
  let baseSyn = s:get_syn_attr(s:get_syn_id(0))
  echo "name: " . baseSyn.name .
        \ " ctermfg: " . baseSyn.ctermfg .
        \ " ctermbg: " . baseSyn.ctermbg .
        \ " guifg: " . baseSyn.guifg .
        \ " guibg: " . baseSyn.guibg
  let linkedSyn = s:get_syn_attr(s:get_syn_id(1))
  echo "link to"
  echo "name: " . linkedSyn.name .
        \ " ctermfg: " . linkedSyn.ctermfg .
        \ " ctermbg: " . linkedSyn.ctermbg .
        \ " guifg: " . linkedSyn.guifg .
        \ " guibg: " . linkedSyn.guibg
endfunction
command! SyntaxInfo call s:get_syn_info()


================================================
FILE: .vim/rc/20_key.vim
================================================
let mapleader   = ';'
let g:mapleader = ';'

nnoremap j gj
nnoremap k gk
nnoremap Y y$

nnoremap <Leader><Space> :update<CR>
nnoremap <ESC><ESC>      :nohlsearch<CR>

nnoremap Q <Nop>
nnoremap ZQ <Nop>
nnoremap ZZ <Nop>

nnoremap ) %
nnoremap ( %

nnoremap H ^
nnoremap L $

nnoremap ]q :<C-u>cnext<CR>
nnoremap [q :<C-u>cprev<CR>

xnoremap < <gv
xnoremap > >gv


================================================
FILE: .vim/rc/20_tab.vim
================================================
set showtabline=2


================================================
FILE: .vim/rc/command_line_window.vim
================================================
nnoremap <SID>(command-line-enter) q:
xnoremap <SID>(command-line-enter) q:
nnoremap <SID>(command-line-norange) q:<C-u>
nmap : <SID>(command-line-enter)
xmap : <SID>(command-line-enter)

autocmd MyInit CmdwinEnter * call s:init_cmdwin()

function! s:init_cmdwin() " {{{
  nnoremap <silent><buffer> q :<C-u>quit<CR>
  nnoremap <silent><buffer> <TAB> :<C-u>quit<CR>
  inoremap <buffer><expr><CR>  pumvisible() ? "\<C-y>\<CR>"  : "\<CR>"
  inoremap <buffer><expr><C-h> pumvisible() ? "\<C-y>\<C-h>" : "\<C-h>"
  inoremap <buffer><expr><BS>  pumvisible() ? "\<C-y>\<C-h>" : "\<C-h>"
  inoremap <buffer><expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"

  startinsert!
endfunction " }}}


================================================
FILE: .vim/rc/plugins/denite.added.vim
================================================
nnoremap <SID>[denite] <Nop>
nmap gj <SID>[denite]

nmap <SID>[denite]p <SID>(project-files)
nmap <SID>[denite]f <SID>(files)
nmap <SID>[denite]F <SID>(files-from-buffer)
nmap <SID>[denite][ <SID>(outline)
nmap <SID>[denite]b <SID>(buffers)

nnoremap <silent> <SID>(project-files) :<C-u>Denite file/rec -buffer-name=files -source-names=hide<CR>
nnoremap <silent> <SID>(files) :<C-u>DeniteProjectDir file file:new -buffer-name=files -source-names=hide<CR>
nnoremap <silent> <SID>(files-from-buffer) :<C-u>DeniteBufferDir file file:new -buffer-name=files -source-names=hide<CR>
nnoremap <silent> <SID>(buffers) :<C-u>Denite buffer<CR>
nnoremap <silent> <SID>(outline) :<C-u>Denite outline<CR>


================================================
FILE: .vim/rc/plugins/denite.sourced.vim
================================================
call denite#custom#option('default', 'prompt', '>')
call denite#custom#option('files', 'prompt', '>')

if executable('rg')
  call denite#custom#var('file_rec', 'command', ['rg', '--files', '--glob', '!.git', '--glob', '!*.{png,jpg,min.js,gif,svg,woff,woff2,eot,ttf,otf,ico}'])
  call denite#custom#var('grep', 'command', 'rg')
endif

call denite#custom#map('normal', '<C-w>h', '<denite:do_action:vsplitswitch>', 'noremap')
call denite#custom#map('normal', '<C-w>l', '<denite:do_action:vsplitswitch>', 'noremap')

call denite#custom#map('normal', '<C-w>j', '<denite:do_action:splitswitch>', 'noremap')
call denite#custom#map('normal', '<C-w>k', '<denite:do_action:splitswitch>', 'noremap')


================================================
FILE: .vim/rc/plugins/lightline.vim
================================================
if ! exists('g:lightline')
  let g:lightline = {}
endif
if ! has_key(g:lightline, 'component')
  let g:lightline.component = {}
endif
if ! has_key(g:lightline, 'component_visible_condition')
  let g:lightline.component_visible_condition = {}
endif
let g:lightline.colorscheme = 'seoul256'
let g:lightline.component.anzu     = '%{anzu#search_status()}'
let g:lightline.component.fugitive = '%{fugitive#head()}'
let g:lightline.component_visible_condition.fugitive = '(exists("*fugitive#head") && ""!=fugitive#head())'
let g:lightline.active = {
      \ 'right': [
      \   ['syntastic', 'lineinfo'],
      \   ['percent'],
      \   ['fileformat', 'fileencoding', 'filetype'],
      \ ],
      \ 'left' : [
      \   ['mode', 'paste'],
      \   ['fugitive'],
      \   ['readonly', 'filename', 'modified'],
      \   ['ale']
      \ ],
      \ }
let g:lightline.component_expand = {
      \ 'syntastic' : 'SyntasticStatuslineFlag',
      \ }
let g:lightline.component_type = {
      \ 'syntastic' : 'error',
      \ }
let g:lightline.component_function = {
      \ 'ale' : 'ALEGetStatusLine',
      \ }
let g:lightline.tabline = {
      \ 'left': [ ['tabs'] ],
      \ }
let g:lightline.tab = {
      \ 'active'   : ['tabnum', 'readonly', 'filename', 'modified'],
      \ 'inactive' : ['tabnum', 'readonly', 'filename', 'modified'],
      \ }


================================================
FILE: .vim/rc/plugins/neocomplete.vim
================================================
if ! exists('g:neocomplete#force_omni_input_patterns')
  let g:neocomplete#force_omni_input_patterns = {}
endif

let g:neocomplete#enable_smart_case = 1
let g:neocomplete#max_list = 1000

let g:neocomplete#force_overwrite_completefunc = 1
let g:neocomplete#force_omni_input_patterns.c      = '[^.[:digit:] *\t]\%(\.\|->\)'
let g:neocomplete#force_omni_input_patterns.objc   = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
let g:neocomplete#force_omni_input_patterns.cpp    = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
let g:neocomplete#force_omni_input_patterns.objcpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'

let g:neocomplete#sources#syntax#min_keyword_length = 3

let g:neocomplete#keyword_patterns                  = {}
let g:neocomplete#keyword_patterns.default          = '\h\w*'

let g:neocomplete#delimiter_patterns                = {}
let g:neocomplete#delimiter_patterns.vim            = ['#']
let g:neocomplete#delimiter_patterns.perl = []
let g:neocomplete#delimiter_patterns.ruby           = ['::']

call neocomplete#custom#source('omni', 'rank', 7)
call neocomplete#custom#source('omni', 'converters', ['converter_remove_last_paren'])

imap <expr> <C-h> neocomplete#smart_close_popup() . "\<Plug>(smartinput_C-h)"
imap <expr> <BS>  neocomplete#smart_close_popup() . "\<Plug>(smartinput_BS)"
inoremap <expr> <C-g> neocomplete#undo_completion()

autocmd MyInit CmdwinEnter * let b:neocomplete_sources = ['vim']


================================================
FILE: .vim/rc/plugins/quickrun.vim
================================================
if !exists('g:quickrun_config')
  let g:quickrun_config = {}
endif
let g:quickrun_config['prove/carton'] = {
      \ 'exec'    : 'carton exec -- %c %o %s',
      \ 'command' : 'prove',
      \ }
let g:quickrun_config['prove/carton/contextual'] = extend(g:quickrun_config['prove/carton'], {
      \ 'exec' : 'TEST_METHOD=%a ' . g:quickrun_config['prove/carton'].exec,
      \ })
" let g:quickrun_config.vim = {
"       \ 'outputter' : 'error',
"       \ 'outputter/error/success' : 'null',
"       \ 'outputter/error/error' : 'buffer',
"       \ }

" vim:set foldmethod=marker:


================================================
FILE: .vim/rc/plugins/syntastic.added.vim
================================================
let g:syntastic_mode_map = {
      \ 'mode' : 'passive',
      \ }

augroup auto-syntastic
  autocmd!
  autocmd BufWritePost *.rb, *.js, *.scala call s:syntastic()
augroup END

function! s:syntastic() abort
  SyntasticCheck
  call lightline#update()
endfunction


================================================
FILE: .vim/rc/plugins/unite.added.vim
================================================
" mapping {{{
nnoremap <SID>[unite] <Nop>
nmap gj <SID>[unite]

nmap <SID>[unite]p <SID>(project-files)
nmap <SID>[unite]f <SID>(files)
nmap <SID>[unite]F <SID>(files-from-buffer)
nmap <SID>[unite]w <SID>(windows)
nmap <SID>[unite][ <SID>(outline)
nmap <SID>[unite]: <SID>(history)
nmap <SID>[unite]q <SID>(quickfix)
nmap <SID>[unite]t <SID>(tabs)
nmap <SID>[unite]B <SID>(buffers)
nmap <SID>[unite]mv <SID>(rename)
nmap <SID>[unite]G <SID>(ghq-list)

if has('gui_running')
  nmap <SID>[unite]b <SID>(tab-buffers)
else
  nmap <SID>[unite]b <SID>(buffers)
endif

" definitions {{{
nnoremap <silent> <SID>(project-files) :<C-u>Unite file_rec/git -hide-source-names -buffer-name=files<CR>
nnoremap <silent> <SID>(files) :<C-u>UniteWithCurrentDir file file/new -hide-source-names -buffer-name=files<CR>
nnoremap <silent> <SID>(files-from-buffer) :<C-u>UniteWithBufferDir file file/new -hide-source-names -buffer-name=files<CR>
nnoremap <silent> <SID>(windows) :<C-u>Unite window:no-current -no-empty<CR>
nnoremap <silent> <SID>(outline) :<C-u>Unite outline -hide-source-names -winwidth=40 -buffer-name=outline<CR>
nnoremap <silent> <SID>(history) :<C-u>Unite history/command -start-insert<CR>
nnoremap <silent> <SID>(quickfix) :<C-u>Unite quickfix -no-quit -no-empty -auto-resize -buffer-name=quickfix<CR>
nnoremap <silent> <SID>(tabs) :<C-u>Unite tab:no-current -no-empty -immediately<CR>
nnoremap <silent> <SID>(tab-buffers) :<C-u>Unite buffer_tab -no-empty<CR>
nnoremap <silent> <SID>(buffers) :<C-u>Unite buffer -no-empty<CR>
nnoremap <silent><expr> <SID>(rename) ':<C-u>Unite file -input=' . expand('%:p') . ' -default-action=exrename -immediately<CR>'
nnoremap <silent> <SID>(ghq-list) :<C-u>Unite ghq<CR>
" }}}
" }}}
function! s:unite_my_settings() " {{{
  let unite = unite#get_current_unite()

  nmap <buffer> <BS> <Plug>(unite_delete_backward_path)

  nnoremap <buffer><silent><expr> <C-w>h unite#do_action('left')
  nnoremap <buffer><silent><expr> <C-w>l unite#do_action('right')
  nnoremap <buffer><silent><expr> <C-w>j unite#do_action('below')
  nnoremap <buffer><silent><expr> <C-w>k unite#do_action('above')

  nnoremap <buffer><silent><expr> p unite#do_action('preview')

  if unite.buffer_name == 'files'
    nnoremap <buffer><silent><expr> r unite#do_action('rename')
  endif
endfunction " }}}
" variables {{{
let g:unite_data_directory = $VIM_CACHE_DIR . '/unite'
let g:unite_force_overwrite_statusline = 0

if executable('ag')
  let g:unite_source_grep_command        = 'ag'
  let g:unite_source_grep_default_opts   = '--nocolor --nogroup'
  let g:unite_source_grep_recursive_opt  = ''
  let g:unite_source_grep_max_candidates = 200
endif
" }}}
" autocmd {{{
autocmd MyInit FileType unite nmap <buffer><BS> <Plug>(unite_delete_backward_path)
autocmd MyInit FileType unite call s:unite_my_settings()
" }}}
" Custom sources {{{
" unite-git-files-conflict {{{
let s:unite_git_files_conflict = {
      \   'name' : 'git/files/conflict',
      \ }
function! s:unite_git_files_conflict.gather_candidates(args, context)
  let output = unite#util#system('git diff-files --name-only --diff-filter=U')
  let candidates = map(split(output, "\n"), '{
        \ "word" : fnamemodify(v:val, ":p"),
        \ "source" : "git/files/conflict",
        \ "kind" : "file",
        \ "action__path" : fnamemodify(v:val, ":p"),
        \ }')
  return candidates
endfunction
call unite#define_source(s:unite_git_files_conflict)
" }}}
" unite-git-files-modified {{{
let s:unite_git_files_modified = {
      \   'name' : 'git/files/modified',
      \ }
function! s:unite_git_files_modified.gather_candidates(args, context)
  let output = unite#util#system('git ls-files --modified')
  let candidates = map(split(output, "\n"), '{
        \ "word" : fnamemodify(v:val, ":p"),
        \ "source" : "git/files/modified",
        \ "kind" : "file",
        \ "action__path" : fnamemodify(v:val, ":p"),
        \ }')
  return candidates
endfunction
call unite#define_source(s:unite_git_files_modified)
" }}}
" unite-git-files-others {{{
let s:unite_git_files_others = {
      \   'name' : 'git/files/others',
      \ }
function! s:unite_git_files_others.gather_candidates(args, context)
  let output = unite#util#system('git ls-files --others --exclude-standard')
  let candidates = map(split(output, "\n"), '{
        \ "word" : fnamemodify(v:val, ":p"),
        \ "source" : "git/files/others",
        \ "kind" : "file",
        \ "action__path" : fnamemodify(v:val, ":p"),
        \ }')
  return candidates
endfunction
call unite#define_source(s:unite_git_files_others)
" }}}
" }}}

call unite#custom#default_action('source/ghq/*', 'tabnew_lcd')

" converter_relative_abbr: 候補を表示するときに相対パスに
" matcher_project_files: 候補はリポジトリのファイルからのみ
call unite#custom#source('file_mru', 'matchers', ['converter_relative_abbr', 'matcher_project_files', 'matcher_fuzzy'])

let s:unite_project_ignore_pattern = '\.\(gif\|jpe\?g\|png\|min\.js\|vendor\)'
call unite#custom#source('file_rec/git', 'ignore_pattern', s:unite_project_ignore_pattern)

" vim:set foldmethod=marker:


================================================
FILE: .vim/rc/plugins/watchdogs.vim
================================================
let g:watchdogs_check_BufWritePost_enable = 1
let g:watchdogs_check_BufWritePost_enables = {
      \ "typescript": 0,
      \ }
if !exists('g:quickrun_config')
  let g:quickrun_config = {}
endif
let g:quickrun_config['watchdogs_checker/_'] = {
      \   'outputter/quickfix/open_cmd' : '',
      \   'hook/hier_update/enable_exit' : 1,
      \   'runner/vimproc/updatetime' : 40,
      \ }
let g:quickrun_config['watchdogs_checker/efm_perl'] = {
      \   'command' : expand('~/.vim/tools/efm_perl.pl'),
      \   'exec' : '%c %o %s:p',
      \   'quickfix/errorformat' : '%f:%l:%m',
      \ }
let g:quickrun_config['watchdogs_checker/cpanfile'] = {
      \   'command' : 'perl',
      \   'exec' : '%c %o -w -MModule::CPANfile -e "Module::CPANfile->load(q|%S:p|)"',
      \   'quickfix/errorformat' : '%m\ at\ %f\ line\ %l%.%#',
      \ }
let g:quickrun_config['perl/watchdogs_checker'] = {
      \   'type' : 'watchdogs_checker/efm_perl',
      \ }
let g:quickrun_config['cpanfile/watchdogs_checker'] = {
      \   'type' : 'watchdogs_checker/cpanfile',
      \ }
call watchdogs#setup(g:quickrun_config)


================================================
FILE: .vim/snippets/eruby.snip
================================================
snippet case
	<% case ${1:object} %>
	<% when ${2:condition} %>
		${3}
	<% end %>
snippet when
	<% when ${1:condition} %>
		${2}
snippet if
	<% if ${1:condition} %>
		${2}
	<% end %>
snippet ife
	<% if ${1:condition} %>
		${2}
	<% else %>
		${3}
	<% end %>
snippet unless
	<% unless ${1:condition} %>
		${2}
	<% end %>


================================================
FILE: .vim/snippets/io.snip
================================================
snippet     if
	if(${1:/* condition */}, ${2:/* then-clause */})

snippet ife
	if(${1:/* condition */}, ${2:/* then-clause */}, ${3:/* else-clause */})


================================================
FILE: .vim/snippets/javascript.snippet
================================================
snippet func
alias   function
	function (${0:args}) {${1:body}};

snippet if
	if (${1:true}) ${0:$TM_SELECTED_TEXT}

snippet for
	for (var ${2:i}=0; $2 < ${1:Things}.length; $2++) {
		${0}
	};


================================================
FILE: .vim/snippets/markdown.snippet
================================================
snippet link
	[${1:#:title}](${2:#:url})

snippet link_paste
	[${1}](`getreg('+')`)

snippet image
	![${1:#:alt text}](${2:#:url})

snippet image_paste
  ![${1}](`getreg('+')`)

snippet     README
options     head
	# ${1:NAME}

	${2:DESCRIPTION}

	## Usage

	${3:USAGE}

	## License

	${4:LICENSE}

# vim:set ft=neosnippet noexpandtab:


================================================
FILE: .vim/snippets/objc.snip
================================================
" vim:set noexpandtab:

snippet import
	#import "${1:Header}.h"

snippet if
	if (${1:condition}) {
		${2}
	}

snippet else
	else {
		${1}
	}

snippet elif
abbr else_if
	else if (${1:condition}) {
		${2}
	}

snippet method
abbr instance_method
	- (${1:ReturnType})${2:MethodName}
	{
		${3}
	}

snippet cmethod
abbr class_method
	+ (${1:ReturnType})${2:MethodName}
	{
		${3}
	}

snippet for_in
	for (${1:value} in ${2:FastEnumeration}) {
		${3}
	}

snippet block
	^(${1:args}) {
		${2}
	}

snippet extern
	extern ${1:type} const ${2:Constant};

snippet const
	${1:type} const ${2:NAME} = ${3:value};


================================================
FILE: .vim/snippets/perl.snip
================================================
# vim:set ft=snippet noet:
snippet pl
	#!/usr/bin/env perl

	use strict;
	use warnings;
alias shebang

snippet use
	use ${1:Package};

snippet uselib
	use lib 'lib', glob "${1:Package}";

snippet ddd
	require Data::Dumper;
	sub p ($) { warn Data::Dumper->new(\@_)->Useqq(1)->Terse(1)->Dump(); }
	${1}

snippet     sub_self
options     head
	sub ${1:method} {
		my ($self${2:#:rest args}) = @_;
		${3:# body}
	}

snippet     sub_class
options     head
	sub ${1:method} {
		my ($class${2:#:rest args}) = @_;
		${3:#:# body}
	}

snippet     package
options     head
	package ${1:`substitute(substitute(expand('%:p:r'), '.*/lib/', '', 'g'), '/', '::', 'g')`};

	use strict;
	use warnings;

	${2:#:body}

	1;

snippet     package_block
options     head
	package ${1:`substitute(substitute(expand('%:p:r'), '.*/lib/', '', 'g'), '/', '::', 'g')`} {
		${2:#:body}
	}

snippet     t
options     head
	package ${1:`substitute(substitute(expand('%:p:r'), '.*/t/', 't-', 'g'), '-', '::', 'g')`};

	sub _require : Test(startup => 1) {
		require_ok '${2:`substitute(substitute(expand('%:p:r'), '.*/t/', '', 'g'), '-', '::', 'g')`}';
	}

	${2:#:# body}

	1;

snippet     subtest
	subtest ${1:test_name} => sub {
		${2:#:body}
	};

snippet     tests
	sub ${1:test_name} : Tests {
		${2:#:body}
	}

snippet todo_test
	TODO: {
		local $TODO = '${1:reason}';
		fail '$1';
	};


================================================
FILE: .vim/snippets/rspec.snip
================================================
snippet describe
    describe ${1:object} do
        ${2}
    end

snippet it
    it "${1:description}" do
        ${2}
    end

snippet specify
    specify "${1:description}" do
        ${2}
    end

snippet context
    context "${1:case}" do
        ${2}
    end

snippet expect
    expect { ${1:subject} }.${2:to} \
        ${3}

snippet change change ... from ... by ...
    change { ${1:object} }.from(${2:pre}).to(${3:post})

snippet change change ... by
    change { ${1:object} }.by(${2:pre})

snippet let
    let(:${1:name}) { ${2} }

snippet let!
    let!(:${1:name}) { ${2} }


================================================
FILE: .vim/snippets/ruby.snip
================================================
# vim:set ft=snippet noet:
snippet shebang
	#!/usr/bin/env ruby

snippet =b
	=begin rdoc
		${1}
	=end

snippet beg
abbr begin rescue end
	begin
		${3}
	rescue ${1:Exception} => ${2:e}
	end

snippet req
	require "${1}"${2}

snippet case
	case ${1:object}
	when ${2:condition}
		${3}
	end

snippet when
	when ${1:condition}
		${2}

snippet if
	if ${1:condition}
		${2}
	end

snippet if else
	if ${1:condition}
		${2}
	else
		${3}
	end

snippet unless
	unless ${1:condition}
		${2}
	end

snippet while
	while ${1:condition}
		${2}
	end

snippet for
	for ${1:e} in ${2:c}
		${3}
	end

snippet until
	until ${1:condition}
		${2}
	end

snippet module
	module ${1:ModuleName}
		${2}
	end

snippet class
	class ${1:ClassName}
		${2}
	end

snippet class self
abbr class << self
	class << self
		${1}
	end

snippet def
	def ${1:method_name}
		${2}
	end

snippet defs
abbr def self.method ... end
	def self.${1:class_method_name}
		${2}
	end

snippet atr
abbr attr_reader
	attr_reader :${1:attr_names}

snippet atw
abbr attr_writer
	attr_writer :${1:attr_names}

snippet ata
abbr attr_accessor
	attr_accessor :${1:attr_names}

snippet do var end
abbr do |var| ... end
	do |${1:variable}|
		${2}
	end

snippet do end
abbr do ... end
	do
		${1}
	end

snippet open
	open(${1:"path/or/url/or/pipe"}, "${2:w}") {|${3:io}| ${4} }

snippet task
	desc "${1:Task description\}"
	task :${2:task_name => [:dependent, :tasks]} do
		${3}
	end

snippet describe
	describe ${1:object} do
		${2}
	end

snippet it
	it "${1:description}" do
		${2}
	end

snippet context
	context "${1:case}" do
		${2}
	end

snippet before
	before do
		${1}
	end

snippet before each
	before :each do
		${1}
	end

snippet before all
	before :all do
		${1}
	end

snippet after
	after do
		${1}
	end

snippet after each
	after :each do
		${1}
	end

snippet after all
	after :all do
		${1}
	end

snippet subject
	subject do
		${1}
	end


================================================
FILE: .vim/snippets/tap.snip
================================================
snippet     subtest
abbr        st
	subtest ${1:test_name} => sub {
		${2:# test cases}
	};


================================================
FILE: .vim/snippets/textile.snip
================================================
snippet     link
  "${1:#:title}":${2:#:url}

snippet     link_paste
  "${1:#:title}":`getreg('+')`

snippet     image
  !${1:#:url}!

snippet     image_paste
  !`getreg('+')`!

snippet     pre
  <pre><code>${1:#:code}</code></pre>

snippet     collapse
options     head
	{{collapse
	${1}
	}}

# vim:set noexpandtab


================================================
FILE: .vim/snippets/tt2.snip
================================================
snippet if
	[% IF ${1:condition} %]
		${2:then}
	[% END # IF $1 %]

snippet ife
	[% IF ${1:condition} %]
		${2:then}
	[% ELSE %]
		${3:else}
	[% END # IF $1 %]

snippet unless
	[% UNLESS ${1:condition} %]
		${2:then}
	[% END # UNLESS $1 %]

snippet foreach
	[% FOREACH ${1:element} IN ${2:collection} %]
		${3:loop}
	[% END # FOREACH $1 IN $2 %]

snippet include
	[% INCLUDE "${1:path}" %]


================================================
FILE: .vim/snippets/tt2html.snip
================================================
include tt2.snip


================================================
FILE: .vim/snippets/vim.snip
================================================
# vim:set ft=neosnippet noet:
snippet plugin_config
	let ${2:symbol} = neobundle#get('${1:plugin_name}')
	function! $2.hooks.on_source(bundle) " {{{
		${3:TARGET}
	endfunction " }}}
	unlet $2

snippet     lazybundle
options     head
	NeoBundleLazy '${1:owner}/${2:name}' " {{{
	call neobundle#config('$2', {
				${3:config}
	}) " }}}


================================================
FILE: .vim/snippets/zsh.snip
================================================
include sh.snip

snippet     length
  ${#${1:variable}}

snippet     capitalize
  ${(C)${1:variable}}

snippet     downcase
  ${(L)${1:variable}}

snippet     upcase
  ${(U)${1:variable}}

snippet     keys
  ${(k)${1:variable}}

snippet     split
  ${(s:${1:pattern}:)${2:variable}}

snippet     join
  ${(j:${1:needle}:)${2:variable}}

snippet     split_by_newline
abbr        splitlf
  ${(f)${1:variable}}

snippet     join_by_newline
abbr        joinlf
  ${(F)${1:variable}}

snippet     sort_asc
  ${(o)${1:variable}}

snippet     sort_desc
  ${(O)${1:variable}}

snippet     sort_numeric
abbr        sort_num
  ${(n)${1:variable}}

snippet     function
abbr        func
options     head
  function ${1:func}() { # {{{
    ${2:#:body}
  } # }}}


================================================
FILE: .vim/tools/efm_perl.pl
================================================
#!/usr/bin/env perl

# stolen from https://github.com/hakobe/dotfiles/blob/master/.vim/tools/efm_perl.pl

use strict;
use warnings;

use Cwd;
use File::Basename;
use File::Spec;

my $file = shift or die "No filename to check!\n";
my $dir  = dirname( $file ) . '/lib';
my $cwd  = cwd();

my $error = qr{(.*)\sat\s(.*)\sline\s(\d+)(\.|,\snear\s\".*\"?)};

# Error messages to be skipped.
my @skip = (

  '"DB::single" used only once: possible typo',
  'BEGIN failed--compilation aborted',

);

my $skip = join '|', map { quotemeta $_ } @skip;
my @checks;

push @checks, '-M-circular::require' if `perldoc -l circular::require 2> /dev/null`;
push @checks, '-M-indirect'          if `perldoc -l indirect 2> /dev/null`;
push @checks, '-Mwarnings::method'   if `perldoc -l warnings::method 2> /dev/null`;
push @checks, '-Mwarnings::unused'   if `perldoc -l warnings::unused 2> /dev/null`;

# uninit is not included in 5.10 and later
push @checks, '-Muninit'             if ( $] < 5.010 ) && `perldoc -l uninit 2> /dev/null`;

my @incs; 
push @incs, "-I $cwd/lib";
push @incs, "-I $cwd/t/lib";
push @incs, map { "-I $_" }  glob("$cwd/modules/*/lib");

# need to turn on taint if it's on the shebang line.
# naive check for [tT] switch ... will both t and T ever be used at the same time?
my ( $taint ) = `head -n 1 $file` =~ /\s.*-.*?(t)/i;
push @checks, "-$taint" if defined $taint;

my $checks = join(' ', @checks);
my $incs = join(' ', @incs);
my $command = (-f "$cwd/cpanfile") || (-f "$cwd/Makefile.PL") ?
    "carton exec @incs -- perl @incs @checks -c $file 2>&1" : # cartonのバージョン違いの吸収のために@incsが二回展開されてる
    "perl @incs @checks -c $file 2>&1";

my ( $message, $extracted_file, $lineno, $rest );

for my $line ( `$command` ) {

  chomp $line;
  next if $line =~ /$skip/;
  $line =~ s/([()])/\\$1/g;

  if ( ( $message, $extracted_file, $lineno, $rest ) = $line =~ /^$error$/ ) {

    $message .= $rest if ($rest =~ s/^,//);
    print "$file:$lineno:$message\n";

  }
}


================================================
FILE: .vim/vimrc
================================================
" vim:set et foldmethod=marker:

let did_load_filetypes = 1
let g:loaded_2html_plugin = 1
let g:loaded_getscriptPlugin = 1
let g:loaded_vimballPlugin = 1

function! s:OnLoaded() abort
  if !has('vim_starting')
    echomsg '---> Reload bundles'
    call dein#call_hook('source')
    call dein#call_hook('post_source')
  endif

  syntax enable
  filetype plugin indent on
endfunction

runtime rc/00_base.vim
runtime rc/00_autocmd.vim
runtime rc/10_dein.vim
runtime rc/20_tab.vim
runtime rc/20_key.vim
runtime rc/20_command.vim

if !has('vim_starting')
  echomsg '---> Reload bundles'
  call dein#call_hook('source')
  call dein#call_hook('post_source')
endif

syntax enable
filetype plugin indent on


================================================
FILE: .vimperator/colors/solarized_light.vimp
================================================
hi clear

hi StatusLine <<CSS
  background-color: #fdf6e3;
  color: #586e75;
  font-size: 16px;
  padding: 0.2em 0;
  outline: none;
CSS

hi CmdLine <<CSS
  background-color: #fdf6e3;
  color: #586e75;
  font-size: 16px;
  border-top: solid 1px #93a1a1;
CSS

hi CompItem <<CSS
  background-color: #fdf6e3;
  color: #586e75;
  font-size: 16px;
CSS

hi CompItem[selected] <<CSS
  background-color: #268bd2;
  color: #fdf6e3;
CSS

hi CompTitle <<CSS
  background-color: #eee8d5;
  color: #657b83;
CSS

hi ErrorMsg <<CSS
  background-color: #dc322f;
  color: #fdf6e3;
  font-size: 16px;
CSS

hi Filter <<CSS
  color: #b58900;
CSS

hi Hint <<CSS
  z-index: 999;
  padding: 0.1em 0.3em;
  font-size: 16px;
  background-color: rgba(0, 43, 54, 0.8);
  color: #fdf6e3;
  font-family: monospace;
CSS

hi HintElem <<CSS
  background-color: rgba(253, 246, 227, 0.7);
CSS

hi HintActive <<CSS
  background-color: rgba(220, 50, 47, 0.6);
CSS


================================================
FILE: .vimperatorrc
================================================
" let {{{
let g:plugin_loader_roots = "~/devel/src/github.com/vimpr/vimperator-plugins"
let g:plugin_loader_plugins = "_libly,asdfghjkl,feedSomeKeys_3"

let g:asdfghjkl_default = "true"
let g:asdfghjkl_hintchars = ":asdfghjkl"
" }}}
" set {{{
set scrollbars
set notabnumbers
set history=10000
" }}}
" Prefs (firefox) {{{
set! ui.key.generalAccessKey=0
set! ui.key.contentAccessKey=0

set! browser.tabs.autoHide=false

set! browser.sessionstore.interval=120000

set! javascript.options.jit.chrome=true
set! javascript.options.jit.content=true

set! browser.tabs.closeWindowWithLastTab=false

set! browser.startup.page=3

set! network.http.pipelining=true
" }}}
" Mapping {{{
nnoremap j 5<C-e>
nnoremap k 5<C-y>

" page info
nnoremap <C-g> g<C-g>

nnoremap <C-q> <Nop>
nnoremap q <Nop>

nnoremap y :<C-u>js<Space>util.copyToClipboard(buffer.URL)<CR>

cnoremap <C-n> <Tab>
cnoremap <C-p> <S-Tab>
cnoremap <C-g> <ESC>

" for AquaSKK
cnoremap <C-j> <Nop>
" }}}
" Command {{{
command! -nargs=+ sitesearch :exe ":tabopen <args> site:" + content.document.domain
" }}}
" Quickmarks {{{
silent qmark r http://reader.livedoor.com/reader/
silent qmark m https://mail.google.com/mail/#mbox
" }}}

ignorekeys add -except=:,d,t,gT mail\.google\.com

autocmd VimperatorEnter .* source ~/.vimperatorrc.js

colorscheme solarized_light

" vim:set ft=vim foldmethod=marker:


================================================
FILE: .vimperatorrc.js
================================================
liberator.globalVariables.hBookmark_shortcuts = {
  hintsAdd: 'Ba',
  hintsComment: 'Bc',
  add: ['C'],
  comment: ['c'],
};
if (typeof hBookmark != 'undefined') {
  liberator.loadScript('chrome://hatenabookmark/content/vimperator/plugin/hatenabookmark.js', {
    __proto__: this
  });
}


================================================
FILE: .zsh.d/functions/_carton
================================================
#compdef carton

function _carton () {
  local curcontext="$curcontext" state line
  typeset -A opt_args

  _arguments -C \
    ':command:->command' \
    '*::options:->options'

  case $state in
    command)
      _values 'carton commands' \
        version'[Display version]' \
        update'[Update the dependencies]' \
        tree'[Show the tree of dependency graph]' \
        show'[Show the module information]' \
        list'[List dependencies tracked in the cpanfile.snapshot file]' \
        check'[Check if your cpanfile and local environment are in sync]' \
        install'[Install the dependencies]' \
        bundle'[Bundle cached tarballs in vendor/cache]' \
        'exec[execute your script in a carton local environment]'
      ;;
    options)
      case $line[1] in
        update)
          _arguments \
            '*:MODULE:_perl_modules'
          ret=0
          ;;
        show)
          _arguments \
            '*:MODULE:_perl_modules'
          ret=0
          ;;
        list)
          _arguments \
            --distfile'[Displays the list of distributions in a distfile format]'
          ret=0
          ;;
        check|tree|version)
          ret=0
          ;;
        bundle)
          _arguments \
            {-h,--help}'[Show help message]' \
            --no-fatpack'[Skip generating fatpacked "carton" in "vendor/bin"]'
          ret=0
          ;;
        install)
          _arguments \
            {-h,--help}'[Show help message]' \
            --deployment'[Force the deployment mode. See "DEPLOYMENT MODE" above]' \
            --cached'[Locate distribution tarballs in "vendor/cache" rather than fetching them from CPAN mirrors]' \
            --cpanfile'[Specify the alternate path for cpanfile]:cpanfile:_files' \
            --path'[Specify the path to install modules to]:path:_dirs' \
            --without'[You can specify phases or features to exclude, in the comma separated list]:phases_or_features'
          ret=0
          ;;
        exec)
          _normal
          ret=0
          ;;
      esac
  esac
}

_carton "$@"

# vim:set ft=zsh:


================================================
FILE: .zsh.d/functions/_padrino
================================================
#compdef padrino

_runtime_options=(
  --help'[Show help usage]' \
  {-e,--environment}'[Padrino Environment]:ENVIRONMENT:(test development production)' \
  {-c,--chdir}'[Change to dir before starting]:CHDIR:_files -/'
)

_padrino() {
  local curcontext="$curcontext" state line
  typeset -A opt_args

  _arguments -C \
    ':command:->command' \
    '*::options:->options'

  case $state in
    command)
      _values "padrino subcommands" \
        {g,gen,generate}'[Executes the Padrino generator with given options]' \
        {c,console}'[Boots up the Padrino application irb console]' \
        {s,start}'[Starts the Padrino application]' \
        help'[Describe available tasks or one specific task]' \
        rake'[Execute rake tasks]' \
        stop'[Stops the Padrino application]' \
        version'[Show current Padrino Version]'
      ;;
    options)
      case $line[1] in
        start|s)
          _arguments $_runtime_options \
            {-a,--server}'[Rack Handler (default: autodetect)]:SERVER' \
            {-p,--port}'[Use PORT (default: 3000)]:N' \
            {-h,--host}'[Bind to HOST address (default: 0.0.0.0)]:HOST' \
            {-d,--daemonize}'[Run daemonized in the buckground]' \
            {--debug}'[Set debugging flags]' \
            {-e,--environment}'[Padrino Environment]:ENVIRONMENT:(test development production)' \
          ret=0
          ;;
        stop)
          _arguments $_runtime_options \
            {-p,--pid}'[File to store pid (default: tmp/pids/server.pid)]:PID'
          ret=0
          ;;
        generate|gen|g)
          __padrino_generate
          ;;
      esac
     ;;
  esac
}

__padrino_generate() {
  local curcontext="$curcontext" state line
  typeset -A opt_args

  _generators_options=(
    --help'[Show help usage]' \
    {-r,--root}'[The root destination (default: .)]:ROOT:_files -/' \
    {-d,--destroy}
  )

  _arguments -C \
    ':command:->command' \
    '*::options:->options'

  case $state in
    command)
      _arguments -C $_generators_options
      _values 'padrino generators' \
        'project' \
        'app' \
        'mailer' \
        'controller' \
        'model' \
        'migration' \
        'plugin[sets up a plugin within a Padrino application]'
      ;;
    options)
      case $line[1] in
        app)
          _arguments $_generators_options \
            {-i--tiny}'[Generate tiny app skeleton]'
          ret=0
          ;;
        controller)
          _arguments $_generators_options \
            {-a,--app}'[The application destination path]:APP:_files -/'
          ret=0
          ;;
        mailer)
          _arguments $_generators_options \
            {-a,--app}'[The application destination path]:APP:_files -/'
          ret=0
          ;;
        migration)
          _arguments $_generators_options
          ret=0
          ;;
        model)
          _arguments $_generators_options \
            {-a,--app}'[The application destination path]:APP:_files -/' \
            {-s,--skip-migration}
          ret=0
          ;;
        plugin)
          _arguments $_generators_options \
            {-l,--list}'[list available plugins]'
          ret=0
          ;;
        project)
          _arguments $_generators_options \
            '*:APP' \
            {-n,--app}'[The application name]:APP' \
            {-b,--bundle}'[Run bundle install]' \
            --dev'[Use padrino from a git checkout]' \
            {-i,--tiny}'[Generate tiny app skeleton]' \
            {-a,--adapter}'[SQL adapter for ORM (default: sqlite)]:ADAPTER:(sqlite mysql mysql2 postgres)' \
            {-p,--template}'[Generate project from template]:TEMPLATE:_files' \
            {-d,--orm}'[The database engine component (default: none)]:ORM:(activerecord mini_record datamapper mongomapper mongoid sequel couchrest ohm mongomatic ripple none)' \
            {-t,--test}'[The testing framework component (default: none)]:TEST:(rspec shoulda cucumber bacon testspec riot minitest)' \
            {-m,--mock}'[The mocking library component (default: none)]:MOCK:(mocha rr none)' \
            {-s,--script}'[The javascript library component (default: none)]:SCRIPT:(jquery prototype rightjs mootools extcore dojo none)' \
            {-e,--renderer}'[The template engine component (default: haml)]:RENDERER:(haml erb liquid slim none)' \
            {-c,--stylesheet}'[The stylesheet component (default: none)]:STYLESHEET:(less sass compass scss none)'
      esac
      ;;
  esac
}

_padrino "$@"

# vim:set ft=zsh


================================================
FILE: .zsh.d/functions/_pkgutil
================================================
#compdef pkgutil

function _pkgutil() {
  local curcontext=$curcontext state line ret=1
  declare -A opt_args

  _arguments -C \
    '(-): :->command' \
    '(-)*:: :->option-or-argument'

  case $state in
    command)
      __pkgutil_commands && return 0
      ;;
    option-or-argument)
      if (( $+functions[__pkgutil_$words[1]] )); then
        _call_function ret __pkgutil_$words[1]
      else
        : # TODO
      fi
      ;;
  esac

  return $ret
}

function __pkgutil_commands() {
  local curcontext=$curcontext state line ret=1
  declare -A opt_args

  local -a __pkgutil_receipt_database_commands
  __pkgutil_receipt_database_commands=(
    {--packages,--pkgs}:'List all installed package IDs on the specified --volume'
    --pkgs-plist:'List all installed package IDs on the specified --volume in Mac OS X plist(5) format'
    --files:'List all of the files installed under the package-id'
    --export-plist:'Print all receipt information about the specified package-id in the standard Mac OS X plist(5) format'
    --verify:'Run repair_packages(8) to verify the specified package-id'
    --repair:'Run repair_packages(8) to repair the specified package-id'
    --pkg-info:'Print extended information about the specified package-id'
    --pkg-info-plist:'Print extended information about the specified package-id in Mac OS X plist(5) format'
    --forget:'Discard all receipt data about package-id, but do not touch the installed files'
    --learn:'Update the ACLs of the given path in the receipt identified by --edit-pkg'
    --pkg-groups:'List all of the package groups this package-id is a member of'
    --groups:'List all of the package groups on the specified --volume'
    --groups-plist:'List all of the package groups on the specified --volume in Mac OS X plist(5) format.'
    --group-pkgs:'List all of the packages that are members of this group-id.'
    --file-info:'Show the metadata known about path.'
    --file-info-plist:'Show the metadata known about path in Mac OS X plist(5) format.'
  )

  local -a __pkgutil_options
  __pkgutil_options=(
  {-h,--help}':A brief summary of commands and usage'
  {-f,--force}":Don't ask for confirmation before performing a potentially destructive or ambiguous operation"
  {-v,--verbose}':Output in a "human-readable" format with extra headers, footers, indentation, and other contextual information'
  --volume":Perform all operations on the specified volume or home directory. The root volume '/' will be used if unspecified" \
  --edit-pkg':Specifies an existing receipt to be modified in-place by --learn'
  --only-files':List only files (not directories) in --files listing'
  --only-dirs':List only directories (not files) in --files listing'
  --regexp":Try to match package-id arguments as a regular expression if an exact match isn't found. See egrep(1) and re_format(7) for syntax"
  )

  local -a __pkgutil_file_commands
  __pkgutil_file_commands=(
    --expand:'Expand the flat package at pkg-path into a new directory specified by dir-path'
    --flatten:'Flatten the dir-path into a new flat package created at pkg-path'
    --bom:'Extract any BOM files from the flat pkg at path into /tmp and return the filename(s).'
    --payload-files:'List the files archived within the payload of the uninstalled flat package(s) contained at path'
    --check-signature:'Check the validity and trust of the signature on the package at pkg-path.'
  )

  _describe -t pkgutil-options "Options" __pkgutil_options && ret=0
  _describe -t pkgutil-receipt-database-commands "Receipt Database Commands" __pkgutil_receipt_database_commands && ret=0
  _describe -t pkgutil-file-commands "File Commands" __pkgutil_file_commands && ret=0

  return $ret
}

function __pkgutil_package_ids() {
  local -a package_ids
  package_ids=($(pkgutil --pkgs 2>/dev/null))
  _values 'package-id' $package_ids
}

function __pkgutil_group_ids() {
  local -a group_ids
  group_ids=($(pkgutil --groups 2>/dev/null))
  _values 'group-id' $group_ids
}

function __pkgutil_--volume()          { _arguments -C '*:path:_dirs'                       && return 0 }
function __pkgutil_--edit-pkg()        { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--verify()          { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--repair()          { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--pkg-info()        { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--pkg-info-plist()  { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--forget()          { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--learn()           { _arguments -C '*:path:_files'                      && return 0 }
function __pkgutil_--pkg-groups()      { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--group-pkgs()      { _arguments -C '*:group-id:__pkgutil_group_ids'     && return 0 }
function __pkgutil_--file-info()       { _arguments -C '*:path:_files'                      && return 0 }
function __pkgutil_--file-info-plist() { _arguments -C '*:path:_files'                      && return 0 }
function __pkgutil_--files()           { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--export-plist()    { _arguments -C '*:package-id:__pkgutil_package_ids' && return 0 }
function __pkgutil_--bom()             { _arguments -C '*:path:_files'                      && return 0 }
function __pkgutil_--payload-files()   { _arguments -C '*:path:_files'                      && return 0 }
function __pkgutil_--check-signature() { _arguments -C '*:pkg-path:_files'                  && return 0 }
# TODO function __pkgutil_--expand
# TODO function __pkgutil_--flatten

# vim:set ft=zsh:


================================================
FILE: .zsh.d/functions/_prove
================================================
#compdef prove

typeset -A options
local context state line

_arguments -s -C \
  '*:TEST:_files' \
  {-a,--archive}'[Store the resulting TAP in an archive file.]':OUTPUT:_files \
  {-b,--blib}"[Add 'blib/lib' and 'blib/arch' to the path for your tests]" \
  {-c,--color}'[Colored test output (default).]' \
  {-o,--comments}'[Show comments.]' \
  --count'[Show the X/Y test count when not verbose (default)]' \
  --directives'[Only show results with TODO or SKIP directives.]' \
  {-D,--dry}'[Dry run. Show test that would have run.]' \
  {-e,--exec}"[Interpreter to run the tests ('' for compiled tests.)]":EXECUTOR \
  --ext"[Set the extension for tests (default '.t')]":EXTENSION \
  {-f,--failures}'[Show failed tests.]' \
  --formatter'[Result formatter to use. See FORMATTERS.]':FORMATTER \
  --harness'[Define test harness to use.  See TAP::Harness.]':HARNESS \
  {-?,-h,--help}'[Display this help]' \
  -I'[Library paths to include.]':DIR:_dirs \
  --ignore-exit'[Ignore exit status from test scripts.]' \
  {-j,--jobs}'[Run N test jobs in parallel (try 9.)]':N \
  {-l,--lib}"[Add 'lib' to the path for your tests (-Ilib).]" \
  -M'[Load a module.]':MODULE:_perl_modules \
  {-H,--man}'[Longer manpage for prove]' \
  {-m,--merge}"[Merge test scripts' STDERR with their STDOUT.]" \
  --nocolor'[Do not color test output.]' \
  --nocount'[Disable the X/Y test count.]' \
  --norc"[Don't process default .proverc]" \
  --normalize'[Normalize TAP output in verbose output]' \
  -P'[Load plugin (searches App::Prove::Plugin::*.)]':PLUGIN \
  {-p,--parse}'[Show full list of TAP parse errors, if any.]' \
  {-q,--quiet}'[Suppress some test output while running tests.]' \
  {-Q,--QUIET}'[Only print summary results.]' \
  --rc'[Process options from rcfile]':RCFILE:_files \
  {-r,--recurse}'[Recursively descend into directories.]' \
  --reverse'[Run the tests in reverse order.]' \
  {-s,--shuffle}'[Run the tests in random order.]' \
  --source'[Load and/or configure a SourceHandler. See SOURCE HANDLERS.]':HANDLER \
  --state"[Control prove's persistent state.]":OPTION:'(last failed passed all hot todo slow fast new old fresh save)' \
  -T'[Enable tainting checks.]' \
  -t'[Enable tainting warnings.]' \
  --timer'[Print elapsed time after each test.]' \
  --trap'[Trap Ctrl-C and print summary on interrupt.]' \
  {-v,--verbose}'[Print all test lines.]' \
  -W'[Enable fatal warnings.]' \
  -w'[Enable warnings.]'

# vim:set ft=zsh:


================================================
FILE: .zsh.d/functions/_proxychains4
================================================
#compdef proxychains4

local curcontext="$curcontext" state line ret=1

_arguments -C \
  '*:: :->app' && ret=0

case "$state" in
  app)
    _normal && ret=0
    ;;
esac

return ret

# vim: set ft=sh:


================================================
FILE: .zsh.d/functions/_rails
================================================
#compdef rails

_runtime_options=(
  '(-f --force -s --skip)'{-f,--force}'[Overwrite files that already exist]'
  {-p,--pretend}'[Run but do not make any changes]'
  {-q,--quiet}'[Supress status output]'
  '(-s --skip -f --force)'{-s,--skip}'[Skip files that already exist]'
)

_rails() {
  local curcontext="$curcontext" state line
  typeset -A opt_args

  _arguments -C \
    ':command:->command' \
    '*::options:->options'

  case $state in
    command)
      _values "rails subcommands" \
        {g,generate}'[Generate new code]' \
        {c,console}'[Start the Rails console]' \
        {s,server}'[Start the Rails server]' \
        {db,dbconsole}'[Start a console for the database specified in config/database.yml]' \
        {d,destroy}'[Undo code generated with "generate"]' \
        {r,runner}'[Run a piece of code in the application environment]' \
        benchmarker'[See how fast a piece of code runs]' \
        new'[Create a new Rails application]' \
        application'[Generate the Rails application code]' \
        profiler'[Get profile information from a piece of code]' \
        plugin'[Install a plugin]'
      ;;
    options)
      case $line[1] in
        console|c)
          _arguments \
            {-h,--help}'[Show help message]' \
            --sandbox'[Rollback database modifications on exit]' \
            --debugger'[Enable ruby-debugging for the console]'
          ret=0
          ;;
        server|s)
          _arguments \
            {-h,--help}'[Show help message]' \
            {-p,--port}'[Runs Rails on the specified port]:port' \
            {-b,--binding}'[Binds Rails to the specified ip]:ip' \
            {-c,--config}'[Use custom rackup configuration file]:file:_files' \
            {-d,--daemon}'[Make server run as a Daemon]' \
            {-u,--debugger}'[Enable ruby-debugging for the server]' \
            {-e,--environment}'[Specifies the environment to run this server under (test/development/production)]:name:(test development production)' \
            {-p,--pid}'[Specifies the PID file]:pid'
          ret=0
          ;;
        dbconsole|db)
          _arguments \
            {-h,--help}'[Show help message]' \
            {-p,--include-password}'[Automatically provide the password from database.yml]' \
            --mode'[Automatically put the sqlite3 database in the specified mode]:MODE:(html list line column)' \
            --header
          ret=0
          ;;
        application|new)
          _arguments \
            '*:APP_PATH:_files -/' \
            {-h,--help}'[Show help message]' \
            $_runtime_options \
            {-r,--ruby}'[Path to the Ruby binary of your choice]:PATH' \
            {-b,--builder}'[Path to a application builder (can be a filesystem path or URL)]:BUILDER:_files' \
            {-m,--template}'[Path to an application template (can be a filesystem path or URL)]:TEMPLATE:_files' \
            --skip-gemfile"[Don't create a Gemfile]" \
            "(--skip-gemfile --skip-bundle)--skip-bundle[Don't run bundle install]" \
            {-G,--skip-git}'[Skip Git ignores and keeps]' \
            {-O,--skip-active-record}'[Skip Active Record files]' \
            {-S,--skip-sprockets}'[Skip Sprockets files]' \
            {-d,--database}'[Preconfigure for selected database]:DATABASE:(mysql oracle postgresql sqlite3 frontbase ibm_db sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc)' \
            '(-J --skip-javascript -j --javascript)'{-j,--javascript}'[Preconfigure for selected JavaScript library]:JAVASCRIPT' \
            '(-J --skip-javascript -j --javascript)'{-J,--skip-javascript}'[Skip JavaScript files]' \
            '(--dev --edge)--dev[Setup the application with Gemfile pointing to your Rails checkout]' \
            '(--edge --dev)--edge[Setup the application with Gemfile pointing to Rails repository]' \
            {-T,--skip-test-unit}'[Skip Test::Unit files]' \
            --old-style-hash"[Force using old style hash (:foo => 'bar') on Ruby >= 1.9]"
          ;;
        generate|g)
          __rails_generate
          ;;
      esac
     ;;
  esac
}

__rails_generate() {
  local curcontext="$curcontext" state line
  typeset -A opt_args

  _generators_optins=(
    --skip-namespace'[Skip namespace (affects only isolated applications)]' \
    --old-style-hash"[Force using old style hash (:foo => 'bar') on Ruby >= 1.9]" \
  )

  _arguments -C \
    ':command:->command' \
    '*::options:->options'

  case $state in
    command)
      _arguments -C $_runtime_options
      _values 'rails generators' \
        'assets[Stubs out new asset placeholders.]' \
        'controller[Stubs out a new controller and its views.]' \
        'generator[Stubs out a new generator at lib/generators.]' \
        'helper[Stubs out a new helper.]' \
        'integration_test[Create rails files for integration_test generator]' \
        'mailer[Stubs out a new maiiler and its views.]' \
        'migration[Create rails files for migration generator.]' \
        'model[Create rails files for model generator.]' \
        'observer[Create rails files for observer generator.]' \
        'performance_test[Create rails files for performance_test generator.]' \
        'resource[Create rails files for resource generator.]' \
        'scaffold[Scaffolds an entire resource, from model and migration to controller and views, along with a full test suite]' \
        'scaffold_controller[Stubs out a scaffolded controller and its views.]' \
        'session_migration[Create rails files for session_migration generator.]' \
        'task[Stubs out a new Rake task.]'
      ;;
    options)
      case $line[1] in
        assets)
          _arguments -C $_runtime_options $_generators_optins \
            {-j,--javascripts}'[Generate JavaScripts]:boolean:(true false)' \
            {-y,--stylesheets}'[Generate Stylesheets]:boolean:(true false)' \
            {-je,--javascript-engine}'[Engine for JavaScripts]:JAVASCRIPT_ENGINE' \
            {-se,--stylesheet-engine}'[Engine for Stylesheets]:STYLESHEET_ENGINE'
          ;;
        controller)
          _arguments -C $_runtime_options $_generators_optins \
            {-e,--template-engine}'[Template engine to be invoked]:NAME' \
            {-t,--test-framework}'[Test framework to be invoked]:NAME' \
            --helper'[Indicates when to generate helper]:boolean:(true false)' \
            --assets'[Indicates where to generate assets]:boolean:(true false)'
          ;;
        generatorer)
          _arguments -C $_runtime_options $_generators_optins \
            --namespace'[Namespace generator under lib/generators/name]:boolean:(true false)'
          ;;
        helper)
          _arguments -C $_runtime_options $_generators_optins \
            {-t,--test-framework}'[Test framework to be invoked]:NAME'
          ;;
        integration_test)
          _arguments -C $_runtime_options $_generators_optins \
            --integration-tool'[Integration tool to be invoked]:NAME'
          ;;
        mailer)
          _arguments -C $_runtime_options $_generators_optins \
            {-e,--template-engine}'[Template engine to be invoked]:NAME' \
            {-t,--test-framework}'[Test framework to be invoked]:NAME'
          ;;
        migration)
          _arguments -C $_runtime_options $_generators_optins \
            {-o,--orm}'[ORM to be invoked]:NAME'
          ;;
        model)
          _arguments -C $_runtime_options $_generators_optins \
            {-o,--orm}'[ORM to be invoked]:NAME'
          ;;
        observer)
          _arguments -C $_runtime_options $_generators_optins \
            {-o,--orm}'[ORM to be invoked]:NAME'
          ;;
        performance_test)
          _arguments -C $_runtime_options $_generators_optins \
            --performance-tool'[Performance tool to be invoked]:NAME'
          ;;
        resource)
          _arguments -C $_runtime_options $_generators_optins \
            --force-plural'[Forces the use of a plural ModelName]' \
            {-o,--orm}'[ORM to be invoked]:NAME' \
            {-c,--resource-controller}'[Resource controller to be invoked]:NAME' \
            {-a,--actions}'[Resource controller to be invoked]:ACTION' \
            {-e,--template-engine}'[Template engine to be invoked]:NAME' \
            --helper'[Indicates when to generate helper]:boolean:(true false)' \
            --assets'[Indicates where to generate assets]:boolean:(true false)'
          ;;
        scaffold)
          _arguments -C $_runtime_options $_generators_optins \
            {-o,--orm}'[ORM to be invoked]:NAME' \
            {-c,--scaffold-controller}'[Scaffold controller to be invoked]:NAME' \
            {-e,--template-engine}'[Template engine to be invoked]:NAME' \
            {-y,--stylesheets}'[Generate Stylesheets]:boolean:(true false)' \
            {-se,--stylesheet-engine}'[Engine for Stylesheets]:STYLESHEET_ENGINE' \
            --force-plural'[Forces the use of a plural ModelName]' \
            --assets'[Indicates where to generate assets]:boolean:(true false)' \
            --helper'[Indicates when to generate helper]:boolean:(true false)'
          ;;
        scaffold_controller)
          _arguments -C $_runtime_options $_generators_optins \
            {-o,--orm}'[ORM to be invoked]:NAME' \
            {-e,--template-engine}'[Template engine to be invoked]:NAME' \
            {-t,--test-framework}'[Test framework to be invoked]:NAME' \
            --force-plural'[Forces the use of a plural ModelName]' \
            --helper'[Indicates when to generate helper]:boolean:(true false)'
          ;;
        session_migration)
          _arguments -C $_runtime_options $_generators_optins \
            {-o,--orm}'[ORM to be invoked]:NAME'
          ;;
        task)
          _arguments -C $_runtime_options $_generators_optins
          ;;
      esac
      ;;
  esac
}

_rails "$@"

# vim:set ft=zsh


================================================
FILE: .zsh.d/functions/_tsocks
================================================
#compdef tsocks

local curcontext="$curcontext" state line ret=1

_arguments -C \
  '*:: :->app' && ret=0

case "$state" in
  app)
    _normal && ret=0
    ;;
esac

return ret

# vim: set ft=sh:


================================================
FILE: .zsh.d/functions/git_info
================================================
# vim:set ft=zsh foldmethod=marker:

git_info() { # {{{
  # http://d.hatena.ne.jp/uasi/20091025/1256458798
  if [[ $(git rev-parse --is-inside-work-tree 2>/dev/null) != "true" ]]; then
    return
  fi

  local git==git
  local st color annotation stashes

  local name=$($git symbolic-ref --short HEAD 2> /dev/null)
  name=${name:="(detached)"}

  local git_dir=$($git rev-parse --git-dir 2> /dev/null)
  local action=$(VCS_INFO_git_getaction "$git_dir")
  action=${action:+"($action)"}

  # Remote and Local changes {{{
  local \
    threshold \
    current_remote \
    merge_name \
    remote_ref \
    revs_count \
    behind_count \
    ahead_count \
    behind_and_ahead

  current_remote=$($git config branch.${name}.remote 2> /dev/null)
  merge_name=$($git config branch.${name}.merge 2> /dev/null)

  local is_tracked
  local -a remote_local_revs
  if [[ "." = "$current_remote" ]] || [[ "x" = "x$current_remote" ]]; then
    # Clone from local
    remote_ref=$merge_name
    remote_local_revs=($($git rev-list --left-right ${merge_name}...HEAD))
    is_tracked=""
  else
    remote_ref="refs/remotes/${current_remote}/${merge_name#refs/heads/}"
    remote_local_revs=($($git rev-list --left-right ${remote_ref}...HEAD))
    is_tracked=" %{${fg[green]}%}♺%{${reset_color}%}"
  fi

  local ahead_commits_color="${fg[green]}"
  local behind_commits_color="${fg[red]}"
  local ahead_annotation="+"
  local behind_annotation="-"

  revs_count=$#remote_local_revs

  local -a behind_commits ahead_commits
  behind_commits=(${(M)remote_local_revs:#<*})
  ahead_commits=(${(M)remote_local_revs:#>*})
  ahead_count=$#ahead_commits
  behind_count=$#behind_commits

  if [[ $ahead_count -gt 0 ]]; then
    behind_and_ahead="${behind_and_ahead} %{$ahead_commits_color%}${ahead_annotation}${ahead_count}%f%b"
  fi
  if [[ $behind_count -gt 0 ]]; then
    behind_and_ahead="${behind_and_ahead} %{$behind_commits_color%}${behind_annotation}${behind_count}%f%b"
  fi
  # }}}

  # stashes count {{{
  declare -a stashes_count
  local stash_annotation="⟐"
  stashes_count=($($git stash list --format='format:%h' 2> /dev/null))
  if [[ $#stashes_count > 0 ]]; then
    stashes=" %{${fg[yellow]}%}${stash_annotation}$#stashes_count"
  fi
  # }}}

  st=$($git status --short --porcelain -b 2> /dev/null)

  # Staged changes {{{
  if [[ -n `echo "$st" | grep "^[UMADRC]"` ]]; then
    # Staged
    color=%F{yellow}
    annotation="${annotation}${color}*"
  fi
  # }}}

  # Untracked changes {{{
  if [[ -n `echo "$st" | grep "??"` ]]; then
    # Untracked
    color=%F{yellow}
    annotation="${annotation}${color}?%f"
  fi
  # }}}

  # Changed, but not staged {{{
  if [[ -n `echo "$st" | grep "^[ ][MD]"` ]]; then
    # Changed, but not staged
    color=%F{red}
    annotation="${annotation}${color}!%f"
  fi
  # }}}

  if [[ -z "$color" ]]; then
    color=%F{green}
  fi

  echo "${color}${name}${action}${annotation}${behind_and_ahead}${stashes}%f%b${is_tracked}"
} # }}}


================================================
FILE: .zsh.d/functions/gyapbox
================================================
# vim:set ft=zsh:

function gyapbox() {
  local base_dir=~/Dropbox/Public/g
  local enable_notify=0

  if whence terminal-notifier >/dev/null; then
    enable_notify=1
  fi

  if [[ -z "$DROPBOX_USER_ID" ]]; then
    echo "\$DROPBOX_USER_ID must be specified"
    return 1
  fi

  if [[ ! -d $base_dir ]]; then
    echo "\$base_dir is not found"
    return 1
  fi

  local preview

  if [[ $1 = '-P' ]]; then
    preview="-P"
  fi

  local timestamp_hash="$(date +%s | md5)"
  local image_filename="${timestamp_hash}.png"
  local image_path="$base_dir/$image_filename"

  if [ $enable_notify ]; then
    terminal-notifier -message "Take a screen capture" -title "Gyapbox"
  fi
  screencapture $preview -i "$base_dir/$image_filename"

  if [[ -e "$image_path" ]]; then
    local url="http://dl.dropboxusercontent.com/u/$DROPBOX_USER_ID/g/$image_filename"

    if [ $enable_notify ] && [[ -n "$url" ]]; then
      terminal-notifier -message "Captured" -title "Gyapbox" -open "$url"
    fi

    echo -n $url | pbcopy
  fi
}


================================================
FILE: .zsh.d/functions/llenv_version_origin
================================================
llenv_version_origin() {
  local llenv="$1"
  local llenv_root="$($llenv root)"
  local global_version_file="${llenv_root}/version"
  local version_origin="$($llenv version-origin)"

  local version_source
  if [[ $version_origin = $global_version_file ]]; then
    version_source='global'
  elif [[ -f $version_origin ]]; then
    version_source='local'
  else
    version_source='shell'
  fi

  echo $version_source
}

# vim:set ft=zsh:


================================================
FILE: .zsh.d/functions/prompt_aereal_setup
================================================
# vim:set ft=zsh foldmethod=marker:

function prompt_aereal_setup() { # {{{
  if ! (which add-zsh-hook > /dev/null); then
    autoload -Uz add-zsh-hooks
  fi
  add-zsh-hook precmd aereal_update_prompt
} # }}}

function detect_ruby_version() { # {{{
  which rbenv > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    return
  fi
  echo "ruby-$(rbenv version-name)"
} # }}}

function detect_perl_version() { # {{{
  which plenv > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    return
  fi
  echo "perl-$(plenv version-name)"
} # }}}

function detect_python_version() { # {{{
  which pyenv > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    return
  fi
  echo "python-$(pyenv version-name)"
} # }}}

function git_repository_relative_dir() { # {{{
  if ! git rev-parse --is-inside-work-tree 1>/dev/null 2>&1; then
    return
  fi

  local project repository_dir prefix
  repository_dir=${${$(git rev-parse --show-cdup 2>/dev/null):-"."}:a}
  project=${repository_dir:t}
  prefix=$(git rev-parse --show-prefix 2>/dev/null)
  echo "${project}${prefix:+":$prefix"}"
} # }}}

function aereal_update_prompt() { # {{{
  local \
    ruby_version \
    perl_version \
    additional_info \
    current_working_directory \
    git_info \
    top_line \
    command_line

  ruby_version="%{${fg[red]}%}$(detect_ruby_version)%{${reset_color}%}"
  perl_version="%{${fg[blue]}%}$(detect_perl_version)%{${reset_color}%}"
  python_version="%{${fg[green]}%}$(detect_python_version)%{${reset_color}%}"

  git_info=$(git_info)
  git_info=${git_info:+" [$git_info]"}

  if git rev-parse --is-inside-work-tree 1>/dev/null 2>&1; then
    current_working_directory="%{${fg[yellow]}%}$(git_repository_relative_dir)%{${reset_color}%}"
  else
    current_working_directory="%{${fg[magenta]}%}%~%{${reset_color}%}"
  fi

  additional_info="${ruby_version} ${perl_version} ${python_version}"

  top_line="${current_working_directory:+"(${current_working_directory})"}${git_info}"

  ok_prompt=" %{${fg[yellow]}%}X | _ | X%{${reset_color}%} < "
  ng_prompt=" %{${fg[red]}%}X > _ < X%{${reset_color}%} < "
  command_line="%(?,$ok_prompt,$ng_prompt)"

  PROMPT="$(echo -n "${top_line}\n${command_line}")"
  RPROMPT=${additional_info:+"($additional_info)"}
}

prompt_aereal_setup "$@"


================================================
FILE: .zsh.d/functions/prompt_aereal_unicode_setup
================================================
# vim:set ft=zsh foldmethod=marker:

function prompt_aereal_unicode_setup() { # {{{
  if ! (which add-zsh-hook > /dev/null); then
    autoload -Uz add-zsh-hooks
  fi
  add-zsh-hook precmd aereal_unicode_update_prompt
} # }}}

function detect_ruby_version() { # {{{
  which rbenv > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    return
  fi
  echo "ruby-$(rbenv version-name)"
} # }}}

function detect_perl_version() { # {{{
  which plenv > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    return
  fi
  echo "perl-$(plenv version-name)"
} # }}}

function detect_python_version() { # {{{
  which pyenv > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    return
  fi
  echo "python-$(pyenv version-name)"
} # }}}

function git_repository_relative_dir() { # {{{
  if ! git rev-parse --is-inside-work-tree 1>/dev/null 2>&1; then
    return
  fi

  local project repository_dir prefix
  repository_dir=${${$(git rev-parse --show-cdup 2>/dev/null):-"."}:a}
  project=${repository_dir:t}
  prefix=$(git rev-parse --show-prefix 2>/dev/null)
  echo "${project}${prefix:+":$prefix"}"
} # }}}

function aereal_unicode_update_prompt() { # {{{
  local \
    ruby_version \
    perl_version \
    additional_info \
    current_working_directory \
    git_info \
    top_line \
    command_line

  ruby_version="%{${fg[red]}%}$(detect_ruby_version)%{${reset_color}%}"
  perl_version="%{${fg[blue]}%}$(detect_perl_version)%{${reset_color}%}"
  python_version="%{${fg[green]}%}$(detect_python_version)%{${reset_color}%}"

  git_info=$(git_info)
  git_info=${git_info:+" [$git_info]"}

  if git rev-parse --is-inside-work-tree 1>/dev/null 2>&1; then
    current_working_directory="%{${fg[yellow]}%}$(git_repository_relative_dir)%{${reset_color}%}"
  else
    current_working_directory="%{${fg[magenta]}%}%~%{${reset_color}%}"
  fi

  additional_info="${ruby_version} ${perl_version} ${python_version}"

  top_line="${current_working_directory:+"(${current_working_directory})"}${git_info}"

  ok_prompt=" %{${fg[yellow]}%}✘╹◡╹✘%{${reset_color}%} < "
  ng_prompt=" %{${fg[red]}%}✘>﹏<✘%{${reset_color}%} < "
  command_line="%(?,$ok_prompt,$ng_prompt)"

  PROMPT="$(echo -n "${top_line}\n${command_line}")"
  RPROMPT=${additional_info:+"($additional_info)"}
}

prompt_aereal_unicode_setup "$@"


================================================
FILE: .zsh.d/functions/prompt_lambda_setup
================================================
function prompt_lambda_setup() { # {{{
  if ! (whence add-zsh-hook >/dev/null); then
    autoload -Uz add-zsh-hooks
  fi
  add-zsh-hook precmd __prompt_lambda_update

  # vcs_info configuration {{{
  autoload -Uz vcs_info
  zstyle ':vcs_info:*' max-exports 3
  zstyle ':vcs_info:*' enable git
  zstyle ':vcs_info:git:*' formats '[%b]' '%c%u %m'
  zstyle ':vcs_info:git:*' actionformats '[%b]' '%c%u %m' '<!%a>'
  zstyle ':vcs_info:git:*' check-for-changes true
  zstyle ':vcs_info:git:*' stagedstr '+'
  zstyle ':vcs_info:git:*' unstagedstr '-'
  # }}}

  autoload -Uz llenv_version_origin
} # }}}

function __prompt_lambda_update() { # {{{
  # components {{{
  local ok_lambda="%F{cyan}λ%f"
  local bad_lambda="%F{red}λ%f"
  local command_line="%(?.${ok_lambda}.${bad_lambda}) ... "
  local working_directory="%F{cyan}%~%f"
  local accessory_info="${working_directory}"
  local git_msg

  # Git info {{{
  LANG=C vcs_info
  local -a git_msgs
  [[ -n "$vcs_info_msg_0_" ]] && git_msgs+=("%F{green}${vcs_info_msg_0_}%f")
  [[ -n "$vcs_info_msg_1_" ]] && git_msgs+=("%F{yellow}${vcs_info_msg_1_}%f")
  [[ -n "$vcs_info_msg_2_" ]] && git_msgs+=("%F{red}${vcs_info_msg_2_}%f")
  git_msg="${(j: :)git_msgs}"
  # }}}
  # Perl version {{{
  local perl_version_source=$(llenv_version_origin plenv)
  case "$perl_version_source" in
    "local"|shell)
      accessory_info="%F{blue}Perl-$(plenv version-name)%f ${accessory_info}"
      ;;
    *)
      ;;
  esac
  # }}}
  # Ruby version {{{
  local ruby_version_source=$(llenv_version_origin rbenv)
  case "$ruby_version_source" in
    "local"|shell)
      accessory_info="%F{red}Ruby-$(rbenv version-name)%f ${accessory_info}"
      ;;
    *)
      ;;
  esac
  # }}}
  # }}}

  # join by newline
  local -a left_prompt_lines
  left_prompt_lines=(
    ${accessory_info}
    ${command_line}
  )

  # join by whitespace
  local -a right_prompt_components
  right_prompt_components=(
    ${git_msg}
  )

  PROMPT="${(F)left_prompt_lines}"
  RPROMPT="${(j: :)right_prompt_components}"
} # }}}

prompt_lambda_setup "$@"

# vim:set ft=zsh foldmethod=marker:


================================================
FILE: .zsh.d/functions/prompt_yuno_setup
================================================
function prompt_yuno_setup() { # {{{
  if ! (whence add-zsh-hook >/dev/null); then
    autoload -Uz add-zsh-hooks
  fi
  add-zsh-hook precmd __prompt_yuno_update

  # zsh-git-prompt
  export ZSH_GIT_PROMPT_ROOT="$ZSH_HOME/plugins/zsh-git-prompt"
  if [[ -f "$ZSH_GIT_PROMPT_ROOT/zshrc.sh" ]]; then
    export ZSH_THEME_GIT_PROMPT_CACHE=1
    source "$ZSH_GIT_PROMPT_ROOT/zshrc.sh"
  fi
  if [[ -f "$ZSH_GIT_PROMPT_ROOT/dist/build/gitstatus/gitstatus" ]]; then
    export GIT_PROMPT_EXECUTABLE='haskell'
  fi

  export ZSH_THEME_GIT_PROMPT_PREFIX=""
  export ZSH_THEME_GIT_PROMPT_SUFFIX=""
  export ZSH_THEME_GIT_PROMPT_SEPARATOR="|"
  export ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_bold[magenta]%}"
  export ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[blue]%}%{.%G%}"
  export ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}%{!%G%}"
  export ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[yellow]%}%{!%G%}"
  export ZSH_THEME_GIT_PROMPT_BEHIND="%{<%G%}"
  export ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[green]%}%{>%G%}"
  export ZSH_THEME_GIT_PROMPT_UNTRACKED="%{?%G%}"
  export ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}%{*%G%}"

  autoload -Uz llenv_version_origin
} # }}}

function __prompt_yuno_update() { # {{{
  # components {{{
  local ok_yuno="%F{yellow}✘╹◡╹✘%f"
  local bad_yuno="%F{red}✘>﹏<✘%f"
  local command_line="%(?.${ok_yuno}.${bad_yuno}) < "
  local working_directory="%F{cyan}%~%f"
  local accessory_info="${working_directory}"

  # Perl version {{{
  local perl_version_source=$(llenv_version_origin plenv)
  case "$perl_version_source" in
    "local"|shell)
      accessory_info="%F{blue}Perl-$(plenv version-name)%f ${accessory_info}"
      ;;
    *)
      ;;
  esac
  # }}}
  # Ruby version {{{
  local ruby_version_source=$(llenv_version_origin rbenv)
  case "$ruby_version_source" in
    "local"|shell)
      accessory_info="%F{red}Ruby-$(rbenv version-name)%f ${accessory_info}"
      ;;
    *)
      ;;
  esac
  # }}}
  # }}}

  # join by newline
  local -a left_prompt_lines
  left_prompt_lines=(
    ${accessory_info}
    ${command_line}
  )

  # join by whitespace
  local -a right_prompt_components
  right_prompt_components=(
    $(git_super_status)
  )

  PROMPT="${(F)left_prompt_lines}"
  RPROMPT="${(j: :)right_prompt_components}"
} # }}}

prompt_yuno_setup "$@"

# vim:set ft=zsh foldmethod=marker:


================================================
FILE: .zshenv
================================================
# to avoid overwritten PATH via /usr/libexec/path_helper
# refs. https://github.com/Homebrew/homebrew-core/pull/32074#issuecomment-421381869
unsetopt GLOBAL_RCS

# environment
export LC_ALL=ja_JP.UTF-8
export DEVEL_PATH=$HOME/devel
export EDITOR=vim
export HOMEBREW_PATH=/opt/homebrew
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_ENV_HINTS=1
export HOMEBREW_NO_INSECURE_REDIRECT=1
export HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED=1

if [[ -f $HOMEBREW_PATH/bin/bat ]]; then
  export HOMEBREW_BAT=1
fi

path=(
  $HOME/bin(N-/)
  $DEVEL_PATH/bin(N-/)
  $HOME/.mysqlenv/bin(N-/)
  $HOME/.mysqlenv/shims(N-/)
  $HOME/.pyenv/bin(N-/)
  $HOME/.pyenv/shims(N-/)
  $HOME/.rbenv/bin(N-/)
  $HOME/.rbenv/shims(N-/)
  $HOME/.plenv/bin(N-/)
  $HOME/.plenv/shims(N-/)
  $HOME/.ndenv/bin(N-/)
  $HOME/.ndenv/shims(N-/)
  $HOME/.cargo/bin(N-/)
  $GOPATH/bin(N-/)
  $HOME/.local/share/aquaproj-aqua/bin(N-/)
  $HOME/.rd/bin(N-/)
  $HOME/.local/share/mise/shims(N-/)
  $HOMEBREW_PATH/opt/node@20/bin(N-/)
  $HOMEBREW_PATH/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin(N-/)
  $HOMEBREW_PATH/opt/perl/bin(N-/)
  $HOMEBREW_PATH/lib/ruby/gems/2.7.0/bin(N-/)
  $HOMEBREW_PATH/opt/ruby/bin(N-/)
  $HOMEBREW_PATH/opt/mysql-client/bin(N-/)
  $HOMEBREW_PATH/opt/mysql-client@8.0/bin(N-/)
  $HOMEBREW_PATH/opt/coreutils/libexec/gnubin(N-/)
  $HOMEBREW_PATH/opt/postgresql@16/bin(N-/)
  $HOMEBREW_PATH/bin(N-/)
  /usr/local/go/bin(N-/)
  /mnt/c/Windows(N-/)
  /mnt/c/Windows/System32/OpenSSH(N-/)
  /mnt/c/Users/trast/AppData/Local/Programs/Microsoft\ VS\ Code/bin(N-/)
  /usr/bin(N-/)
  /usr/sbin(N-/)
  /bin(N-/)
  /sbin(N-/)
)

typeset -U manpath
manpath=(
  $HOMEBREW_PATH/share/man(N-/)
  $HOMEBREW_PATH/opt/coreutils/libexec/gnuman(N-/)
  /usr/share/man(N-/)
)

export PAGER=less
export LESS='--LONG-PROMPT --RAW-CONTROL-CHARS --tabs=3'

if whence code 2>&1 >/dev/null; then
  EDITOR='code --wait'
fi

if whence code 2>&1 >/dev/null; then
  EDITOR='code --wait'
fi

MACVIM_APP=
local -a macvim_app_candidates=(
  /opt/homebrew-cask/Caskroom/macvim-kaoriya/*/MacVim.app(N-/)
  $HOMEBREW_PATH/opt/macvim/MacVim.app(N-/)
  $HOME/Applications/MacVim.app(N-/)
  /Applications/MacVim.app(N-/)
)
if (( $#macvim_app_candidates > 0 )); then
  MACVIM_APP="$macvim_app_candidates[1]"
fi
export MACVIM_APP

if [[ -x /usr/libexec/java_home ]] && /usr/libexec/java_home >/dev/null 2>&1; then
  export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
fi

RUBY_CONFIGURE_OPTS=""
openssl_dir="$HOMEBREW_PATH/opt/openssl@1.1"
if [[ -d "$openssl_dir" ]]; then
  RUBY_CONFIGURE_OPTS="${RUBY_CONFIGURE_OPTS} --with-openssl-dir=${openssl_dir}"
fi

readline_dir="$HOMEBREW_PATH/opt/readline"
if [[ -d "$readline_dir" ]]; then
  RUBY_CONFIGURE_OPTS="${RUBY_CONFIGURE_OPTS} --with-readline-dir=${readline_dir}"
fi
export RUBY_CONFIGURE_OPTS

rover_env="$HOME/.rover/env"
if [[ -f "$rover_env" ]]; then
  . $rover_env
fi


================================================
FILE: .zshrc
================================================
bindkey -v

# function load path {{{
typeset -Ua fpath
fpath=(
  $HOME/.zsh.d/functions(N-/)
  $HOMEBREW_PATH/share/zsh-completions(N-/)
  $HOMEBREW_PATH/share/zsh/site-functions(N-/)
  $HOMEBREW_PATH/share/zsh/functions(N-/)
  $HOMEBREW_PATH/opt/docker-completion/share/zsh/site-functions(N-/)
  $HOMEBREW_PATH/opt/docker-compose-completion/share/zsh/site-functions(N-/)
  $fpath
)
# }}}

# fundamental options {{{
export REPORTTIME=1

setopt extended_glob
# }}}

# history {{{
HISTFILE=$HOME/.zsh_history
HISTSIZE=10000000
SAVEHIST=$HISTSIZE
set \
  extended_history \
  hist_ignore_dups \
  hist_ignore_space \
  inc_append_history \
  share_history \
  no_flow_control \
  hist_save_no_dups \
  hist_ignore_all_dups
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey -v "^N" history-beginning-search-forward-end
bindkey -v "^P" history-beginning-search-backward-end
bindkey -v "^R" history-incremental-pattern-search-backward
bindkey -v "^S" history-incremental-pattern-search-forward
# }}}

# color {{{
autoload -Uz colors; colors
[[ -f "$HOME/.dircolors" ]] && source "$HOME/.dircolors"
# }}}

# completion {{{
zmodload -i zsh/complist
autoload -U compinit && compinit -C
setopt \
  complete_in_word \
  glob_complete  \
  hist_expand \
  no_beep \
  numeric_glob_sort

# Format {{{
zstyle ':completion:*' format '%F{magenta}-- %d --%f'
zstyle ':completion:*' group-name ''
zstyle ':completion:*:options' description yes
zstyle ':completion:*:options' auto-description '%d'
zstyle ':completion:*:corrections' format ' %F{yellow}-- %d (errors: %e) --%f'
zstyle ':completion:*:descriptions' format ' %F{magenta}-- %d --%f'
zstyle ':completion:*:messages' format ' %F{blue}-- %d --%f'
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
zstyle ':completion:*:default' list-prompt '%S%M matches%s'

# Show selected candidate
zstyle ':completion:*:default' menu select=2

zstyle ':completion:*:default' list-colors "${(s.:.)LS_COLORS}"

# Fuzzy match
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z} r:|[._-]=*'
zstyle ':completion:*' completer _oldlist _complete _match _ignored _approximate _prefix

# sudo
zstyle ':completion:sudo:*' environ PATH="$SUDO_PATH:$PATH"

# Directory candidates order
zstyle ':completion:*:cd:*' tag-order local-directories path-directories

# Ignore current directory from directory candidates
zstyle ':completion:*' ignore-parents parent pwd

# Process candidates
zstyle ':completion:*:*:*:*:processes' command 'ps -u $USER -o pid,user,comm -w'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01'
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:*:kill:*' force-list always
zstyle ':completion:*:*:kill:*' insert-ids single

# Show man candidates with section
zstyle ':completion:*:manuals' separate-sections true
# }}}

# key mapping {{{
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -M menuselect 'k' vi-up-line-or-history
# }}}

# }}}

# url-quote-magic {{{
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
# }}}

# expand backslash to tilde {{{
# Originally from: https://github.com/cho45/dotfiles/blob/64ea90d17aaf6c46a2cb090f2e12a6e3d7df6034/.zshrc#L245
expand-to-home-or-complete() { # {{{
  if [ "$LBUFFER" = "" -o "$LBUFFER[-1]" = " " ]; then
    LBUFFER+="~/"
  else
    zle self-insert
  fi
} # }}}

zle -N expand-to-home-or-complete
bindkey -v "\\" expand-to-home-or-complete
# }}}

# ghq {{{
__widget_cd_repo() {
  local selected_repo=$( ghq list | fzf )
  if [[ -n "$selected_repo" ]]; then
    BUFFER="pushd $(ghq root)/${selected_repo}"
    zle accept-line
  fi
  zle -R -c
}
zle -N __widget_cd_repo
bindkey -v "^]^G" __widget_cd_repo
# }}}

# git {{{
__widget_git_recent_branches() {
  local selected_branch=$( \
    git for-each-ref --sort=-committerdate --format="%(refname)	%(committerdate:relative)" -- refs/heads \
    | sed -E 's/refs\/heads\///' \
    | fzf --query "$LBUFFER" \
    | cut -f1 \
    )
  if [[ -n "$selected_branch" ]]; then
    BUFFER="git checkout ${selected_branch}"
    zle accept-line
  fi
  zle -R -c
}
zle -N __widget_git_recent_branches
bindkey -v "^]gr" __widget_git_recent_branches
# }}}

# tmux: split window with vim-like key mappings {{{
# vertical split {{{
tmux_vsplit() {
  BUFFER="tmux split-window -d -p 50 -h '$BUFFER'" # TODO: escape
  zle accept-line
}
zle -N tmux_vsplit
bindkey -v "^Wv" tmux_vsplit
# }}}

# horizontal split {{{
tmux_split() {
  BUFFER="tmux split-window -d -p 50 -v '$BUFFER'" # TODO: escape
  zle accept-line
}
zle -N tmux_split
bindkey -v "^Ws" tmux_split
# }}}
# }}}

# alias {{{
alias :q=exit
if whence eza >/dev/null 2>&1; then
  alias  l='eza -aF'
  alias ls='eza -aF'
  alias ll='eza -alF'
else
  if whence gls >/dev/null; then
    alias  l='gls --color=auto -AF'
    alias ls='gls --color=auto -AF'
    alias ll='gls --color=auto -AFl'
  else
    alias  l='ls -GAF'
    alias ls='ls -GAF'
    alias ll='ls -GAFl'
  fi
fi
whence hub >/dev/null 2>&1 && alias git=hub
# }}}

# abbrev {{{
setopt extended_glob
typeset -A abbreviations
abbreviations=(
  'Ig' '| rg'
  'It' '| tail'
  'Ij' '| jq'
  'DC' 'docker-compose'
)

magic-abbrev-expand() {
  local MATCH
  LBUFFER=${LBUFFER%%(#m)[-_a-zA-Z0-9]#}
  LBUFFER+=${abbreviations[$MATCH]:-$MATCH}
  zle self-insert
}

no-magic-abbrev-expand() {
  LBUFFER+=' '
}

zle -N magic-abbrev-expand
zle -N no-magic-abbrev-expand
bindkey -v " " magic-abbrev-expand
bindkey -v "^x " no-magic-abbrev-expand
# }}}

# prompt {{{
setopt \
  prompt_subst \
  prompt_percent \
  transient_rprompt
autoload -U promptinit && promptinit

autoload -Uz vcs_info
zstyle ':vcs_info:*' max-exports 4
zstyle ':vcs_info:(git|svn):*' formats '%R' '%S' '%b' '%s'
zstyle ':vcs_info:(git|svn):*' actionformats '%R' '%S' '%b|%a' '%s'
zstyle ':vcs_info:*' formats '%R' '%S' '%s:%b' '%s'
zstyle ':vcs_info:*' actionformats '%R' '%S' '%s:%b|%a' '%s'

__configure_prompt() {
  local ok_yuno="%F{yellow}✘╹◡╹✘%f"
  local bad_yuno="%F{red}✘>﹏<✘%f"
  local command_line="[%D{%Y-%m-%d} %*] %(?.${ok_yuno}.${bad_yuno}) < "

  psvar=()
  STY= LANG=en_US.UTF-8 vcs_info
  repos=`print -nD "$vcs_info_msg_0_"`
  if [[ -n "$vcs_info_msg_1_" ]]; then
      vcs="$vcs_info_msg_3_"
  else
      vcs=''
  fi
  [[ -n "$repos" ]] && psvar[2]="$repos"
  [[ -n "$vcs_info_msg_1_" ]] && psvar[3]="$vcs_info_msg_1_"
  [[ -n "$vcs_info_msg_2_" ]] && psvar[1]="$vcs_info_msg_2_"

  local psdirs='[%F{yellow}%3(v|%32<..<%3v%<<|%60<..<%~%<<)%f]'
  local psvcs='%3(v|[%25<\<<%F{yellow}%2v%f@%F{blue}%1v%f%<<]|)'

  local git_is_dirty git_local_changes git_upstream_changes
  if git rev-parse --is-inside-work-tree &>/dev/null; then
    command git diff --no-ext-diff --quiet --exit-code || git_is_dirty='%F{yellow}*%f'
    local git_upstream_status=$(command git rev-list --left-right --count ...@{u} 2>/dev/null)
    git_upstream_status=(${(ps:\t:)git_upstream_status})
    local left=${git_upstream_status[1]} right=${git_upstream_status[2]}
    (( ${left:-0} > 0 )) && git_local_changes='%F{green}⇡%f'
    (( ${right:-0} > 0 )) && git_upstream_changes='%F{red}⇣%f'
  fi

  export PROMPT="${command_line}"

  export RPROMPT="${psdirs}${git_is_dirty}${git_local_changes}${git_upstream_changes}${psvcs}"
}
autoload -Uz add-zsh-hooks
add-zsh-hook precmd __configure_prompt
# }}}

# Show anyenv version {{{
notify_llenv_version() {
  for llenv in rbenv plenv ndenv pyenv; do
    llenv_root="${HOME}/.${llenv}" # XXX
    if whence $llenv >/dev/null && [[ "$(${llenv} version-origin)" != "$llenv_root/version" ]]; then
      echo "$fg[yellow]${llenv} changed version: $(${llenv} version-name)$reset_color"
    fi
  done
}
add-zsh-hook chpwd notify_llenv_version
# }}}

# Update current window name {{{
update_window_title() { # {{{
  emulate -L zsh
  local -a cmd
  cmd=(${(z)2})

  case $cmd[1] in
    *=*) # PLENV_VERSION=5.14.2 plenv exec perl -v => plenv
      echo -n "k$cmd[2]:t\\"
      return
      ;;
    ls|gls|clear|pwd)
      echo -n "k$ZSH_NAME\\"
      return
      ;;
    sudo|cd)
      echo -n "k$cmd[1] $cmd[2]:t\\"
      return
      ;;
    *)
      echo -n "k$cmd[1]:t\\"
      return
      ;;
  esac

  local -A jt
  jt=(${(kv)jobtexts})
  $cmd >>(read num rest cmd=(${(z)${(e):-\$jt$num}}) echo -n "k$cmd[1]:t\\") 2>/dev/null
} # }}}

if [ "$TMUX" ] && [ "$TERM_PROGRAM" != "vscode" ]; then
  add-zsh-hook preexec update_window_title
fi
# }}}

# direnv {{{
if whence direnv >/dev/null; then
  eval "$(direnv hook zsh)"
fi
# }}}

# syntax highlight {{{
if [[ -f "$HOMEBREW_PATH/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]]; then
  source $HOMEBREW_PATH/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
fi
# }}}

# substring-search {{{
if [[ -f "$HOMEBREW_PATH/opt/zsh-history-substring-search/zsh-history-substring-search.zsh" ]]; then
  source $HOMEBREW_PATH/opt/zsh-history-substring-search/zsh-history-substring-search.zsh

  bindkey -M vicmd "k" history-substring-search-up
  bindkey -M vicmd "j" history-substring-search-down
fi
# }}}

if ! ssh-add -l 2>/dev/null; then
  echo '---> Add SSH private key'
  ssh-add
fi


if [[ -f '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' ]]; then
  source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc'
fi

if whence op >/dev/null; then
  eval "$(op completion zsh)"
  compdef _op op
fi

FZF_DEFAULT_OPTS='--layout reverse'

# tmux {{{
if whence tmux >/dev/null && [ -z "$TMUX" ] && [ "$TERM_PROGRAM" != "vscode" ]; then
  if $(tmux has-session 2>/dev/null); then
    tmux attach-session -t "${HOST%%.*}"
  else
    tmux new-session -s "${HOST%%.*}"
  fi
  FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --tmux"
fi
# }}}

export FZF_DEFAULT_OPTS

# vim:set foldmethod=marker:


================================================
FILE: Brewfile
================================================
brew "aqua"
brew "readline"
brew "awscli"
brew "bat"
brew "coreutils"
brew "curl"
brew "direnv"
brew "eza"
brew "fzf"
brew "gh"
brew "ghq"
brew "git"
brew "gnu-sed"
brew "gnu-tar"
brew "go"
brew "jq"
brew "ko"
brew "mise"
brew "moreutils"
brew "mysql-client"
brew "openssh"
brew "pinact"
brew "postgresql@16"
brew "proctools"
brew "pstree"
brew "reattach-to-user-namespace"
brew "ripgrep"
brew "shared-mime-info"
brew "tig"
brew "tmux"
brew "tree"
brew "zsh"
brew "zsh-completions"
brew "zsh-history-substring-search"
brew "zsh-syntax-highlighting"
cask "1password-cli"
cask "aquaskk"
cask "font-cascadia-code"
cask "font-hackgen"
cask "gcloud-cli"
cask "ghostty"
cask "hammerspoon"
cask "karabiner-elements"
cask "rancher"
cask "raycast"
cask "visual-studio-code"
cask "vivaldi"
cask "witch"


================================================
FILE: README.md
================================================
# dotfiles

![Build Status](https://travis-ci.org/aereal/dotfiles.png?branch=master)

This repository includes a lot of configuration file is used and optimized for me.

You can clone or fork them freely, but I don't guarantee that they fit you.

## Tools configured

 * Git
 * Vim
 * tmux
 * Zsh
 * OS X (Preferences)
 * Ruby tools
   * Capistrano
   * Pow
   * Pry
   * Preferred gems

## Tools included

These tools are included as submodule.

 * [cdd](https://github.com/m4i/cdd) - The utility to change working directory over the terminal multiplexor's window

## Policies

 * Automatation
 * Vim is the editor
 * Maximize the performance in loved environment

### Automation

The setup process should be automated to keep syncing environment easy.

### Vim is the editor

Using the tools as over the their domain is painful.

### Maximize the performance in loved environment

It is stupid to spoil the performance to keep portability.

## Installation

to be documented ...


================================================
FILE: Rakefile
================================================
require 'pathname'

# methods
def env_or_default(env: nil, default: nil)
  ENV.fetch(env, default)
end

def ensure_pathname(maybe_pathname)
  maybe_pathname === Pathname ? maybe_pathname : Pathname.new(maybe_pathname)
end

class Recipe
  include FileUtils::Verbose

  attr_reader :name, :source, :destination

  def initialize(name: nil, source: nil, destination: nil)
    @name        = name
    @source      = ensure_pathname(source)
    @destination = ensure_pathname(destination)
  end

  def install
    if self.destination.exist?
      puts "Skip #{self.name}"
      return
    end
    ln_s self.source.to_s, self.destination.to_s
  end

  def clean
    unless self.destination.exist? && self.destination.symlink?
      puts "Skip #{self.destination}; the destination seems not to be installed with the Rake task"
      return
    end
    rm self.destination.to_s
  end
end

# constants
INSTALL_DIRECTORY    = ensure_pathname(env_or_default(env: 'INSTALL_DIRECTORY', default: '~')).expand_path
SOURCE_DIRECTORY     = ensure_pathname(env_or_default(env: 'SOURCE_DIRECTORY', default: Dir.pwd)).expand_path
DOTFILES_IGNORE_FILE = ensure_pathname(env_or_default(env: 'DOTFILES_IGNORE_FILE', default: SOURCE_DIRECTORY + '.dotfiles.ignore')).expand_path

IGNORED_DOTFILES     = DOTFILES_IGNORE_FILE.each_line.map {|f| SOURCE_DIRECTORY.join(f.strip) }
DOTFILES             = SOURCE_DIRECTORY.each_child.select {|e| e.basename.to_s.start_with?(?.) }
INSTALLABLE_DOTFILES = DOTFILES - IGNORED_DOTFILES
INSTALL_NAMES        = INSTALLABLE_DOTFILES.map {|f| f.relative_path_from(SOURCE_DIRECTORY) }
INSTALL_RECIPES      = INSTALL_NAMES.map {|name|
  Recipe.new(name: name, source: SOURCE_DIRECTORY.join(name), destination: INSTALL_DIRECTORY.join(name))
}

task :default => :install

desc "Install dotfiles into #{INSTALL_DIRECTORY}"
task :install do
  INSTALL_RECIPES.each do |recipe|
    recipe.install
  end
end

desc "Cleanup dotfiles that installed into #{INSTALL_DIRECTORY}"
task :clean do
  INSTALL_RECIPES.each do |recipe|
    recipe.clean
  end
end


================================================
FILE: bin/abbrev-cwd.go
================================================
package main

import (
	"os"
	"os/user"
	"path/filepath"
	"strings"
)

func main() {
	var err error
	cwd, err := os.Getwd()
	if err != nil {
		panic(err)
	}
	currentUser, err := user.Current()
	if err != nil {
		panic(err)
	}
	homeDir := currentUser.HomeDir
	cwdWithTilde := strings.Replace(cwd, homeDir, "~/", 1)
	hiers := strings.Split(cwdWithTilde, "/")
	hiersLen := len(hiers)
	var abbreved []string
	for idx, h := range hiers {
		var formatted string
		if (idx == hiersLen-1) || h == "" {
			formatted = h
		} else {
			formatted = string(h[0])
		}
		abbreved = append(abbreved, formatted)
	}
	println(filepath.Join(abbreved...))
}


================================================
FILE: bin/diff-highlight-wrapper
================================================
#!/bin/sh

if test -x brew; then
  git_prefix=`brew --prefix git`
else
  git_prefix='/usr/local'
fi
diff_highlight_command=$git_prefix/share/git-core/contrib/diff-highlight/diff-highlight

if test -x $diff_highlight_command; then
  $diff_highlight_command | less
else
  less
fi


================================================
FILE: bin/generate-typable-words
================================================
#!/usr/bin/env ruby

LEFT_CHARS       = %w( a s d f g w e r v 3 4 5 )
LEFT_CANDIDATES  = LEFT_CHARS.flat_map {|c| [c, c.upcase] }
RIGHT_CHARS      = %w( h j k l i o p n 8 9 0 )
RIGHT_CANDIDATES = RIGHT_CHARS.flat_map {|c| [c, c.upcase] }
CANDIDATES       = LEFT_CANDIDATES.shuffle.zip(RIGHT_CANDIDATES.shuffle).flatten
MAX_RETRY_COUNT  = 3

def generate_typable_words(candidates, length)
  candidates.take(length)
end

def generate_strong_typable_words(candidates, length, retry_count = 0)
  chars = generate_typable_words(candidates, length)
  if (retry_count <= MAX_RETRY_COUNT) && !(chars.grep(/[0-9]/).any? && chars.grep(/[a-z]/).any? && chars.grep(/[A-Z]/).any?)
    generate_strong_typable_words(candidates, length, retry_count + 1)
  else
    chars
  end
end

length        = ARGV.grep(/[0-9]+/).first || 8
should_strong = ARGV.include?('--strong')
strategy      = should_strong ? :generate_strong_typable_words : :generate_typable_words
word          = self.__send__(strategy, CANDIDATES, length.to_i)

print word.join('')


================================================
FILE: bin/git-authors.go
================================================
package main

// original: https://github.com/dann/dotfiles/blob/master/devbin/git-authors

import (
  "fmt"
  "log"
  "os/exec"
  "regexp"
  "sort"
  "strconv"
  "strings"
)

type Commit struct {
  Author string
  Commits int
  Insertions int
  Deletions int
}
func (c Commit) Ratio(total int) float64 {
  return float64(c.Commits) / float64(total) * 100.0
}

type CommitsSummary []*Commit

func (cs CommitsSummary) Len() int {
  return len(cs)
}

func (cs CommitsSummary) Swap(i, j int) {
  cs[i], cs[j] = cs[j], cs[i]
}

type ByCommitsCount struct {
  CommitsSummary
}

func (bcc ByCommitsCount) Less(i, j int) bool {
  return bcc.CommitsSummary[i].Commits < bcc.CommitsSummary[j].Commits
}

func String2Int(s string) int {
  var (
    i int64
    e error
  )
  if i, e = strconv.ParseInt(s, 0, 0); e != nil {
    log.Fatal(e)
    return -1
  }
  return int(i)
}

func CreateCommit(author string, commits int, ins int, del int) *Commit {
  c := new(Commit)
  c.Author = author
  c.Commits = commits
  c.Insertions = ins
  c.Deletions = del
  return c
}

func main() {
  out, err := exec.Command("git", "--no-pager", "log", "--format=%H %aN <%aE>", "--no-merges", "--shortstat").Output()
  if err != nil {
    log.Fatal(err)
  }

  commitPattern := regexp.MustCompile(`^([0-9a-f]{40}) (.*)$`)
  statsPattern  := regexp.MustCompile(`(\d+) insert.* (\d+) delet*`)

  var currentAuthor string
  commitCounts := map[string]int{}
  inserts := map[string]int{}
  deletes := map[string]int{}
  totalCommits := 0
  for _, l := range(strings.Split(string(out), "\n")) {
    if commitPattern.MatchString(l) {
      totalCommits += 1
      m := commitPattern.FindStringSubmatch(l)
      if len(m) == 0 { continue }
      currentAuthor = m[2]
    } else if statsPattern.MatchString(l) {
      m := statsPattern.FindStringSubmatch(l)
      if len(m) == 0 { continue }
      ins := String2Int(m[1])
      del := String2Int(m[2])
      commitCounts[currentAuthor] += 1
      inserts[currentAuthor] += ins
      deletes[currentAuthor] += del
    }
  }

  var commits CommitsSummary
  for author, commitCount := range(commitCounts) {
    c := CreateCommit(author, commitCount, inserts[author], deletes[author])
    commits = append(commits, c)
  }
  sort.Sort(sort.Reverse(ByCommitsCount{commits}))

  fmt.Printf("%10s %10s %10s %10s\n", "%", "commits", "+++", "---")
  for _, c := range(commits) {
    fmt.Printf("%9.2f%% %10d %10d %10d  %s\n",
      c.Ratio(totalCommits),
      c.Commits,
      c.Insertions,
      c.Deletions,
      c.Author)
  }
}


================================================
FILE: bin/git-catchup
================================================
#!/bin/bash

# Catching up with upstream

set -e

command git fetch -q

develop_branch='staging/master'
upstream_ref=$develop_branch\@\{u\}

if git rev-parse @{u} 2>/dev/null; then
  command git merge --no-ff $upstream_ref
else
  git rebase $upstream_ref
fi


================================================
FILE: bin/git-check-dirty
================================================
#!/bin/bash

# refs. https://unix.stackexchange.com/questions/155046/determine-if-git-working-directory-is-clean-from-a-script

if [[ -z "$(git status --short --untracked-files=normal --porcelain)" ]]; then
  exit 0
fi

exit 1


================================================
FILE: bin/git-git
================================================
#!/bin/sh

exec git $@


================================================
FILE: bin/git-issue-checkout
================================================
#!/usr/bin/env zsh

local matched=$(
  git for-each-ref \
    --sort=committerdate \
    --format='%(refname)' \
    refs/heads | \
    grep "$1"
)

if [[ -z $matched ]]; then
  echo "Issue tracking branch is not found" > /dev/stderr
  exit 1
fi

git checkout ${matched#refs/heads/}


================================================
FILE: bin/git-normalize-url
================================================
#!/usr/bin/env ruby

ORIGIN = 'origin'

def run(argv)
  remote, * = ARGV
  remote ||= ORIGIN
  prev_remote_url = `git remote get-url #{remote}`.strip
  if prev_remote_url.start_with?('ssh://')
    require 'uri'
    prev_remote_url = URI.parse(prev_remote_url)
    new_remote_url = '%s@%s:%s' % [prev_remote_url.user, prev_remote_url.host, prev_remote_url.path[1..-1]]
    system 'git', 'remote', 'set-url', remote, new_remote_url
    puts "#{prev_remote_url} => #{new_remote_url}"
  end
end

run(ARGV)


================================================
FILE: bin/git-recent-branches
================================================
#!/usr/bin/env zsh

function __git-recent-branches() {
  local count=${1:-10}
  git for-each-ref \
    --sort=-committerdate \
    --format="%(objectname:short)	%(committerdate:relative)	%(refname)" \
    refs/heads \
    | head -n $count \
    | sed -e 's/refs\/heads\///'
}

__git-recent-branches $@


================================================
FILE: bin/git-refresh-branch
================================================
#!/usr/bin/env perl

use Carp ();
use List::Util qw(reduce);

sub main {
  my ($rollback_ref) = @_;

  Carp::croak 'rollback_ref must be given' unless $rollback_ref;

  my $current_branch = do {
    my $out = `git symbolic-ref --short HEAD`;
    chomp $out;
    $out;
  };
  my $old_branch_name = old_branch_name($current_branch);
  seq_run(
    ['git', 'branch', '-m', $current_branch, $old_branch_name],
    ['git', 'checkout', '-b', $current_branch, $rollback_ref],
  );
}

sub old_branch_name {
  my ($name) = @_;
  my $time = time();
  return "prev-$time-$name";
}

sub seq_run {
  return List::Util::reduce {
    my ($last_result, $cmd) = ($a, $b);
    $last_result == 0 ? run($cmd) : $last_result;
  } 0, @_;
}

sub run {
  my ($cmd) = @_;
  my $line = join ' ', @$cmd;
  Carp::carp $line;
  return system @$cmd;
}

main(@ARGV);


================================================
FILE: bin/git-run
================================================
#!/bin/bash

# originally written at https://fujimura.hatenablog.com/entry/2018/03/30/181715

set -e

git-check-dirty
eval $@
git add -A
git commit --edit --verbose --message "$(echo $@)"


================================================
FILE: bin/git-topic-rebase
================================================
#!/usr/bin/env zsh

# $1: merge base

set -e

git rebase --interactive $(git merge-base ${1:-master} HEAD)


================================================
FILE: bin/git-up
================================================
#!/usr/bin/env zsh

# $1: remote name (default: origin)
# $2: branch name (default: HEAD)

set -e

git push --set-upstream "${1:-origin}" $(git symbolic-ref --short ${2:-HEAD})


================================================
FILE: bin/macvim
================================================
#!/bin/bash

set -ue

macvim_wrapper_cmd='reattach-to-user-namespace -l'
macvim_app="${MACVIM_APP-/Applications/MacVim.app}"

if [[ ! -e $macvim_app ]]; then
  echo "! MACVIM_APP (${MACVIM_APP} not found)" >/dev/stderr
  exit 1
fi

reattach-to-user-namespace -l "$macvim_app/Contents/MacOS/Vim" "$@"


================================================
FILE: bin/man
================================================
#!/bin/sh

env \
  LESS_TERMCAP_mb=$'\E[01;31m' \
  LESS_TERMCAP_md=$'\E[01;38;5;74m' \
  LESS_TERMCAP_me=$'\E[0m' \
  LESS_TERMCAP_se=$'\E[0m' \
  LESS_TERMCAP_so=$'\E[38;5;246m' \
  LESS_TERMCAP_ue=$'\E[0m' \
  LESS_TERMCAP_us=$'\E[04;38;5;146m' \
  /usr/bin/man "$@"


================================================
FILE: bin/metacpan
================================================
#!/usr/bin/env zsh

open_command=''
open_args=''

if /usr/bin/which -s open; then
  open_command='open'
  open_args=''
fi

if [[ ! -x =$open_command ]]; then
  echo "open-able command is not found." > /dev/stderr
  exit 1
fi

$open_command $open_args "http://metacpan.org/module/$1"


================================================
FILE: bin/mkproj
================================================
#!/usr/bin/env zsh

set -ue

_script_name=$(basename $0)
usage() {
  cat <<DOC
  ${_script_name} [--help] [--host REPO_HOST] [--owner OWNER_NAME] [--design] [--no-peek]
DOC
}

die() {
  echo "! $@" >/dev/stderr
  exit 1
}

info() {
  echo "---> $@" >/dev/stderr
}

repos_root="$(ghq root)"
repo_host="github.com"
owner="$USER"
name=''
create=1
peek=1

while [[ $# > 0 ]]; do
  case "$1" in
    --help,-h)
      usage
      exit 0
      ;;
    --host)
      shift
      repo_host="$1"
      ;;
    --owner)
      shift
      owner="$1"
      ;;
    --design)
      create=0
      ;;
    --no-peek)
      peek=0
      ;;
    -*)
      echo "Unknown args: $1"
      exit 1
      ;;
    *)
      name="$1"
      ;;
  esac
  shift
done

owner_path="${repos_root}/${repo_host}/${owner}"
repo_path="${owner_path}/${name}"

if [[ -z "$name" ]]; then
  die 'Repository name cannot be empty'
fi


if [[ $create -eq 1 ]]; then
  if [[ -e $repo_path ]]; then
    die "Already exists: $repo_path"
  fi

  info "Create $repo_path"
  mkdir -p $repo_path
fi

cd $repo_path

if [[ ! -d "${repo_path}/.git" ]]; then
  info 'Try to git init ...'
  git init
  git commit --allow-empty --message ':sunrise:'
fi

if [[ $peek -eq 1 ]]; then
  info "cd $repo_path ..."
  exec $SHELL
fi


================================================
FILE: bin/os-version
================================================
#!/bin/bash

case "$(uname)" in
  Darwin*)
    sw_vers -productVersion
    ;;
  Linux*)
    if which lsb_release >/dev/null 2>&1; then
      lsb_release --release | cut -f2
    fi
    if [[ -f /etc/redhat-release ]]; then
      cat /etc/redhat-release | cut -d' ' -f3
    fi
    ;;
  *)
    echo "Unknown OS" >/dev/stderr
    exit 1
esac


================================================
FILE: bin/paginate
================================================
#!/bin/bash

${PAGER-less}


================================================
FILE: bin/pm-version
================================================
#!/bin/sh

perl -M"$1" -e "print qq|\$$1::VERSION\n|"


================================================
FILE: bin/screenshot2slack
================================================
#!/bin/bash

set -e

tmp_dir='/tmp'
format='png'
file_name="${tmp_dir}/$(date +%s).${format}"
screencapture -i "${file_name}"
slackcat $@ "${file_name}"


================================================
FILE: bin/ts-project
================================================
#!/bin/bash

set -e

usage() {
  _script_name=$(basename $0)
  cat <<DOC
  ${_script_name} [--help|--with-mocha|--with-espower-babel]
DOC
}

root_dir=.
npm_test_command=''
with_mocha=0
with_espower_babel=0
while [[ $# > 0 ]]; do
  case "$1" in
    --help)
      usage
      exit 0
      ;;
    --with-mocha)
      with_mocha=1
      ;;
    --with-espower-babel)
      with_espower_babel=1
      ;;
  esac
  shift
done

json_satisfy() {
  jq --exit-status "$2" < $1 >/dev/null
}

pkg_satisfy() {
  json_satisfy ${root_dir}/package.json "$1"
}

update_json() {
  cat "$1" | jq --unbuffered "$2" | tee "$1"
}

if [[ ! -d "${root_dir}/.git" ]]; then
  echo '---> Not Git repository'
  echo '---> Try to git init ...'
  git init
  git commit --allow-empty --message ':sunrise:'
fi

if [[ ! -f "${root_dir}/package.json" ]]; then
  echo '---> npm init ...'
  npm init --yes
fi

if ! git check-ignore --quiet 'node_modules'; then
  echo '---> Ignore node_modules ...'
  echo 'node_modules' >> .gitignore
fi

if ! pkg_satisfy '.devDependencies | has("typescript")'; then
  echo '---> Install TypeScript ...'
  npm install --save-dev typescript
fi

if [[ $with_mocha -eq 1 ]]; then
  if ! pkg_satisfy '.devDependencies | has("mocha")'; then
    echo '---> Install mocha ...'
    npm install --save-dev mocha
  fi
  npm_test_command='mocha'

  if [[ $with_espower_babel -eq 1 ]]; then
    if ! pkg_satisfy '.devDependencies | has("espower-babel")'; then
      echo '---> Install espower-babel ...'
      npm install --save-dev espower-babel
    fi
    npm_test_command='mocha --compilers js:espower-babel/guess'
  fi

  if ! pkg_satisfy ".scripts.test == \"${npm_test_command}\""; then
    echo '---> configure `npm test` ...'
    update_json "${root_dir}/package.json" "map_values(if type == \"object\" and has(\"test\") then .test = \"${npm_test_command}\" else . end)"
  fi
fi

if [[ ! -f "${root_dir}/tsconfig.json" ]]; then
  echo '---> Create tsconfig.json ...'
  $(npm bin)/tsc --init
fi

if ! json_satisfy ${root_dir}/tsconfig.json '.compilerOptions.target == "es5"'; then
  echo '---> Set target version to ES5 ...'
  update_json "${root_dir}/tsconfig.json" 'map_values(if type == "object" and has("target") then .target = "es5" else . end)'
fi

if ! json_satisfy ${root_dir}/tsconfig.json '.compilerOptions.noImplicitAny == true'; then
  echo '---> Refuse implicit any ...'
  update_json "${root_dir}/tsconfig.json" 'map_values(if type == "object" and has("noImplicitAny") then .noImplicitAny = true else . end)'
fi

if ! pkg_satisfy '.scripts.build == "tsc"'; then
  echo '---> Configure npm run build'
  update_json "${root_dir}/package.json" 'map_values(if type == "object" and has("test") then .build = "tsc" else . end)'
fi

if ! pkg_satisfy '.devDependencies | has("dtsm")'; then
  echo '---> Install dtsm ...'
  npm install --save-dev dtsm
fi

if [[ ! -f "${root_dir}/dtsm.json" ]]; then
  echo '---> Generate dtsm.json'
  $(npm bin)/dtsm --insight false init
fi

if ! git check-ignore --quiet 'typings'; then
  echo '---> Ignore typings ...'
  echo 'typings' >> .gitignore
fi


================================================
FILE: colors/Japanesque/Japanesque.itermcolors
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Ansi 0 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.20856963098049164</real>
		<key>Green Component</key>
		<real>0.22283002734184265</real>
		<key>Red Component</key>
		<real>0.20568123459815979</real>
	</dict>
	<key>Ansi 1 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.38021323084831238</real>
		<key>Green Component</key>
		<real>0.24660280346870422</real>
		<key>Red Component</key>
		<real>0.81089001893997192</real>
	</dict>
	<key>Ansi 10 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.17100538313388824</real>
		<key>Green Component</key>
		<real>0.49610027670860291</real>
		<key>Red Component</key>
		<real>0.46425256133079529</real>
	</dict>
	<key>Ansi 11 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.1833186000585556</real>
		<key>Green Component</key>
		<real>0.35025951266288757</real>
		<key>Red Component</key>
		<real>0.46875584125518799</real>
	</dict>
	<key>Ansi 12 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.47479093074798584</real>
		<key>Green Component</key>
		<real>0.34725069999694824</real>
		<key>Red Component</key>
		<real>0.074933364987373352</real>
	</dict>
	<key>Ansi 13 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.56739711761474609</real>
		<key>Green Component</key>
		<real>0.25756442546844482</real>
		<key>Red Component</key>
		<real>0.37626489996910095</real>
	</dict>
	<key>Ansi 14 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.79221165180206299</real>
		<key>Green Component</key>
		<real>0.73511248826980591</real>
		<key>Red Component</key>
		<real>0.46331635117530823</real>
	</dict>
	<key>Ansi 15 Color</key>
	<dict>
		<key>Blue Component</key>
		<real>0.68263441324234009</r
Download .txt
gitextract_iqt6khwm/

├── .bundle/
│   └── config
├── .caprc
├── .colordiffrc
├── .config/
│   └── ghostty/
│       └── config
├── .dotfiles.ignore
├── .gemrc
├── .gitconfig
├── .gitignore
├── .gitmodules
├── .global.gitignore
├── .hammerspoon/
│   └── init.lua
├── .my.cnf
├── .peco/
│   └── config.json
├── .powenv
├── .proverc
├── .pryrc
├── .screenrc
├── .slate.d/
│   └── google_chrome.sh
├── .slate.js
├── .tigrc
├── .tmux.conf
├── .tmux.d/
│   └── scripts/
│       ├── macbook-battery
│       └── today
├── .travis.yml
├── .uim
├── .vim/
│   ├── .eskk/
│   │   └── .keep
│   ├── after/
│   │   ├── ftplugin/
│   │   │   ├── go.vim
│   │   │   ├── haskell.vim
│   │   │   ├── html.vim
│   │   │   ├── javascript.vim
│   │   │   ├── perl.vim
│   │   │   ├── ruby.vim
│   │   │   ├── scala.vim
│   │   │   ├── sh.vim
│   │   │   ├── tt2html.vim
│   │   │   ├── typescript.vim
│   │   │   └── vim.vim
│   │   └── syntax/
│   │       └── sh.vim
│   ├── bin/
│   │   └── prove-wrapper
│   ├── colors/
│   │   ├── freya.vim
│   │   ├── github.vim
│   │   ├── liquidcarbon.vim
│   │   ├── navajo-night.vim
│   │   ├── railscasts.vim
│   │   ├── shandy.vim
│   │   ├── tiro_finale.vim
│   │   ├── wombat256mod.vim
│   │   ├── xoria256.vim
│   │   └── zenesque.vim
│   ├── etc/
│   │   ├── lazy.toml
│   │   ├── operator.toml
│   │   └── plugins.toml
│   ├── filetype.vim
│   ├── gvimrc
│   ├── plugin/
│   │   └── memolist-templates/
│   │       └── hatena.txt
│   ├── rc/
│   │   ├── 00_autocmd.vim
│   │   ├── 00_base.vim
│   │   ├── 10_dein.vim
│   │   ├── 20_command.vim
│   │   ├── 20_key.vim
│   │   ├── 20_tab.vim
│   │   ├── command_line_window.vim
│   │   └── plugins/
│   │       ├── denite.added.vim
│   │       ├── denite.sourced.vim
│   │       ├── lightline.vim
│   │       ├── neocomplete.vim
│   │       ├── quickrun.vim
│   │       ├── syntastic.added.vim
│   │       ├── unite.added.vim
│   │       └── watchdogs.vim
│   ├── snippets/
│   │   ├── eruby.snip
│   │   ├── io.snip
│   │   ├── javascript.snippet
│   │   ├── markdown.snippet
│   │   ├── objc.snip
│   │   ├── perl.snip
│   │   ├── rspec.snip
│   │   ├── ruby.snip
│   │   ├── tap.snip
│   │   ├── textile.snip
│   │   ├── tt2.snip
│   │   ├── tt2html.snip
│   │   ├── vim.snip
│   │   └── zsh.snip
│   ├── tools/
│   │   └── efm_perl.pl
│   └── vimrc
├── .vimperator/
│   └── colors/
│       └── solarized_light.vimp
├── .vimperatorrc
├── .vimperatorrc.js
├── .zsh.d/
│   └── functions/
│       ├── _carton
│       ├── _padrino
│       ├── _pkgutil
│       ├── _prove
│       ├── _proxychains4
│       ├── _rails
│       ├── _tsocks
│       ├── git_info
│       ├── gyapbox
│       ├── llenv_version_origin
│       ├── prompt_aereal_setup
│       ├── prompt_aereal_unicode_setup
│       ├── prompt_lambda_setup
│       └── prompt_yuno_setup
├── .zshenv
├── .zshrc
├── Brewfile
├── README.md
├── Rakefile
├── bin/
│   ├── abbrev-cwd.go
│   ├── diff-highlight-wrapper
│   ├── generate-typable-words
│   ├── git-authors.go
│   ├── git-catchup
│   ├── git-check-dirty
│   ├── git-git
│   ├── git-issue-checkout
│   ├── git-normalize-url
│   ├── git-recent-branches
│   ├── git-refresh-branch
│   ├── git-run
│   ├── git-topic-rebase
│   ├── git-up
│   ├── macvim
│   ├── man
│   ├── metacpan
│   ├── mkproj
│   ├── os-version
│   ├── paginate
│   ├── pm-version
│   ├── screenshot2slack
│   └── ts-project
├── colors/
│   └── Japanesque/
│       ├── Japanesque.itermcolors
│       └── README.markdown
├── osx/
│   ├── defaults/
│   │   ├── alfred.bash
│   │   └── config.bash
│   └── keyremap4macbook/
│       ├── config.sh
│       └── private.xml
└── test/
    ├── Gemfile
    └── dotfiles_test.rb
Download .txt
SYMBOL INDEX (11 symbols across 2 files)

FILE: bin/abbrev-cwd.go
  function main (line 10) | func main() {

FILE: bin/git-authors.go
  type Commit (line 15) | type Commit struct
    method Ratio (line 21) | func (c Commit) Ratio(total int) float64 {
  type CommitsSummary (line 25) | type CommitsSummary
    method Len (line 27) | func (cs CommitsSummary) Len() int {
    method Swap (line 31) | func (cs CommitsSummary) Swap(i, j int) {
  type ByCommitsCount (line 35) | type ByCommitsCount struct
    method Less (line 39) | func (bcc ByCommitsCount) Less(i, j int) bool {
  function String2Int (line 43) | func String2Int(s string) int {
  function CreateCommit (line 55) | func CreateCommit(author string, commits int, ins int, del int) *Commit {
  function main (line 64) | func main() {
Condensed preview — 139 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (214K chars).
[
  {
    "path": ".bundle/config",
    "chars": 47,
    "preview": "---\nBUNDLE_BIN: \".bundle/bin\"\nBUNDLE_JOBS: '4'\n"
  },
  {
    "path": ".caprc",
    "chars": 77,
    "preview": "# vim:set ft=ruby:\n\nbegin\n  require 'capistrano_colors'\nrescue LoadError\nend\n"
  },
  {
    "path": ".colordiffrc",
    "chars": 959,
    "preview": "# Example colordiffrc file for dark backgrounds\n#\n# Set banner=no to suppress authorship info at top of\n# colordiff outp"
  },
  {
    "path": ".config/ghostty/config",
    "chars": 273,
    "preview": "font-family = \"Cascadia Code\"\nfont-family = \"HackGen Console\"\nfont-size = 18\ntheme = \"/Applications/Ghostty.app/Contents"
  },
  {
    "path": ".dotfiles.ignore",
    "chars": 46,
    "preview": ".git\n.gitmodules\n.travis.yml\n.dotfiles.ignore\n"
  },
  {
    "path": ".gemrc",
    "chars": 73,
    "preview": "---\n:backtrace: true\n:benchmark: false\n:verbose: true\ngem: -N\nsearch: -r\n"
  },
  {
    "path": ".gitconfig",
    "chars": 2572,
    "preview": "[user]\n\temail = trasty.loose@gmail.com\n\tname = aereal\n\n[gui]\n\tencoding = utf-8\n\n[github]\n\tuser = aereal\n\n[alias]\n\tabort-"
  },
  {
    "path": ".gitignore",
    "chars": 230,
    "preview": ".vim/cookies/\n.vim/netrwhist\n.vim/.netrwhist\n.vim/swp/*\n.vim/.neocon/*\n.vim/.ref/*\n.vim/.unite/*\n.vim/undo/*\n.vim/bundle"
  },
  {
    "path": ".gitmodules",
    "chars": 130,
    "preview": "[submodule \"colors/dircolors-solarized\"]\n\tpath = colors/dircolors-solarized\n\turl = git://github.com/seebi/dircolors-sola"
  },
  {
    "path": ".global.gitignore",
    "chars": 83,
    "preview": "MYMETA.json\nMYMETA.yml\n/vendor/bundle\n/.bundle/\n.DS_Store\ntags\n.envrc\n.local.vimrc\n"
  },
  {
    "path": ".hammerspoon/init.lua",
    "chars": 1559,
    "preview": "hs.window.animationDuration = 0\n\nviKey = hs.hotkey.modal.new('ctrl-cmd-option', 'space', 'hammerspoon')\nfunction viKey:e"
  },
  {
    "path": ".my.cnf",
    "chars": 41,
    "preview": "[mysql]\nprompt=\"\\u@\\h[\\d]> \"\nauto-rehash\n"
  },
  {
    "path": ".peco/config.json",
    "chars": 307,
    "preview": "{\n  \"Prompt\": \">\",\n  \"Keymap\": {\n    \"M-x\": \"peco.ToggleSelectionAndSelectNext\",\n    \"C-g\": \"peco.Cancel\"\n  },\n  \"Style\""
  },
  {
    "path": ".powenv",
    "chars": 72,
    "preview": "# vim:set ft=sh:\n\nexport PATH=$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH\n"
  },
  {
    "path": ".proverc",
    "chars": 49,
    "preview": "--color\n--lib\n--failure\n--recurse\n--timer\n--trap\n"
  },
  {
    "path": ".pryrc",
    "chars": 843,
    "preview": "# vim:set ft=ruby:\n\ndef pbcopy(str)\n  IO.popen('pbcopy', 'r+') {|io| io.puts str }\nend\n\nPry.config.commands.command 'hco"
  },
  {
    "path": ".screenrc",
    "chars": 1095,
    "preview": "escape ^tt\ndefscrollback 10000\ndefutf8 on\ndefkanji utf-8\nencoding utf-8 utf-8\ndefencoding utf-8\nstartup_message off\nauto"
  },
  {
    "path": ".slate.d/google_chrome.sh",
    "chars": 35,
    "preview": "#!/bin/sh\n\nopen -a \"Google Chrome\"\n"
  },
  {
    "path": ".slate.js",
    "chars": 2069,
    "preview": "S.configAll({\n  defaultToCurrentScreen: true,\n  checkDefaultsOnLoad: true,\n  modalEscapeKey: 'esc'\n});\n\nvar VI_LIKE_WIND"
  },
  {
    "path": ".tigrc",
    "chars": 414,
    "preview": "set commit-order = topo\nset tab-size = 2\n\nbind generic g move-first-line\nbind generic G move-last-line\nbind main    o !@"
  },
  {
    "path": ".tmux.conf",
    "chars": 1254,
    "preview": "# key bindings\n## prefix key\nunbind C-b\nbind C-k send-prefix\nset -g prefix C-k\n\nbind ^n next-window\nbind ^p previous-win"
  },
  {
    "path": ".tmux.d/scripts/macbook-battery",
    "chars": 110,
    "preview": "#!/bin/bash\n\n/usr/bin/pmset -g ps | /usr/bin/tail -1 | /usr/bin/awk '{ print $3 }' | /usr/bin/sed -e 's/;//g'\n"
  },
  {
    "path": ".tmux.d/scripts/today",
    "chars": 78,
    "preview": "#!/bin/bash\n\nset -ue\nexport PATH=/usr/bin:/usr/sbin:/bin:/sbin\n\ndate +'%H:%M'\n"
  },
  {
    "path": ".travis.yml",
    "chars": 162,
    "preview": "---\nlanguage: ruby\nrvm:\n  - 2.1.1\ninstall:\n  - echo \"Install\"\nbefore_script:\n  - mkdir -p $INSTALL_DIRECTORY\nscript:\n  -"
  },
  {
    "path": ".uim",
    "chars": 152,
    "preview": ";; vim:set ft=scheme:\n\n(define default-im-name 'skk)\n(define skk-use-skkserv? #t)\n(define skk-serv-hostname \"localhost\")"
  },
  {
    "path": ".vim/.eskk/.keep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".vim/after/ftplugin/go.vim",
    "chars": 128,
    "preview": "inoremap <buffer><expr> = smartchr#loop(' := ', ' = ', ' == ', ' != ')\ninoremap <buffer><expr> , smartchr#loop(', ', '<-"
  },
  {
    "path": ".vim/after/ftplugin/haskell.vim",
    "chars": 194,
    "preview": "inoremap <buffer><expr> = smartchr#loop(' = ', '=')\ninoremap <buffer><expr> . smartchr#one_of('.', ' -> ', ' => ', '.')\n"
  },
  {
    "path": ".vim/after/ftplugin/html.vim",
    "chars": 22,
    "preview": "inoremap <buffer> = =\n"
  },
  {
    "path": ".vim/after/ftplugin/javascript.vim",
    "chars": 322,
    "preview": "inoremap <buffer><expr> = smartchr#loop(' = ', ' == ', ' === ')\ninoremap <buffer><expr> \\ smartchr#one_of(' => ', '\\')\n\n"
  },
  {
    "path": ".vim/after/ftplugin/perl.vim",
    "chars": 272,
    "preview": "let b:tap_run_command = expand('~/.vim/bin/prove-wrapper')\n\ninoremap <buffer><expr> . smartchr#one_of('.', '->', '.')\nin"
  },
  {
    "path": ".vim/after/ftplugin/ruby.vim",
    "chars": 324,
    "preview": "inoremap <buffer><expr> = smartchr#loop(' = ', ' == ', ' === ', ' != ')\ninoremap <buffer><expr> , smartchr#loop(', ', ' "
  },
  {
    "path": ".vim/after/ftplugin/scala.vim",
    "chars": 33,
    "preview": "inoremap <buffer> ,t :EnType<CR>\n"
  },
  {
    "path": ".vim/after/ftplugin/sh.vim",
    "chars": 60,
    "preview": "inoremap <buffer><expr> = smartchr#loop('=', ' = ', ' != ')\n"
  },
  {
    "path": ".vim/after/ftplugin/tt2html.vim",
    "chars": 54,
    "preview": "autocmd MyInit FileType tt2html inoremap <buffer> = =\n"
  },
  {
    "path": ".vim/after/ftplugin/typescript.vim",
    "chars": 55,
    "preview": "inoremap <buffer><expr> \\ smartchr#one_of(' => ', '\\')\n"
  },
  {
    "path": ".vim/after/ftplugin/vim.vim",
    "chars": 22,
    "preview": "inoremap <buffer> = =\n"
  },
  {
    "path": ".vim/after/syntax/sh.vim",
    "chars": 100,
    "preview": "\" exclude `--foo)` matches from within `$(cmd --foo)`\nsyntax match shOption \"\\s\\zs--[^ \\t$`'\"|)]\\+\"\n"
  },
  {
    "path": ".vim/bin/prove-wrapper",
    "chars": 89,
    "preview": "#!/bin/bash\n\nset -e\n\nenv PERL5LIB=\"$PWD/lib:$PWD/local/lib/perl5\" \\\n  plenv exec perl $@\n"
  },
  {
    "path": ".vim/colors/freya.vim",
    "chars": 3257,
    "preview": "set background=dark\n\nhi clear\n\nif exists(\"syntax_on\")\n    syntax reset\nendif\n\nlet colors_name = \"freya\"\n\nhi Normal cterm"
  },
  {
    "path": ".vim/colors/github.vim",
    "chars": 3970,
    "preview": "\" Vim color file\n\"\n\" Author: Anthony Carapetis <anthony.carapetis@gmail.com>\n\"\n\" Note: Based on github's syntax highligh"
  },
  {
    "path": ".vim/colors/liquidcarbon.vim",
    "chars": 6057,
    "preview": "\" File: liquidcarbon.vim\n\" Author: Jeet Sukumaran\n\" Description: Vim color file\n\" Last Modified: October 06, 2010\n\n\" Ini"
  },
  {
    "path": ".vim/colors/navajo-night.vim",
    "chars": 4850,
    "preview": "\" Vim colour file\n\" Maintainer: Matthew Hawkins <matt@mh.dropbear.id.au>\n\" Last Change:\tMon, 22 Apr 2002 15:28:04 +1000\n"
  },
  {
    "path": ".vim/colors/railscasts.vim",
    "chars": 4678,
    "preview": "\" Vim color scheme\n\"\n\" Name:         railscasts.vim\n\" Maintainer:   Nick Moffitt <nick@zork.net>\n\" Last Change:  01 Mar "
  },
  {
    "path": ".vim/colors/shandy.vim",
    "chars": 1300,
    "preview": "set bg=dark\nhi clear\n\nif exists(\"syntax_on\")\n\tsyntax reset\nendif\n\nlet colors_name = \"shandy\"\n\n\" blue: #7d95a6\n\" red: #a6"
  },
  {
    "path": ".vim/colors/tiro_finale.vim",
    "chars": 1376,
    "preview": "hi clear\nif exists(\"syntax_on\")\n\tsyntax reset\nendif\n\nlet colors_name = \"tiro_finale\"\n\nset background=dark\n\n\" #e7abc2 #e7"
  },
  {
    "path": ".vim/colors/wombat256mod.vim",
    "chars": 3372,
    "preview": "\" Vim color file\n\" Original Maintainer:  Lars H. Nielsen (dengmao@gmail.com)\n\" Last Change:  2010-07-23\n\"\n\" Modified ver"
  },
  {
    "path": ".vim/colors/xoria256.vim",
    "chars": 6107,
    "preview": "\" Vim color file\n\"\n\" Name:       xoria256.vim\n\" Version:    1.5\n\" Maintainer:\tDmitriy Y. Zotikov (xio) <xio@ungrund.org>"
  },
  {
    "path": ".vim/colors/zenesque.vim",
    "chars": 20893,
    "preview": "\" =============================================================================\n\" File:        zenesque.vim\n\" Descriptio"
  },
  {
    "path": ".vim/etc/lazy.toml",
    "chars": 2756,
    "preview": "[[plugins]]\nrepo = 'groenewege/vim-less'\non_ft = ['less']\n\n[[plugins]]\nrepo = 'hail2u/vim-css3-syntax'\non_ft = ['css']\n\n"
  },
  {
    "path": ".vim/etc/operator.toml",
    "chars": 608,
    "preview": "[[plugins]]\nrepo = 'rhysd/vim-operator-surround'\non_map = ['<Plug>(operator-surround-']\ndepends = ['vim-operator-user']\n"
  },
  {
    "path": ".vim/etc/plugins.toml",
    "chars": 5574,
    "preview": "[[plugins]]\nrepo = 'thinca/vim-quickrun'\nhook_source = '''\nruntime rc/plugins/quickrun.vim\n'''\n\n[[plugins]]\nrepo = 'kana"
  },
  {
    "path": ".vim/filetype.vim",
    "chars": 559,
    "preview": "autocmd BufEnter */templates/*.html setf tt2html\nautocmd BufEnter *.tt setf tt2html\n\nautocmd BufEnter *.es6,*.es setf ja"
  },
  {
    "path": ".vim/gvimrc",
    "chars": 257,
    "preview": "let g:macvim_skip_cmd_opt_movement = 1\n\nset bg=dark\n\nif has(\"gui_running\")\n  try\n    colorscheme japanesque\n  catch\n    "
  },
  {
    "path": ".vim/plugin/memolist-templates/hatena.txt",
    "chars": 15,
    "preview": "* {{_title_}}\n\n"
  },
  {
    "path": ".vim/rc/00_autocmd.vim",
    "chars": 2892,
    "preview": "augroup MyInit\n  autocmd!\naugroup END\n\n\" screen title {{{\nif ! has('gui_running')\n  autocmd MyInit BufEnter * if bufname"
  },
  {
    "path": ".vim/rc/00_base.vim",
    "chars": 2224,
    "preview": "set hidden\nset history=1000\nset autoread\nset fileformats=unix,dos,mac\nset scrolloff=100000 \" 常にカーソルのある行を中心に (したい)\nset ba"
  },
  {
    "path": ".vim/rc/10_dein.vim",
    "chars": 951,
    "preview": "set runtimepath& runtimepath^=~/devel/src/github.com/Shougo/dein.vim\n\nlet s:dein_cache_dir = expand('~/.vim/cache/dein')"
  },
  {
    "path": ".vim/rc/20_command.vim",
    "chars": 1977,
    "preview": "command! Sketch call s:sketch() \" {{{\nfunction! s:sketch() \" {{{\n  if !exists('g:sketch_dir')\n    let g:sketch_dir = exp"
  },
  {
    "path": ".vim/rc/20_key.vim",
    "chars": 362,
    "preview": "let mapleader   = ';'\nlet g:mapleader = ';'\n\nnnoremap j gj\nnnoremap k gk\nnnoremap Y y$\n\nnnoremap <Leader><Space> :update"
  },
  {
    "path": ".vim/rc/20_tab.vim",
    "chars": 18,
    "preview": "set showtabline=2\n"
  },
  {
    "path": ".vim/rc/command_line_window.vim",
    "chars": 680,
    "preview": "nnoremap <SID>(command-line-enter) q:\nxnoremap <SID>(command-line-enter) q:\nnnoremap <SID>(command-line-norange) q:<C-u>"
  },
  {
    "path": ".vim/rc/plugins/denite.added.vim",
    "chars": 691,
    "preview": "nnoremap <SID>[denite] <Nop>\nnmap gj <SID>[denite]\n\nnmap <SID>[denite]p <SID>(project-files)\nnmap <SID>[denite]f <SID>(f"
  },
  {
    "path": ".vim/rc/plugins/denite.sourced.vim",
    "chars": 689,
    "preview": "call denite#custom#option('default', 'prompt', '>')\ncall denite#custom#option('files', 'prompt', '>')\n\nif executable('rg"
  },
  {
    "path": ".vim/rc/plugins/lightline.vim",
    "chars": 1344,
    "preview": "if ! exists('g:lightline')\n  let g:lightline = {}\nendif\nif ! has_key(g:lightline, 'component')\n  let g:lightline.compone"
  },
  {
    "path": ".vim/rc/plugins/neocomplete.vim",
    "chars": 1416,
    "preview": "if ! exists('g:neocomplete#force_omni_input_patterns')\n  let g:neocomplete#force_omni_input_patterns = {}\nendif\n\nlet g:n"
  },
  {
    "path": ".vim/rc/plugins/quickrun.vim",
    "chars": 577,
    "preview": "if !exists('g:quickrun_config')\n  let g:quickrun_config = {}\nendif\nlet g:quickrun_config['prove/carton'] = {\n      \\ 'ex"
  },
  {
    "path": ".vim/rc/plugins/syntastic.added.vim",
    "chars": 262,
    "preview": "let g:syntastic_mode_map = {\n      \\ 'mode' : 'passive',\n      \\ }\n\naugroup auto-syntastic\n  autocmd!\n  autocmd BufWrite"
  },
  {
    "path": ".vim/rc/plugins/unite.added.vim",
    "chars": 5045,
    "preview": "\" mapping {{{\nnnoremap <SID>[unite] <Nop>\nnmap gj <SID>[unite]\n\nnmap <SID>[unite]p <SID>(project-files)\nnmap <SID>[unite"
  },
  {
    "path": ".vim/rc/plugins/watchdogs.vim",
    "chars": 1106,
    "preview": "let g:watchdogs_check_BufWritePost_enable = 1\nlet g:watchdogs_check_BufWritePost_enables = {\n      \\ \"typescript\": 0,\n  "
  },
  {
    "path": ".vim/snippets/eruby.snip",
    "chars": 319,
    "preview": "snippet case\n\t<% case ${1:object} %>\n\t<% when ${2:condition} %>\n\t\t${3}\n\t<% end %>\nsnippet when\n\t<% when ${1:condition} %"
  },
  {
    "path": ".vim/snippets/io.snip",
    "chars": 152,
    "preview": "snippet     if\n\tif(${1:/* condition */}, ${2:/* then-clause */})\n\nsnippet ife\n\tif(${1:/* condition */}, ${2:/* then-clau"
  },
  {
    "path": ".vim/snippets/javascript.snippet",
    "chars": 193,
    "preview": "snippet func\nalias   function\n\tfunction (${0:args}) {${1:body}};\n\nsnippet if\n\tif (${1:true}) ${0:$TM_SELECTED_TEXT}\n\nsni"
  },
  {
    "path": ".vim/snippets/markdown.snippet",
    "chars": 336,
    "preview": "snippet link\n\t[${1:#:title}](${2:#:url})\n\nsnippet link_paste\n\t[${1}](`getreg('+')`)\n\nsnippet image\n\t![${1:#:alt text}]($"
  },
  {
    "path": ".vim/snippets/objc.snip",
    "chars": 598,
    "preview": "\" vim:set noexpandtab:\n\nsnippet import\n\t#import \"${1:Header}.h\"\n\nsnippet if\n\tif (${1:condition}) {\n\t\t${2}\n\t}\n\nsnippet el"
  },
  {
    "path": ".vim/snippets/perl.snip",
    "chars": 1357,
    "preview": "# vim:set ft=snippet noet:\nsnippet pl\n\t#!/usr/bin/env perl\n\n\tuse strict;\n\tuse warnings;\nalias shebang\n\nsnippet use\n\tuse "
  },
  {
    "path": ".vim/snippets/rspec.snip",
    "chars": 587,
    "preview": "snippet describe\n    describe ${1:object} do\n        ${2}\n    end\n\nsnippet it\n    it \"${1:description}\" do\n        ${2}\n"
  },
  {
    "path": ".vim/snippets/ruby.snip",
    "chars": 1886,
    "preview": "# vim:set ft=snippet noet:\nsnippet shebang\n\t#!/usr/bin/env ruby\n\nsnippet =b\n\t=begin rdoc\n\t\t${1}\n\t=end\n\nsnippet beg\nabbr "
  },
  {
    "path": ".vim/snippets/tap.snip",
    "chars": 92,
    "preview": "snippet     subtest\nabbr        st\n\tsubtest ${1:test_name} => sub {\n\t\t${2:# test cases}\n\t};\n"
  },
  {
    "path": ".vim/snippets/textile.snip",
    "chars": 316,
    "preview": "snippet     link\n  \"${1:#:title}\":${2:#:url}\n\nsnippet     link_paste\n  \"${1:#:title}\":`getreg('+')`\n\nsnippet     image\n "
  },
  {
    "path": ".vim/snippets/tt2.snip",
    "chars": 390,
    "preview": "snippet if\n\t[% IF ${1:condition} %]\n\t\t${2:then}\n\t[% END # IF $1 %]\n\nsnippet ife\n\t[% IF ${1:condition} %]\n\t\t${2:then}\n\t[%"
  },
  {
    "path": ".vim/snippets/tt2html.snip",
    "chars": 17,
    "preview": "include tt2.snip\n"
  },
  {
    "path": ".vim/snippets/vim.snip",
    "chars": 334,
    "preview": "# vim:set ft=neosnippet noet:\nsnippet plugin_config\n\tlet ${2:symbol} = neobundle#get('${1:plugin_name}')\n\tfunction! $2.h"
  },
  {
    "path": ".vim/snippets/zsh.snip",
    "chars": 749,
    "preview": "include sh.snip\n\nsnippet     length\n  ${#${1:variable}}\n\nsnippet     capitalize\n  ${(C)${1:variable}}\n\nsnippet     downc"
  },
  {
    "path": ".vim/tools/efm_perl.pl",
    "chars": 1968,
    "preview": "#!/usr/bin/env perl\n\n# stolen from https://github.com/hakobe/dotfiles/blob/master/.vim/tools/efm_perl.pl\n\nuse strict;\nus"
  },
  {
    "path": ".vim/vimrc",
    "chars": 698,
    "preview": "\" vim:set et foldmethod=marker:\n\nlet did_load_filetypes = 1\nlet g:loaded_2html_plugin = 1\nlet g:loaded_getscriptPlugin ="
  },
  {
    "path": ".vimperator/colors/solarized_light.vimp",
    "chars": 928,
    "preview": "hi clear\n\nhi StatusLine <<CSS\n  background-color: #fdf6e3;\n  color: #586e75;\n  font-size: 16px;\n  padding: 0.2em 0;\n  ou"
  },
  {
    "path": ".vimperatorrc",
    "chars": 1354,
    "preview": "\" let {{{\nlet g:plugin_loader_roots = \"~/devel/src/github.com/vimpr/vimperator-plugins\"\nlet g:plugin_loader_plugins = \"_"
  },
  {
    "path": ".vimperatorrc.js",
    "chars": 288,
    "preview": "liberator.globalVariables.hBookmark_shortcuts = {\n  hintsAdd: 'Ba',\n  hintsComment: 'Bc',\n  add: ['C'],\n  comment: ['c']"
  },
  {
    "path": ".zsh.d/functions/_carton",
    "chars": 2104,
    "preview": "#compdef carton\n\nfunction _carton () {\n  local curcontext=\"$curcontext\" state line\n  typeset -A opt_args\n\n  _arguments -"
  },
  {
    "path": ".zsh.d/functions/_padrino",
    "chars": 4522,
    "preview": "#compdef padrino\n\n_runtime_options=(\n  --help'[Show help usage]' \\\n  {-e,--environment}'[Padrino Environment]:ENVIRONMEN"
  },
  {
    "path": ".zsh.d/functions/_pkgutil",
    "chars": 5890,
    "preview": "#compdef pkgutil\n\nfunction _pkgutil() {\n  local curcontext=$curcontext state line ret=1\n  declare -A opt_args\n\n  _argume"
  },
  {
    "path": ".zsh.d/functions/_prove",
    "chars": 2446,
    "preview": "#compdef prove\n\ntypeset -A options\nlocal context state line\n\n_arguments -s -C \\\n  '*:TEST:_files' \\\n  {-a,--archive}'[St"
  },
  {
    "path": ".zsh.d/functions/_proxychains4",
    "chars": 201,
    "preview": "#compdef proxychains4\n\nlocal curcontext=\"$curcontext\" state line ret=1\n\n_arguments -C \\\n  '*:: :->app' && ret=0\n\ncase \"$"
  },
  {
    "path": ".zsh.d/functions/_rails",
    "chars": 9904,
    "preview": "#compdef rails\n\n_runtime_options=(\n  '(-f --force -s --skip)'{-f,--force}'[Overwrite files that already exist]'\n  {-p,--"
  },
  {
    "path": ".zsh.d/functions/_tsocks",
    "chars": 195,
    "preview": "#compdef tsocks\n\nlocal curcontext=\"$curcontext\" state line ret=1\n\n_arguments -C \\\n  '*:: :->app' && ret=0\n\ncase \"$state\""
  },
  {
    "path": ".zsh.d/functions/git_info",
    "chars": 2964,
    "preview": "# vim:set ft=zsh foldmethod=marker:\n\ngit_info() { # {{{\n  # http://d.hatena.ne.jp/uasi/20091025/1256458798\n  if [[ $(git"
  },
  {
    "path": ".zsh.d/functions/gyapbox",
    "chars": 1021,
    "preview": "# vim:set ft=zsh:\n\nfunction gyapbox() {\n  local base_dir=~/Dropbox/Public/g\n  local enable_notify=0\n\n  if whence termina"
  },
  {
    "path": ".zsh.d/functions/llenv_version_origin",
    "chars": 439,
    "preview": "llenv_version_origin() {\n  local llenv=\"$1\"\n  local llenv_root=\"$($llenv root)\"\n  local global_version_file=\"${llenv_roo"
  },
  {
    "path": ".zsh.d/functions/prompt_aereal_setup",
    "chars": 2232,
    "preview": "# vim:set ft=zsh foldmethod=marker:\n\nfunction prompt_aereal_setup() { # {{{\n  if ! (which add-zsh-hook > /dev/null); the"
  },
  {
    "path": ".zsh.d/functions/prompt_aereal_unicode_setup",
    "chars": 2256,
    "preview": "# vim:set ft=zsh foldmethod=marker:\n\nfunction prompt_aereal_unicode_setup() { # {{{\n  if ! (which add-zsh-hook > /dev/nu"
  },
  {
    "path": ".zsh.d/functions/prompt_lambda_setup",
    "chars": 2092,
    "preview": "function prompt_lambda_setup() { # {{{\n  if ! (whence add-zsh-hook >/dev/null); then\n    autoload -Uz add-zsh-hooks\n  fi"
  },
  {
    "path": ".zsh.d/functions/prompt_yuno_setup",
    "chars": 2306,
    "preview": "function prompt_yuno_setup() { # {{{\n  if ! (whence add-zsh-hook >/dev/null); then\n    autoload -Uz add-zsh-hooks\n  fi\n "
  },
  {
    "path": ".zshenv",
    "chars": 2880,
    "preview": "# to avoid overwritten PATH via /usr/libexec/path_helper\n# refs. https://github.com/Homebrew/homebrew-core/pull/32074#is"
  },
  {
    "path": ".zshrc",
    "chars": 9948,
    "preview": "bindkey -v\n\n# function load path {{{\ntypeset -Ua fpath\nfpath=(\n  $HOME/.zsh.d/functions(N-/)\n  $HOMEBREW_PATH/share/zsh-"
  },
  {
    "path": "Brewfile",
    "chars": 793,
    "preview": "brew \"aqua\"\nbrew \"readline\"\nbrew \"awscli\"\nbrew \"bat\"\nbrew \"coreutils\"\nbrew \"curl\"\nbrew \"direnv\"\nbrew \"eza\"\nbrew \"fzf\"\nbr"
  },
  {
    "path": "README.md",
    "chars": 981,
    "preview": "# dotfiles\n\n![Build Status](https://travis-ci.org/aereal/dotfiles.png?branch=master)\n\nThis repository includes a lot of "
  },
  {
    "path": "Rakefile",
    "chars": 2051,
    "preview": "require 'pathname'\n\n# methods\ndef env_or_default(env: nil, default: nil)\n  ENV.fetch(env, default)\nend\n\ndef ensure_pathn"
  },
  {
    "path": "bin/abbrev-cwd.go",
    "chars": 637,
    "preview": "package main\n\nimport (\n\t\"os\"\n\t\"os/user\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\nfunc main() {\n\tvar err error\n\tcwd, err := os.Getw"
  },
  {
    "path": "bin/diff-highlight-wrapper",
    "chars": 278,
    "preview": "#!/bin/sh\n\nif test -x brew; then\n  git_prefix=`brew --prefix git`\nelse\n  git_prefix='/usr/local'\nfi\ndiff_highlight_comma"
  },
  {
    "path": "bin/generate-typable-words",
    "chars": 1031,
    "preview": "#!/usr/bin/env ruby\n\nLEFT_CHARS       = %w( a s d f g w e r v 3 4 5 )\nLEFT_CANDIDATES  = LEFT_CHARS.flat_map {|c| [c, c."
  },
  {
    "path": "bin/git-authors.go",
    "chars": 2538,
    "preview": "package main\n\n// original: https://github.com/dann/dotfiles/blob/master/devbin/git-authors\n\nimport (\n  \"fmt\"\n  \"log\"\n  \""
  },
  {
    "path": "bin/git-catchup",
    "chars": 258,
    "preview": "#!/bin/bash\n\n# Catching up with upstream\n\nset -e\n\ncommand git fetch -q\n\ndevelop_branch='staging/master'\nupstream_ref=$de"
  },
  {
    "path": "bin/git-check-dirty",
    "chars": 227,
    "preview": "#!/bin/bash\n\n# refs. https://unix.stackexchange.com/questions/155046/determine-if-git-working-directory-is-clean-from-a-"
  },
  {
    "path": "bin/git-git",
    "chars": 23,
    "preview": "#!/bin/sh\n\nexec git $@\n"
  },
  {
    "path": "bin/git-issue-checkout",
    "chars": 283,
    "preview": "#!/usr/bin/env zsh\n\nlocal matched=$(\n  git for-each-ref \\\n    --sort=committerdate \\\n    --format='%(refname)' \\\n    ref"
  },
  {
    "path": "bin/git-normalize-url",
    "chars": 502,
    "preview": "#!/usr/bin/env ruby\n\nORIGIN = 'origin'\n\ndef run(argv)\n  remote, * = ARGV\n  remote ||= ORIGIN\n  prev_remote_url = `git re"
  },
  {
    "path": "bin/git-recent-branches",
    "chars": 302,
    "preview": "#!/usr/bin/env zsh\n\nfunction __git-recent-branches() {\n  local count=${1:-10}\n  git for-each-ref \\\n    --sort=-committer"
  },
  {
    "path": "bin/git-refresh-branch",
    "chars": 836,
    "preview": "#!/usr/bin/env perl\n\nuse Carp ();\nuse List::Util qw(reduce);\n\nsub main {\n  my ($rollback_ref) = @_;\n\n  Carp::croak 'roll"
  },
  {
    "path": "bin/git-run",
    "chars": 188,
    "preview": "#!/bin/bash\n\n# originally written at https://fujimura.hatenablog.com/entry/2018/03/30/181715\n\nset -e\n\ngit-check-dirty\nev"
  },
  {
    "path": "bin/git-topic-rebase",
    "chars": 107,
    "preview": "#!/usr/bin/env zsh\n\n# $1: merge base\n\nset -e\n\ngit rebase --interactive $(git merge-base ${1:-master} HEAD)\n"
  },
  {
    "path": "bin/git-up",
    "chars": 177,
    "preview": "#!/usr/bin/env zsh\n\n# $1: remote name (default: origin)\n# $2: branch name (default: HEAD)\n\nset -e\n\ngit push --set-upstre"
  },
  {
    "path": "bin/macvim",
    "chars": 300,
    "preview": "#!/bin/bash\n\nset -ue\n\nmacvim_wrapper_cmd='reattach-to-user-namespace -l'\nmacvim_app=\"${MACVIM_APP-/Applications/MacVim.a"
  },
  {
    "path": "bin/man",
    "chars": 270,
    "preview": "#!/bin/sh\n\nenv \\\n  LESS_TERMCAP_mb=$'\\E[01;31m' \\\n  LESS_TERMCAP_md=$'\\E[01;38;5;74m' \\\n  LESS_TERMCAP_me=$'\\E[0m' \\\n  L"
  },
  {
    "path": "bin/metacpan",
    "chars": 283,
    "preview": "#!/usr/bin/env zsh\n\nopen_command=''\nopen_args=''\n\nif /usr/bin/which -s open; then\n  open_command='open'\n  open_args=''\nf"
  },
  {
    "path": "bin/mkproj",
    "chars": 1262,
    "preview": "#!/usr/bin/env zsh\n\nset -ue\n\n_script_name=$(basename $0)\nusage() {\n  cat <<DOC\n  ${_script_name} [--help] [--host REPO_H"
  },
  {
    "path": "bin/os-version",
    "chars": 338,
    "preview": "#!/bin/bash\n\ncase \"$(uname)\" in\n  Darwin*)\n    sw_vers -productVersion\n    ;;\n  Linux*)\n    if which lsb_release >/dev/n"
  },
  {
    "path": "bin/paginate",
    "chars": 27,
    "preview": "#!/bin/bash\n\n${PAGER-less}\n"
  },
  {
    "path": "bin/pm-version",
    "chars": 54,
    "preview": "#!/bin/sh\n\nperl -M\"$1\" -e \"print qq|\\$$1::VERSION\\n|\"\n"
  },
  {
    "path": "bin/screenshot2slack",
    "chars": 153,
    "preview": "#!/bin/bash\n\nset -e\n\ntmp_dir='/tmp'\nformat='png'\nfile_name=\"${tmp_dir}/$(date +%s).${format}\"\nscreencapture -i \"${file_n"
  },
  {
    "path": "bin/ts-project",
    "chars": 3084,
    "preview": "#!/bin/bash\n\nset -e\n\nusage() {\n  _script_name=$(basename $0)\n  cat <<DOC\n  ${_script_name} [--help|--with-mocha|--with-e"
  },
  {
    "path": "colors/Japanesque/Japanesque.itermcolors",
    "chars": 5487,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "colors/Japanesque/README.markdown",
    "chars": 1396,
    "preview": "# Japanesque\n\n![The image of Japanesque on iTerm 2](http://cdn-ak.f.st-hatena.com/images/fotolife/a/aereal/20130102/2013"
  },
  {
    "path": "osx/defaults/alfred.bash",
    "chars": 304,
    "preview": "#!/usr/bin/env bash\n\ndefaults write com.alfredapp.Alfred appearance.hideStatusBarIcon -bool true\ndefaults write com.alfr"
  },
  {
    "path": "osx/defaults/config.bash",
    "chars": 3277,
    "preview": "#!/usr/bin/env bash\n\n# Dock {{{\ndefaults write com.apple.dock autohide -bool true\ndefaults write com.apple.dock autohide"
  },
  {
    "path": "osx/keyremap4macbook/config.sh",
    "chars": 733,
    "preview": "#!/bin/sh\n\ncli=/Applications/KeyRemap4MacBook.app/Contents/Applications/KeyRemap4MacBook_cli.app/Contents/MacOS/KeyRemap"
  },
  {
    "path": "osx/keyremap4macbook/private.xml",
    "chars": 3892,
    "preview": "<?xml version=\"1.0\"?>\n<root>\n  <appdef>\n    <appname>TERMINAL</appname>\n    <equal>com.googlecode.iterm2</equal>\n  </app"
  },
  {
    "path": "test/Gemfile",
    "chars": 63,
    "preview": "source 'https://rubygems.org/'\n\ngem 'minitest-spec'\ngem 'rake'\n"
  },
  {
    "path": "test/dotfiles_test.rb",
    "chars": 740,
    "preview": "require 'pathname'\nrequire 'minitest/autorun'\nrequire 'minitest/spec'\nrequire 'yaml'\n\nHOME         = Pathname.new(ENV.fe"
  }
]

About this extraction

This page contains the full source code of the aereal/dotfiles GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 139 files (192.5 KB), approximately 67.1k tokens, and a symbol index with 11 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!