diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 563e4bb..c953db3 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1562,6 +1562,7 @@
 getftype( {fname})		String	description of type of file {fname}
 getline( {lnum})		String	line {lnum} of current buffer
 getline( {lnum}, {end})		List	lines {lnum} to {end} of current buffer
+getloclist({nr})		List	list of location list items
 getqflist()			List	list of quickfix items
 getreg( [{regname} [, 1]])	String	contents of register
 getregtype( [{regname}])	String	type of register
@@ -1652,7 +1653,9 @@
 setbufvar( {expr}, {varname}, {val})	set {varname} in buffer {expr} to {val}
 setcmdpos( {pos})		Number	set cursor position in command-line
 setline( {lnum}, {line})	Number	set line {lnum} to {line}
-setqflist( {list}[, {action}])	Number	set list of quickfix items using {list}
+setloclist( {nr}, {list}[, {action}])
+				Number	modify location list using {list}
+setqflist( {list}[, {action}])	Number	modify quickfix list using {list}
 setreg( {n}, {v}[, {opt}])	Number	set register to value and type
 setwinvar( {nr}, {varname}, {val})	set {varname} in window {nr} to {val}
 simplify( {filename})		String	simplify filename as much as possible
@@ -2693,6 +2696,11 @@
 			:let end = search("^$") - 1
 			:let lines = getline(start, end)
 
+getloclist({nr})					*getloclist()*
+		Returns a list with all the entries in the location list for
+		window {nr}. When {nr} is zero the current window is used.
+		For a location list window, the displayed location list is
+		returned.  Otherwise, same as getqflist().
 
 getqflist()						*getqflist()*
 		Returns a list with all the current quickfix errors.  Each
@@ -3971,12 +3979,17 @@
 			:endfor
 <		Note: The '[ and '] marks are not set.
 
+setloclist({nr}, {list} [, {action}])			*setloclist()*
+		Create or replace or add to the location list for window {nr}.
+		When {nr} is zero the current window is used. For a location
+		list window, the displayed location list is modified.
+		Otherwise, same as setqflist().
 
 setqflist({list} [, {action}])				*setqflist()*
-		Creates a quickfix list using the items in {list}.  Each item
-		in {list} is a dictionary.  Non-dictionary items in {list} are
-		ignored.  Each dictionary item can contain the following
-		entries:
+		Create or replace or add to the quickfix list using the items
+		in {list}.  Each item in {list} is a dictionary.
+		Non-dictionary items in {list} are ignored.  Each dictionary
+		item can contain the following entries:
 
 		    filename	name of a file
 		    lnum	line number in the file
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index 6cd0878..b4b3f81 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 13
+*quickfix.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -73,8 +73,8 @@
 			all, go to the [count] next error.  See |:cc| for
 			[!] and 'switchbuf'.
 
-							*:ln* *:lnext*
-:[count]ln[ext][!]	Same as ":cnext", except the location list for the
+							*:lne* *:lnext*
+:[count]lne[xt][!]	Same as ":cnext", except the location list for the
 			current window is used instead of the quickfix list.
 
 :[count]cN[ext][!]			*:cp* *:cprevious* *:cN* *:cNext*
@@ -83,8 +83,8 @@
 			all, go to the [count] previous error.  See |:cc| for
 			[!] and 'switchbuf'.
 
-					*:lp* *:lprevious* *:lN* *:lNext*
-:[count]lN[ext][!]
+				
+:[count]lN[ext][!]			*:lp* *:lprevious* *:lN* *:lNext*
 :[count]lp[revious][!]	Same as ":cNext" and ":cprevious", except the location
 			list for the current window is used instead of the
 			quickfix list.
@@ -107,8 +107,8 @@
 			the [count] previous error.  See |:cc| for [!] and
 			'switchbuf'.
 
-					*:lpf* *:lpfile* *:lNf* *:lNfile*
-:[count]lNf[ile][!]
+
+:[count]lNf[ile][!]			*:lpf* *:lpfile* *:lNf* *:lNfile*
 :[count]lpf[ile][!]	Same as ":cNfile" and ":cpfile", except the location
 			list for the current window is used instead of the
 			quickfix list.
