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