diff --git a/src/beval.c b/src/beval.c
index ef307c5..dc8966f 100644
--- a/src/beval.c
+++ b/src/beval.c
@@ -27,10 +27,12 @@
 	win_T	    **winp,	// can be NULL
 	linenr_T    *lnump,	// can be NULL
 	char_u	    **textp,
-	int	    *colp)
+	int	    *colp,	// column where mouse hovers, can be NULL
+	int	    *startcolp) // column where text starts, can be NULL
 {
     int		row = mouserow;
     int		col = mousecol;
+    int		scol;
     win_T	*wp;
     char_u	*lbuf;
     linenr_T	lnum;
@@ -98,8 +100,8 @@
 		    {
 			// Find the word under the cursor.
 			++emsg_off;
-			len = find_ident_at_pos(wp, lnum, (colnr_T)col, &lbuf,
-									flags);
+			len = find_ident_at_pos(wp, lnum, (colnr_T)col,
+							  &lbuf, &scol, flags);
 			--emsg_off;
 			if (len == 0)
 			    return FAIL;
@@ -112,7 +114,10 @@
 		if (lnump != NULL)
 		    *lnump = lnum;
 		*textp = lbuf;
-		*colp = col;
+		if (colp != NULL)
+		    *colp = col;
+		if (startcolp != NULL)
+		    *startcolp = scol;
 		return OK;
 	    }
 	}
@@ -150,7 +155,7 @@
 #endif
     if (find_word_under_cursor(row, col, getword,
 		FIND_IDENT + FIND_STRING + FIND_EVAL,
-		winp, lnump, textp, colp) == OK)
+		winp, lnump, textp, colp, NULL) == OK)
     {
 #ifdef FEAT_VARTABS
 	vim_free(beval->vts);
@@ -296,12 +301,10 @@
 	    if (result != NULL && result[0] != NUL)
 		post_balloon(beval, result, NULL);
 
-# ifdef FEAT_GUI
 	    // The 'balloonexpr' evaluation may show something on the screen
 	    // that requires a screen update.
-	    if (gui.in_use && must_redraw)
+	    if (must_redraw)
 		redraw_after_callback(FALSE);
-# endif
 
 	    recursive = FALSE;
 	    return;
diff --git a/src/normal.c b/src/normal.c
index f626f45..6cac553 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -2325,6 +2325,7 @@
 	ui_may_remove_balloon();
 	if (p_bevalterm)
 	{
+ch_log(NULL, "setting balloon timer");
 	    profile_setlimit(p_bdlay, &bevalexpr_due);
 	    bevalexpr_due_set = TRUE;
 	}
@@ -3327,28 +3328,28 @@
  * Find the identifier under or to the right of the cursor.
  * "find_type" can have one of three values:
  * FIND_IDENT:   find an identifier (keyword)
- * FIND_STRING:  find any non-white string
- * FIND_IDENT + FIND_STRING: find any non-white string, identifier preferred.
+ * FIND_STRING:  find any non-white text
+ * FIND_IDENT + FIND_STRING: find any non-white text, identifier preferred.
  * FIND_EVAL:	 find text useful for C program debugging
  *
  * There are three steps:
- * 1. Search forward for the start of an identifier/string.  Doesn't move if
+ * 1. Search forward for the start of an identifier/text.  Doesn't move if
  *    already on one.
- * 2. Search backward for the start of this identifier/string.
+ * 2. Search backward for the start of this identifier/text.
  *    This doesn't match the real Vi but I like it a little better and it
  *    shouldn't bother anyone.
- * 3. Search forward to the end of this identifier/string.
+ * 3. Search forward to the end of this identifier/text.
  *    When FIND_IDENT isn't defined, we backup until a blank.
  *
- * Returns the length of the string, or zero if no string is found.
- * If a string is found, a pointer to the string is put in "*string".  This
- * string is not always NUL terminated.
+ * Returns the length of the text, or zero if no text is found.
+ * If text is found, a pointer to the text is put in "*text".  This
+ * points into the current buffer line and is not always NUL terminated.
  */
     int
-find_ident_under_cursor(char_u **string, int find_type)
+find_ident_under_cursor(char_u **text, int find_type)
 {
     return find_ident_at_pos(curwin, curwin->w_cursor.lnum,
-				     curwin->w_cursor.col, string, find_type);
+				curwin->w_cursor.col, text, NULL, find_type);
 }
 
 /*
@@ -3360,33 +3361,34 @@
     win_T	*wp,
     linenr_T	lnum,
     colnr_T	startcol,
-    char_u	**string,
+    char_u	**text,
+    int		*textcol,	// column where "text" starts, can be NULL
     int		find_type)
 {
     char_u	*ptr;
-    int		col = 0;	    /* init to shut up GCC */
+    int		col = 0;	// init to shut up GCC
     int		i;
     int		this_class = 0;
     int		prev_class;
     int		prevcol;
