xref: /vim-8.2.3635/runtime/plugin/rrhelper.vim (revision 0fa313a7)
1" Vim plugin with helper function(s) for --remote-wait
2" Maintainer: Flemming Madsen <[email protected]>
3" Last Change: 2004 May 30
4
5" Has this already been loaded?
6if exists("loaded_rrhelper")
7  finish
8endif
9let loaded_rrhelper = 1
10
11" Setup answers for a --remote-wait client who will assume
12" a SetupRemoteReplies() function in the command server
13
14if has("clientserver")
15  function SetupRemoteReplies()
16    let cnt = 0
17    let max = argc()
18
19    let id = expand("<client>")
20    if id == 0
21      return
22    endif
23    while cnt < max
24      " Handle same file from more clients and file being more than once
25      " on the command line by encoding this stuff in the group name
26      let uniqueGroup = "RemoteReply_".id."_".cnt
27
28      " Path separators are always forward slashes for the autocommand pattern.
29      " Escape special characters with a backslash.
30      let f = escape(substitute(argv(cnt), '\\', '/', "g"), ' *,?[{')
31      execute "augroup ".uniqueGroup
32      execute "autocmd ".uniqueGroup." BufUnload ". f ."  call DoRemoteReply('".id."', '".cnt."', '".uniqueGroup."', '". f ."')"
33      let cnt = cnt + 1
34    endwhile
35    augroup END
36  endfunc
37
38  function DoRemoteReply(id, cnt, group, file)
39    call server2client(a:id, a:cnt)
40    execute 'autocmd! '.a:group.' BufUnload '.a:file
41    execute 'augroup! '.a:group
42  endfunc
43
44endif
45
46
47" vim: set sw=2 sts=2 :
48