mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
parent
7fcf2f926f
commit
9d207fd876
@ -74,6 +74,8 @@ static inline void buf_set_changedtick(buf_T *const buf,
|
||||
static inline void buf_set_changedtick(buf_T *const buf,
|
||||
const varnumber_T changedtick)
|
||||
{
|
||||
typval_T old_val = buf->changedtick_di.di_tv;
|
||||
|
||||
#ifndef NDEBUG
|
||||
dictitem_T *const changedtick_di = tv_dict_find(
|
||||
buf->b_vars, S_LEN("changedtick"));
|
||||
@ -87,6 +89,13 @@ static inline void buf_set_changedtick(buf_T *const buf,
|
||||
assert(changedtick_di == (dictitem_T *)&buf->changedtick_di);
|
||||
#endif
|
||||
buf->changedtick_di.di_tv.vval.v_number = changedtick;
|
||||
|
||||
if (tv_dict_is_watched(buf->b_vars)) {
|
||||
tv_dict_watcher_notify(buf->b_vars,
|
||||
(char *)buf->changedtick_di.di_key,
|
||||
&buf->changedtick_di.di_tv,
|
||||
&old_val);
|
||||
}
|
||||
}
|
||||
|
||||
static inline varnumber_T buf_get_changedtick(const buf_T *const buf)
|
||||
|
@ -1,12 +1,13 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local clear, nvim, source = helpers.clear, helpers.nvim, helpers.source
|
||||
local insert = helpers.insert
|
||||
local eq, next_msg = helpers.eq, helpers.next_msg
|
||||
local exc_exec = helpers.exc_exec
|
||||
local command = helpers.command
|
||||
local eval = helpers.eval
|
||||
|
||||
|
||||
describe('dictionary change notifications', function()
|
||||
describe('VimL dictionary notifications', function()
|
||||
local channel
|
||||
|
||||
before_each(function()
|
||||
@ -338,4 +339,22 @@ describe('dictionary change notifications', function()
|
||||
eq({'notification', '2', {'foo', {old = 'baz', new = 'bar'}}}, next_msg())
|
||||
end)
|
||||
end)
|
||||
|
||||
it('for b:changedtick', function()
|
||||
source([[
|
||||
function! OnTickChanged(dict, key, value)
|
||||
call rpcnotify(g:channel, 'SendChangeTick', a:key, a:value)
|
||||
endfunction
|
||||
call dictwatcheradd(b:, 'changedtick', 'OnTickChanged')
|
||||
]])
|
||||
|
||||
insert('t');
|
||||
eq({'notification', 'SendChangeTick', {'changedtick', {old = 2, new = 3}}},
|
||||
next_msg())
|
||||
|
||||
command([[call dictwatcherdel(b:, 'changedtick', 'OnTickChanged')]])
|
||||
insert('t');
|
||||
eq(2, eval('1+1')) -- Still alive?
|
||||
end)
|
||||
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user