-    int		bn = 0;	    /* bracket nesting */
+    int		bn = 0;		// bracket nesting
 
     /*
      * if i == 0: try to find an identifier
-     * if i == 1: try to find any non-white string
+     * if i == 1: try to find any non-white text
      */
     ptr = ml_get_buf(wp->w_buffer, lnum, FALSE);
     for (i = (find_type & FIND_IDENT) ? 0 : 1;	i < 2; ++i)
     {
 	/*
-	 * 1. skip to start of identifier/string
+	 * 1. skip to start of identifier/text
 	 */
 	col = startcol;
 	if (has_mbyte)
 	{
 	    while (ptr[col] != NUL)
 	    {
-		/* Stop at a ']' to evaluate "a[x]". */
+		// Stop at a ']' to evaluate "a[x]".
 		if ((find_type & FIND_EVAL) && ptr[col] == ']')
 		    break;
 		this_class = mb_get_class(ptr + col);
@@ -3402,11 +3404,11 @@
 		    )
 		++col;
 
-	/* When starting on a ']' count it, so that we include the '['. */
+	// When starting on a ']' count it, so that we include the '['.
 	bn = ptr[col] == ']';
 
 	/*
-	 * 2. Back up to start of identifier/string.
+	 * 2. Back up to start of identifier/text.
 	 */
 	if (has_mbyte)
 	{
@@ -3432,8 +3434,8 @@
 		col = prevcol;
 	    }
 
-	    /* If we don't want just any old string, or we've found an
-	     * identifier, stop searching. */
+	    // If we don't want just any old text, or we've found an
+	    // identifier, stop searching.
 	    if (this_class > 2)
 		this_class = 2;
 	    if (!(find_type & FIND_STRING) || this_class == 2)
@@ -3454,8 +3456,8 @@
 			))
 		--col;
 
-	    /* If we don't want just any old string, or we've found an
-	     * identifier, stop searching. */
+	    // If we don't want just any old text, or we've found an
+	    // identifier, stop searching.
 	    if (!(find_type & FIND_STRING) || vim_iswordc(ptr[col]))
 		break;
 	}
@@ -3464,7 +3466,7 @@
     if (ptr[col] == NUL || (i == 0
 		&& (has_mbyte ? this_class != 2 : !vim_iswordc(ptr[col]))))
     {
-	// didn't find an identifier or string
+	// didn't find an identifier or text
 	if ((find_type & FIND_NOERROR) == 0)
 	{
 	    if (find_type & FIND_STRING)
@@ -3475,17 +3477,19 @@
 	return 0;
     }
     ptr += col;
-    *string = ptr;
+    *text = ptr;
+    if (textcol != NULL)
+	*textcol = col;
 
     /*
-     * 3. Find the end if the identifier/string.
+     * 3. Find the end if the identifier/text.
      */
     bn = 0;
     startcol -= col;
     col = 0;
     if (has_mbyte)
     {
-	/* Search for point of changing multibyte character class. */
+	// Search for point of changing multibyte character class.
 	this_class = mb_get_class(ptr);
 	while (ptr[col] != NUL
 		&& ((i == 0 ? mb_get_class(ptr + col) == this_class
diff --git a/src/popupwin.c b/src/popupwin.c
index a997cde..59aaa66 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -188,7 +188,7 @@
     int		col;
 
     if (find_word_under_cursor(mouse_row, mouse_col, TRUE, flags,
-						NULL, NULL, &text, &col) == OK)
+					 NULL, NULL, &text, NULL, &col) == OK)
     {
 	wp->w_popup_mouse_mincol = col;
 	wp->w_popup_mouse_maxcol = col + STRLEN(text) - 1;
@@ -1437,6 +1437,7 @@
     {
 	typval_T res;
 
+ch_log(NULL, "closing popup %d", wp->w_id);
 	res.v_type = VAR_NUMBER;
 	res.vval.v_number = -2;
 	// Careful: this makes "wp" invalid.
diff --git a/src/proto/beval.pro b/src/proto/beval.pro
index 62eba9e..8b67e38 100644
--- a/src/proto/beval.pro
+++ b/src/proto/beval.pro
@@ -1,5 +1,5 @@
 /* beval.c */
-int find_word_under_cursor(int mouserow, int mousecol, int getword, int flags, win_T **winp, linenr_T *lnump, char_u **textp, int *colp);
+int find_word_under_cursor(int mouserow, int mousecol, int getword, int flags, win_T **winp, linenr_T *lnump, char_u **textp, int *colp, int *startcolp);
 int get_beval_info(BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp);
 void post_balloon(BalloonEval *beval, char_u *mesg, list_T *list);
 int can_use_beval(void);
diff --git a/src/proto/normal.pro b/src/proto/normal.pro
index 55d12bb..cc4bf7d 100644
--- a/src/proto/normal.pro
+++ b/src/proto/normal.pro
@@ -7,8 +7,8 @@
 void end_visual_mode(void);
 void reset_VIsual_and_resel(void);
 void reset_VIsual(void);
-int find_ident_under_cursor(char_u **string, int find_type);
-int find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol, char_u **string, int find_type);
+int find_ident_under_cursor(char_u **text, int find_type);
+int find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol, char_u **text, int *textcol, int find_type);
 void clear_showcmd(void);
 int add_to_showcmd(int c);
 void add_to_showcmd_c(int c);
diff --git a/src/version.c b/src/version.c
index c58cbc5..fb21f07 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1657,
+/**/
     1656,
 /**/
     1655,
