diff --git a/src/evalfunc.c b/src/evalfunc.c
index ea342b4..4a6332b 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -4826,7 +4826,7 @@
 		    dict_T	*d = what_arg->vval.v_dict;
 
 		    if (d != NULL)
-			get_errorlist_properties(wp, d, rettv->vval.v_dict);
+			qf_get_properties(wp, d, rettv->vval.v_dict);
 		}
 		else
 		    EMSG(_(e_dictreq));
diff --git a/src/proto/quickfix.pro b/src/proto/quickfix.pro
index ad6ad34..a801edd 100644
--- a/src/proto/quickfix.pro
+++ b/src/proto/quickfix.pro
@@ -22,7 +22,7 @@
 void ex_cfile(exarg_T *eap);
 void ex_vimgrep(exarg_T *eap);
 int get_errorlist(qf_info_T *qi, win_T *wp, int qf_idx, list_T *list);
-int get_errorlist_properties(win_T *wp, dict_T *what, dict_T *retdict);
+int qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict);
 int set_errorlist(win_T *wp, list_T *list, int action, char_u *title, dict_T *what);
 int set_ref_in_quickfix(int copyID);
 void ex_cbuffer(exarg_T *eap);
diff --git a/src/quickfix.c b/src/quickfix.c
index ee871fc..0967903 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -4691,12 +4691,27 @@
 }
 
 /*
+ * Return the quickfix/location list number with the given identifier.
+ * Returns -1 if list is not found.
+ */
+    static int
+qf_id2nr(qf_info_T *qi, int_u qfid)
+{
+    int		qf_idx;
+
+    for (qf_idx = 0; qf_idx < qi->qf_listcount; qf_idx++)
+	if (qi->qf_lists[qf_idx].qf_id == qfid)
+	    return qf_idx;
+    return -1;
+}
+
+/*
  * Return quickfix/location list details (title) as a
  * dictionary. 'what' contains the details to return. If 'list_idx' is -1,
  * then current list is used. Otherwise the specified list is used.
  */
     int
-get_errorlist_properties(win_T *wp, dict_T *what, dict_T *retdict)
+qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict)
 {
     qf_info_T	*qi = &ql_info;
     int		status = OK;
@@ -4752,12 +4767,8 @@
 	    /* For zero, use the current list or the list specifed by 'nr' */
 	    if (di->di_tv.vval.v_number != 0)
 	    {
-		for (qf_idx = 0; qf_idx < qi->qf_listcount; qf_idx++)
-		{
-		    if (qi->qf_lists[qf_idx].qf_id == di->di_tv.vval.v_number)
-			break;
-		}
-		if (qf_idx == qi->qf_listcount)
+		qf_idx = qf_id2nr(qi, di->di_tv.vval.v_number);
+		if (qf_idx == -1)
 		    return FAIL;	    /* List not found */
 	    }
 	    flags |= QF_GETLIST_ID;
@@ -5024,10 +5035,8 @@
 	/* Use the quickfix/location list with the specified id */
 	if (di->di_tv.v_type == VAR_NUMBER)
 	{
-	    for (qf_idx = 0; qf_idx < qi->qf_listcount; qf_idx++)
-		if (qi->qf_lists[qf_idx].qf_id == di->di_tv.vval.v_number)
-		    break;
-	    if (qf_idx == qi->qf_listcount)
+	    qf_idx = qf_id2nr(qi, di->di_tv.vval.v_number);
+	    if (qf_idx == -1)
 		return FAIL;	    /* List not found */
 	}
 	else
@@ -5062,6 +5071,16 @@
 
 	    retval = qf_add_entries(qi, qf_idx, di->di_tv.vval.v_list,
 		    title_save, action == ' ' ? 'a' : action);
+	    if (action == 'r')
+	    {
+		/*
+		 * When replacing the quickfix list entries using
+		 * qf_add_entries(), the title is set with a ':' prefix.
+		 * Restore the title with the saved title.
+		 */
+		vim_free(qi->qf_lists[qf_idx].qf_title);
+		qi->qf_lists[qf_idx].qf_title = vim_strsave(title_save);
+	    }
 	    vim_free(title_save);
 	}
     }
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 6a8d0e7..671381c 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -487,6 +487,19 @@
   " This wipes out the buffer, make sure that doesn't cause trouble.
   Xclose
 
+  if a:cchar == 'l'
+      " When a help window is present, running :lhelpgrep should reuse the
+      " help window and not the current window
+      new | only
+      call g:Xsetlist([], 'f')
+      help index.txt
+      wincmd w
+      lhelpgrep quickfix
+      call assert_equal(1, winnr())
+      call assert_notequal([], getloclist(1))
+      call assert_equal([], getloclist(2))
+  endif
+
   new | only
 
   " Search for non existing help string
@@ -1684,6 +1697,10 @@
   call assert_equal('  error list 1 of 3; 1 ' . common, res[0])
   call assert_equal('  error list 2 of 3; 2 ' . common, res[1])
   call assert_equal('> error list 3 of 3; 3 ' . common, res[2])
+
+  call g:Xsetlist([], 'f')
+  let l = split(execute(a:cchar . 'hist'), "\n")
+  call assert_equal('No entries', l[0])
 endfunc
 
 func Test_history()
@@ -1862,6 +1879,11 @@
     let l = g:Xgetlist({'items':1})
     call assert_equal(0, len(l.items))
 
+    call g:Xsetlist([], 'r', {'title' : 'TestTitle'})
+    call g:Xsetlist([], 'r', {'items' : [{'filename' : 'F1', 'lnum' : 10, 'text' : 'L10'}]})
+    call g:Xsetlist([], 'r', {'items' : [{'filename' : 'F1', 'lnum' : 10, 'text' : 'L10'}]})
+    call assert_equal('TestTitle', g:Xgetlist({'title' : 1}).title)
+
     " The following used to crash Vim with address sanitizer
     call g:Xsetlist([], 'f')
     call g:Xsetlist([], 'a', {'items' : [{'filename':'F1', 'lnum':10}]})
@@ -1904,10 +1926,10 @@
     call g:Xsetlist([], 'r', l2)
     let newl1=g:Xgetlist({'nr':1,'all':1})
     let newl2=g:Xgetlist({'nr':2,'all':1})
-    call assert_equal(':Fruits', newl1.title)
+    call assert_equal('Fruits', newl1.title)
     call assert_equal(['Fruits'], newl1.context)
     call assert_equal('Line20', newl1.items[0].text)
-    call assert_equal(':Colors', newl2.title)
+    call assert_equal('Colors', newl2.title)
     call assert_equal(['Colors'], newl2.context)
     call assert_equal('Line10', newl2.items[0].text)
     call g:Xsetlist([], 'f')
diff --git a/src/version.c b/src/version.c
index a483bb7..88849e9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1093,
+/**/
     1092,
 /**/
     1091,
