settings

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

notifier.vim (1024B)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"CLASS: Notifier
"============================================================
let s:Notifier = {}

function! s:Notifier.AddListener(event, funcname)
    let listeners = s:Notifier.GetListenersForEvent(a:event)
    if listeners == []
        let listenersMap = s:Notifier.GetListenersMap()
        let listenersMap[a:event] = listeners
    endif
    call add(listeners, a:funcname)
endfunction

function! s:Notifier.NotifyListeners(event, path, params)
    let event = g:NERDTreeEvent.New(b:NERDTree, a:path, a:event, a:params)

    for listener in s:Notifier.GetListenersForEvent(a:event)
        call {listener}(event)
    endfor
endfunction

function! s:Notifier.GetListenersMap()
    if !exists("s:refreshListenersMap")
        let s:refreshListenersMap = {}
    endif
    return s:refreshListenersMap
endfunction

function! s:Notifier.GetListenersForEvent(name)
    let listenersMap = s:Notifier.GetListenersMap()
    return get(listenersMap, a:name, [])
endfunction

let g:NERDTreePathNotifier = deepcopy(s:Notifier)