From aed8ce9da277f5ecffe968b324f242c41c3b752a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 10:50:31 +0200 Subject: Adding upstream version 2:9.0.1378. Signed-off-by: Daniel Baumann --- runtime/plugin/rrhelper.vim | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 runtime/plugin/rrhelper.vim (limited to 'runtime/plugin/rrhelper.vim') diff --git a/runtime/plugin/rrhelper.vim b/runtime/plugin/rrhelper.vim new file mode 100644 index 0000000..b09cbc1 --- /dev/null +++ b/runtime/plugin/rrhelper.vim @@ -0,0 +1,48 @@ +" Vim plugin with helper function(s) for --remote-wait +" Maintainer: Flemming Madsen +" Last Change: 2008 May 29 + +" Has this already been loaded? +if exists("loaded_rrhelper") || !has("clientserver") + finish +endif +let loaded_rrhelper = 1 + +" Setup answers for a --remote-wait client who will assume +" a SetupRemoteReplies() function in the command server + +function SetupRemoteReplies() + let cnt = 0 + let max = argc() + + let id = expand("") + if id == 0 + return + endif + while cnt < max + " Handle same file from more clients and file being more than once + " on the command line by encoding this stuff in the group name + let uniqueGroup = "RemoteReply_".id."_".cnt + + " Path separators are always forward slashes for the autocommand pattern. + " Escape special characters with a backslash. + let f = substitute(argv(cnt), '\\', '/', "g") + if exists('*fnameescape') + let f = fnameescape(f) + else + let f = escape(f, " \t\n*?[{`$\\%#'\"|!<") + endif + execute "augroup ".uniqueGroup + execute "autocmd ".uniqueGroup." BufUnload ". f ." call DoRemoteReply('".id."', '".cnt."', '".uniqueGroup."', '". f ."')" + let cnt = cnt + 1 + endwhile + augroup END +endfunc + +function DoRemoteReply(id, cnt, group, file) + call server2client(a:id, a:cnt) + execute 'autocmd! '.a:group.' BufUnload '.a:file + execute 'augroup! '.a:group +endfunc + +" vim: set sw=2 sts=2 : -- cgit v1.2.3