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.
This commit is contained in:
Eli Zaretskii 2012-04-26 13:49:29 +03:00
parent 1c6900d923
commit 4c3fa1d9ad
2 changed files with 18 additions and 4 deletions

View file

@ -1,5 +1,9 @@
2012-04-26 Eli Zaretskii <eliz@gnu.org>
* 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

View file

@ -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. */
/* 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'))
#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. */