diff -r d3fd21498333 -r fe1ba97f662e src/window.c
--- a/src/window.c	Wed Aug 10 22:55:39 2011 +0530
+++ b/src/window.c	Wed Aug 17 14:45:48 2011 +0530
@@ -6142,7 +6142,51 @@
     *buf = NUL;
     if (fname == NULL)
 	return FAIL;
-
+    /* Convert file:// URLs to regular file system paths */
+    if((STRNCMP(fname, "file://", 7) ==  0) 
+# ifdef BACKSLASH_IN_FILENAME
+	    || (STRNCMP(fname, "file:\\\\", 7) ==  0)
+# endif
+      )
+    {
+	int start = 7;
+	char_u *tmp;
+	int i = 0;
+	if(fname[7] == '/'  
+# ifdef BACKSLASH_IN_FILENAME
+		|| fname[7] == '\\'
+# endif		
+	  )
+	{
+#ifdef MSWIN	    
+	    /* remove the f/b slash because \d:\foo won't resolve */
+	    start = 8;
+#else
+	    /* file:///var/foo -> /var/foo */
+	    start = 7;	    
+#endif
+	}
+	if((STRNCMP(fname, "file://localhost/", 17) == 0)
+# ifdef BACKSLASH_IN_FILENAME
+		|| (STRNCMP(fname, "file:\\\\localhost\\", 17) == 0)
+# endif		
+	  )
+	{
+#ifdef MSWIN	    
+	    start = 17;
+#else
+	    start = 16;
+#endif	    
+	}
+	tmp = alloc((unsigned)(STRLEN(fname) - start + 1));
+	while(fname[start] != NUL)
+	{
+	    tmp[i++] = fname[start++];
+	}
+	tmp[i] = NUL;
+	STRCPY(fname,tmp);
+	vim_free(tmp);
+    }
     url = path_with_url(fname);
     if (!url)
 	retval = mch_FullName(fname, buf, len, force);
