diff --git a/runtime/doc/if_cscop.txt b/runtime/doc/if_cscop.txt
index 91dd4c6..f3f1a49 100644
--- a/runtime/doc/if_cscop.txt
+++ b/runtime/doc/if_cscop.txt
@@ -271,6 +271,15 @@
 	:set cst
 	:set nocst
 <
+							*cscoperelative* *csre*
+If 'cscoperelative' set, then in absence of a prefix given to cscope (prefx
+is the argument to -P option of cscope), basename of cscope.out location
+(usually the project root directory) will be used as the prefix to construt
+absolute path.The default is off. Note: This option is only effective when
+cscope (cscopeprg) is initialized without a prefix path (-P). Examples: >
+	:set csre
+	:set nocsre
+<
 							*cscopetagorder* *csto*
 The value of 'csto' determines the order in which |:cstag| performs a search.
 If 'csto' is set to zero, cscope database(s) are searched first, followed
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index a5f6148..5759760 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -2209,6 +2209,16 @@
 	Specifies whether to use quickfix window to show cscope results.
 	See |cscopequickfix|.
 
+						*'cscoperelative'* *'csre'*
+'cscoperelative' 'csre' boolean (default off)
+			global
+			{not available when compiled without the |+cscope|
+			feature}
+			{not in Vi}
+	In the absence of a prefix (-P) for cscope. setting this option enables
+	to use the basename of cscope.out path as the prefix.
+	See |cscoperelative|.
+
 				*'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'*
 'cscopetag' 'cst'	boolean (default off)
 			global
diff --git a/src/if_cscope.c b/src/if_cscope.c
index a966226..f9e318d 100644
--- a/src/if_cscope.c
+++ b/src/if_cscope.c
@@ -2471,42 +2471,61 @@
  */
     static char *
 cs_resolve_file(i, name)
-    int i;
+    int  i;
     char *name;
 {
-    char *fullname;
-    int len;
+    char	*fullname;
+    int		len;
+    char_u	*csdir = NULL;
 
     /*
-     * ppath is freed when we destroy the cscope connection.
-     * fullname is freed after cs_make_vim_style_matches, after it's been
-     * copied into the tag buffer used by vim
+     * Ppath is freed when we destroy the cscope connection.
+     * Fullname is freed after cs_make_vim_style_matches, after it's been
+     * copied into the tag buffer used by Vim.
      */
     len = (int)(strlen(name) + 2);
     if (csinfo[i].ppath != NULL)
 	len += (int)strlen(csinfo[i].ppath);
+    else if (p_csre && csinfo[i].fname != NULL)
+    {
+	/* If 'cscoperelative' is set and ppath is not set, use cscope.out
+	 * path in path resolution. */
+	csdir = alloc(MAXPATHL);
+	if (csdir != NULL)
+	{
+	    vim_strncpy(csdir, (char_u *)csinfo[i].fname,
+		    gettail((char_u *)csinfo[i].fname) - 1 - (char_u *)csinfo[i].fname);
+	    len += (int)STRLEN(csdir);
+	}
+    }
 
     if ((fullname = (char *)alloc(len)) == NULL)
 	return NULL;
 
-    /*
-     * note/example: this won't work if the cscope output already starts
+    /* Note/example: this won't work if the cscope output already starts
      * "../.." and the prefix path is also "../..".  if something like this
-     * happens, you are screwed up and need to fix how you're using cscope.
-     */
-    if (csinfo[i].ppath != NULL &&
-	(strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0) &&
-	(name[0] != '/')
+     * happens, you are screwed up and need to fix how you're using cscope. */
+    if (csinfo[i].ppath != NULL
+	    && (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0)
+	    && (name[0] != '/')
 #ifdef WIN32
-	&& name[0] != '\\' && name[1] != ':'
+	    && name[0] != '\\' && name[1] != ':'
 #endif
-	)
+       )
 	(void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name);
+    else if (csdir != NULL && csinfo[i].fname != NULL && STRLEN(csdir) > 0)
+    {
+	/* Check for csdir to be non empty to avoid empty path concatenated to
+	 * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */
+	vim_free(fullname);
+	fullname = concat_fnames(csdir, (char_u *)name, TRUE);
+    }
     else
 	(void)sprintf(fullname, "%s", name);
 
+    vim_free(csdir);
     return fullname;
-} /* cs_resolve_file */
+}
 
 
 /*
diff --git a/src/version.c b/src/version.c
index 93bfb55..1033b74 100644
--- a/src/version.c
+++ b/src/version.c
@@ -710,6 +710,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    210,
+/**/
     209,
 /**/
     208,
