diff options
| author | Joakim Verona | 2012-03-25 22:04:52 +0200 |
|---|---|---|
| committer | Joakim Verona | 2012-03-25 22:04:52 +0200 |
| commit | 75da28a3845b9dfa4e730cfa19c14edc52cbb222 (patch) | |
| tree | b04519bffcb21264cbe3ce8af13df7186548667f /src | |
| parent | b827329a89291ed68dd017c53976be7ce5ed3b22 (diff) | |
| parent | f514f6f0e3f8bbeb5212d0337e5bda5a9a4eaeb5 (diff) | |
| download | emacs-75da28a3845b9dfa4e730cfa19c14edc52cbb222.tar.gz emacs-75da28a3845b9dfa4e730cfa19c14edc52cbb222.zip | |
upstream
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 55 | ||||
| -rw-r--r-- | src/ChangeLog.11 | 2 | ||||
| -rw-r--r-- | src/bidi.c | 8 | ||||
| -rw-r--r-- | src/dispextern.h | 7 | ||||
| -rw-r--r-- | src/process.c | 19 | ||||
| -rw-r--r-- | src/s/ms-w32.h | 6 | ||||
| -rw-r--r-- | src/w32heap.c | 24 | ||||
| -rw-r--r-- | src/w32proc.c | 10 | ||||
| -rw-r--r-- | src/xdisp.c | 15 | ||||
| -rw-r--r-- | src/xfaces.c | 36 | ||||
| -rw-r--r-- | src/xterm.c | 7 |
11 files changed, 124 insertions, 65 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index ae8835478a5..71bfec1f061 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,58 @@ | |||
| 1 | 2012-03-25 Fabrice Popineau <fabrice.popineau@supelec.fr> | ||
| 2 | |||
| 3 | * w32heap.c (_heap_init, _heap_term): Remove dead MSVC-specific | ||
| 4 | code. | ||
| 5 | |||
| 6 | 2012-03-25 Kenichi Handa <handa@m17n.org> | ||
| 7 | |||
| 8 | * dispextern.h (struct glyph): Change the bit length of | ||
| 9 | glyphless.ch to 22 to make the member glyphless fit in 32 bits. | ||
| 10 | |||
| 11 | 2012-03-24 Eli Zaretskii <eliz@gnu.org> | ||
| 12 | |||
| 13 | * s/ms-w32.h (tzname): Include time.h before redirecting to | ||
| 14 | _tzname. Fixes the MSVC build. (Bug#9960) | ||
| 15 | |||
| 16 | 2012-03-24 Andreas Schwab <schwab@linux-m68k.org> | ||
| 17 | |||
| 18 | * xdisp.c (produce_glyphless_glyph): Limit length of acronym to 6 | ||
| 19 | characters. | ||
| 20 | |||
| 21 | * xterm.c (XTread_socket): Only modify handling_signal if | ||
| 22 | !SYNC_INPUT. (Bug#11080) | ||
| 23 | |||
| 24 | 2012-03-23 Eli Zaretskii <eliz@gnu.org> | ||
| 25 | |||
| 26 | * bidi.c (bidi_fetch_char): Use STRING_CHAR_AND_LENGTH instead of | ||
| 27 | FETCH_MULTIBYTE_CHAR followed by CHAR_BYTES. Prevents crashes | ||
| 28 | when fetching a multibyte character consumes more bytes than | ||
| 29 | CHAR_BYTES returns, due to unification of CJK characters in | ||
| 30 | string_char. (Bug#11073) | ||
| 31 | |||
| 32 | 2012-03-23 Troels Nielsen <bn.troels@gmail.com> (tiny change) | ||
| 33 | |||
| 34 | * process.c (wait_reading_process_output): Handle pty disconnect | ||
| 35 | by refraining from sending oneself a SIGCHLD (bug#10933). | ||
| 36 | |||
| 37 | 2012-03-22 Chong Yidong <cyd@gnu.org> | ||
| 38 | |||
| 39 | * dispextern.h (struct it): New member string_from_prefix_prop_p. | ||
| 40 | |||
| 41 | * xdisp.c (push_prefix_prop): Rename from push_display_prop. | ||
| 42 | Mark string as coming from a prefix property. | ||
| 43 | (handle_face_prop): Use default face for prefix strings (Bug#4281). | ||
| 44 | (pop_it, reseat_1): Save and restore string_from_prefix_prop_p. | ||
| 45 | |||
| 46 | 2012-03-21 Chong Yidong <cyd@gnu.org> | ||
| 47 | |||
| 48 | * xfaces.c (Vface_remapping_alist): Doc fix. | ||
| 49 | |||
| 50 | 2012-03-20 Eli Zaretskii <eliz@gnu.org> | ||
| 51 | |||
| 52 | * w32proc.c (Fw32_set_console_codepage) | ||
| 53 | (Fw32_set_console_output_codepage, Fw32_get_codepage_charset): | ||
| 54 | Doc fixes. | ||
| 55 | |||
| 1 | 2012-03-20 Chong Yidong <cyd@gnu.org> | 56 | 2012-03-20 Chong Yidong <cyd@gnu.org> |
| 2 | 57 | ||
| 3 | * dispnew.c (Fredisplay, Vredisplay_preemption_period): Update doc | 58 | * dispnew.c (Fredisplay, Vredisplay_preemption_period): Update doc |
diff --git a/src/ChangeLog.11 b/src/ChangeLog.11 index 2e5404779b1..97d5a65281a 100644 --- a/src/ChangeLog.11 +++ b/src/ChangeLog.11 | |||
| @@ -9627,7 +9627,7 @@ | |||
| 9627 | * frame.c (Vdefault_frame_scroll_bars): Put non-GTK X scroll-bars | 9627 | * frame.c (Vdefault_frame_scroll_bars): Put non-GTK X scroll-bars |
| 9628 | on left. | 9628 | on left. |
| 9629 | 9629 | ||
| 9630 | 2010-03-13 Andreas Politz <politza@fh-trier.de> (tiny change) | 9630 | 2010-03-13 Andreas Politz <politza@fh-trier.de> |
| 9631 | 9631 | ||
| 9632 | * editfns.c (Fformat): Account for string precision when computing | 9632 | * editfns.c (Fformat): Account for string precision when computing |
| 9633 | field width (Bug#5710). | 9633 | field width (Bug#5710). |
diff --git a/src/bidi.c b/src/bidi.c index 107c817abba..b3479b17b16 100644 --- a/src/bidi.c +++ b/src/bidi.c | |||
| @@ -932,6 +932,7 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 932 | EMACS_INT endpos | 932 | EMACS_INT endpos |
| 933 | = (string->s || STRINGP (string->lstring)) ? string->schars : ZV; | 933 | = (string->s || STRINGP (string->lstring)) ? string->schars : ZV; |
| 934 | struct text_pos pos; | 934 | struct text_pos pos; |
| 935 | int len; | ||
| 935 | 936 | ||
| 936 | /* If we got past the last known position of display string, compute | 937 | /* If we got past the last known position of display string, compute |
| 937 | the position of the next one. That position could be at CHARPOS. */ | 938 | the position of the next one. That position could be at CHARPOS. */ |
| @@ -1003,7 +1004,6 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 1003 | normal_char: | 1004 | normal_char: |
| 1004 | if (string->s) | 1005 | if (string->s) |
| 1005 | { | 1006 | { |
| 1006 | int len; | ||
| 1007 | 1007 | ||
| 1008 | if (!string->unibyte) | 1008 | if (!string->unibyte) |
| 1009 | { | 1009 | { |
| @@ -1018,8 +1018,6 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 1018 | } | 1018 | } |
| 1019 | else if (STRINGP (string->lstring)) | 1019 | else if (STRINGP (string->lstring)) |
| 1020 | { | 1020 | { |
| 1021 | int len; | ||
| 1022 | |||
| 1023 | if (!string->unibyte) | 1021 | if (!string->unibyte) |
| 1024 | { | 1022 | { |
| 1025 | ch = STRING_CHAR_AND_LENGTH (SDATA (string->lstring) + bytepos, | 1023 | ch = STRING_CHAR_AND_LENGTH (SDATA (string->lstring) + bytepos, |
| @@ -1034,8 +1032,8 @@ bidi_fetch_char (EMACS_INT bytepos, EMACS_INT charpos, EMACS_INT *disp_pos, | |||
| 1034 | } | 1032 | } |
| 1035 | else | 1033 | else |
| 1036 | { | 1034 | { |
| 1037 | ch = FETCH_MULTIBYTE_CHAR (bytepos); | 1035 | ch = STRING_CHAR_AND_LENGTH (BYTE_POS_ADDR (bytepos), len); |
| 1038 | *ch_len = CHAR_BYTES (ch); | 1036 | *ch_len = len; |
| 1039 | } | 1037 | } |
| 1040 | *nchars = 1; | 1038 | *nchars = 1; |
| 1041 | } | 1039 | } |
diff --git a/src/dispextern.h b/src/dispextern.h index 7db665993d5..af5a3e836d7 100644 --- a/src/dispextern.h +++ b/src/dispextern.h | |||
| @@ -461,7 +461,7 @@ struct glyph | |||
| 461 | /* Length of acronym or hexadecimal code string (at most 8). */ | 461 | /* Length of acronym or hexadecimal code string (at most 8). */ |
| 462 | unsigned len : 4; | 462 | unsigned len : 4; |
| 463 | /* Character to display. Actually we need only 22 bits. */ | 463 | /* Character to display. Actually we need only 22 bits. */ |
| 464 | unsigned ch : 26; | 464 | unsigned ch : 22; |
| 465 | } glyphless; | 465 | } glyphless; |
| 466 | 466 | ||
| 467 | /* Used to compare all bit-fields above in one step. */ | 467 | /* Used to compare all bit-fields above in one step. */ |
| @@ -2169,6 +2169,10 @@ struct it | |||
| 2169 | Don't handle some `display' properties in these strings. */ | 2169 | Don't handle some `display' properties in these strings. */ |
| 2170 | unsigned string_from_display_prop_p : 1; | 2170 | unsigned string_from_display_prop_p : 1; |
| 2171 | 2171 | ||
| 2172 | /* 1 means `string' comes from a `line-prefix' or `wrap-prefix' | ||
| 2173 | property. */ | ||
| 2174 | unsigned string_from_prefix_prop_p : 1; | ||
| 2175 | |||
| 2172 | /* 1 means we are iterating an object that came from a value of a | 2176 | /* 1 means we are iterating an object that came from a value of a |
| 2173 | `display' property. */ | 2177 | `display' property. */ |
| 2174 | unsigned from_disp_prop_p : 1; | 2178 | unsigned from_disp_prop_p : 1; |
| @@ -2296,6 +2300,7 @@ struct it | |||
| 2296 | bidi_dir_t paragraph_embedding; | 2300 | bidi_dir_t paragraph_embedding; |
| 2297 | unsigned multibyte_p : 1; | 2301 | unsigned multibyte_p : 1; |
| 2298 | unsigned string_from_display_prop_p : 1; | 2302 | unsigned string_from_display_prop_p : 1; |
| 2303 | unsigned string_from_prefix_prop_p : 1; | ||
| 2299 | unsigned display_ellipsis_p : 1; | 2304 | unsigned display_ellipsis_p : 1; |
| 2300 | unsigned avoid_cursor_p : 1; | 2305 | unsigned avoid_cursor_p : 1; |
| 2301 | unsigned bidi_p:1; | 2306 | unsigned bidi_p:1; |
diff --git a/src/process.c b/src/process.c index bdf16b7dbd2..f2f33a9eafc 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -4888,15 +4888,20 @@ wait_reading_process_output (int time_limit, int microsecs, int read_kbd, | |||
| 4888 | It can't hurt. */ | 4888 | It can't hurt. */ |
| 4889 | else if (nread == -1 && errno == EIO) | 4889 | else if (nread == -1 && errno == EIO) |
| 4890 | { | 4890 | { |
| 4891 | /* Clear the descriptor now, so we only raise the signal once. */ | 4891 | /* Don't do anything if only a pty, with no associated |
| 4892 | FD_CLR (channel, &input_wait_mask); | 4892 | process (bug#10933). */ |
| 4893 | FD_CLR (channel, &non_keyboard_wait_mask); | 4893 | if (XPROCESS (proc)->pid != -2) { |
| 4894 | 4894 | /* Clear the descriptor now, so we only raise the signal | |
| 4895 | kill (getpid (), SIGCHLD); | 4895 | once. */ |
| 4896 | FD_CLR (channel, &input_wait_mask); | ||
| 4897 | FD_CLR (channel, &non_keyboard_wait_mask); | ||
| 4898 | |||
| 4899 | kill (getpid (), SIGCHLD); | ||
| 4900 | } | ||
| 4896 | } | 4901 | } |
| 4897 | #endif /* HAVE_PTYS */ | 4902 | #endif /* HAVE_PTYS */ |
| 4898 | /* If we can detect process termination, don't consider the process | 4903 | /* If we can detect process termination, don't consider the |
| 4899 | gone just because its pipe is closed. */ | 4904 | process gone just because its pipe is closed. */ |
| 4900 | #ifdef SIGCHLD | 4905 | #ifdef SIGCHLD |
| 4901 | else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) | 4906 | else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) |
| 4902 | ; | 4907 | ; |
diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h index d533ae34ac3..5eed3a177dc 100644 --- a/src/s/ms-w32.h +++ b/src/s/ms-w32.h | |||
| @@ -286,6 +286,12 @@ typedef int pid_t; | |||
| 286 | #define stricmp _stricmp | 286 | #define stricmp _stricmp |
| 287 | #define tzset _tzset | 287 | #define tzset _tzset |
| 288 | 288 | ||
| 289 | /* Include time.h before redirecting tzname, since MSVC's time.h | ||
| 290 | defines _tzname to call a function, but also declares tzname a | ||
| 291 | 2-element array. Having the redirection before including the | ||
| 292 | header thus has the effect of declaring a function that returns an | ||
| 293 | array, and triggers an error message. */ | ||
| 294 | #include <time.h> | ||
| 289 | #define tzname _tzname | 295 | #define tzname _tzname |
| 290 | #if !defined (_MSC_VER) || (_MSC_VER < 1400) | 296 | #if !defined (_MSC_VER) || (_MSC_VER < 1400) |
| 291 | #undef utime | 297 | #undef utime |
diff --git a/src/w32heap.c b/src/w32heap.c index 35ac4cbf31f..da8579896f2 100644 --- a/src/w32heap.c +++ b/src/w32heap.c | |||
| @@ -296,27 +296,3 @@ round_heap (unsigned long align) | |||
| 296 | if (need_to_alloc) | 296 | if (need_to_alloc) |
| 297 | sbrk (need_to_alloc); | 297 | sbrk (need_to_alloc); |
| 298 | } | 298 | } |
| 299 | |||
| 300 | #if (_MSC_VER >= 1000 && _MSC_VER < 1300 && !defined (USE_CRT_DLL)) | ||
| 301 | |||
| 302 | /* MSVC 4.2 invokes these functions from mainCRTStartup to initialize | ||
| 303 | a heap via HeapCreate. They are normally defined by the runtime, | ||
| 304 | but we override them here so that the unnecessary HeapCreate call | ||
| 305 | is not performed. */ | ||
| 306 | |||
| 307 | int __cdecl | ||
| 308 | _heap_init (void) | ||
| 309 | { | ||
| 310 | /* Stepping through the assembly indicates that mainCRTStartup is | ||
| 311 | expecting a nonzero success return value. */ | ||
| 312 | return 1; | ||
| 313 | } | ||
| 314 | |||
| 315 | void __cdecl | ||
| 316 | _heap_term (void) | ||
| 317 | { | ||
| 318 | return; | ||
| 319 | } | ||
| 320 | |||
| 321 | #endif | ||
| 322 | |||
diff --git a/src/w32proc.c b/src/w32proc.c index f7982f36913..28591f90128 100644 --- a/src/w32proc.c +++ b/src/w32proc.c | |||
| @@ -2067,8 +2067,8 @@ DEFUN ("w32-get-console-codepage", Fw32_get_console_codepage, | |||
| 2067 | 2067 | ||
| 2068 | DEFUN ("w32-set-console-codepage", Fw32_set_console_codepage, | 2068 | DEFUN ("w32-set-console-codepage", Fw32_set_console_codepage, |
| 2069 | Sw32_set_console_codepage, 1, 1, 0, | 2069 | Sw32_set_console_codepage, 1, 1, 0, |
| 2070 | doc: /* Make Windows codepage CP be the current codepage setting for Emacs. | 2070 | doc: /* Make Windows codepage CP be the codepage for Emacs tty keyboard input. |
| 2071 | The codepage setting affects keyboard input and display in tty mode. | 2071 | This codepage setting affects keyboard input in tty mode. |
| 2072 | If successful, the new CP is returned, otherwise nil. */) | 2072 | If successful, the new CP is returned, otherwise nil. */) |
| 2073 | (Lisp_Object cp) | 2073 | (Lisp_Object cp) |
| 2074 | { | 2074 | { |
| @@ -2095,8 +2095,8 @@ DEFUN ("w32-get-console-output-codepage", Fw32_get_console_output_codepage, | |||
| 2095 | 2095 | ||
| 2096 | DEFUN ("w32-set-console-output-codepage", Fw32_set_console_output_codepage, | 2096 | DEFUN ("w32-set-console-output-codepage", Fw32_set_console_output_codepage, |
| 2097 | Sw32_set_console_output_codepage, 1, 1, 0, | 2097 | Sw32_set_console_output_codepage, 1, 1, 0, |
| 2098 | doc: /* Make Windows codepage CP be the current codepage setting for Emacs. | 2098 | doc: /* Make Windows codepage CP be the codepage for Emacs console output. |
| 2099 | The codepage setting affects keyboard input and display in tty mode. | 2099 | This codepage setting affects display in tty mode. |
| 2100 | If successful, the new CP is returned, otherwise nil. */) | 2100 | If successful, the new CP is returned, otherwise nil. */) |
| 2101 | (Lisp_Object cp) | 2101 | (Lisp_Object cp) |
| 2102 | { | 2102 | { |
| @@ -2114,7 +2114,7 @@ If successful, the new CP is returned, otherwise nil. */) | |||
| 2114 | 2114 | ||
| 2115 | DEFUN ("w32-get-codepage-charset", Fw32_get_codepage_charset, | 2115 | DEFUN ("w32-get-codepage-charset", Fw32_get_codepage_charset, |
| 2116 | Sw32_get_codepage_charset, 1, 1, 0, | 2116 | Sw32_get_codepage_charset, 1, 1, 0, |
| 2117 | doc: /* Return charset of codepage CP. | 2117 | doc: /* Return charset ID corresponding to codepage CP. |
| 2118 | Returns nil if the codepage is not valid. */) | 2118 | Returns nil if the codepage is not valid. */) |
| 2119 | (Lisp_Object cp) | 2119 | (Lisp_Object cp) |
| 2120 | { | 2120 | { |
diff --git a/src/xdisp.c b/src/xdisp.c index da2b78f67e3..b567893d719 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -3678,7 +3678,9 @@ handle_face_prop (struct it *it) | |||
| 3678 | with, so that overlay strings appear in the same face as | 3678 | with, so that overlay strings appear in the same face as |
| 3679 | surrounding text, unless they specify their own | 3679 | surrounding text, unless they specify their own |
| 3680 | faces. */ | 3680 | faces. */ |
| 3681 | base_face_id = underlying_face_id (it); | 3681 | base_face_id = it->string_from_prefix_prop_p |
| 3682 | ? DEFAULT_FACE_ID | ||
| 3683 | : underlying_face_id (it); | ||
| 3682 | } | 3684 | } |
| 3683 | 3685 | ||
| 3684 | new_face_id = face_at_string_position (it->w, | 3686 | new_face_id = face_at_string_position (it->w, |
| @@ -5606,6 +5608,7 @@ push_it (struct it *it, struct text_pos *position) | |||
| 5606 | p->font_height = it->font_height; | 5608 | p->font_height = it->font_height; |
| 5607 | p->voffset = it->voffset; | 5609 | p->voffset = it->voffset; |
| 5608 | p->string_from_display_prop_p = it->string_from_display_prop_p; | 5610 | p->string_from_display_prop_p = it->string_from_display_prop_p; |
| 5611 | p->string_from_prefix_prop_p = it->string_from_prefix_prop_p; | ||
| 5609 | p->display_ellipsis_p = 0; | 5612 | p->display_ellipsis_p = 0; |
| 5610 | p->line_wrap = it->line_wrap; | 5613 | p->line_wrap = it->line_wrap; |
| 5611 | p->bidi_p = it->bidi_p; | 5614 | p->bidi_p = it->bidi_p; |
| @@ -5720,6 +5723,7 @@ pop_it (struct it *it) | |||
| 5720 | it->font_height = p->font_height; | 5723 | it->font_height = p->font_height; |
| 5721 | it->voffset = p->voffset; | 5724 | it->voffset = p->voffset; |
| 5722 | it->string_from_display_prop_p = p->string_from_display_prop_p; | 5725 | it->string_from_display_prop_p = p->string_from_display_prop_p; |
| 5726 | it->string_from_prefix_prop_p = p->string_from_prefix_prop_p; | ||
| 5723 | it->line_wrap = p->line_wrap; | 5727 | it->line_wrap = p->line_wrap; |
| 5724 | it->bidi_p = p->bidi_p; | 5728 | it->bidi_p = p->bidi_p; |
| 5725 | it->paragraph_embedding = p->paragraph_embedding; | 5729 | it->paragraph_embedding = p->paragraph_embedding; |
| @@ -6150,6 +6154,8 @@ reseat_1 (struct it *it, struct text_pos pos, int set_stop_p) | |||
| 6150 | it->multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); | 6154 | it->multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); |
| 6151 | it->sp = 0; | 6155 | it->sp = 0; |
| 6152 | it->string_from_display_prop_p = 0; | 6156 | it->string_from_display_prop_p = 0; |
| 6157 | it->string_from_prefix_prop_p = 0; | ||
| 6158 | |||
| 6153 | it->from_disp_prop_p = 0; | 6159 | it->from_disp_prop_p = 0; |
| 6154 | it->face_before_selective_p = 0; | 6160 | it->face_before_selective_p = 0; |
| 6155 | if (it->bidi_p) | 6161 | if (it->bidi_p) |
| @@ -18644,7 +18650,7 @@ cursor_row_p (struct glyph_row *row) | |||
| 18644 | `line-prefix' and `wrap-prefix' properties. */ | 18650 | `line-prefix' and `wrap-prefix' properties. */ |
| 18645 | 18651 | ||
| 18646 | static int | 18652 | static int |
| 18647 | push_display_prop (struct it *it, Lisp_Object prop) | 18653 | push_prefix_prop (struct it *it, Lisp_Object prop) |
| 18648 | { | 18654 | { |
| 18649 | struct text_pos pos = | 18655 | struct text_pos pos = |
| 18650 | STRINGP (it->string) ? it->current.string_pos : it->current.pos; | 18656 | STRINGP (it->string) ? it->current.string_pos : it->current.pos; |
| @@ -18668,6 +18674,7 @@ push_display_prop (struct it *it, Lisp_Object prop) | |||
| 18668 | } | 18674 | } |
| 18669 | 18675 | ||
| 18670 | it->string = prop; | 18676 | it->string = prop; |
| 18677 | it->string_from_prefix_prop_p = 1; | ||
| 18671 | it->multibyte_p = STRING_MULTIBYTE (it->string); | 18678 | it->multibyte_p = STRING_MULTIBYTE (it->string); |
| 18672 | it->current.overlay_string_index = -1; | 18679 | it->current.overlay_string_index = -1; |
| 18673 | IT_STRING_CHARPOS (*it) = IT_STRING_BYTEPOS (*it) = 0; | 18680 | IT_STRING_CHARPOS (*it) = IT_STRING_BYTEPOS (*it) = 0; |
| @@ -18754,7 +18761,7 @@ handle_line_prefix (struct it *it) | |||
| 18754 | if (NILP (prefix)) | 18761 | if (NILP (prefix)) |
| 18755 | prefix = Vline_prefix; | 18762 | prefix = Vline_prefix; |
| 18756 | } | 18763 | } |
| 18757 | if (! NILP (prefix) && push_display_prop (it, prefix)) | 18764 | if (! NILP (prefix) && push_prefix_prop (it, prefix)) |
| 18758 | { | 18765 | { |
| 18759 | /* If the prefix is wider than the window, and we try to wrap | 18766 | /* If the prefix is wider than the window, and we try to wrap |
| 18760 | it, it would acquire its own wrap prefix, and so on till the | 18767 | it, it would acquire its own wrap prefix, and so on till the |
| @@ -24234,7 +24241,7 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym) | |||
| 24234 | sprintf (buf, "%0*X", it->c < 0x10000 ? 4 : 6, it->c); | 24241 | sprintf (buf, "%0*X", it->c < 0x10000 ? 4 : 6, it->c); |
| 24235 | str = buf; | 24242 | str = buf; |
| 24236 | } | 24243 | } |
| 24237 | for (len = 0; str[len] && ASCII_BYTE_P (str[len]); len++) | 24244 | for (len = 0; str[len] && ASCII_BYTE_P (str[len]) && len < 6; len++) |
| 24238 | code[len] = font->driver->encode_char (font, str[len]); | 24245 | code[len] = font->driver->encode_char (font, str[len]); |
| 24239 | upper_len = (len + 1) / 2; | 24246 | upper_len = (len + 1) / 2; |
| 24240 | font->driver->text_extents (font, code, upper_len, | 24247 | font->driver->text_extents (font, code, upper_len, |
diff --git a/src/xfaces.c b/src/xfaces.c index bcb04188aeb..476fb1e0366 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -6599,20 +6599,22 @@ ignore. */); | |||
| 6599 | doc: /* Alist of face remappings. | 6599 | doc: /* Alist of face remappings. |
| 6600 | Each element is of the form: | 6600 | Each element is of the form: |
| 6601 | 6601 | ||
| 6602 | (FACE REPLACEMENT...), | 6602 | (FACE . REPLACEMENT), |
| 6603 | 6603 | ||
| 6604 | which causes display of the face FACE to use REPLACEMENT... instead. | 6604 | which causes display of the face FACE to use REPLACEMENT instead. |
| 6605 | REPLACEMENT... is interpreted the same way as the value of a `face' | 6605 | REPLACEMENT is a face specification, i.e. one of the following: |
| 6606 | text property: it may be (1) A face name, (2) A list of face names, | ||
| 6607 | (3) A property-list of face attribute/value pairs, or (4) A list of | ||
| 6608 | face names or lists containing face attribute/value pairs. | ||
| 6609 | 6606 | ||
| 6610 | Multiple entries in REPLACEMENT... are merged together to form the final | 6607 | (1) a face name |
| 6611 | result, with faces or attributes earlier in the list taking precedence | 6608 | (2) a property list of attribute/value pairs, or |
| 6612 | over those that are later. | 6609 | (3) a list in which each element has the form of (1) or (2). |
| 6613 | 6610 | ||
| 6614 | Face-name remapping cycles are suppressed; recursive references use the | 6611 | List values for REPLACEMENT are merged to form the final face |
| 6615 | underlying face instead of the remapped face. So a remapping of the form: | 6612 | specification, with earlier entries taking precedence, in the same as |
| 6613 | as in the `face' text property. | ||
| 6614 | |||
| 6615 | Face-name remapping cycles are suppressed; recursive references use | ||
| 6616 | the underlying face instead of the remapped face. So a remapping of | ||
| 6617 | the form: | ||
| 6616 | 6618 | ||
| 6617 | (FACE EXTRA-FACE... FACE) | 6619 | (FACE EXTRA-FACE... FACE) |
| 6618 | 6620 | ||
| @@ -6620,13 +6622,13 @@ or: | |||
| 6620 | 6622 | ||
| 6621 | (FACE (FACE-ATTR VAL ...) FACE) | 6623 | (FACE (FACE-ATTR VAL ...) FACE) |
| 6622 | 6624 | ||
| 6623 | will cause EXTRA-FACE... or (FACE-ATTR VAL ...) to be _merged_ with the | 6625 | causes EXTRA-FACE... or (FACE-ATTR VAL ...) to be _merged_ with the |
| 6624 | existing definition of FACE. Note that for the default face, this isn't | 6626 | existing definition of FACE. Note that this isn't necessary for the |
| 6625 | necessary, as every face inherits from the default face. | 6627 | default face, since every face inherits from the default face. |
| 6626 | 6628 | ||
| 6627 | Making this variable buffer-local is a good way to allow buffer-specific | 6629 | If this variable is made buffer-local, the face remapping takes effect |
| 6628 | face definitions. For instance, the mode my-mode could define a face | 6630 | only in that buffer. For instance, the mode my-mode could define a |
| 6629 | `my-mode-default', and then in the mode setup function, do: | 6631 | face `my-mode-default', and then in the mode setup function, do: |
| 6630 | 6632 | ||
| 6631 | (set (make-local-variable 'face-remapping-alist) | 6633 | (set (make-local-variable 'face-remapping-alist) |
| 6632 | '((default my-mode-default)))). | 6634 | '((default my-mode-default)))). |
diff --git a/src/xterm.c b/src/xterm.c index 483676227ea..29d4dd453cb 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -7108,7 +7108,8 @@ x_dispatch_event (XEvent *event, Display *display) | |||
| 7108 | 7108 | ||
| 7109 | 7109 | ||
| 7110 | /* Read events coming from the X server. | 7110 | /* Read events coming from the X server. |
| 7111 | This routine is called by the SIGIO handler. | 7111 | This routine is called by the SIGIO handler only if SYNC_INPUT is |
| 7112 | not defined. | ||
| 7112 | We return as soon as there are no more events to be read. | 7113 | We return as soon as there are no more events to be read. |
| 7113 | 7114 | ||
| 7114 | We return the number of characters stored into the buffer, | 7115 | We return the number of characters stored into the buffer, |
| @@ -7142,7 +7143,9 @@ XTread_socket (struct terminal *terminal, int expected, struct input_event *hold | |||
| 7142 | /* So people can tell when we have read the available input. */ | 7143 | /* So people can tell when we have read the available input. */ |
| 7143 | input_signal_count++; | 7144 | input_signal_count++; |
| 7144 | 7145 | ||
| 7146 | #ifndef SYNC_INPUT | ||
| 7145 | ++handling_signal; | 7147 | ++handling_signal; |
| 7148 | #endif | ||
| 7146 | 7149 | ||
| 7147 | /* For debugging, this gives a way to fake an I/O error. */ | 7150 | /* For debugging, this gives a way to fake an I/O error. */ |
| 7148 | if (terminal->display_info.x == XTread_socket_fake_io_error) | 7151 | if (terminal->display_info.x == XTread_socket_fake_io_error) |
| @@ -7232,7 +7235,9 @@ XTread_socket (struct terminal *terminal, int expected, struct input_event *hold | |||
| 7232 | pending_autoraise_frame = 0; | 7235 | pending_autoraise_frame = 0; |
| 7233 | } | 7236 | } |
| 7234 | 7237 | ||
| 7238 | #ifndef SYNC_INPUT | ||
| 7235 | --handling_signal; | 7239 | --handling_signal; |
| 7240 | #endif | ||
| 7236 | UNBLOCK_INPUT; | 7241 | UNBLOCK_INPUT; |
| 7237 | 7242 | ||
| 7238 | return count; | 7243 | return count; |