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