" Copyright 2015-present Greg Hurrell. All rights reserved. " Licensed under the terms of the BSD 2-clause license. " Provide users with means to prevent loading, as recommended in `:h " write-plugin`. if exists('g:TerminusLoaded') || &compatible || v:version < 700 finish endif let g:TerminusLoaded=1 " Temporarily set 'cpoptions' to Vim default as per `:h use-cpo-save`. let s:cpoptions=&cpoptions set cpoptions&vim set autoread " if not changed in Vim, automatically pick up changes after "git checkout" etc if &ttimeoutlen == -1 && &timeoutlen > 50 || &ttimeoutlen > 50 set ttimeoutlen=50 " speed up O etc in the Terminal endif let s:iterm= \ exists('$ITERM_PROFILE') || \ exists('$ITERM_SESSION_ID') || \ exists('$KONSOLE_DBUS_SESSION') || \ exists('$KONSOLE_PROFILE_NAME') || \ exists('g:TerminusAssumeITerm') || \ filereadable(expand('~/.vim/.assume-iterm')) let s:screenish=&term =~# 'screen\|tmux' let s:tmux=exists('$TMUX') let s:xterm=&term =~# 'xterm' " Change shape of cursor in insert mode in iTerm 2. let s:shape=get(g:, 'TerminusCursorShape', 1) if s:shape let s:insert_shape=+get(g:, 'TerminusInsertCursorShape', 1) let s:replace_shape=+get(g:, 'TerminusReplaceCursorShape', 2) let s:normal_shape=+get(g:, 'TerminusNormalCursorShape', 0) if s:iterm let s:start_insert="\]50;CursorShape=" . s:insert_shape . "\x7" let s:start_replace="\]50;CursorShape=" . s:replace_shape . "\x7" let s:end_insert="\]50;CursorShape=" . s:normal_shape . "\x7" else let s:cursor_shape_to_vte_shape={1: 6, 2: 4, 0: 2} let s:insert_shape=s:cursor_shape_to_vte_shape[s:insert_shape] let s:replace_shape=s:cursor_shape_to_vte_shape[s:replace_shape] let s:normal_shape=s:cursor_shape_to_vte_shape[s:normal_shape] let s:start_insert="\[" . s:insert_shape . ' q' let s:start_replace="\[" . s:replace_shape . ' q' let s:end_insert="\[" . s:normal_shape . ' q' endif if s:tmux let s:start_insert=terminus#private#wrap(s:start_insert) let s:start_replace=terminus#private#wrap(s:start_replace) let s:end_insert=terminus#private#wrap(s:end_insert) endif let &t_SI=s:start_insert if v:version > 704 || v:version == 704 && has('patch687') let &t_SR=s:start_replace end let &t_EI=s:end_insert endif let s:mouse=get(g:, 'TerminusMouse', 1) if s:mouse if has('mouse') set mouse=a if s:screenish || s:xterm if !has('nvim') if has('mouse_sgr') set ttymouse=sgr else set ttymouse=xterm2 endif endif endif endif endif let s:focus=get(g:, 'TerminusFocusReporting', 1) if s:focus if has('autocmd') augroup Terminus autocmd! autocmd FocusGained * checktime augroup END endif " Enable focus reporting on entering Vim. let &t_ti.="\e[?1004h" " Disable focus reporting on leaving Vim. let &t_te="\e[?1004l" . &t_te execute "set =\[O" execute "set =\[I" cnoremap eterminus#private#focus_lost() cnoremap eterminus#private#focus_gained() if v:version > 703 || v:version == 703 && has('patch438') " was added in 7.3.438 (see `:h version7.txt`). inoremap :silent doautocmd FocusLost % inoremap :silent doautocmd FocusGained % nnoremap :silent doautocmd FocusLost % nnoremap :silent doautocmd FocusGained % onoremap :silent doautocmd FocusLost % onoremap :silent doautocmd FocusGained % vnoremap :silent doautocmd FocusLost %gv vnoremap :silent doautocmd FocusGained %gv else inoremap :silent doautocmd FocusLost % inoremap :silent doautocmd FocusGained % nnoremap :silent doautocmd FocusLost % nnoremap :silent doautocmd FocusGained % onoremap :silent doautocmd FocusLost % onoremap :silent doautocmd FocusGained % vnoremap :silent doautocmd FocusLost %gv vnoremap :silent doautocmd FocusGained %gv endif endif let s:paste=get(g:, 'TerminusBracketedPaste', 1) if s:paste " Make use of Xterm "bracketed paste mode". See: " - http://www.xfree86.org/current/ctlseqs.html#Bracketed%20Paste%20Mode " - http://stackoverflow.com/questions/5585129 if s:screenish || s:xterm " Enable bracketed paste mode on entering Vim. let &t_ti.="\e[?2004h" " Disable bracketed paste mode on leaving Vim. let &t_te="\e[?2004l" . &t_te set pastetoggle=[201~ inoremap [200~ terminus#private#paste('') nnoremap [200~ terminus#private#paste('i') vnoremap [200~ terminus#private#paste('c') cnoremap [200~ cnoremap [201~ endif endif " Restore 'cpoptions' to its former value. let &cpoptions=s:cpoptions unlet s:cpoptions