aboutsummaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2019-06-05 23:03:23 +1200
committerTom Ryder <tom@sanctum.geek.nz>2019-06-05 23:03:23 +1200
commit9c85b1b2f7a596c1a926d804c16422301924b4c1 (patch)
tree9be8b41d88da1a0430c55d839b42c648fc1b1c95 /autoload
parentMerge branch 'hotfix/v1.0.1' into develop (diff)
downloadvim-insert-timeout-9c85b1b2f7a596c1a926d804c16422301924b4c1.tar.gz
vim-insert-timeout-9c85b1b2f7a596c1a926d804c16422301924b4c1.zip
Refactor to use dynamic autocmds
Diffstat (limited to 'autoload')
-rw-r--r--autoload/insert_timeout.vim27
1 files changed, 17 insertions, 10 deletions
diff --git a/autoload/insert_timeout.vim b/autoload/insert_timeout.vim
index 8ca3e7c..3dfe9ad 100644
--- a/autoload/insert_timeout.vim
+++ b/autoload/insert_timeout.vim
@@ -1,14 +1,21 @@
-" Set update time to configured variable or default 20 seconds
-function! insert_timeout#Enter() abort
+" Set update time to configured variable or default 20 seconds for duration of
+" insert
+function! insert_timeout#() abort
+
+ " Save current value of 'updatetime' into script variable
let s:updatetime = &updatetime
+
+ " Set 'updatetime' to configured variable or default
let &updatetime = get(g:, 'insert_timeout_duration', 20000)
-endfunction
-" Restore update time to its previous value
-function! insert_timeout#Leave() abort
- if !exists('s:updatetime')
- return
- endif
- let &updatetime = s:updatetime
- unlet s:updatetime
+ " Restore 'updatetime' when insert mode ends
+ autocmd insert_timeout InsertLeave *
+ \ let &updatetime = s:updatetime
+ \|autocmd! insert_timeout InsertLeave
+
+ " Stop the insert after 'updatetime' seconds
+ autocmd insert_timeout CursorHoldI *
+ \ stopinsert
+ \|autocmd! insert_timeout CursorHoldI
+
endfunction