@@ -153,13 +153,13 @@
 			You can not use the -q command-line option to set
 			the location list.
 
-							*:cg* *:cgetfile*
-:cg[etfile][!] [errorfile]
+		
+:cg[etfile][!] [errorfile]				*:cg* *:cgetfile*
 			Read the error file.  Just like ":cfile" but don't
 			jump to the first error.
 
-							*:lg* *:lgetfile*
-:lg[etfile][!] [errorfile]
+			
+:lg[etfile][!] [errorfile]				*:lg* *:lgetfile*
 			Same as ":cgetfile", except the location list for the
 			current window is used instead of the quickfix list.
 
@@ -260,12 +260,12 @@
 			the current window.  It is not possible to open a
 			second quickfix window.
 
-							*:lope* *:lopen*
-:lope[n] [height]	Open a window to show the location list for the
+							*:lop* *:lopen*
+:lop[en] [height]	Open a window to show the location list for the
 			current window. Works only when the location list for
-			the current window is present. You can have more than
-			one location window opened at a time.  Otherewise,
-			same as ":copen".
+			the current window is present.  You can have more than
+			one location window opened at a time.  Otherwise, it
+			acts the same same as ":copen".
 
 							*:ccl* *:cclose*
 :ccl[ose]		Close the quickfix window.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 036f4fb..4ad56bb 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2099,15 +2099,27 @@
 :keepjumps	motion.txt	/*:keepjumps*
 :keepmarks	motion.txt	/*:keepmarks*
 :l	various.txt	/*:l*
+:lN	quickfix.txt	/*:lN*
+:lNext	quickfix.txt	/*:lNext*
+:lNf	quickfix.txt	/*:lNf*
+:lNfile	quickfix.txt	/*:lNfile*
 :la	editing.txt	/*:la*
+:lad	quickfix.txt	/*:lad*
+:laddexpr	quickfix.txt	/*:laddexpr*
+:laddf	quickfix.txt	/*:laddf*
+:laddfile	quickfix.txt	/*:laddfile*
 :lan	mlang.txt	/*:lan*
 :lang	mlang.txt	/*:lang*
 :language	mlang.txt	/*:language*
 :last	editing.txt	/*:last*
+:lb	quickfix.txt	/*:lb*
+:lbuffer	quickfix.txt	/*:lbuffer*
 :lc	editing.txt	/*:lc*
 :lcd	editing.txt	/*:lcd*
 :lch	editing.txt	/*:lch*
 :lchdir	editing.txt	/*:lchdir*
+:lcl	quickfix.txt	/*:lcl*
+:lclose	quickfix.txt	/*:lclose*
 :le	change.txt	/*:le*
 :left	change.txt	/*:left*
 :lefta	windows.txt	/*:lefta*
@@ -2123,13 +2135,32 @@
 :let-star	eval.txt	/*:let-star*
 :let-unpack	eval.txt	/*:let-unpack*
 :let.=	eval.txt	/*:let.=*
+:lex	quickfix.txt	/*:lex*
+:lexpr	quickfix.txt	/*:lexpr*
+:lf	quickfix.txt	/*:lf*
+:lfile	quickfix.txt	/*:lfile*
+:lfir	quickfix.txt	/*:lfir*
+:lfirst	quickfix.txt	/*:lfirst*
+:lg	quickfix.txt	/*:lg*
+:lgetfile	quickfix.txt	/*:lgetfile*
 :list	various.txt	/*:list*
+:ll	quickfix.txt	/*:ll*
+:lla	quickfix.txt	/*:lla*
+:llast	quickfix.txt	/*:llast*
+:lli	quickfix.txt	/*:lli*
+:llist	quickfix.txt	/*:llist*
 :lm	map.txt	/*:lm*
 :lmap	map.txt	/*:lmap*
 :lmap_l	map.txt	/*:lmap_l*
 :lmapc	map.txt	/*:lmapc*
 :lmapclear	map.txt	/*:lmapclear*
 :ln	map.txt	/*:ln*
+:lne	quickfix.txt	/*:lne*
+:lnew	quickfix.txt	/*:lnew*
+:lnewer	quickfix.txt	/*:lnewer*
+:lnext	quickfix.txt	/*:lnext*
+:lnf	quickfix.txt	/*:lnf*
+:lnfile	quickfix.txt	/*:lnfile*
 :lnoremap	map.txt	/*:lnoremap*
 :lo	starting.txt	/*:lo*
 :loadk	mbyte.txt	/*:loadk*
@@ -2139,9 +2170,21 @@
 :lockmarks	motion.txt	/*:lockmarks*
 :lockv	eval.txt	/*:lockv*
 :lockvar	eval.txt	/*:lockvar*
+:lol	quickfix.txt	/*:lol*
+:lolder	quickfix.txt	/*:lolder*
+:lop	quickfix.txt	/*:lop*
+:lopen	quickfix.txt	/*:lopen*
+:lp	quickfix.txt	/*:lp*
+:lpf	quickfix.txt	/*:lpf*
+:lpfile	quickfix.txt	/*:lpfile*
+:lprevious	quickfix.txt	/*:lprevious*
+:lr	quickfix.txt	/*:lr*
+:lrewind	quickfix.txt	/*:lrewind*
 :ls	windows.txt	/*:ls*
 :lu	map.txt	/*:lu*
 :lunmap	map.txt	/*:lunmap*
+:lw	quickfix.txt	/*:lw*
+:lwindow	quickfix.txt	/*:lwindow*
 :m	change.txt	/*:m*
 :ma	motion.txt	/*:ma*
 :mak	quickfix.txt	/*:mak*
@@ -3798,6 +3841,7 @@
 E773	recover.txt	/*E773*
 E774	map.txt	/*E774*
 E775	map.txt	/*E775*
+E776	quickfix.txt	/*E776*
 E777	quickfix.txt	/*E777*
 E778	spell.txt	/*E778*
 E779	spell.txt	/*E779*
@@ -5229,6 +5273,7 @@
 getftime()	eval.txt	/*getftime()*
 getftype()	eval.txt	/*getftype()*
 getline()	eval.txt	/*getline()*
+getloclist()	eval.txt	/*getloclist()*
 getqflist()	eval.txt	/*getqflist()*
 getreg()	eval.txt	/*getreg()*
 getregtype()	eval.txt	/*getregtype()*
@@ -5729,6 +5774,8 @@
 locale	mbyte.txt	/*locale*
 locale-name	mbyte.txt	/*locale-name*
 localtime()	eval.txt	/*localtime()*
+location-list	quickfix.txt	/*location-list*
+location-list-window	quickfix.txt	/*location-list-window*
 long-lines	version5.txt	/*long-lines*
 lowercase	change.txt	/*lowercase*
 lpc.vim	syntax.txt	/*lpc.vim*
@@ -6042,6 +6089,7 @@
 new-items-6	version6.txt	/*new-items-6*
 new-items-7	version7.txt	/*new-items-7*
 new-line-continuation	version5.txt	/*new-line-continuation*
+new-location-list	version7.txt	/*new-location-list*
 new-manpage-trans	version7.txt	/*new-manpage-trans*
 new-multi-byte	version5.txt	/*new-multi-byte*
 new-multi-lang	version6.txt	/*new-multi-lang*
@@ -6458,6 +6506,7 @@
 setbufvar()	eval.txt	/*setbufvar()*
 setcmdpos()	eval.txt	/*setcmdpos()*
 setline()	eval.txt	/*setline()*
+setloclist()	eval.txt	/*setloclist()*
 setqflist()	eval.txt	/*setqflist()*
 setreg()	eval.txt	/*setreg()*
 setting-guifont	gui.txt	/*setting-guifont*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 2566b8c..8d49c5f 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Jan 25
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Jan 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,9 +30,7 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Include location list commands, patch from Yegappan Lakshmanan.
-
-ccomplete:
+ccomplete / omnicomplete:
 - When an option is set: In completion mode and the user types (identifier)
   characters, advance to the first match instead of removing the popup menu.
   If there is no match remove the selection. (Yegappan Lakshmanan)
@@ -58,6 +56,7 @@
     Can't reproduce it right now...
 
 spelling:
+- Also use the spelling dictionary for dictionary completion.
 - Use runtime/cleanadd script to cleanup .add files.  When to invoke it?
   After deleting a word with "zw" and some timestamp difference perhaps?
   Store it as spell/cleanadd.vim.
@@ -94,7 +93,6 @@
     obtain).  But new Myspell wordlist will come (Hagen)
 - Finding suggestions with sound folding is slow.  Somehow store the
   sound-folded words and link to the words it comes from?
-- Also use the spelling dictionary for dictionary completion.
 - Have "zg" and "zw" report the file that was modified. (Marvin Renich)
 - Add a command like "zg" that selects one of the files 'spellfile'.
 - Add a "zug" command that undoes "zg"?  Deletes the good word instead of
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 0df9501..2b73315 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -747,6 +747,7 @@
 	exists()		check if a variable, function, etc. exists
 	has()			check if a feature is supported in Vim
 	getqflist()		list of quickfix errors
+	getloclist()		list of location list items
 	cscope_connection()	check if a cscope connection exists
 	did_filetype()		check if a FileType autocommand was used
 	eventhandler()		check if invoked by an event handler
@@ -758,7 +759,8 @@
 	libcallnr()		idem, returning a number
 	getreg()		get contents of a register
 	getregtype()		get type of a register
-	setqflist()		create a quickfix list
+	setqflist()		modify a quickfix list
+	setloclist()		modify a location list
 	setreg()		set contents and type of a register
 	taglist()		get list of matching tags
 
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index ed929f3..763ecb8 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 25
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -30,6 +30,7 @@
 Debugger support			|new-debug-support|
 Remote file explorer			|new-netrw-explore|
 Define an operator			|new-define-operator|
+Location list				|new-location-list|
 Various new items			|new-items-7|
 
 IMPROVEMENTS				|improvements-7|
@@ -356,6 +357,13 @@
 
 See |:map-operator| for the explanation and an example.
 
+Location list						*new-location-list*
+-------------
+
+The support for a per-window quickfix list (location list) is added. The
+location list can be displayed in a location window (similar to the quickfix
+window). You can open more than one location list window. A set of commands
+similar to the quickfix commands are added to browse the location list.
 
 Various new items					*new-items-7*
 -----------------
@@ -474,6 +482,7 @@
 |count()|		count nr of times a value is in a List or Dictionary
 |deepcopy()|		make a full copy of a List or Dictionary
 |empty()|		check if List or Dictionary is empty
+|getloclist()|		list of location list items (Yegappan Lakshmanan)
 |getqflist()|		list of quickfix errors (Yegappan Lakshmanan)
 |extend()|		append one List to another or add items from one
 			Dictionary to another
@@ -509,7 +518,8 @@
 |repeat()| 		repeat "expr" "count" times (Christophe Poucet)
 |reverse()|		reverse the order of a List
 |searchdecl()|		search for declaration of variable
-|setqflist()|		create a quickfix list (Yegappan Lakshmanan)
+|setloclist()|		modify a location list (Yegappan Lakshmanan)
+|setqflist()|		modify a quickfix list (Yegappan Lakshmanan)
 |sort()|		sort a List
 |soundfold()|		get the sound-a-like equivalent of a word
 |split()|		split a String into a List
@@ -587,6 +597,8 @@
 Implemented b:undo_indent to undo indent settings when setting 'filetype' to a
 different value.
 
+VHDL indent file (Gerald Lai)
+
 
 New Keymaps: ~
 
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 "
