I'm not sure if it's what you're looking for, but the tabline is
triggered on the 'modified' setting.
Just for the helluvit, I added pre- and post-proc function hooks to
TabLineSet.vim.
You can also add a check inside a CursorMoved[I} autocommand, which
might have a little more overhead, but maybe not noticeable.
In either case, my idea would be to set up a status dict:
let s:modified_table = {}
function! Tst_postproc_modified( tabline )
let updated = []
for bufnr in range( 1, bufnr("$") )
if !bufexists( bufnr ) | continue | endif
let modded = getbufvar( bufnr, '&modified' )
if !has_key( s:modified_table, bufnr )
let s:modified_table[ bufnr ] = modded
endif
if s:modified_table[ bufnr ] != modded
let s:modified_table[ bufnr ] = modded
call add( updated, [ bufnr, modded ] )
endif
endfor
for elem in updated
let bufnr = elem[0]
let modded = elem[1]
echomsg 'bufnr#' . bufnr . ', ' . bufname( bufnr ) . ' is now '
. (
modded ? '' : 'no' ) . 'modified'
endfor
" call somefunction( updated )
endfunction
On 5/3/06, Yakov Lerner <[EMAIL PROTECTED]> wrote:
I want to trap changes in the value of 'modified' (execute
my commands when first change is done to the
buffer, and when undo reverts buffer to unmodified state).
How can I achieve this ?
Note that this is not necessarity connected to Insert mode.
Buffer can easily become modified without entering insert mode.
Yakov