Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions doc/terminus.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ OPTIONS *terminus-options*
insert and replace modes. To disable, set to 0: >

let g:TerminusCursorShape=0
<
*g:TerminusCursorBlinking*
|g:TerminusCursorBlinking| boolean (default: 1)

Controls whether cursor should blink if supported by the terminal. To
disable, set to 0: >

let g:TerminusCursorBlinking=0
<
*g:TerminusInsertCursorShape*
|g:TerminusInsertCursorShape| number (default: 1)
Expand Down
18 changes: 16 additions & 2 deletions plugin/terminus.vim
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ endif
let s:konsole=
\ exists('$KONSOLE_DBUS_SESSION') ||
\ exists('$KONSOLE_PROFILE_NAME')
let s:konsolev=exists('$KONSOLE_VERSION') ? $KONSOLE_VERSION : 0
let s:iterm=
\ exists('$ITERM_PROFILE') ||
\ exists('$ITERM_SESSION_ID') ||
Expand Down Expand Up @@ -47,31 +48,44 @@ if s:shape
let s:start_insert="\<Esc>]1337;CursorShape=" . s:insert_shape . "\x7"
let s:start_replace="\<Esc>]1337;CursorShape=" . s:replace_shape . "\x7"
let s:end_insert="\<Esc>]1337;CursorShape=" . s:normal_shape . "\x7"
elseif s:iterm || s:konsole
elseif s:iterm || (s:konsole && s:konsolev < 180770)
let s:start_insert="\<Esc>]50;CursorShape=" . s:insert_shape . "\x7"
let s:start_replace="\<Esc>]50;CursorShape=" . s:replace_shape . "\x7"
let s:end_insert="\<Esc>]50;CursorShape=" . s:normal_shape . "\x7"
else
let s:cursor_shape_to_vte_shape={1: 6, 2: 4, 0: 2}
let s:blinking=get(g:, 'TerminusCursorBlinking', 1)
if s:blinking
let s:cursor_shape_to_vte_shape={1: 5, 2: 3, 0: 1}
else
let s:cursor_shape_to_vte_shape={1: 6, 2: 4, 0: 2}
endif
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="\<Esc>[" . s:insert_shape . ' q'
let s:start_replace="\<Esc>[" . s:replace_shape . ' q'
let s:end_insert="\<Esc>[" . s:normal_shape . ' q'
" Non-standard control sequence to restore the default cursor shape.
let s:restore_cursor="\<Esc>[0 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)
if exists("s:restore_cursor")
let s:restore_cursor=terminus#private#wrap(s:restore_cursor)
endif
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
if exists("s:restore_cursor")
let &t_te.=s:restore_cursor
endif
endif
endif

Expand Down