From: Eli Zaretskii Date: Thu, 26 Apr 2012 10:49:29 +0000 (+0300) Subject: Allow word wrap together with whitespace-mode (bug #11341) X-Git-Tag: emacs-24.2.90~471^2~261 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4c3fa1d9adf3dca80e86b45488b0556f5f0fa495;p=emacs.git Allow word wrap together with whitespace-mode (bug #11341) src/xdisp.c (IT_DISPLAYING_WHITESPACE): In addition to the loaded display element, check also the underlying string or buffer character. --- diff --git a/src/ChangeLog b/src/ChangeLog index 8b23806e57f..df0e6135498 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2012-04-26 Eli Zaretskii + * xdisp.c (IT_DISPLAYING_WHITESPACE): In addition to the loaded + display element, check also the underlying string or buffer + character. (Bug#11341) + * w32menu.c: Include w32heap.h. (add_menu_item): If the call to AppendMenuW (via unicode_append_menu) fails, disable Unicode menus only if we are diff --git a/src/xdisp.c b/src/xdisp.c index 3cbd4b172f4..f2700bd6d25 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -383,11 +383,21 @@ static Lisp_Object Qline_height; #define IT_OVERFLOW_NEWLINE_INTO_FRINGE(it) 0 #endif /* HAVE_WINDOW_SYSTEM */ -/* Test if the display element loaded in IT is a space or tab - character. This is used to determine word wrapping. */ - -#define IT_DISPLAYING_WHITESPACE(it) \ - (it->what == IT_CHARACTER && (it->c == ' ' || it->c == '\t')) +/* Test if the display element loaded in IT, or the underlying buffer + or string character, is a space or a TAB character. This is used + to determine where word wrapping can occur. */ + +#define IT_DISPLAYING_WHITESPACE(it) \ + ((it->what == IT_CHARACTER && (it->c == ' ' || it->c == '\t')) \ + || ((STRINGP (it->string) \ + && (SREF (it->string, IT_STRING_BYTEPOS (*it)) == ' ' \ + || SREF (it->string, IT_STRING_BYTEPOS (*it)) == '\t')) \ + || (it->s \ + && (it->s[IT_BYTEPOS (*it)] == ' ' \ + || it->s[IT_BYTEPOS (*it)] == '\t')) \ + || (IT_BYTEPOS (*it) < ZV_BYTE \ + && (*BYTE_POS_ADDR (IT_BYTEPOS (*it)) == ' ' \ + || *BYTE_POS_ADDR (IT_BYTEPOS (*it)) == '\t')))) \ /* Name of the face used to highlight trailing whitespace. */