summaryrefslogtreecommitdiff
path: root/runtime/plugin/rrhelper.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/plugin/rrhelper.vim')
-rw-r--r--runtime/plugin/rrhelper.vim47
1 files changed, 47 insertions, 0 deletions
diff --git a/runtime/plugin/rrhelper.vim b/runtime/plugin/rrhelper.vim
new file mode 100644
index 000000000..05090b59c
--- /dev/null
+++ b/runtime/plugin/rrhelper.vim
@@ -0,0 +1,47 @@
+" Vim plugin with helper function(s) for --remote-wait
+" Maintainer: Flemming Madsen <fma@cci.dk>
+" Last Change: 2004 May 30
+
+" Has this already been loaded?
+if exists("loaded_rrhelper")
+ finish
+endif
+let loaded_rrhelper = 1
+
+" Setup answers for a --remote-wait client who will assume
+" a SetupRemoteReplies() function in the command server
+
+if has("clientserver")
+ function SetupRemoteReplies()
+ let cnt = 0
+ let max = argc()
+
+ let id = expand("<client>")
+ 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 = escape(substitute(argv(cnt), '\\', '/', "g"), ' *,?[{')
+ 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
+
+endif
+
+
+" vim: set sw=2 sts=2 :