updated for version 7.0188
diff --git a/src/eval.c b/src/eval.c
index e93182f..47fccbc 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -517,6 +517,7 @@
 static void f_getftime __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_getftype __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_getline __ARGS((typval_T *argvars, typval_T *rettv));
+static void f_getloclist __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_getqflist __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_getregtype __ARGS((typval_T *argvars, typval_T *rettv));
@@ -595,6 +596,7 @@
 static void f_setbufvar __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_setcmdpos __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_setline __ARGS((typval_T *argvars, typval_T *rettv));
+static void f_setloclist __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_setqflist __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_setreg __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_setwinvar __ARGS((typval_T *argvars, typval_T *rettv));
@@ -704,6 +706,7 @@
 static void func_ref __ARGS((char_u *name));
 static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict));
 static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
+static win_T *find_win_by_nr __ARGS((typval_T *vp));
 
 /* Character used as separated in autoload function/variable names. */
 #define AUTOLOAD_CHAR '#'
@@ -6863,6 +6866,7 @@
     {"getftime",	1, 1, f_getftime},
     {"getftype",	1, 1, f_getftype},
     {"getline",		1, 2, f_getline},
+    {"getloclist",	1, 1, f_getloclist},
     {"getqflist",	0, 0, f_getqflist},
     {"getreg",		0, 2, f_getreg},
     {"getregtype",	0, 1, f_getregtype},
@@ -6943,6 +6947,7 @@
     {"setbufvar",	3, 3, f_setbufvar},
     {"setcmdpos",	1, 1, f_setcmdpos},
     {"setline",		2, 2, f_setline},
+    {"setloclist",	2, 3, f_setloclist},
     {"setqflist",	1, 2, f_setqflist},
     {"setreg",		2, 3, f_setreg},
     {"setwinvar",	3, 3, f_setwinvar},
@@ -9790,13 +9795,14 @@
     get_buffer_lines(curbuf, lnum, end, retlist, rettv);
 }
 
+static void get_qf_ll_ist __ARGS((win_T *wp, typval_T *rettv));
+
 /*
- * "getqflist()" function
+ * Shared by getqflist() and getloclist() functions
  */
-/*ARGSUSED*/
     static void
-f_getqflist(argvars, rettv)
-    typval_T	*argvars;
+get_qf_ll_ist(wp, rettv)
+    win_T	*wp;
     typval_T	*rettv;
 {
 #ifdef FEAT_QUICKFIX
@@ -9811,9 +9817,40 @@
 	rettv->vval.v_list = l;
 	rettv->v_type = VAR_LIST;
 	++l->lv_refcount;
-	(void)get_errorlist(l);
+	(void)get_errorlist(wp, l);
     }
 #endif
+
+}
+
+/*
+ * "getloclist()" function
+ */
+/*ARGSUSED*/
+    static void
+f_getloclist(argvars, rettv)
+    typval_T	*argvars;
+    typval_T	*rettv;
+{
+    win_T	*win;
+
+    rettv->vval.v_number = FALSE;
+
+    win = find_win_by_nr(&argvars[0]);
+    if (win != NULL)
+	get_qf_ll_ist(win, rettv);
+}
+
+/*
+ * "getqflist()" function
+ */
+/*ARGSUSED*/
+    static void
+f_getqflist(argvars, rettv)
+    typval_T	*argvars;
+    typval_T	*rettv;
+{
+    get_qf_ll_ist(NULL, rettv);
 }
 
 /*
@@ -9937,8 +9974,6 @@
 #endif
 }
 
-static win_T *find_win_by_nr __ARGS((typval_T *vp));
-
     static win_T *
 find_win_by_nr(vp)
     typval_T	*vp;
@@ -13571,12 +13606,14 @@
 }
 
 /*
- * "setqflist()" function
+ * Used by "setqflist()" and "setloclist()" functions
  */
 /*ARGSUSED*/
     static void
