# chezmoi:template:left-delimiter="#{{"
#{{- /* vim: set filetype=tmux: */ -}}
#{{- if lookPath "tmux" -}}
################################################################################
# Base configuration
################################################################################
# Use Ctrl-a as a prefix instead of Ctrl-b
set -g prefix C-a
unbind C-b

# More responsive with sending commands
set -sg escape-time 0

set-option -g history-limit 500000

# Start counting at 0, easier for keyboard shortcuts
set -g base-index 1
set -g pane-base-index 1
set-window-option -g pane-base-index 1
set-option -g renumber-windows on

# Status
set -g status-interval 5
set -g status-keys emacs
set -g status-justify centre

set -g status-left "#[fg=colour75]#S:#I.#P"
set -g status-right "#{prefix_highlight} #[fg=colour75]#S:#I.#P %F %l:%M%P"

setw -g monitor-activity on
set -g visual-activity on

set-option -g mouse on

#{{- if lookPath "nu" }}
set-option -g default-shell "#{{ lookPath "nu" | replace .chezmoi.homeDir "$HOME" }}"
#{{- end }}

################################################################################
# Colors
################################################################################
#{{ if eq .chezmoi.os "darwin" -}}
set default-terminal "tmux-256color"
set terminal-overrides ",xterm-256color:Tc"
#{{ end }}
set -g status-fg white
set -g status-bg black

################################################################################
# Custom bindings
################################################################################

# Have buffers be more like vim buffers
setw -g mode-keys vi
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind -T copy-mode-vi 'v' send -X begin-selection
bind -T copy-mode-vi 'y' send -X copy-selection
bind -T copy-mode-vi 'q' send -X rectangle-toggle

# Make switch session shortcut repeatable
bind -r ( switch-client -p
bind -r ) switch-client -n

#{{- if lookPath "fzf" -}}
unbind f
bind f display-popup -E "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
#{{ end }}

# Reload config with prefix r
bind r source-file $XDG_CONFIG_HOME/tmux/tmux.conf \; display "Reloaded"

# Send prefix to the terminal
bind C-a send-prefix

bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

################################################################################
# Plugins
################################################################################

set-environment -g TMUX_PLUGIN_MANAGER_PATH $XDG_DATA_HOME/tmux/plugins

set -g @plugin 'tmux-plugins/tmux'
set -g @plugin 'tmux-plugins/tmux-copycat'
set -g @plugin 'tmux-plugins/tmux-open'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'tmux-plugins/tmux-yank'

# O will open a file in an editor
set -g @open-editor O

set -g @prefix_highlight_show_copy_mode 'on'
set -g @prefix_highlight_copy_mode_attr 'fg=black,bg=yellow,bold' # default is 'fg=default,bg=yellow'
set -g @prefix_highlight_show_sync_mode 'on'
set -g @prefix_highlight_sync_mode_attr 'fg=black,bg=green' # default is 'fg=default,bg=yellow'

run $XDG_CONFIG_HOME/tmux/plugins/tpm/tpm
#{{- end }}