#!/c/Ruby32-x64/bin/ruby GVIM = "C:/apps/vim/vim91/gvim.exe" def get_server_name(path) if path path = File.expand_path(path) while path !~ %r{^.\\|/$} dirname = File.dirname(path) if File.exist?(File.join(dirname, "project.vim")) if dirname =~ %r{([^/]+)/([^/]+)/*$} sn = "#{$2}(#{$1})" else sn = File.basename(dirname) end return sn end path = dirname end end return "GVIM" end def server_running?(server_name) `gvim --serverlist`.lines.map(&:chomp).include?(server_name.upcase) end if ARGV.empty? server_name = get_server_name('local_file') exec(GVIM, "--servername", server_name, err: "/dev/null") else ARGV.each_with_index do |path, i| server_name = get_server_name(path) sleep(0.2) if i > 0 Process.detach(Process.spawn(GVIM, "--servername", server_name, "--remote-tab-silent", path)) end end