aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/tlib_vim/autoload/tlib/progressbar.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/tlib_vim/autoload/tlib/progressbar.vim')
-rwxr-xr-xvim/bundle/tlib_vim/autoload/tlib/progressbar.vim72
1 files changed, 72 insertions, 0 deletions
diff --git a/vim/bundle/tlib_vim/autoload/tlib/progressbar.vim b/vim/bundle/tlib_vim/autoload/tlib/progressbar.vim
new file mode 100755
index 0000000..e739eb3
--- /dev/null
+++ b/vim/bundle/tlib_vim/autoload/tlib/progressbar.vim
@@ -0,0 +1,72 @@
+" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
+" @Website: http://www.vim.org/account/profile.php?user_id=4037
+" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
+" @Revision: 72
+
+let s:statusline = []
+let s:laststatus = []
+let s:max = []
+let s:format = []
+let s:width = []
+let s:value = []
+let s:timestamp = -1
+
+" EXAMPLE: >
+" call tlib#progressbar#Init(20)
+" try
+" for i in range(20)
+" call tlib#progressbar#Display(i)
+" call DoSomethingThatTakesSomeTime(i)
+" endfor
+" finally
+" call tlib#progressbar#Restore()
+" endtry
+function! tlib#progressbar#Init(max, ...) "{{{3
+ TVarArg ['format', '%s'], ['width', 10]
+ call insert(s:statusline, &statusline)
+ call insert(s:laststatus, &laststatus)
+ call insert(s:max, a:max)
+ call insert(s:format, format)
+ call insert(s:width, width)
+ call insert(s:value, -1)
+ let &laststatus = 2
+ let s:timestamp = localtime()
+endf
+
+
+function! tlib#progressbar#Display(value, ...) "{{{3
+ TVarArg 'extra', ['always', 0]
+ let ts = localtime()
+ if !always && ts == s:timestamp
+ return
+ else
+ let s:timestamp = ts
+ endif
+ let val = a:value * s:width[0] / s:max[0]
+ if always || val != s:value[0]
+ let s:value[0] = val
+ let pbl = repeat('#', val)
+ let pbr = repeat('.', s:width[0] - val)
+ let txt = printf(s:format[0], '['.pbl.pbr.']') . extra
+ let &l:statusline = txt
+ " TLogDBG txt
+ redrawstatus
+ " redraw
+ " call tlib#notify#Echo(txt)
+ endif
+endf
+
+
+function! tlib#progressbar#Restore() "{{{3
+ let &l:statusline = remove(s:statusline, 0)
+ let &laststatus = remove(s:laststatus, 0)
+ redrawstatus
+ " redraw
+ " echo
+ call remove(s:max, 0)
+ call remove(s:format, 0)
+ call remove(s:width, 0)
+ call remove(s:value, 0)
+endf
+
+