diff --git a/src/auto/configure b/src/auto/configure
index 29bb148..e30c2dd 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -2271,7 +2271,7 @@
       echo $ac_n "checking for location of Tcl include""... $ac_c" 1>&6
 echo "configure:2273: checking for location of Tcl include" >&5
       if test "x$MACOSX" != "xyes"; then
-	tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include"
+	tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/include"
       else
 		tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
       fi
diff --git a/src/configure.in b/src/configure.in
index d1d01ca..070c41b 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -713,7 +713,7 @@
 
       AC_MSG_CHECKING(for location of Tcl include)
       if test "x$MACOSX" != "xyes"; then
-	tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include"
+	tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/include"
       else
 	dnl For Mac OS X 10.3, use the OS-provided framework location
 	tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
diff --git a/src/eval.c b/src/eval.c
index 1690eab..8416b57 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -274,6 +274,8 @@
 static void f_cursor __ARGS((VAR argsvars, VAR retvar));
 static void f_delete __ARGS((VAR argvars, VAR retvar));
 static void f_did_filetype __ARGS((VAR argvars, VAR retvar));
+static void f_diff_filler __ARGS((VAR argvars, VAR retvar));
+static void f_diff_hlID __ARGS((VAR argvars, VAR retvar));
 static void f_escape __ARGS((VAR argvars, VAR retvar));
 static void f_eventhandler __ARGS((VAR argvars, VAR retvar));
 static void f_executable __ARGS((VAR argvars, VAR retvar));
@@ -2837,6 +2839,8 @@
     {"cursor",		2, 2, f_cursor},
     {"delete",		1, 1, f_delete},
     {"did_filetype",	0, 0, f_did_filetype},
+    {"diff_filler",	1, 1, f_diff_filler},
+    {"diff_hlID",	2, 2, f_diff_hlID},
     {"escape",		2, 2, f_escape},
     {"eventhandler",	0, 0, f_eventhandler},
     {"executable",	1, 1, f_executable},
@@ -3977,6 +3981,79 @@
 }
 
 /*
+ * "diff_filler()" function
+ */
+/*ARGSUSED*/
+    static void
+f_diff_filler(argvars, retvar)
+    VAR		argvars;
+    VAR		retvar;
+{
+#ifdef FEAT_DIFF
+    retvar->var_val.var_number = diff_check_fill(curwin, get_var_lnum(argvars));
+#endif
+}
+
+/*
+ * "diff_hlID()" function
+ */
+/*ARGSUSED*/
+    static void
+f_diff_hlID(argvars, retvar)
+    VAR		argvars;
+    VAR		retvar;
+{
+#ifdef FEAT_DIFF
+    linenr_T		lnum = get_var_lnum(argvars);
+    static linenr_T	prev_lnum = 0;
+    static int		changedtick = 0;
+    static int		fnum = 0;
+    static int		change_start = 0;
+    static int		change_end = 0;
+    static enum hlf_value hlID = 0;
+    int			filler_lines;
+    int			col;
+
+    if (lnum != prev_lnum
+	    || changedtick != curbuf->b_changedtick
+	    || fnum != curbuf->b_fnum)
+    {
+	/* New line, buffer, change: need to get the values. */
+	filler_lines = diff_check(curwin, lnum);
+	if (filler_lines < 0)
+	{
+	    if (filler_lines == -1)
+	    {
+		change_start = MAXCOL;
+		change_end = -1;
+		if (diff_find_change(curwin, lnum, &change_start, &change_end))
+		    hlID = HLF_ADD;	/* added line */
+		else
+		    hlID = HLF_CHD;	/* changed line */
+	    }
+	    else
+		hlID = HLF_ADD;	/* added line */
+	}
+	else
+	    hlID = (enum hlf_value)0;
+	prev_lnum = lnum;
+	changedtick = curbuf->b_changedtick;
+	fnum = curbuf->b_fnum;
+    }
+
+    if (hlID == HLF_CHD || hlID == HLF_TXD)
+    {
+	col = get_var_number(&argvars[1]) - 1;
+	if (col >= change_start && col <= change_end)
+	    hlID = HLF_TXD;			/* changed text */
+	else
+	    hlID = HLF_CHD;			/* changed line */
+    }
+    retvar->var_val.var_number = hlID == (enum hlf_value)0 ? 0 : (int)hlID;
+#endif
+}
+
+/*
  * "escape({string}, {chars})" function
  */
     static void
diff --git a/src/os_unix.c b/src/os_unix.c
index 24c86b2..ffc6965 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1535,13 +1535,7 @@
 get_x11_title(test_only)
     int		test_only;
 {
-    int		retval;
-
-    retval = get_x11_thing(TRUE, test_only);
-
-    /* could not get old title: oldtitle == NULL */
-
-    return retval;
+    return get_x11_thing(TRUE, test_only);
 }
 
 /*
@@ -1829,7 +1823,8 @@
      *	     than x11 calls, because the x11 calls don't always work
      */
 #ifdef FEAT_GUI_KDE
-    /* dont know why but KDE needs this one as we don't go through the next function... */
+    /* dont know why but KDE needs this one as we don't go through the next
+     * function... */
     gui_mch_settitle(title, icon);
 #endif
     if ((type || *T_TS != NUL) && title != NULL)
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index 57de3ab..c260eb4 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -47,6 +47,8 @@
 .in.out:
 	-rm -f $*.failed test.ok X*
 	cp $*.ok test.ok
+	# Sleep a moment to avoid that the xterm title is messed up
+	@-sleep .2
 	$(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in
 	@/bin/sh -c "if diff test.out $*.ok; \
 		then mv -f test.out $*.out; \