-f_setqflist(argvars, rettv)
-    typval_T	*argvars;
+set_qf_ll_list(wp, list_arg, action_arg, rettv)
+    win_T	*wp;
+    typval_T	*list_arg;
+    typval_T	*action_arg;
     typval_T	*rettv;
 {
 #ifdef FEAT_QUICKFIX
@@ -13587,28 +13624,58 @@
     rettv->vval.v_number = -1;
 
 #ifdef FEAT_QUICKFIX
-    if (argvars[0].v_type != VAR_LIST)
+    if (list_arg->v_type != VAR_LIST)
 	EMSG(_(e_listreq));
     else
     {
-	list_T  *l = argvars[0].vval.v_list;
+	list_T  *l = list_arg->vval.v_list;
 
-	if (argvars[1].v_type == VAR_STRING)
+	if (action_arg->v_type == VAR_STRING)
 	{
-	    act = get_tv_string_chk(&argvars[1]);
+	    act = get_tv_string_chk(action_arg);
 	    if (act == NULL)
 		return;		/* type error; errmsg already given */
 	    if (*act == 'a' || *act == 'r')
 		action = *act;
 	}
 
-	if (l != NULL && set_errorlist(l, action) == OK)
+	if (l != NULL && set_errorlist(wp, l, action) == OK)
 	    rettv->vval.v_number = 0;
     }
 #endif
 }
 
 /*
+ * "setloclist()" function
+ */
+/*ARGSUSED*/
+    static void
+f_setloclist(argvars, rettv)
+    typval_T	*argvars;
+    typval_T	*rettv;
+{
+    win_T	*win;
+
+    rettv->vval.v_number = -1;
+
+    win = find_win_by_nr(&argvars[0]);
+    if (win != NULL)
+	set_qf_ll_list(win, &argvars[1], &argvars[2], rettv);
+}
+
+/*
+ * "setqflist()" function
+ */
+/*ARGSUSED*/
+    static void
+f_setqflist(argvars, rettv)
+    typval_T	*argvars;
+    typval_T	*rettv;
+{
+    set_qf_ll_list(NULL, &argvars[0], &argvars[1], rettv);
+}
+
+/*
  * "setreg()" function
  */
     static void
diff --git a/src/proto/quickfix.pro b/src/proto/quickfix.pro
index 4ea4f01..152f906 100644
--- a/src/proto/quickfix.pro
+++ b/src/proto/quickfix.pro
@@ -21,8 +21,8 @@
 void ex_cfile __ARGS((exarg_T *eap));
 void ex_vimgrep __ARGS((exarg_T *eap));
 char_u *skip_vimgrep_pat __ARGS((char_u *p, char_u **s, int *flags));
-int get_errorlist __ARGS((list_T *list));
-int set_errorlist __ARGS((list_T *list, int action));
+int get_errorlist __ARGS((win_T *wp, list_T *list));
+int set_errorlist __ARGS((win_T *wp, list_T *list, int action));
 void ex_cbuffer __ARGS((exarg_T *eap));
 void ex_cexpr __ARGS((exarg_T *eap));
 void ex_helpgrep __ARGS((exarg_T *eap));
diff --git a/src/quickfix.c b/src/quickfix.c
index 923c7fd..ff3e4ce 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3248,7 +3248,8 @@
  * Add each quickfix error to list "list" as a dictionary.
  */
     int
-get_errorlist(list)
+get_errorlist(wp, list)
+    win_T	*wp;
     list_T	*list;
 {
     qf_info_T	*qi = &ql_info;
@@ -3257,6 +3258,13 @@
     qfline_T	*qfp;
     int		i;
 
+    if (wp != NULL)
+    {
+	qi = GET_LOC_LIST(wp);
+	if (qi == NULL)
+	    return FAIL;
+    }
+
     if (qi->qf_curlist >= qi->qf_listcount
 	|| qi->qf_lists[qi->qf_curlist].qf_count == 0)
 	return FAIL;
@@ -3292,7 +3300,8 @@
  * of dictionaries.
  */
     int
-set_errorlist(list, action)
+set_errorlist(wp, list, action)
+    win_T	*wp;
     list_T	*list;
     int		action;
 {
@@ -3307,6 +3316,13 @@
     int		retval = OK;
     qf_info_T	*qi = &ql_info;
 
+    if (wp != NULL)
+    {
+	qi = ll_get_or_alloc_list(curwin);
+	if (qi == NULL)
+	    return FAIL;
+    }
+
     if (action == ' ' || qi->qf_curlist == qi->qf_listcount)
 	/* make place for a new list */
 	qf_new_list(qi);
diff --git a/src/term.c b/src/term.c
index 1f27533..2dbe555 100644
--- a/src/term.c
+++ b/src/term.c
@@ -3446,13 +3446,13 @@
     if (State & INSERT)
     {
 	if (showing_insert_mode != TRUE)
-	    out_str(T_CSI);	    /* disable cursor */
+	    out_str(T_CSI);	    /* Insert mode cursor */
 	showing_insert_mode = TRUE;
     }
     else
     {
 	if (showing_insert_mode != FALSE)
-	    out_str(T_CEI);	    /* disable cursor */
+	    out_str(T_CEI);	    /* non-Insert mode cursor */
 	showing_insert_mode = FALSE;
     }
 }
diff --git a/src/version.c b/src/version.c
index f147348..e9150d5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -144,6 +144,11 @@
 #else
 	"-cscope",
 #endif
+#ifdef CURSOR_SHAPE
+	"+cursorshape",
+#else
+	"-cursorshape",
+#endif
 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG)
 	"+dialog_con_gui",
 #else
diff --git a/src/version.h b/src/version.h
index 569cb6e..522ec90 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Jan 25)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Jan 25, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Jan 26)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Jan 26, compiled "