aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--autoload/insert_timeout.vim27
-rw-r--r--plugin/insert_timeout.vim6
2 files changed, 18 insertions, 15 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
diff --git a/plugin/insert_timeout.vim b/plugin/insert_timeout.vim
index 80915d3..b0abde6 100644
--- a/plugin/insert_timeout.vim
+++ b/plugin/insert_timeout.vim
@@ -15,9 +15,5 @@ let loaded_insert_timeout = 1
augroup insert_timeout
autocmd!
autocmd InsertEnter *
- \ call insert_timeout#Enter()
- autocmd InsertLeave *
- \ call insert_timeout#Leave()
- autocmd CursorHoldI *
- \ stopinsert
+ \ call insert_timeout#()
augroup END