What is the fastest way to detect modifications to any listed buffer?

19 views
Skip to first unread message

Jason Franklin

unread,
Dec 7, 2017, 9:03:28 AM12/7/17
to vim_use
I would like an indicator in my 'titlestring' that informs me if ANY changes are present in ANY listed buffer. This would be more like a global indicator for the 'modified' setting. What is the most efficient way to do this?

Currently, I've taken the naive approach:

function! g:ChangesExist()
let l:bufferList = filter(range(1, bufnr('$')), 'buflisted(v:val)')

for l:bufferNumber in l:bufferList

if getbufvar(l:bufferNumber, '&modified')
return 1
endif
endfor

return 0
endfunction


This seems like the most direct method, but I'm wondering if there's some simple option or function call that I'm missing...

Luc Hermitte

unread,
Dec 7, 2017, 9:23:04 AM12/7/17
to vim use
Hi,
If speed is really that important, get rid of the loop and use something like

return !empty(filter(bufferList, "getbufvar(v:val, '&modified')"))

or, in a single step:

return !empty(filter(range(1, bufnr('$')), "buflisted(v:val) && getbufvar(v:val, '&modified')"))

--
Luc Hermitte

Jason Franklin

unread,
Dec 7, 2017, 9:29:02 AM12/7/17
to vim...@googlegroups.com
Luc,

Thanks for the reply!  Looks like doing it in one step is preferable because we're already having to filter the buffers anyway.

----------------------------------------
Jason R. Franklin
Associate Systems Software Developer
Enterprise Technology Solutions


Georgia Southern University
P.O. Box 8088
Statesboro, GA 30460
912.478.5639



--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to a topic in the Google Groups "vim_use" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/vim_use/rW6up-ngGLc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Christian Brabandt

unread,
Dec 7, 2017, 9:57:00 AM12/7/17
to vim_use
If you have a recent enough Vim version, you can use the getbufinfo()
function and check the changed attribute.


Christian
--
Vaterland nennt sich dieser Staat immer dann,
wenn er sich anschickt, auf Menschenmord zu gehen.
-- Kurt Tucholsky

Jason Franklin

unread,
Dec 7, 2017, 10:00:49 AM12/7/17
to vim...@googlegroups.com
Thanks, Christian.  I have various versions of Vim running on a lot of machines, so its best if I keep with older methods.

Will keep this in mind going forward, though!

----------------------------------------
Jason R. Franklin
Associate Systems Software Developer
Enterprise Technology Solutions


Georgia Southern University
P.O. Box 8088
Statesboro, GA 30460
912.478.5639


Reply all
Reply to author
Forward
0 new messages