Thursday, December 7, 2017

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

Hi,

> 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...

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

--
--
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 the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment