# Use vim keybindings in copy mode
set -g mode-keys vi

# Change prefix to C-Space
unbind C-b
set -g prefix C-Space
bind Space send-prefix

# Address vim mode switching delay
set -s escape-time 0

# Increase scrollback buffer size
set -g history-limit 1000000

# Set tmux messages display time to 4 seconds
set -g display-time 4000

# Refresh 'status-left' and 'status-right' more often
set -g status-interval 5

# Upgrade $TERM
set -g default-terminal "tmux-256color"

# Focus events enabled for terminals that support them
set -g focus-events on

# TODO: Change this comment to something that explains the setting
# super useful when using "grouped sessions" and multi-monitor setup
setw -g aggressive-resize on

# Start window & pane index at 1
set -g pane-base-index 1

# Enable mouse support
set-option -g mouse on

# Enable changing cursor shape per pane in iTerm2 or VTE compatible terminals,
# vim or zsh should emit VTE compatible escape sequences to change cursor shape
if -b '[ -n $ITERM_PROFILE ]' \
  "set -ga terminal-overrides '*:Ss=\E]1337;CursorShape=%p1%d\7'" \
  "set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[2 q'"

# Enable strikethrough on VTE compatible terminals.
set -ga terminal-overrides 'xterm*:smxx=\E[9m'

# Set only on OS X where it's required
if -b '[ "`uname`" = "Darwin" ]' \
  "set -g default-command 'reattach-to-user-namespace -l $SHELL'"

# Restore old next/previous window bindings
bind C-n next-window
bind C-p previous-window

# Make new splits open in current directory
bind "\"" split-window -c "#{pane_current_path}"
bind "%" split-window -h -c "#{pane_current_path}"

# Integrate pane selection with vim
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'
unbind -T copy-mode-vi C-h
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"

# Integrate urlview
bind u capture-pane \; split-window "tmux show-buffer | urlview -"

# Enter copy mode with C-U
bind C-u copy-mode -u

# Begin selection in copy mode with v not Space
bind -T copy-mode-vi v send-keys -X begin-selection
# Yank to the system clipboard in copy mode
if -b '[ "`uname`" = "Darwin" ]' \
  "bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'reattach-to-user-namespace pbcopy'" \
  "bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xsel -i -p && xsel -o -p | xsel -i -b'"

# Left status style
set-window-option -g status-left " #S"
set-window-option -g status-left-fg colour240
set-window-option -g status-left-bg colour233

# Centre status style
set-window-option -g status-fg colour240
set-window-option -g status-bg colour233

# Right status style
set-window-option -g status-right "%a %d-%m-%y %H:%M "
set-window-option -g status-right-fg white
set-window-option -g status-right-bg colour233

# Active window status style
set-window-option -g window-status-current-format " #I: #W"
set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg colour233

# Inactive window status style
set-window-option -g window-status-format " #I: #W"
set-window-option -g window-status-fg colour240
set-window-option -g window-status-bg colour233

# Active pane border
set-option -g pane-active-border-fg colour235
set-option -g pane-active-border-bg colour235

# Inactive pane border
set-option -g pane-border-fg colour233
set-option -g pane-border-bg colour233

# Command line window list selection
set-window-option -g mode-style fg=white,bg=colour237
set-option -g message-style fg=white,bg=colour237