diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-07-17 15:20:30 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-07-17 15:20:30 +0200 |
commit | c5604bc1656354af7404270e27441f2e8f70d785 (patch) | |
tree | 229eed4ddaadee9ffb0594ee104e2a3bd6c83038 /runtime/plugin/rrhelper.vim | |
parent | f91787cb9adc47cadea5d17b08d075a15a2e00f4 (diff) |
Better implementation of creating the Color Scheme menu. (Juergen Kraemer)
Diffstat (limited to 'runtime/plugin/rrhelper.vim')
-rw-r--r-- | runtime/plugin/rrhelper.vim | 70 |
1 files changed, 33 insertions, 37 deletions
diff --git a/runtime/plugin/rrhelper.vim b/runtime/plugin/rrhelper.vim index 302177cb2d..b09cbc10b9 100644 --- a/runtime/plugin/rrhelper.vim +++ b/runtime/plugin/rrhelper.vim @@ -3,7 +3,7 @@ " Last Change: 2008 May 29 " Has this already been loaded? -if exists("loaded_rrhelper") +if exists("loaded_rrhelper") || !has("clientserver") finish endif let loaded_rrhelper = 1 @@ -11,42 +11,38 @@ 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 +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 = substitute(argv(cnt), '\\', '/', "g") + if exists('*fnameescape') + let f = fnameescape(f) + else + let f = escape(f, " \t\n*?[{`$\\%#'\"|!<") 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 - -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 : |