aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNoah Friedman2015-08-17 13:00:36 -0700
committerNoah Friedman2015-08-17 13:00:36 -0700
commita84225d29c40a8cf3f860d2b58517102eef33436 (patch)
tree8c26150075a37ad5c141d0c5c7aa08eee9749814 /src
parentb892438d7a424e61f174d8b8a57e78077aa96a0c (diff)
parent62f65abf279da30e6fff4bcf3462b548aeb2dc97 (diff)
downloademacs-a84225d29c40a8cf3f860d2b58517102eef33436.tar.gz
emacs-a84225d29c40a8cf3f860d2b58517102eef33436.zip
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c16
-rw-r--r--src/bidi.c8
-rw-r--r--src/character.h24
-rw-r--r--src/charset.c2
-rw-r--r--src/composite.c2
-rw-r--r--src/dispnew.c2
-rw-r--r--src/doc.c70
-rw-r--r--src/doprnt.c60
-rw-r--r--src/editfns.c202
-rw-r--r--src/emacs.c34
-rw-r--r--src/image.c229
-rw-r--r--src/keyboard.c247
-rw-r--r--src/keyboard.h2
-rw-r--r--src/lisp.h22
-rw-r--r--src/lread.c11
-rw-r--r--src/makefile.w32-in1725
-rw-r--r--src/nsimage.m2
-rw-r--r--src/regex.c14
-rw-r--r--src/regex.h4
-rw-r--r--src/syntax.c5
-rw-r--r--src/sysdep.c6
-rw-r--r--src/w32fns.c71
-rw-r--r--src/xdisp.c88
-rw-r--r--src/xfaces.c8
-rw-r--r--src/xselect.c6
-rw-r--r--src/xsettings.c4
26 files changed, 708 insertions, 2156 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 9ac3ad84131..91b4c6e1515 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3765,7 +3765,7 @@ queue_doomed_finalizers (struct Lisp_Finalizer *dest,
3765static Lisp_Object 3765static Lisp_Object
3766run_finalizer_handler (Lisp_Object args) 3766run_finalizer_handler (Lisp_Object args)
3767{ 3767{
3768 add_to_log ("finalizer failed: %S", args, Qnil); 3768 add_to_log ("finalizer failed: %S", args);
3769 return Qnil; 3769 return Qnil;
3770} 3770}
3771 3771
@@ -5339,6 +5339,10 @@ purecopy (Lisp_Object obj)
5339 if (PURE_POINTER_P (XPNTR (obj)) || INTEGERP (obj) || SUBRP (obj)) 5339 if (PURE_POINTER_P (XPNTR (obj)) || INTEGERP (obj) || SUBRP (obj))
5340 return obj; /* Already pure. */ 5340 return obj; /* Already pure. */
5341 5341
5342 if (STRINGP (obj) && XSTRING (obj)->intervals)
5343 message_with_string ("Dropping text-properties while making string `%s' pure",
5344 obj, true);
5345
5342 if (HASH_TABLE_P (Vpurify_flag)) /* Hash consing. */ 5346 if (HASH_TABLE_P (Vpurify_flag)) /* Hash consing. */
5343 { 5347 {
5344 Lisp_Object tmp = Fgethash (obj, Vpurify_flag, Qnil); 5348 Lisp_Object tmp = Fgethash (obj, Vpurify_flag, Qnil);
@@ -5351,13 +5355,9 @@ purecopy (Lisp_Object obj)
5351 else if (FLOATP (obj)) 5355 else if (FLOATP (obj))
5352 obj = make_pure_float (XFLOAT_DATA (obj)); 5356 obj = make_pure_float (XFLOAT_DATA (obj));
5353 else if (STRINGP (obj)) 5357 else if (STRINGP (obj))
5354 { 5358 obj = make_pure_string (SSDATA (obj), SCHARS (obj),
5355 if (XSTRING (obj)->intervals) 5359 SBYTES (obj),
5356 message ("Dropping text-properties when making string pure"); 5360 STRING_MULTIBYTE (obj));
5357 obj = make_pure_string (SSDATA (obj), SCHARS (obj),
5358 SBYTES (obj),
5359 STRING_MULTIBYTE (obj));
5360 }
5361 else if (COMPILEDP (obj) || VECTORP (obj) || HASH_TABLE_P (obj)) 5361 else if (COMPILEDP (obj) || VECTORP (obj) || HASH_TABLE_P (obj))
5362 { 5362 {
5363 struct Lisp_Vector *objp = XVECTOR (obj); 5363 struct Lisp_Vector *objp = XVECTOR (obj);
diff --git a/src/bidi.c b/src/bidi.c
index e06430c8b84..bcc15b8c8f5 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -1313,13 +1313,13 @@ bidi_fetch_char (ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t *disp_pos,
1313 /* `(space ...)' display specs are handled as paragraph 1313 /* `(space ...)' display specs are handled as paragraph
1314 separators for the purposes of the reordering; see UAX#9 1314 separators for the purposes of the reordering; see UAX#9
1315 section 3 and clause HL1 in section 4.3 there. */ 1315 section 3 and clause HL1 in section 4.3 there. */
1316 ch = 0x2029; 1316 ch = PARAGRAPH_SEPARATOR;
1317 } 1317 }
1318 else 1318 else
1319 { 1319 {
1320 /* All other display specs are handled as the Unicode Object 1320 /* All other display specs are handled as the Unicode Object
1321 Replacement Character. */ 1321 Replacement Character. */
1322 ch = 0xFFFC; 1322 ch = OBJECT_REPLACEMENT_CHARACTER;
1323 } 1323 }
1324 disp_end_pos = compute_display_string_end (*disp_pos, string); 1324 disp_end_pos = compute_display_string_end (*disp_pos, string);
1325 if (disp_end_pos < 0) 1325 if (disp_end_pos < 0)
@@ -2482,8 +2482,8 @@ typedef struct bpa_stack_entry {
2482 2482
2483#define CANONICAL_EQU(c) \ 2483#define CANONICAL_EQU(c) \
2484 ( ASCII_CHAR_P (c) ? c \ 2484 ( ASCII_CHAR_P (c) ? c \
2485 : (c) == 0x2329 ? 0x3008 \ 2485 : (c) == LEFT_POINTING_ANGLE_BRACKET ? LEFT_ANGLE_BRACKET \
2486 : (c) == 0x232a ? 0x3009 \ 2486 : (c) == RIGHT_POINTING_ANGLE_BRACKET ? RIGHT_ANGLE_BRACKET \
2487 : c ) 2487 : c )
2488 2488
2489#ifdef ENABLE_CHECKING 2489#ifdef ENABLE_CHECKING
diff --git a/src/character.h b/src/character.h
index 859d717a0ba..67d4bca4a23 100644
--- a/src/character.h
+++ b/src/character.h
@@ -59,6 +59,30 @@ INLINE_HEADER_BEGIN
59/* Maximum leading code of multibyte characters. */ 59/* Maximum leading code of multibyte characters. */
60#define MAX_MULTIBYTE_LEADING_CODE 0xF8 60#define MAX_MULTIBYTE_LEADING_CODE 0xF8
61 61
62/* Unicode character values. */
63enum
64{
65 NO_BREAK_SPACE = 0x00A0,
66 SOFT_HYPHEN = 0x00AD,
67 ZERO_WIDTH_NON_JOINER = 0x200C,
68 ZERO_WIDTH_JOINER = 0x200D,
69 HYPHEN = 0x2010,
70 NON_BREAKING_HYPHEN = 0x2011,
71 LEFT_SINGLE_QUOTATION_MARK = 0x2018,
72 RIGHT_SINGLE_QUOTATION_MARK = 0x2019,
73 PARAGRAPH_SEPARATOR = 0x2029,
74 LEFT_POINTING_ANGLE_BRACKET = 0x2329,
75 RIGHT_POINTING_ANGLE_BRACKET = 0x232A,
76 LEFT_ANGLE_BRACKET = 0x3008,
77 RIGHT_ANGLE_BRACKET = 0x3009,
78 OBJECT_REPLACEMENT_CHARACTER = 0xFFFC,
79};
80
81/* UTF-8 encodings. Use \x escapes, so they are portable to pre-C11
82 compilers and can be concatenated with ordinary string literals. */
83#define uLSQM "\xE2\x80\x98" /* U+2018 LEFT SINGLE QUOTATION MARK */
84#define uRSQM "\xE2\x80\x99" /* U+2019 RIGHT SINGLE QUOTATION MARK */
85
62/* Nonzero iff C is a character that corresponds to a raw 8-bit 86/* Nonzero iff C is a character that corresponds to a raw 8-bit
63 byte. */ 87 byte. */
64#define CHAR_BYTE8_P(c) ((c) > MAX_5_BYTE_CHAR) 88#define CHAR_BYTE8_P(c) ((c) > MAX_5_BYTE_CHAR)
diff --git a/src/charset.c b/src/charset.c
index b19e34400fe..eeebf172bdf 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -555,7 +555,7 @@ load_charset_map_from_vector (struct charset *charset, Lisp_Object vec, int cont
555 555
556 if (len % 2 == 1) 556 if (len % 2 == 1)
557 { 557 {
558 add_to_log ("Failure in loading charset map: %V", vec, Qnil); 558 add_to_log ("Failure in loading charset map: %V", vec);
559 return; 559 return;
560 } 560 }
561 561
diff --git a/src/composite.c b/src/composite.c
index 1c18165599d..88cef222d3a 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -927,7 +927,7 @@ char_composable_p (int c)
927{ 927{
928 Lisp_Object val; 928 Lisp_Object val;
929 return (c > ' ' 929 return (c > ' '
930 && (c == 0x200C || c == 0x200D 930 && (c == ZERO_WIDTH_NON_JOINER || c == ZERO_WIDTH_JOINER
931 || (val = CHAR_TABLE_REF (Vunicode_category_table, c), 931 || (val = CHAR_TABLE_REF (Vunicode_category_table, c),
932 (INTEGERP (val) && (XINT (val) <= UNICODE_CATEGORY_So))))); 932 (INTEGERP (val) && (XINT (val) <= UNICODE_CATEGORY_So)))));
933} 933}
diff --git a/src/dispnew.c b/src/dispnew.c
index 7833fe3d01c..18afe50dd9b 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -177,7 +177,7 @@ add_window_display_history (struct window *w, const char *msg, bool paused_p)
177 ++history_idx; 177 ++history_idx;
178 178
179 snprintf (buf, sizeof redisplay_history[0].trace, 179 snprintf (buf, sizeof redisplay_history[0].trace,
180 "%"pMu": window %p (`%s')%s\n%s", 180 "%"pMu": window %p (%s)%s\n%s",
181 history_tick++, 181 history_tick++,
182 ptr, 182 ptr,
183 ((BUFFERP (w->contents) 183 ((BUFFERP (w->contents)
diff --git a/src/doc.c b/src/doc.c
index 36619e1142e..9c9bdf3997a 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -684,18 +684,37 @@ the same file name is found in the `doc-directory'. */)
684 return unbind_to (count, Qnil); 684 return unbind_to (count, Qnil);
685} 685}
686 686
687/* Declare named constants for U+2018 LEFT SINGLE QUOTATION MARK and 687/* Curved quotation marks. */
688 U+2019 RIGHT SINGLE QUOTATION MARK, which have UTF-8 encodings
689 "\xE2\x80\x98" and "\xE2\x80\x99", respectively. */
690enum
691 {
692 LEFT_SINGLE_QUOTATION_MARK = 0x2018,
693 uLSQM0 = 0xE2, uLSQM1 = 0x80, uLSQM2 = 0x98,
694 uRSQM0 = 0xE2, uRSQM1 = 0x80, uRSQM2 = 0x99,
695 };
696static unsigned char const LSQM[] = { uLSQM0, uLSQM1, uLSQM2 }; 688static unsigned char const LSQM[] = { uLSQM0, uLSQM1, uLSQM2 };
697static unsigned char const RSQM[] = { uRSQM0, uRSQM1, uRSQM2 }; 689static unsigned char const RSQM[] = { uRSQM0, uRSQM1, uRSQM2 };
698 690
691static bool
692default_to_grave_quoting_style (void)
693{
694 if (!text_quoting_flag)
695 return true;
696 if (! DISP_TABLE_P (Vstandard_display_table))
697 return false;
698 Lisp_Object dv = DISP_CHAR_VECTOR (XCHAR_TABLE (Vstandard_display_table),
699 LEFT_SINGLE_QUOTATION_MARK);
700 return (VECTORP (dv) && ASIZE (dv) == 1
701 && EQ (AREF (dv, 0), make_number ('`')));
702}
703
704/* Return the current effective text quoting style. */
705enum text_quoting_style
706text_quoting_style (void)
707{
708 if (NILP (Vtext_quoting_style)
709 ? default_to_grave_quoting_style ()
710 : EQ (Vtext_quoting_style, Qgrave))
711 return GRAVE_QUOTING_STYLE;
712 else if (EQ (Vtext_quoting_style, Qstraight))
713 return STRAIGHT_QUOTING_STYLE;
714 else
715 return CURVE_QUOTING_STYLE;
716}
717
699DEFUN ("substitute-command-keys", Fsubstitute_command_keys, 718DEFUN ("substitute-command-keys", Fsubstitute_command_keys,
700 Ssubstitute_command_keys, 1, 1, 0, 719 Ssubstitute_command_keys, 1, 1, 0,
701 doc: /* Substitute key descriptions for command names in STRING. 720 doc: /* Substitute key descriptions for command names in STRING.
@@ -750,20 +769,7 @@ Otherwise, return a new string. */)
750 name = Qnil; 769 name = Qnil;
751 GCPRO4 (string, tem, keymap, name); 770 GCPRO4 (string, tem, keymap, name);
752 771
753 enum { unicode, grave_accent, apostrophe } quote_translation = unicode; 772 enum text_quoting_style quoting_style = text_quoting_style ();
754 if (EQ (Vtext_quoting_style, Qgrave))
755 quote_translation = grave_accent;
756 else if (EQ (Vtext_quoting_style, Qstraight))
757 quote_translation = apostrophe;
758 else if (NILP (Vtext_quoting_style)
759 && DISP_TABLE_P (Vstandard_display_table))
760 {
761 Lisp_Object dv = DISP_CHAR_VECTOR (XCHAR_TABLE (Vstandard_display_table),
762 LEFT_SINGLE_QUOTATION_MARK);
763 if (VECTORP (dv) && ASIZE (dv) == 1
764 && EQ (AREF (dv, 0), make_number ('`')))
765 quote_translation = grave_accent;
766 }
767 773
768 multibyte = STRING_MULTIBYTE (string); 774 multibyte = STRING_MULTIBYTE (string);
769 nchars = 0; 775 nchars = 0;
@@ -921,11 +927,13 @@ Otherwise, return a new string. */)
921 if (NILP (tem)) 927 if (NILP (tem))
922 { 928 {
923 name = Fsymbol_name (name); 929 name = Fsymbol_name (name);
924 insert_string ("\nUses keymap `"); 930 insert1 (CALLN (Fformat, build_string ("\nUses keymap "uLSQM)));
925 insert_from_string (name, 0, 0, 931 insert_from_string (name, 0, 0,
926 SCHARS (name), 932 SCHARS (name),
927 SBYTES (name), 1); 933 SBYTES (name), 1);
928 insert_string ("', which is not currently defined.\n"); 934 insert1 (CALLN (Fformat,
935 (build_string
936 (uRSQM", which is not currently defined.\n"))));
929 if (start[-1] == '<') keymap = Qnil; 937 if (start[-1] == '<') keymap = Qnil;
930 } 938 }
931 else if (start[-1] == '<') 939 else if (start[-1] == '<')
@@ -962,7 +970,7 @@ Otherwise, return a new string. */)
962 strp = SDATA (string) + idx; 970 strp = SDATA (string) + idx;
963 } 971 }
964 } 972 }
965 else if (strp[0] == '`' && quote_translation == unicode) 973 else if (strp[0] == '`' && quoting_style == CURVE_QUOTING_STYLE)
966 { 974 {
967 in_quote = true; 975 in_quote = true;
968 start = LSQM; 976 start = LSQM;
@@ -972,7 +980,7 @@ Otherwise, return a new string. */)
972 idx = strp - SDATA (string) + 1; 980 idx = strp - SDATA (string) + 1;
973 goto subst; 981 goto subst;
974 } 982 }
975 else if (strp[0] == '`' && quote_translation == apostrophe) 983 else if (strp[0] == '`' && quoting_style == STRAIGHT_QUOTING_STYLE)
976 { 984 {
977 *bufp++ = '\''; 985 *bufp++ = '\'';
978 strp++; 986 strp++;
@@ -987,9 +995,9 @@ Otherwise, return a new string. */)
987 } 995 }
988 else if (strp[0] == uLSQM0 && strp[1] == uLSQM1 996 else if (strp[0] == uLSQM0 && strp[1] == uLSQM1
989 && (strp[2] == uLSQM2 || strp[2] == uRSQM2) 997 && (strp[2] == uLSQM2 || strp[2] == uRSQM2)
990 && quote_translation != unicode) 998 && quoting_style != CURVE_QUOTING_STYLE)
991 { 999 {
992 *bufp++ = (strp[2] == uLSQM2 && quote_translation == grave_accent 1000 *bufp++ = (strp[2] == uLSQM2 && quoting_style == GRAVE_QUOTING_STYLE
993 ? '`' : '\''); 1001 ? '`' : '\'');
994 strp += 3; 1002 strp += 3;
995 nchars++; 1003 nchars++;
@@ -1044,6 +1052,10 @@ The default value nil acts like ‘curve’ if curved single quotes are
1044displayable, and like ‘grave’ otherwise. */); 1052displayable, and like ‘grave’ otherwise. */);
1045 Vtext_quoting_style = Qnil; 1053 Vtext_quoting_style = Qnil;
1046 1054
1055 DEFVAR_BOOL ("internal--text-quoting-flag", text_quoting_flag,
1056 doc: /* If nil, a nil ‘text-quoting-style’ is treated as ‘grave’. */);
1057 /* Initialized by ‘main’. */
1058
1047 defsubr (&Sdocumentation); 1059 defsubr (&Sdocumentation);
1048 defsubr (&Sdocumentation_property); 1060 defsubr (&Sdocumentation_property);
1049 defsubr (&Ssnarf_documentation); 1061 defsubr (&Ssnarf_documentation);
diff --git a/src/doprnt.c b/src/doprnt.c
index 68750f519e6..7c5a6afb94b 100644
--- a/src/doprnt.c
+++ b/src/doprnt.c
@@ -49,8 +49,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
49 support features beyond those in `Fformat', which is used by `error' on the 49 support features beyond those in `Fformat', which is used by `error' on the
50 Lisp level. */ 50 Lisp level. */
51 51
52/* This function supports the following %-sequences in the `format' 52/* In the FORMAT argument this function supports ` and ' as directives
53 argument: 53 that output left and right quotes as per ‘text-quoting style’. It
54 also supports the following %-sequences:
54 55
55 %s means print a string argument. 56 %s means print a string argument.
56 %S is silently treated as %s, for loose compatibility with `Fformat'. 57 %S is silently treated as %s, for loose compatibility with `Fformat'.
@@ -144,6 +145,7 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
144 /* Buffer we have got with malloc. */ 145 /* Buffer we have got with malloc. */
145 char *big_buffer = NULL; 146 char *big_buffer = NULL;
146 147
148 enum text_quoting_style quoting_style = text_quoting_style ();
147 ptrdiff_t tem = -1; 149 ptrdiff_t tem = -1;
148 char *string; 150 char *string;
149 char fixed_buffer[20]; /* Default buffer for small formatting. */ 151 char fixed_buffer[20]; /* Default buffer for small formatting. */
@@ -164,7 +166,9 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
164 /* Loop until end of format string or buffer full. */ 166 /* Loop until end of format string or buffer full. */
165 while (fmt < format_end && bufsize > 0) 167 while (fmt < format_end && bufsize > 0)
166 { 168 {
167 if (*fmt == '%') /* Check for a '%' character */ 169 char const *fmt0 = fmt;
170 char fmtchar = *fmt++;
171 if (fmtchar == '%')
168 { 172 {
169 ptrdiff_t size_bound = 0; 173 ptrdiff_t size_bound = 0;
170 ptrdiff_t width; /* Columns occupied by STRING on display. */ 174 ptrdiff_t width; /* Columns occupied by STRING on display. */
@@ -180,7 +184,6 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
180 int maxmlen = max (max (1, pDlen), max (pIlen, pMlen)); 184 int maxmlen = max (max (1, pDlen), max (pIlen, pMlen));
181 int mlen; 185 int mlen;
182 186
183 fmt++;
184 /* Copy this one %-spec into fmtcpy. */ 187 /* Copy this one %-spec into fmtcpy. */
185 string = fmtcpy; 188 string = fmtcpy;
186 *string++ = '%'; 189 *string++ = '%';
@@ -438,22 +441,36 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
438 } 441 }
439 } 442 }
440 443
441 { 444 char const *src;
442 /* Just some character; Copy it if the whole multi-byte form 445 ptrdiff_t srclen;
443 fit in the buffer. */ 446 if (quoting_style == CURVE_QUOTING_STYLE && fmtchar == '`')
444 char *save_bufptr = bufptr; 447 src = uLSQM, srclen = sizeof uLSQM - 1;
445 448 else if (quoting_style == CURVE_QUOTING_STYLE && fmtchar == '\'')
446 do { *bufptr++ = *fmt++; } 449 src = uRSQM, srclen = sizeof uRSQM - 1;
447 while (fmt < format_end && --bufsize > 0 && !CHAR_HEAD_P (*fmt)); 450 else if (quoting_style == STRAIGHT_QUOTING_STYLE && fmtchar == '`')
448 if (!CHAR_HEAD_P (*fmt)) 451 src = "'", srclen = 1;
449 { 452 else
450 /* Truncate, but return value that will signal to caller 453 {
451 that the buffer was too small. */ 454 while (fmt < format_end && !CHAR_HEAD_P (*fmt))
452 *save_bufptr = 0; 455 fmt++;
453 break; 456 src = fmt0, srclen = fmt - fmt0;
454 } 457 }
455 } 458
456 }; 459 if (bufsize < srclen)
460 {
461 /* Truncate, but return value that will signal to caller
462 that the buffer was too small. */
463 do
464 *bufptr++ = '\0';
465 while (--bufsize != 0);
466 }
467 else
468 {
469 do
470 *bufptr++ = *src++;
471 while (--srclen != 0);
472 }
473 }
457 474
458 /* If we had to malloc something, free it. */ 475 /* If we had to malloc something, free it. */
459 xfree (big_buffer); 476 xfree (big_buffer);
@@ -467,7 +484,8 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
467/* Format to an unbounded buffer BUF. This is like sprintf, except it 484/* Format to an unbounded buffer BUF. This is like sprintf, except it
468 is not limited to returning an 'int' so it doesn't have a silly 2 485 is not limited to returning an 'int' so it doesn't have a silly 2
469 GiB limit on typical 64-bit hosts. However, it is limited to the 486 GiB limit on typical 64-bit hosts. However, it is limited to the
470 Emacs-style formats that doprnt supports. 487 Emacs-style formats that doprnt supports, and it requotes ` and '
488 as per ‘text-quoting-style’.
471 489
472 Return the number of bytes put into BUF, excluding the terminating 490 Return the number of bytes put into BUF, excluding the terminating
473 '\0'. */ 491 '\0'. */
diff --git a/src/editfns.c b/src/editfns.c
index 9ff39f9bf19..ed57d8aee09 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3800,8 +3800,9 @@ DEFUN ("format", Fformat, Sformat, 1, MANY, 0,
3800The first argument is a format control string. 3800The first argument is a format control string.
3801The other arguments are substituted into it to make the result, a string. 3801The other arguments are substituted into it to make the result, a string.
3802 3802
3803The format control string may contain %-sequences meaning to substitute 3803The format control string may contain ordinary characters,
3804the next available argument: 3804%-sequences meaning to substitute the next available argument,
3805and curved single quotation marks meaning to substitute quotes.
3805 3806
3806%s means print a string argument. Actually, prints any object, with `princ'. 3807%s means print a string argument. Actually, prints any object, with `princ'.
3807%d means print as number in decimal (%o octal, %x hex). 3808%d means print as number in decimal (%o octal, %x hex).
@@ -3846,6 +3847,12 @@ precision specifier says how many decimal places to show; if zero, the
3846decimal point itself is omitted. For %s and %S, the precision 3847decimal point itself is omitted. For %s and %S, the precision
3847specifier truncates the string to the given width. 3848specifier truncates the string to the given width.
3848 3849
3850\\=‘ and \\=’ means print left and right quotes as per
3851‘text-quoting-style’.
3852
3853Return the first argument if it contains no format directives.
3854Otherwise, return a new string.
3855
3849usage: (format STRING &rest OBJECTS) */) 3856usage: (format STRING &rest OBJECTS) */)
3850 (ptrdiff_t nargs, Lisp_Object *args) 3857 (ptrdiff_t nargs, Lisp_Object *args)
3851{ 3858{
@@ -3858,6 +3865,7 @@ usage: (format STRING &rest OBJECTS) */)
3858 ptrdiff_t buf_save_value_index IF_LINT (= 0); 3865 ptrdiff_t buf_save_value_index IF_LINT (= 0);
3859 char *format, *end, *format_start; 3866 char *format, *end, *format_start;
3860 ptrdiff_t formatlen, nchars; 3867 ptrdiff_t formatlen, nchars;
3868 bool changed = false;
3861 /* True if the format is multibyte. */ 3869 /* True if the format is multibyte. */
3862 bool multibyte_format = 0; 3870 bool multibyte_format = 0;
3863 /* True if the output should be a multibyte string, 3871 /* True if the output should be a multibyte string,
@@ -3921,6 +3929,8 @@ usage: (format STRING &rest OBJECTS) */)
3921 if (STRINGP (args[n]) && STRING_MULTIBYTE (args[n])) 3929 if (STRINGP (args[n]) && STRING_MULTIBYTE (args[n]))
3922 multibyte = 1; 3930 multibyte = 1;
3923 3931
3932 enum text_quoting_style quoting_style = text_quoting_style ();
3933
3924 /* If we start out planning a unibyte result, 3934 /* If we start out planning a unibyte result,
3925 then discover it has to be multibyte, we jump back to retry. */ 3935 then discover it has to be multibyte, we jump back to retry. */
3926 retry: 3936 retry:
@@ -4005,6 +4015,7 @@ usage: (format STRING &rest OBJECTS) */)
4005 if (format == end) 4015 if (format == end)
4006 error ("Format string ends in middle of format specifier"); 4016 error ("Format string ends in middle of format specifier");
4007 4017
4018 changed = true;
4008 memset (&discarded[format0 - format_start], 1, format - format0); 4019 memset (&discarded[format0 - format_start], 1, format - format0);
4009 conversion = *format; 4020 conversion = *format;
4010 if (conversion == '%') 4021 if (conversion == '%')
@@ -4426,6 +4437,20 @@ usage: (format STRING &rest OBJECTS) */)
4426 4437
4427 convbytes = format - src; 4438 convbytes = format - src;
4428 memset (&discarded[src + 1 - format_start], 2, convbytes - 1); 4439 memset (&discarded[src + 1 - format_start], 2, convbytes - 1);
4440
4441 if (quoting_style != CURVE_QUOTING_STYLE && convbytes == 3
4442 && (unsigned char) src[0] == uLSQM0
4443 && (unsigned char) src[1] == uLSQM1
4444 && ((unsigned char) src[2] == uLSQM2
4445 || (unsigned char) src[2] == uRSQM2))
4446 {
4447 convbytes = 1;
4448 str[0] = (((unsigned char) src[2] == uLSQM2
4449 && quoting_style == GRAVE_QUOTING_STYLE)
4450 ? '`' : '\'');
4451 src = (char *) str;
4452 changed = true;
4453 }
4429 } 4454 }
4430 else 4455 else
4431 { 4456 {
@@ -4437,6 +4462,7 @@ usage: (format STRING &rest OBJECTS) */)
4437 int c = BYTE8_TO_CHAR (uc); 4462 int c = BYTE8_TO_CHAR (uc);
4438 convbytes = CHAR_STRING (c, str); 4463 convbytes = CHAR_STRING (c, str);
4439 src = (char *) str; 4464 src = (char *) str;
4465 changed = true;
4440 } 4466 }
4441 } 4467 }
4442 4468
@@ -4484,113 +4510,119 @@ usage: (format STRING &rest OBJECTS) */)
4484 if (bufsize < p - buf) 4510 if (bufsize < p - buf)
4485 emacs_abort (); 4511 emacs_abort ();
4486 4512
4487 if (maybe_combine_byte) 4513 if (!changed)
4488 nchars = multibyte_chars_in_text ((unsigned char *) buf, p - buf); 4514 val = args[0];
4489 val = make_specified_string (buf, nchars, p - buf, multibyte); 4515 else
4490
4491 /* If the format string has text properties, or any of the string
4492 arguments has text properties, set up text properties of the
4493 result string. */
4494
4495 if (string_intervals (args[0]) || arg_intervals)
4496 { 4516 {
4497 Lisp_Object len, new_len, props; 4517 if (maybe_combine_byte)
4498 struct gcpro gcpro1; 4518 nchars = multibyte_chars_in_text ((unsigned char *) buf, p - buf);
4519 val = make_specified_string (buf, nchars, p - buf, multibyte);
4499 4520
4500 /* Add text properties from the format string. */ 4521 /* If the format string has text properties, or any of the string
4501 len = make_number (SCHARS (args[0])); 4522 arguments has text properties, set up text properties of the
4502 props = text_property_list (args[0], make_number (0), len, Qnil); 4523 result string. */
4503 GCPRO1 (props);
4504 4524
4505 if (CONSP (props)) 4525 if (string_intervals (args[0]) || arg_intervals)
4506 { 4526 {
4507 ptrdiff_t bytepos = 0, position = 0, translated = 0; 4527 Lisp_Object len, new_len, props;
4508 ptrdiff_t argn = 1; 4528 struct gcpro gcpro1;
4509 Lisp_Object list; 4529
4510 4530 /* Add text properties from the format string. */
4511 /* Adjust the bounds of each text property 4531 len = make_number (SCHARS (args[0]));
4512 to the proper start and end in the output string. */ 4532 props = text_property_list (args[0], make_number (0), len, Qnil);
4513 4533 GCPRO1 (props);
4514 /* Put the positions in PROPS in increasing order, so that 4534
4515 we can do (effectively) one scan through the position 4535 if (CONSP (props))
4516 space of the format string. */
4517 props = Fnreverse (props);
4518
4519 /* BYTEPOS is the byte position in the format string,
4520 POSITION is the untranslated char position in it,
4521 TRANSLATED is the translated char position in BUF,
4522 and ARGN is the number of the next arg we will come to. */
4523 for (list = props; CONSP (list); list = XCDR (list))
4524 { 4536 {
4525 Lisp_Object item; 4537 ptrdiff_t bytepos = 0, position = 0, translated = 0;
4526 ptrdiff_t pos; 4538 ptrdiff_t argn = 1;
4539 Lisp_Object list;
4540
4541 /* Adjust the bounds of each text property
4542 to the proper start and end in the output string. */
4543
4544 /* Put the positions in PROPS in increasing order, so that
4545 we can do (effectively) one scan through the position
4546 space of the format string. */
4547 props = Fnreverse (props);
4548
4549 /* BYTEPOS is the byte position in the format string,
4550 POSITION is the untranslated char position in it,
4551 TRANSLATED is the translated char position in BUF,
4552 and ARGN is the number of the next arg we will come to. */
4553 for (list = props; CONSP (list); list = XCDR (list))
4554 {
4555 Lisp_Object item;
4556 ptrdiff_t pos;
4527 4557
4528 item = XCAR (list); 4558 item = XCAR (list);
4529 4559
4530 /* First adjust the property start position. */ 4560 /* First adjust the property start position. */
4531 pos = XINT (XCAR (item)); 4561 pos = XINT (XCAR (item));
4532 4562
4533 /* Advance BYTEPOS, POSITION, TRANSLATED and ARGN 4563 /* Advance BYTEPOS, POSITION, TRANSLATED and ARGN
4534 up to this position. */ 4564 up to this position. */
4535 for (; position < pos; bytepos++) 4565 for (; position < pos; bytepos++)
4536 {
4537 if (! discarded[bytepos])
4538 position++, translated++;
4539 else if (discarded[bytepos] == 1)
4540 { 4566 {
4541 position++; 4567 if (! discarded[bytepos])
4542 if (translated == info[argn].start) 4568 position++, translated++;
4569 else if (discarded[bytepos] == 1)
4543 { 4570 {
4544 translated += info[argn].end - info[argn].start; 4571 position++;
4545 argn++; 4572 if (translated == info[argn].start)
4573 {
4574 translated += info[argn].end - info[argn].start;
4575 argn++;
4576 }
4546 } 4577 }
4547 } 4578 }
4548 }
4549 4579
4550 XSETCAR (item, make_number (translated)); 4580 XSETCAR (item, make_number (translated));
4551 4581
4552 /* Likewise adjust the property end position. */ 4582 /* Likewise adjust the property end position. */
4553 pos = XINT (XCAR (XCDR (item))); 4583 pos = XINT (XCAR (XCDR (item)));
4554 4584
4555 for (; position < pos; bytepos++) 4585 for (; position < pos; bytepos++)
4556 {
4557 if (! discarded[bytepos])
4558 position++, translated++;
4559 else if (discarded[bytepos] == 1)
4560 { 4586 {
4561 position++; 4587 if (! discarded[bytepos])
4562 if (translated == info[argn].start) 4588 position++, translated++;
4589 else if (discarded[bytepos] == 1)
4563 { 4590 {
4564 translated += info[argn].end - info[argn].start; 4591 position++;
4565 argn++; 4592 if (translated == info[argn].start)
4593 {
4594 translated += info[argn].end - info[argn].start;
4595 argn++;
4596 }
4566 } 4597 }
4567 } 4598 }
4599
4600 XSETCAR (XCDR (item), make_number (translated));
4568 } 4601 }
4569 4602
4570 XSETCAR (XCDR (item), make_number (translated)); 4603 add_text_properties_from_list (val, props, make_number (0));
4571 } 4604 }
4572 4605
4573 add_text_properties_from_list (val, props, make_number (0)); 4606 /* Add text properties from arguments. */
4574 } 4607 if (arg_intervals)
4575 4608 for (n = 1; n < nargs; ++n)
4576 /* Add text properties from arguments. */ 4609 if (info[n].intervals)
4577 if (arg_intervals) 4610 {
4578 for (n = 1; n < nargs; ++n) 4611 len = make_number (SCHARS (args[n]));
4579 if (info[n].intervals) 4612 new_len = make_number (info[n].end - info[n].start);
4580 { 4613 props = text_property_list (args[n], make_number (0),
4581 len = make_number (SCHARS (args[n])); 4614 len, Qnil);
4582 new_len = make_number (info[n].end - info[n].start); 4615 props = extend_property_ranges (props, new_len);
4583 props = text_property_list (args[n], make_number (0), len, Qnil); 4616 /* If successive arguments have properties, be sure that
4584 props = extend_property_ranges (props, new_len); 4617 the value of `composition' property be the copy. */
4585 /* If successive arguments have properties, be sure that 4618 if (n > 1 && info[n - 1].end)
4586 the value of `composition' property be the copy. */ 4619 make_composition_value_copy (props);
4587 if (n > 1 && info[n - 1].end) 4620 add_text_properties_from_list (val, props,
4588 make_composition_value_copy (props); 4621 make_number (info[n].start));
4589 add_text_properties_from_list (val, props, 4622 }
4590 make_number (info[n].start));
4591 }
4592 4623
4593 UNGCPRO; 4624 UNGCPRO;
4625 }
4594 } 4626 }
4595 4627
4596 /* If we allocated BUF or INFO with malloc, free it too. */ 4628 /* If we allocated BUF or INFO with malloc, free it too. */
diff --git a/src/emacs.c b/src/emacs.c
index 6e35496eb8a..1392209f585 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -95,6 +95,10 @@ extern void moncontrol (int mode);
95#include <locale.h> 95#include <locale.h>
96#endif 96#endif
97 97
98#if HAVE_WCHAR_H
99# include <wchar.h>
100#endif
101
98#ifdef HAVE_SETRLIMIT 102#ifdef HAVE_SETRLIMIT
99#include <sys/time.h> 103#include <sys/time.h>
100#include <sys/resource.h> 104#include <sys/resource.h>
@@ -344,6 +348,19 @@ setlocale (int cat, char const *locale)
344} 348}
345#endif 349#endif
346 350
351/* True if the current system locale uses UTF-8 encoding. */
352static bool
353using_utf8 (void)
354{
355#ifdef HAVE_WCHAR_H
356 wchar_t wc;
357 mbstate_t mbs = { 0 };
358 return mbrtowc (&wc, "\xc4\x80", 2, &mbs) == 2 && wc == 0x100;
359#else
360 return false;
361#endif
362}
363
347 364
348/* Report a fatal error due to signal SIG, output a backtrace of at 365/* Report a fatal error due to signal SIG, output a backtrace of at
349 most BACKTRACE_LIMIT lines, and exit. */ 366 most BACKTRACE_LIMIT lines, and exit. */
@@ -924,6 +941,7 @@ main (int argc, char **argv)
924 fixup_locale must wait until later, since it builds strings. */ 941 fixup_locale must wait until later, since it builds strings. */
925 if (do_initial_setlocale) 942 if (do_initial_setlocale)
926 setlocale (LC_ALL, ""); 943 setlocale (LC_ALL, "");
944 text_quoting_flag = using_utf8 ();
927 945
928 inhibit_window_system = 0; 946 inhibit_window_system = 0;
929 947
@@ -2154,17 +2172,23 @@ synchronize_locale (int category, Lisp_Object *plocale, Lisp_Object desired_loca
2154{ 2172{
2155 if (! EQ (*plocale, desired_locale)) 2173 if (! EQ (*plocale, desired_locale))
2156 { 2174 {
2175 *plocale = desired_locale;
2157#ifdef WINDOWSNT 2176#ifdef WINDOWSNT
2158 /* Changing categories like LC_TIME usually requires to specify 2177 /* Changing categories like LC_TIME usually requires to specify
2159 an encoding suitable for the new locale, but MS-Windows's 2178 an encoding suitable for the new locale, but MS-Windows's
2160 'setlocale' will only switch the encoding when LC_ALL is 2179 'setlocale' will only switch the encoding when LC_ALL is
2161 specified. So we ignore CATEGORY and use LC_ALL instead. */ 2180 specified. So we ignore CATEGORY, use LC_ALL instead, and
2162 category = LC_ALL; 2181 then restore LC_NUMERIC to "C", so reading and printing
2163#endif 2182 numbers is unaffected. */
2164 *plocale = desired_locale; 2183 setlocale (LC_ALL, (STRINGP (desired_locale)
2184 ? SSDATA (desired_locale)
2185 : ""));
2186 fixup_locale ();
2187#else /* !WINDOWSNT */
2165 setlocale (category, (STRINGP (desired_locale) 2188 setlocale (category, (STRINGP (desired_locale)
2166 ? SSDATA (desired_locale) 2189 ? SSDATA (desired_locale)
2167 : "")); 2190 : ""));
2191#endif /* !WINDOWSNT */
2168 } 2192 }
2169} 2193}
2170 2194
@@ -2423,7 +2447,7 @@ Special values:
2423Anything else (in Emacs 24.1, the possibilities are: aix, berkeley-unix, 2447Anything else (in Emacs 24.1, the possibilities are: aix, berkeley-unix,
2424hpux, irix, usg-unix-v) indicates some sort of Unix system. */); 2448hpux, irix, usg-unix-v) indicates some sort of Unix system. */);
2425 Vsystem_type = intern_c_string (SYSTEM_TYPE); 2449 Vsystem_type = intern_c_string (SYSTEM_TYPE);
2426 /* See configure.ac (and config.nt) for the possible SYSTEM_TYPEs. */ 2450 /* See configure.ac for the possible SYSTEM_TYPEs. */
2427 2451
2428 DEFVAR_LISP ("system-configuration", Vsystem_configuration, 2452 DEFVAR_LISP ("system-configuration", Vsystem_configuration,
2429 doc: /* Value is string indicating configuration Emacs was built for. */); 2453 doc: /* Value is string indicating configuration Emacs was built for. */);
diff --git a/src/image.c b/src/image.c
index 066db74f786..fb8c6e79168 100644
--- a/src/image.c
+++ b/src/image.c
@@ -629,16 +629,19 @@ valid_image_p (Lisp_Object object)
629} 629}
630 630
631 631
632/* Log error message with format string FORMAT and argument ARG. 632/* Log error message with format string FORMAT and trailing arguments.
633 Signaling an error, e.g. when an image cannot be loaded, is not a 633 Signaling an error, e.g. when an image cannot be loaded, is not a
634 good idea because this would interrupt redisplay, and the error 634 good idea because this would interrupt redisplay, and the error
635 message display would lead to another redisplay. This function 635 message display would lead to another redisplay. This function
636 therefore simply displays a message. */ 636 therefore simply displays a message. */
637 637
638static void 638static void
639image_error (const char *format, Lisp_Object arg1, Lisp_Object arg2) 639image_error (const char *format, ...)
640{ 640{
641 add_to_log (format, arg1, arg2); 641 va_list ap;
642 va_start (ap, format);
643 vadd_to_log (format, ap);
644 va_end (ap);
642} 645}
643 646
644 647
@@ -1954,7 +1957,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
1954 depth > 16 ? 32 : depth > 8 ? 16 : 8, 0); 1957 depth > 16 ? 32 : depth > 8 ? 16 : 8, 0);
1955 if (*ximg == NULL) 1958 if (*ximg == NULL)
1956 { 1959 {
1957 image_error ("Unable to allocate X image", Qnil, Qnil); 1960 image_error ("Unable to allocate X image");
1958 return 0; 1961 return 0;
1959 } 1962 }
1960 1963
@@ -1976,7 +1979,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
1976 { 1979 {
1977 x_destroy_x_image (*ximg); 1980 x_destroy_x_image (*ximg);
1978 *ximg = NULL; 1981 *ximg = NULL;
1979 image_error ("Unable to create X pixmap", Qnil, Qnil); 1982 image_error ("Unable to create X pixmap");
1980 return 0; 1983 return 0;
1981 } 1984 }
1982 1985
@@ -1997,7 +2000,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
1997 if (depth != 1 && depth != 4 && depth != 8 2000 if (depth != 1 && depth != 4 && depth != 8
1998 && depth != 16 && depth != 24 && depth != 32) 2001 && depth != 16 && depth != 24 && depth != 32)
1999 { 2002 {
2000 image_error ("Invalid image bit depth specified", Qnil, Qnil); 2003 image_error ("Invalid image bit depth specified");
2001 return 0; 2004 return 0;
2002 } 2005 }
2003 2006
@@ -2055,7 +2058,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
2055 Lisp_Object errcode; 2058 Lisp_Object errcode;
2056 /* All system errors are < 10000, so the following is safe. */ 2059 /* All system errors are < 10000, so the following is safe. */
2057 XSETINT (errcode, err); 2060 XSETINT (errcode, err);
2058 image_error ("Unable to create bitmap, error code %d", errcode, Qnil); 2061 image_error ("Unable to create bitmap, error code %d", errcode);
2059 x_destroy_x_image (*ximg); 2062 x_destroy_x_image (*ximg);
2060 *ximg = NULL; 2063 *ximg = NULL;
2061 return 0; 2064 return 0;
@@ -2070,7 +2073,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
2070 if (*pixmap == 0) 2073 if (*pixmap == 0)
2071 { 2074 {
2072 *ximg = NULL; 2075 *ximg = NULL;
2073 image_error ("Unable to allocate NSImage for XPM pixmap", Qnil, Qnil); 2076 image_error ("Unable to allocate NSImage for XPM pixmap");
2074 return 0; 2077 return 0;
2075 } 2078 }
2076 *ximg = *pixmap; 2079 *ximg = *pixmap;
@@ -2791,7 +2794,7 @@ xbm_read_bitmap_data (struct frame *f, unsigned char *contents, unsigned char *e
2791 if (!check_image_size (f, *width, *height)) 2794 if (!check_image_size (f, *width, *height))
2792 { 2795 {
2793 if (!inhibit_image_error) 2796 if (!inhibit_image_error)
2794 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 2797 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
2795 goto failure; 2798 goto failure;
2796 } 2799 }
2797 else if (data == NULL) 2800 else if (data == NULL)
@@ -2936,13 +2939,14 @@ xbm_load_image (struct frame *f, struct image *img, unsigned char *contents,
2936 if (img->pixmap == NO_PIXMAP) 2939 if (img->pixmap == NO_PIXMAP)
2937 { 2940 {
2938 x_clear_image (f, img); 2941 x_clear_image (f, img);
2939 image_error ("Unable to create X pixmap for `%s'", img->spec, Qnil); 2942 image_error ("Unable to create X pixmap for "uLSQM"%s"uRSQM,
2943 img->spec);
2940 } 2944 }
2941 else 2945 else
2942 success_p = 1; 2946 success_p = 1;
2943 } 2947 }
2944 else 2948 else
2945 image_error ("Error loading XBM image `%s'", img->spec, Qnil); 2949 image_error ("Error loading XBM image "uLSQM"%s"uRSQM, img->spec);
2946 2950
2947 return success_p; 2951 return success_p;
2948} 2952}
@@ -2983,14 +2987,14 @@ xbm_load (struct frame *f, struct image *img)
2983 file = x_find_image_file (file_name); 2987 file = x_find_image_file (file_name);
2984 if (!STRINGP (file)) 2988 if (!STRINGP (file))
2985 { 2989 {
2986 image_error ("Cannot find image file `%s'", file_name, Qnil); 2990 image_error ("Cannot find image file "uLSQM"%s"uRSQM, file_name);
2987 return 0; 2991 return 0;
2988 } 2992 }
2989 2993
2990 contents = slurp_file (SSDATA (file), &size); 2994 contents = slurp_file (SSDATA (file), &size);
2991 if (contents == NULL) 2995 if (contents == NULL)
2992 { 2996 {
2993 image_error ("Error loading XBM image `%s'", img->spec, Qnil); 2997 image_error ("Error loading XBM image "uLSQM"%s"uRSQM, img->spec);
2994 return 0; 2998 return 0;
2995 } 2999 }
2996 3000
@@ -3025,8 +3029,8 @@ xbm_load (struct frame *f, struct image *img)
3025 eassert (img->width > 0 && img->height > 0); 3029 eassert (img->width > 0 && img->height > 0);
3026 if (!check_image_size (f, img->width, img->height)) 3030 if (!check_image_size (f, img->width, img->height))
3027 { 3031 {
3028 image_error ("Invalid image size (see `max-image-size')", 3032 image_error ("Invalid image size (see "
3029 Qnil, Qnil); 3033 uLSQM"max-image-size"uRSQM")");
3030 return 0; 3034 return 0;
3031 } 3035 }
3032 } 3036 }
@@ -3103,8 +3107,9 @@ xbm_load (struct frame *f, struct image *img)
3103 success_p = 1; 3107 success_p = 1;
3104 else 3108 else
3105 { 3109 {
3106 image_error ("Unable to create pixmap for XBM image `%s'", 3110 image_error (("Unable to create pixmap for XBM image "
3107 img->spec, Qnil); 3111 uLSQM"%s"uRSQM),
3112 img->spec);
3108 x_clear_image (f, img); 3113 x_clear_image (f, img);
3109 } 3114 }
3110 3115
@@ -3626,7 +3631,8 @@ xpm_load (struct frame *f, struct image *img)
3626 Lisp_Object file = x_find_image_file (specified_file); 3631 Lisp_Object file = x_find_image_file (specified_file);
3627 if (!STRINGP (file)) 3632 if (!STRINGP (file))
3628 { 3633 {
3629 image_error ("Cannot find image file `%s'", specified_file, Qnil); 3634 image_error ("Cannot find image file "uLSQM"%s"uRSQM,
3635 specified_file);
3630#ifdef ALLOC_XPM_COLORS 3636#ifdef ALLOC_XPM_COLORS
3631 xpm_free_color_cache (); 3637 xpm_free_color_cache ();
3632#endif 3638#endif
@@ -3657,7 +3663,7 @@ xpm_load (struct frame *f, struct image *img)
3657 Lisp_Object buffer = image_spec_value (img->spec, QCdata, NULL); 3663 Lisp_Object buffer = image_spec_value (img->spec, QCdata, NULL);
3658 if (!STRINGP (buffer)) 3664 if (!STRINGP (buffer))
3659 { 3665 {
3660 image_error ("Invalid image data `%s'", buffer, Qnil); 3666 image_error ("Invalid image data "uLSQM"%s"uRSQM, buffer);
3661#ifdef ALLOC_XPM_COLORS 3667#ifdef ALLOC_XPM_COLORS
3662 xpm_free_color_cache (); 3668 xpm_free_color_cache ();
3663#endif 3669#endif
@@ -3815,23 +3821,23 @@ xpm_load (struct frame *f, struct image *img)
3815 switch (rc) 3821 switch (rc)
3816 { 3822 {
3817 case XpmOpenFailed: 3823 case XpmOpenFailed:
3818 image_error ("Error opening XPM file (%s)", img->spec, Qnil); 3824 image_error ("Error opening XPM file (%s)", img->spec);
3819 break; 3825 break;
3820 3826
3821 case XpmFileInvalid: 3827 case XpmFileInvalid:
3822 image_error ("Invalid XPM file (%s)", img->spec, Qnil); 3828 image_error ("Invalid XPM file (%s)", img->spec);
3823 break; 3829 break;
3824 3830
3825 case XpmNoMemory: 3831 case XpmNoMemory:
3826 image_error ("Out of memory (%s)", img->spec, Qnil); 3832 image_error ("Out of memory (%s)", img->spec);
3827 break; 3833 break;
3828 3834
3829 case XpmColorFailed: 3835 case XpmColorFailed:
3830 image_error ("Color allocation error (%s)", img->spec, Qnil); 3836 image_error ("Color allocation error (%s)", img->spec);
3831 break; 3837 break;
3832 3838
3833 default: 3839 default:
3834 image_error ("Unknown error (%s)", img->spec, Qnil); 3840 image_error ("Unknown error (%s)", img->spec);
3835 break; 3841 break;
3836 } 3842 }
3837 } 3843 }
@@ -4101,7 +4107,7 @@ xpm_load_image (struct frame *f,
4101 4107
4102 if (!check_image_size (f, width, height)) 4108 if (!check_image_size (f, width, height))
4103 { 4109 {
4104 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 4110 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
4105 goto failure; 4111 goto failure;
4106 } 4112 }
4107 4113
@@ -4112,7 +4118,7 @@ xpm_load_image (struct frame *f,
4112#endif 4118#endif
4113 ) 4119 )
4114 { 4120 {
4115 image_error ("Image too large", Qnil, Qnil); 4121 image_error ("Image too large");
4116 goto failure; 4122 goto failure;
4117 } 4123 }
4118 4124
@@ -4262,7 +4268,7 @@ xpm_load_image (struct frame *f,
4262 return 1; 4268 return 1;
4263 4269
4264 failure: 4270 failure:
4265 image_error ("Invalid XPM file (%s)", img->spec, Qnil); 4271 image_error ("Invalid XPM file (%s)", img->spec);
4266 x_destroy_x_image (ximg); 4272 x_destroy_x_image (ximg);
4267 x_destroy_x_image (mask_img); 4273 x_destroy_x_image (mask_img);
4268 x_clear_image (f, img); 4274 x_clear_image (f, img);
@@ -4291,14 +4297,14 @@ xpm_load (struct frame *f,
4291 file = x_find_image_file (file_name); 4297 file = x_find_image_file (file_name);
4292 if (!STRINGP (file)) 4298 if (!STRINGP (file))
4293 { 4299 {
4294 image_error ("Cannot find image file `%s'", file_name, Qnil); 4300 image_error ("Cannot find image file "uLSQM"%s"uRSQM, file_name);
4295 return 0; 4301 return 0;
4296 } 4302 }
4297 4303
4298 contents = slurp_file (SSDATA (file), &size); 4304 contents = slurp_file (SSDATA (file), &size);
4299 if (contents == NULL) 4305 if (contents == NULL)
4300 { 4306 {
4301 image_error ("Error loading XPM image `%s'", img->spec, Qnil); 4307 image_error ("Error loading XPM image "uLSQM"%s"uRSQM, img->spec);
4302 return 0; 4308 return 0;
4303 } 4309 }
4304 4310
@@ -4312,7 +4318,7 @@ xpm_load (struct frame *f,
4312 data = image_spec_value (img->spec, QCdata, NULL); 4318 data = image_spec_value (img->spec, QCdata, NULL);
4313 if (!STRINGP (data)) 4319 if (!STRINGP (data))
4314 { 4320 {
4315 image_error ("Invalid image data `%s'", data, Qnil); 4321 image_error ("Invalid image data "uLSQM"%s"uRSQM, data);
4316 return 0; 4322 return 0;
4317 } 4323 }
4318 success_p = xpm_load_image (f, img, SDATA (data), 4324 success_p = xpm_load_image (f, img, SDATA (data),
@@ -4734,7 +4740,7 @@ XPutPixel (XImagePtr ximg, int x, int y, COLORREF color)
4734 *pixel = *pixel & ~(1 << x % 8); 4740 *pixel = *pixel & ~(1 << x % 8);
4735 } 4741 }
4736 else 4742 else
4737 image_error ("XPutPixel: palette image not supported", Qnil, Qnil); 4743 image_error ("XPutPixel: palette image not supported");
4738} 4744}
4739 4745
4740#endif /* HAVE_NTGUI */ 4746#endif /* HAVE_NTGUI */
@@ -5266,14 +5272,15 @@ pbm_load (struct frame *f, struct image *img)
5266 file = x_find_image_file (specified_file); 5272 file = x_find_image_file (specified_file);
5267 if (!STRINGP (file)) 5273 if (!STRINGP (file))
5268 { 5274 {
5269 image_error ("Cannot find image file `%s'", specified_file, Qnil); 5275 image_error ("Cannot find image file "uLSQM"%s"uRSQM,
5276 specified_file);
5270 return 0; 5277 return 0;
5271 } 5278 }
5272 5279
5273 contents = slurp_file (SSDATA (file), &size); 5280 contents = slurp_file (SSDATA (file), &size);
5274 if (contents == NULL) 5281 if (contents == NULL)
5275 { 5282 {
5276 image_error ("Error reading `%s'", file, Qnil); 5283 image_error ("Error reading "uLSQM"%s"uRSQM, file);
5277 return 0; 5284 return 0;
5278 } 5285 }
5279 5286
@@ -5286,7 +5293,7 @@ pbm_load (struct frame *f, struct image *img)
5286 data = image_spec_value (img->spec, QCdata, NULL); 5293 data = image_spec_value (img->spec, QCdata, NULL);
5287 if (!STRINGP (data)) 5294 if (!STRINGP (data))
5288 { 5295 {
5289 image_error ("Invalid image data `%s'", data, Qnil); 5296 image_error ("Invalid image data "uLSQM"%s"uRSQM, data);
5290 return 0; 5297 return 0;
5291 } 5298 }
5292 p = SDATA (data); 5299 p = SDATA (data);
@@ -5296,7 +5303,7 @@ pbm_load (struct frame *f, struct image *img)
5296 /* Check magic number. */ 5303 /* Check magic number. */
5297 if (end - p < 2 || *p++ != 'P') 5304 if (end - p < 2 || *p++ != 'P')
5298 { 5305 {
5299 image_error ("Not a PBM image: `%s'", img->spec, Qnil); 5306 image_error ("Not a PBM image: "uLSQM"%s"uRSQM, img->spec);
5300 error: 5307 error:
5301 xfree (contents); 5308 xfree (contents);
5302 img->pixmap = NO_PIXMAP; 5309 img->pixmap = NO_PIXMAP;
@@ -5330,7 +5337,7 @@ pbm_load (struct frame *f, struct image *img)
5330 break; 5337 break;
5331 5338
5332 default: 5339 default:
5333 image_error ("Not a PBM image: `%s'", img->spec, Qnil); 5340 image_error ("Not a PBM image: "uLSQM"%s"uRSQM, img->spec);
5334 goto error; 5341 goto error;
5335 } 5342 }
5336 5343
@@ -5349,14 +5356,14 @@ pbm_load (struct frame *f, struct image *img)
5349 max_color_idx = pbm_scan_number (&p, end); 5356 max_color_idx = pbm_scan_number (&p, end);
5350 if (max_color_idx > 65535 || max_color_idx < 0) 5357 if (max_color_idx > 65535 || max_color_idx < 0)
5351 { 5358 {
5352 image_error ("Unsupported maximum PBM color value", Qnil, Qnil); 5359 image_error ("Unsupported maximum PBM color value");
5353 goto error; 5360 goto error;
5354 } 5361 }
5355 } 5362 }
5356 5363
5357 if (!check_image_size (f, width, height)) 5364 if (!check_image_size (f, width, height))
5358 { 5365 {
5359 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 5366 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
5360 goto error; 5367 goto error;
5361 } 5368 }
5362 5369
@@ -5429,8 +5436,9 @@ pbm_load (struct frame *f, struct image *img)
5429 x_destroy_x_image (ximg); 5436 x_destroy_x_image (ximg);
5430#endif 5437#endif
5431 x_clear_image (f, img); 5438 x_clear_image (f, img);
5432 image_error ("Invalid image size in image `%s'", 5439 image_error (("Invalid image size in image "
5433 img->spec, Qnil); 5440 uLSQM"%s"uRSQM),
5441 img->spec);
5434 goto error; 5442 goto error;
5435 } 5443 }
5436 c = *p++; 5444 c = *p++;
@@ -5464,8 +5472,8 @@ pbm_load (struct frame *f, struct image *img)
5464 x_destroy_x_image (ximg); 5472 x_destroy_x_image (ximg);
5465#endif 5473#endif
5466 x_clear_image (f, img); 5474 x_clear_image (f, img);
5467 image_error ("Invalid image size in image `%s'", 5475 image_error ("Invalid image size in image "uLSQM"%s"uRSQM,
5468 img->spec, Qnil); 5476 img->spec);
5469 goto error; 5477 goto error;
5470 } 5478 }
5471 5479
@@ -5508,8 +5516,8 @@ pbm_load (struct frame *f, struct image *img)
5508#else 5516#else
5509 x_destroy_x_image (ximg); 5517 x_destroy_x_image (ximg);
5510#endif 5518#endif
5511 image_error ("Invalid pixel value in image `%s'", 5519 image_error ("Invalid pixel value in image "uLSQM"%s"uRSQM,
5512 img->spec, Qnil); 5520 img->spec);
5513 goto error; 5521 goto error;
5514 } 5522 }
5515 5523
@@ -5800,7 +5808,7 @@ my_png_error (png_struct *png_ptr, const char *msg)
5800 eassert (png_ptr != NULL); 5808 eassert (png_ptr != NULL);
5801 /* Avoid compiler warning about deprecated direct access to 5809 /* Avoid compiler warning about deprecated direct access to
5802 png_ptr's fields in libpng versions 1.4.x. */ 5810 png_ptr's fields in libpng versions 1.4.x. */
5803 image_error ("PNG error: %s", build_string (msg), Qnil); 5811 image_error ("PNG error: %s", build_string (msg));
5804 PNG_LONGJMP (png_ptr); 5812 PNG_LONGJMP (png_ptr);
5805} 5813}
5806 5814
@@ -5809,7 +5817,7 @@ static void
5809my_png_warning (png_struct *png_ptr, const char *msg) 5817my_png_warning (png_struct *png_ptr, const char *msg)
5810{ 5818{
5811 eassert (png_ptr != NULL); 5819 eassert (png_ptr != NULL);
5812 image_error ("PNG warning: %s", build_string (msg), Qnil); 5820 image_error ("PNG warning: %s", build_string (msg));
5813} 5821}
5814 5822
5815/* Memory source for PNG decoding. */ 5823/* Memory source for PNG decoding. */
@@ -5904,7 +5912,8 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
5904 file = x_find_image_file (specified_file); 5912 file = x_find_image_file (specified_file);
5905 if (!STRINGP (file)) 5913 if (!STRINGP (file))
5906 { 5914 {
5907 image_error ("Cannot find image file `%s'", specified_file, Qnil); 5915 image_error ("Cannot find image file "uLSQM"%s"uRSQM,
5916 specified_file);
5908 return 0; 5917 return 0;
5909 } 5918 }
5910 5919
@@ -5912,7 +5921,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
5912 fp = emacs_fopen (SSDATA (file), "rb"); 5921 fp = emacs_fopen (SSDATA (file), "rb");
5913 if (!fp) 5922 if (!fp)
5914 { 5923 {
5915 image_error ("Cannot open image file `%s'", file, Qnil); 5924 image_error ("Cannot open image file "uLSQM"%s"uRSQM, file);
5916 return 0; 5925 return 0;
5917 } 5926 }
5918 5927
@@ -5921,7 +5930,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
5921 || png_sig_cmp (sig, 0, sizeof sig)) 5930 || png_sig_cmp (sig, 0, sizeof sig))
5922 { 5931 {
5923 fclose (fp); 5932 fclose (fp);
5924 image_error ("Not a PNG file: `%s'", file, Qnil); 5933 image_error ("Not a PNG file: "uLSQM"%s"uRSQM, file);
5925 return 0; 5934 return 0;
5926 } 5935 }
5927 } 5936 }
@@ -5929,7 +5938,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
5929 { 5938 {
5930 if (!STRINGP (specified_data)) 5939 if (!STRINGP (specified_data))
5931 { 5940 {
5932 image_error ("Invalid image data `%s'", specified_data, Qnil); 5941 image_error ("Invalid image data "uLSQM"%s"uRSQM, specified_data);
5933 return 0; 5942 return 0;
5934 } 5943 }
5935 5944
@@ -5942,7 +5951,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
5942 if (tbr.len < sizeof sig 5951 if (tbr.len < sizeof sig
5943 || png_sig_cmp (tbr.bytes, 0, sizeof sig)) 5952 || png_sig_cmp (tbr.bytes, 0, sizeof sig))
5944 { 5953 {
5945 image_error ("Not a PNG image: `%s'", img->spec, Qnil); 5954 image_error ("Not a PNG image: "uLSQM"%s"uRSQM, img->spec);
5946 return 0; 5955 return 0;
5947 } 5956 }
5948 5957
@@ -6010,7 +6019,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
6010 if (! (width <= INT_MAX && height <= INT_MAX 6019 if (! (width <= INT_MAX && height <= INT_MAX
6011 && check_image_size (f, width, height))) 6020 && check_image_size (f, width, height)))
6012 { 6021 {
6013 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 6022 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
6014 goto error; 6023 goto error;
6015 } 6024 }
6016 6025
@@ -6668,20 +6677,21 @@ jpeg_load_body (struct frame *f, struct image *img,
6668 file = x_find_image_file (specified_file); 6677 file = x_find_image_file (specified_file);
6669 if (!STRINGP (file)) 6678 if (!STRINGP (file))
6670 { 6679 {
6671 image_error ("Cannot find image file `%s'", specified_file, Qnil); 6680 image_error ("Cannot find image file "uLSQM"%s"uRSQM,
6681 specified_file);
6672 return 0; 6682 return 0;
6673 } 6683 }
6674 6684
6675 fp = emacs_fopen (SSDATA (file), "rb"); 6685 fp = emacs_fopen (SSDATA (file), "rb");
6676 if (fp == NULL) 6686 if (fp == NULL)
6677 { 6687 {
6678 image_error ("Cannot open `%s'", file, Qnil); 6688 image_error ("Cannot open "uLSQM"%s"uRSQM, file);
6679 return 0; 6689 return 0;
6680 } 6690 }
6681 } 6691 }
6682 else if (!STRINGP (specified_data)) 6692 else if (!STRINGP (specified_data))
6683 { 6693 {
6684 image_error ("Invalid image data `%s'", specified_data, Qnil); 6694 image_error ("Invalid image data "uLSQM"%s"uRSQM, specified_data);
6685 return 0; 6695 return 0;
6686 } 6696 }
6687 6697
@@ -6697,13 +6707,14 @@ jpeg_load_body (struct frame *f, struct image *img,
6697 { 6707 {
6698 char buf[JMSG_LENGTH_MAX]; 6708 char buf[JMSG_LENGTH_MAX];
6699 mgr->cinfo.err->format_message ((j_common_ptr) &mgr->cinfo, buf); 6709 mgr->cinfo.err->format_message ((j_common_ptr) &mgr->cinfo, buf);
6700 image_error ("Error reading JPEG image `%s': %s", img->spec, 6710 image_error ("Error reading JPEG image "uLSQM"%s"uRSQM": %s",
6701 build_string (buf)); 6711 img->spec, build_string (buf));
6702 break; 6712 break;
6703 } 6713 }
6704 6714
6705 case MY_JPEG_INVALID_IMAGE_SIZE: 6715 case MY_JPEG_INVALID_IMAGE_SIZE:
6706 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 6716 image_error ("Invalid image size (see "
6717 uLSQM"max-image-size"uRSQM")");
6707 break; 6718 break;
6708 6719
6709 case MY_JPEG_CANNOT_CREATE_X: 6720 case MY_JPEG_CANNOT_CREATE_X:
@@ -7183,7 +7194,8 @@ tiff_load (struct frame *f, struct image *img)
7183 file = x_find_image_file (specified_file); 7194 file = x_find_image_file (specified_file);
7184 if (!STRINGP (file)) 7195 if (!STRINGP (file))
7185 { 7196 {
7186 image_error ("Cannot find image file `%s'", specified_file, Qnil); 7197 image_error ("Cannot find image file "uLSQM"%s"uRSQM,
7198 specified_file);
7187 return 0; 7199 return 0;
7188 } 7200 }
7189# ifdef WINDOWSNT 7201# ifdef WINDOWSNT
@@ -7194,7 +7206,7 @@ tiff_load (struct frame *f, struct image *img)
7194 tiff = TIFFOpen (SSDATA (file), "r"); 7206 tiff = TIFFOpen (SSDATA (file), "r");
7195 if (tiff == NULL) 7207 if (tiff == NULL)
7196 { 7208 {
7197 image_error ("Cannot open `%s'", file, Qnil); 7209 image_error ("Cannot open "uLSQM"%s"uRSQM, file);
7198 return 0; 7210 return 0;
7199 } 7211 }
7200 } 7212 }
@@ -7202,7 +7214,7 @@ tiff_load (struct frame *f, struct image *img)
7202 { 7214 {
7203 if (!STRINGP (specified_data)) 7215 if (!STRINGP (specified_data))
7204 { 7216 {
7205 image_error ("Invalid image data `%s'", specified_data, Qnil); 7217 image_error ("Invalid image data "uLSQM"%s"uRSQM, specified_data);
7206 return 0; 7218 return 0;
7207 } 7219 }
7208 7220
@@ -7222,7 +7234,8 @@ tiff_load (struct frame *f, struct image *img)
7222 7234
7223 if (!tiff) 7235 if (!tiff)
7224 { 7236 {
7225 image_error ("Cannot open memory source for `%s'", img->spec, Qnil); 7237 image_error ("Cannot open memory source for "uLSQM"%s"uRSQM,
7238 img->spec);
7226 return 0; 7239 return 0;
7227 } 7240 }
7228 } 7241 }
@@ -7234,8 +7247,9 @@ tiff_load (struct frame *f, struct image *img)
7234 if (! (TYPE_MINIMUM (tdir_t) <= ino && ino <= TYPE_MAXIMUM (tdir_t) 7247 if (! (TYPE_MINIMUM (tdir_t) <= ino && ino <= TYPE_MAXIMUM (tdir_t)
7235 && TIFFSetDirectory (tiff, ino))) 7248 && TIFFSetDirectory (tiff, ino)))
7236 { 7249 {
7237 image_error ("Invalid image number `%s' in image `%s'", 7250 image_error
7238 image, img->spec); 7251 ("Invalid image number "uLSQM"%s"uRSQM" in image "uLSQM"%s"uRSQM,
7252 image, img->spec);
7239 TIFFClose (tiff); 7253 TIFFClose (tiff);
7240 return 0; 7254 return 0;
7241 } 7255 }
@@ -7248,7 +7262,7 @@ tiff_load (struct frame *f, struct image *img)
7248 7262
7249 if (!check_image_size (f, width, height)) 7263 if (!check_image_size (f, width, height))
7250 { 7264 {
7251 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 7265 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
7252 TIFFClose (tiff); 7266 TIFFClose (tiff);
7253 return 0; 7267 return 0;
7254 } 7268 }
@@ -7278,7 +7292,7 @@ tiff_load (struct frame *f, struct image *img)
7278 TIFFClose (tiff); 7292 TIFFClose (tiff);
7279 if (!rc) 7293 if (!rc)
7280 { 7294 {
7281 image_error ("Error reading TIFF image `%s'", img->spec, Qnil); 7295 image_error ("Error reading TIFF image "uLSQM"%s"uRSQM, img->spec);
7282 xfree (buf); 7296 xfree (buf);
7283 return 0; 7297 return 0;
7284 } 7298 }
@@ -7615,7 +7629,8 @@ gif_load (struct frame *f, struct image *img)
7615 file = x_find_image_file (specified_file); 7629 file = x_find_image_file (specified_file);
7616 if (!STRINGP (file)) 7630 if (!STRINGP (file))
7617 { 7631 {
7618 image_error ("Cannot find image file `%s'", specified_file, Qnil); 7632 image_error ("Cannot find image file "uLSQM"%s"uRSQM,
7633 specified_file);
7619 return 0; 7634 return 0;
7620 } 7635 }
7621#ifdef WINDOWSNT 7636#ifdef WINDOWSNT
@@ -7627,14 +7642,14 @@ gif_load (struct frame *f, struct image *img)
7627 gif = DGifOpenFileName (SSDATA (file)); 7642 gif = DGifOpenFileName (SSDATA (file));
7628 if (gif == NULL) 7643 if (gif == NULL)
7629 { 7644 {
7630 image_error ("Cannot open `%s'", file, Qnil); 7645 image_error ("Cannot open "uLSQM"%s"uRSQM, file);
7631 return 0; 7646 return 0;
7632 } 7647 }
7633#else 7648#else
7634 gif = DGifOpenFileName (SSDATA (file), &gif_err); 7649 gif = DGifOpenFileName (SSDATA (file), &gif_err);
7635 if (gif == NULL) 7650 if (gif == NULL)
7636 { 7651 {
7637 image_error ("Cannot open `%s': %s", 7652 image_error ("Cannot open "uLSQM"%s"uRSQM": %s",
7638 file, build_string (GifErrorString (gif_err))); 7653 file, build_string (GifErrorString (gif_err)));
7639 return 0; 7654 return 0;
7640 } 7655 }
@@ -7644,7 +7659,7 @@ gif_load (struct frame *f, struct image *img)
7644 { 7659 {
7645 if (!STRINGP (specified_data)) 7660 if (!STRINGP (specified_data))
7646 { 7661 {
7647 image_error ("Invalid image data `%s'", specified_data, Qnil); 7662 image_error ("Invalid image data "uLSQM"%s"uRSQM, specified_data);
7648 return 0; 7663 return 0;
7649 } 7664 }
7650 7665
@@ -7658,14 +7673,14 @@ gif_load (struct frame *f, struct image *img)
7658 gif = DGifOpen (&memsrc, gif_read_from_memory); 7673 gif = DGifOpen (&memsrc, gif_read_from_memory);
7659 if (!gif) 7674 if (!gif)
7660 { 7675 {
7661 image_error ("Cannot open memory source `%s'", img->spec, Qnil); 7676 image_error ("Cannot open memory source "uLSQM"%s"uRSQM, img->spec);
7662 return 0; 7677 return 0;
7663 } 7678 }
7664#else 7679#else
7665 gif = DGifOpen (&memsrc, gif_read_from_memory, &gif_err); 7680 gif = DGifOpen (&memsrc, gif_read_from_memory, &gif_err);
7666 if (!gif) 7681 if (!gif)
7667 { 7682 {
7668 image_error ("Cannot open memory source `%s': %s", 7683 image_error ("Cannot open memory source "uLSQM"%s"uRSQM": %s",
7669 img->spec, build_string (GifErrorString (gif_err))); 7684 img->spec, build_string (GifErrorString (gif_err)));
7670 return 0; 7685 return 0;
7671 } 7686 }
@@ -7675,7 +7690,7 @@ gif_load (struct frame *f, struct image *img)
7675 /* Before reading entire contents, check the declared image size. */ 7690 /* Before reading entire contents, check the declared image size. */
7676 if (!check_image_size (f, gif->SWidth, gif->SHeight)) 7691 if (!check_image_size (f, gif->SWidth, gif->SHeight))
7677 { 7692 {
7678 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 7693 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
7679 gif_close (gif, NULL); 7694 gif_close (gif, NULL);
7680 return 0; 7695 return 0;
7681 } 7696 }
@@ -7684,7 +7699,7 @@ gif_load (struct frame *f, struct image *img)
7684 rc = DGifSlurp (gif); 7699 rc = DGifSlurp (gif);
7685 if (rc == GIF_ERROR || gif->ImageCount <= 0) 7700 if (rc == GIF_ERROR || gif->ImageCount <= 0)
7686 { 7701 {
7687 image_error ("Error reading `%s'", img->spec, Qnil); 7702 image_error ("Error reading "uLSQM"%s"uRSQM, img->spec);
7688 gif_close (gif, NULL); 7703 gif_close (gif, NULL);
7689 return 0; 7704 return 0;
7690 } 7705 }
@@ -7695,8 +7710,9 @@ gif_load (struct frame *f, struct image *img)
7695 idx = INTEGERP (image_number) ? XFASTINT (image_number) : 0; 7710 idx = INTEGERP (image_number) ? XFASTINT (image_number) : 0;
7696 if (idx < 0 || idx >= gif->ImageCount) 7711 if (idx < 0 || idx >= gif->ImageCount)
7697 { 7712 {
7698 image_error ("Invalid image number `%s' in image `%s'", 7713 image_error
7699 image_number, img->spec); 7714 ("Invalid image number "uLSQM"%s"uRSQM" in image "uLSQM"%s"uRSQM,
7715 image_number, img->spec);
7700 gif_close (gif, NULL); 7716 gif_close (gif, NULL);
7701 return 0; 7717 return 0;
7702 } 7718 }
@@ -7714,7 +7730,7 @@ gif_load (struct frame *f, struct image *img)
7714 7730
7715 if (!check_image_size (f, width, height)) 7731 if (!check_image_size (f, width, height))
7716 { 7732 {
7717 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 7733 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
7718 gif_close (gif, NULL); 7734 gif_close (gif, NULL);
7719 return 0; 7735 return 0;
7720 } 7736 }
@@ -7732,7 +7748,7 @@ gif_load (struct frame *f, struct image *img)
7732 && 0 <= subimg_top && subimg_top <= height - subimg_height 7748 && 0 <= subimg_top && subimg_top <= height - subimg_height
7733 && 0 <= subimg_left && subimg_left <= width - subimg_width)) 7749 && 0 <= subimg_left && subimg_left <= width - subimg_width))
7734 { 7750 {
7735 image_error ("Subimage does not fit in image", Qnil, Qnil); 7751 image_error ("Subimage does not fit in image");
7736 gif_close (gif, NULL); 7752 gif_close (gif, NULL);
7737 return 0; 7753 return 0;
7738 } 7754 }
@@ -7968,10 +7984,10 @@ gif_load (struct frame *f, struct image *img)
7968 char *error_text = GifErrorString (gif_err); 7984 char *error_text = GifErrorString (gif_err);
7969 7985
7970 if (error_text) 7986 if (error_text)
7971 image_error ("Error closing `%s': %s", 7987 image_error ("Error closing "uLSQM"%s"uRSQM": %s",
7972 img->spec, build_string (error_text)); 7988 img->spec, build_string (error_text));
7973#else 7989#else
7974 image_error ("Error closing `%s'", img->spec, Qnil); 7990 image_error ("Error closing "uLSQM"%s"uRSQM, img->spec);
7975#endif 7991#endif
7976 } 7992 }
7977 7993
@@ -8220,9 +8236,7 @@ imagemagick_error (MagickWand *wand)
8220 ExceptionType severity; 8236 ExceptionType severity;
8221 8237
8222 description = MagickGetException (wand, &severity); 8238 description = MagickGetException (wand, &severity);
8223 image_error ("ImageMagick error: %s", 8239 image_error ("ImageMagick error: %s", build_string (description));
8224 build_string (description),
8225 Qnil);
8226 MagickRelinquishMemory (description); 8240 MagickRelinquishMemory (description);
8227} 8241}
8228 8242
@@ -8383,8 +8397,7 @@ imagemagick_compute_animated_image (MagickWand *super_wand, int ino)
8383 DestroyMagickWand (composite_wand); 8397 DestroyMagickWand (composite_wand);
8384 DestroyMagickWand (sub_wand); 8398 DestroyMagickWand (sub_wand);
8385 cache->wand = NULL; 8399 cache->wand = NULL;
8386 image_error ("Imagemagick pixel iterator creation failed", 8400 image_error ("Imagemagick pixel iterator creation failed");
8387 Qnil, Qnil);
8388 return NULL; 8401 return NULL;
8389 } 8402 }
8390 8403
@@ -8395,8 +8408,7 @@ imagemagick_compute_animated_image (MagickWand *super_wand, int ino)
8395 DestroyMagickWand (sub_wand); 8408 DestroyMagickWand (sub_wand);
8396 DestroyPixelIterator (source_iterator); 8409 DestroyPixelIterator (source_iterator);
8397 cache->wand = NULL; 8410 cache->wand = NULL;
8398 image_error ("Imagemagick pixel iterator creation failed", 8411 image_error ("Imagemagick pixel iterator creation failed");
8399 Qnil, Qnil);
8400 return NULL; 8412 return NULL;
8401 } 8413 }
8402 8414
@@ -8516,8 +8528,9 @@ imagemagick_load_image (struct frame *f, struct image *img,
8516 8528
8517 if (ino < 0 || ino >= MagickGetNumberImages (image_wand)) 8529 if (ino < 0 || ino >= MagickGetNumberImages (image_wand))
8518 { 8530 {
8519 image_error ("Invalid image number `%s' in image `%s'", 8531 image_error
8520 image, img->spec); 8532 ("Invalid image number "uLSQM"%s"uRSQM" in image "uLSQM"%s"uRSQM,
8533 image, img->spec);
8521 DestroyMagickWand (image_wand); 8534 DestroyMagickWand (image_wand);
8522 return 0; 8535 return 0;
8523 } 8536 }
@@ -8571,7 +8584,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
8571 status = MagickScaleImage (image_wand, desired_width, desired_height); 8584 status = MagickScaleImage (image_wand, desired_width, desired_height);
8572 if (status == MagickFalse) 8585 if (status == MagickFalse)
8573 { 8586 {
8574 image_error ("Imagemagick scale failed", Qnil, Qnil); 8587 image_error ("Imagemagick scale failed");
8575 imagemagick_error (image_wand); 8588 imagemagick_error (image_wand);
8576 goto imagemagick_error; 8589 goto imagemagick_error;
8577 } 8590 }
@@ -8621,7 +8634,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
8621 status = MagickRotateImage (image_wand, bg_wand, rotation); 8634 status = MagickRotateImage (image_wand, bg_wand, rotation);
8622 if (status == MagickFalse) 8635 if (status == MagickFalse)
8623 { 8636 {
8624 image_error ("Imagemagick image rotate failed", Qnil, Qnil); 8637 image_error ("Imagemagick image rotate failed");
8625 imagemagick_error (image_wand); 8638 imagemagick_error (image_wand);
8626 goto imagemagick_error; 8639 goto imagemagick_error;
8627 } 8640 }
@@ -8651,7 +8664,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
8651 if (! (image_width <= INT_MAX && image_height <= INT_MAX 8664 if (! (image_width <= INT_MAX && image_height <= INT_MAX
8652 && check_image_size (f, image_width, image_height))) 8665 && check_image_size (f, image_width, image_height)))
8653 { 8666 {
8654 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 8667 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
8655 goto imagemagick_error; 8668 goto imagemagick_error;
8656 } 8669 }
8657 8670
@@ -8678,7 +8691,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
8678#ifdef COLOR_TABLE_SUPPORT 8691#ifdef COLOR_TABLE_SUPPORT
8679 free_color_table (); 8692 free_color_table ();
8680#endif 8693#endif
8681 image_error ("Imagemagick X bitmap allocation failure", Qnil, Qnil); 8694 image_error ("Imagemagick X bitmap allocation failure");
8682 goto imagemagick_error; 8695 goto imagemagick_error;
8683 } 8696 }
8684 8697
@@ -8718,7 +8731,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
8718#ifdef COLOR_TABLE_SUPPORT 8731#ifdef COLOR_TABLE_SUPPORT
8719 free_color_table (); 8732 free_color_table ();
8720#endif 8733#endif
8721 image_error ("Imagemagick X bitmap allocation failure", Qnil, Qnil); 8734 image_error ("Imagemagick X bitmap allocation failure");
8722 goto imagemagick_error; 8735 goto imagemagick_error;
8723 } 8736 }
8724 8737
@@ -8734,8 +8747,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
8734 free_color_table (); 8747 free_color_table ();
8735#endif 8748#endif
8736 x_destroy_x_image (ximg); 8749 x_destroy_x_image (ximg);
8737 image_error ("Imagemagick pixel iterator creation failed", 8750 image_error ("Imagemagick pixel iterator creation failed");
8738 Qnil, Qnil);
8739 goto imagemagick_error; 8751 goto imagemagick_error;
8740 } 8752 }
8741 8753
@@ -8787,7 +8799,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
8787 8799
8788 MagickWandTerminus (); 8800 MagickWandTerminus ();
8789 /* TODO more cleanup. */ 8801 /* TODO more cleanup. */
8790 image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec, Qnil); 8802 image_error ("Error parsing IMAGEMAGICK image "uLSQM"%s"uRSQM, img->spec);
8791 return 0; 8803 return 0;
8792} 8804}
8793 8805
@@ -8811,7 +8823,7 @@ imagemagick_load (struct frame *f, struct image *img)
8811 file = x_find_image_file (file_name); 8823 file = x_find_image_file (file_name);
8812 if (!STRINGP (file)) 8824 if (!STRINGP (file))
8813 { 8825 {
8814 image_error ("Cannot find image file `%s'", file_name, Qnil); 8826 image_error ("Cannot find image file "uLSQM"%s"uRSQM, file_name);
8815 return 0; 8827 return 0;
8816 } 8828 }
8817#ifdef WINDOWSNT 8829#ifdef WINDOWSNT
@@ -8828,7 +8840,7 @@ imagemagick_load (struct frame *f, struct image *img)
8828 data = image_spec_value (img->spec, QCdata, NULL); 8840 data = image_spec_value (img->spec, QCdata, NULL);
8829 if (!STRINGP (data)) 8841 if (!STRINGP (data))
8830 { 8842 {
8831 image_error ("Invalid image data `%s'", data, Qnil); 8843 image_error ("Invalid image data "uLSQM"%s"uRSQM, data);
8832 return 0; 8844 return 0;
8833 } 8845 }
8834 success_p = imagemagick_load_image (f, img, SDATA (data), 8846 success_p = imagemagick_load_image (f, img, SDATA (data),
@@ -9092,7 +9104,7 @@ svg_load (struct frame *f, struct image *img)
9092 file = x_find_image_file (file_name); 9104 file = x_find_image_file (file_name);
9093 if (!STRINGP (file)) 9105 if (!STRINGP (file))
9094 { 9106 {
9095 image_error ("Cannot find image file `%s'", file_name, Qnil); 9107 image_error ("Cannot find image file "uLSQM"%s"uRSQM, file_name);
9096 return 0; 9108 return 0;
9097 } 9109 }
9098 9110
@@ -9100,7 +9112,7 @@ svg_load (struct frame *f, struct image *img)
9100 contents = slurp_file (SSDATA (file), &size); 9112 contents = slurp_file (SSDATA (file), &size);
9101 if (contents == NULL) 9113 if (contents == NULL)
9102 { 9114 {
9103 image_error ("Error loading SVG image `%s'", img->spec, Qnil); 9115 image_error ("Error loading SVG image "uLSQM"%s"uRSQM, img->spec);
9104 return 0; 9116 return 0;
9105 } 9117 }
9106 /* If the file was slurped into memory properly, parse it. */ 9118 /* If the file was slurped into memory properly, parse it. */
@@ -9116,7 +9128,7 @@ svg_load (struct frame *f, struct image *img)
9116 data = image_spec_value (img->spec, QCdata, NULL); 9128 data = image_spec_value (img->spec, QCdata, NULL);
9117 if (!STRINGP (data)) 9129 if (!STRINGP (data))
9118 { 9130 {
9119 image_error ("Invalid image data `%s'", data, Qnil); 9131 image_error ("Invalid image data "uLSQM"%s"uRSQM, data);
9120 return 0; 9132 return 0;
9121 } 9133 }
9122 original_filename = BVAR (current_buffer, filename); 9134 original_filename = BVAR (current_buffer, filename);
@@ -9183,7 +9195,7 @@ svg_load_image (struct frame *f, /* Pointer to emacs frame structure. *
9183 rsvg_handle_get_dimensions (rsvg_handle, &dimension_data); 9195 rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
9184 if (! check_image_size (f, dimension_data.width, dimension_data.height)) 9196 if (! check_image_size (f, dimension_data.width, dimension_data.height))
9185 { 9197 {
9186 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 9198 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
9187 goto rsvg_error; 9199 goto rsvg_error;
9188 } 9200 }
9189 9201
@@ -9315,7 +9327,7 @@ svg_load_image (struct frame *f, /* Pointer to emacs frame structure. *
9315 g_object_unref (rsvg_handle); 9327 g_object_unref (rsvg_handle);
9316 /* FIXME: Use error->message so the user knows what is the actual 9328 /* FIXME: Use error->message so the user knows what is the actual
9317 problem with the image. */ 9329 problem with the image. */
9318 image_error ("Error parsing SVG image `%s'", img->spec, Qnil); 9330 image_error ("Error parsing SVG image "uLSQM"%s"uRSQM, img->spec);
9319 g_error_free (err); 9331 g_error_free (err);
9320 return 0; 9332 return 0;
9321} 9333}
@@ -9468,7 +9480,7 @@ gs_load (struct frame *f, struct image *img)
9468 if (! (in_width <= INT_MAX && in_height <= INT_MAX 9480 if (! (in_width <= INT_MAX && in_height <= INT_MAX
9469 && check_image_size (f, in_width, in_height))) 9481 && check_image_size (f, in_width, in_height)))
9470 { 9482 {
9471 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); 9483 image_error ("Invalid image size (see "uLSQM"max-image-size"uRSQM")");
9472 return 0; 9484 return 0;
9473 } 9485 }
9474 img->width = in_width; 9486 img->width = in_width;
@@ -9489,7 +9501,7 @@ gs_load (struct frame *f, struct image *img)
9489 9501
9490 if (!img->pixmap) 9502 if (!img->pixmap)
9491 { 9503 {
9492 image_error ("Unable to create pixmap for `%s'", img->spec, Qnil); 9504 image_error ("Unable to create pixmap for "uLSQM"%s"uRSQM, img->spec);
9493 return 0; 9505 return 0;
9494 } 9506 }
9495 9507
@@ -9601,8 +9613,9 @@ x_kill_gs_process (Pixmap pixmap, struct frame *f)
9601#endif 9613#endif
9602 } 9614 }
9603 else 9615 else
9604 image_error ("Cannot get X image of `%s'; colors will not be freed", 9616 image_error (("Cannot get X image of "uLSQM"%s"uRSQM";"
9605 img->spec, Qnil); 9617 " colors will not be freed"),
9618 img->spec);
9606 9619
9607 unblock_input (); 9620 unblock_input ();
9608 } 9621 }
diff --git a/src/keyboard.c b/src/keyboard.c
index 5f8667586c4..a577105a236 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -583,7 +583,7 @@ echo_now (void)
583 if (!current_kboard->immediate_echo) 583 if (!current_kboard->immediate_echo)
584 { 584 {
585 ptrdiff_t i; 585 ptrdiff_t i;
586 current_kboard->immediate_echo = 1; 586 current_kboard->immediate_echo = true;
587 587
588 for (i = 0; i < this_command_key_count; i++) 588 for (i = 0; i < this_command_key_count; i++)
589 { 589 {
@@ -611,10 +611,10 @@ echo_now (void)
611 echo_dash (); 611 echo_dash ();
612 } 612 }
613 613
614 echoing = 1; 614 echoing = true;
615 /* FIXME: Use call (Qmessage) so it can be advised (e.g. emacspeak). */ 615 /* FIXME: Use call (Qmessage) so it can be advised (e.g. emacspeak). */
616 message3_nolog (KVAR (current_kboard, echo_string)); 616 message3_nolog (KVAR (current_kboard, echo_string));
617 echoing = 0; 617 echoing = false;
618 618
619 /* Record in what buffer we echoed, and from which kboard. */ 619 /* Record in what buffer we echoed, and from which kboard. */
620 echo_message_buffer = echo_area_buffer[0]; 620 echo_message_buffer = echo_area_buffer[0];
@@ -629,7 +629,7 @@ echo_now (void)
629void 629void
630cancel_echoing (void) 630cancel_echoing (void)
631{ 631{
632 current_kboard->immediate_echo = 0; 632 current_kboard->immediate_echo = false;
633 current_kboard->echo_after_prompt = -1; 633 current_kboard->echo_after_prompt = -1;
634 kset_echo_string (current_kboard, Qnil); 634 kset_echo_string (current_kboard, Qnil);
635 ok_to_echo_at_next_pause = NULL; 635 ok_to_echo_at_next_pause = NULL;
@@ -819,11 +819,11 @@ any_kboard_state ()
819 { 819 {
820 current_kboard->kbd_queue 820 current_kboard->kbd_queue
821 = nconc2 (Vunread_command_events, current_kboard->kbd_queue); 821 = nconc2 (Vunread_command_events, current_kboard->kbd_queue);
822 current_kboard->kbd_queue_has_data = 1; 822 current_kboard->kbd_queue_has_data = true;
823 } 823 }
824 Vunread_command_events = Qnil; 824 Vunread_command_events = Qnil;
825#endif 825#endif
826 single_kboard = 0; 826 single_kboard = false;
827} 827}
828 828
829/* Switch to the single-kboard state, making current_kboard 829/* Switch to the single-kboard state, making current_kboard
@@ -832,7 +832,7 @@ any_kboard_state ()
832void 832void
833single_kboard_state () 833single_kboard_state ()
834{ 834{
835 single_kboard = 1; 835 single_kboard = true;
836} 836}
837#endif 837#endif
838 838
@@ -843,7 +843,7 @@ void
843not_single_kboard_state (KBOARD *kboard) 843not_single_kboard_state (KBOARD *kboard)
844{ 844{
845 if (kboard == current_kboard) 845 if (kboard == current_kboard)
846 single_kboard = 0; 846 single_kboard = false;
847} 847}
848 848
849/* Maintain a stack of kboards, so other parts of Emacs 849/* Maintain a stack of kboards, so other parts of Emacs
@@ -875,13 +875,13 @@ pop_kboard (void)
875{ 875{
876 struct terminal *t; 876 struct terminal *t;
877 struct kboard_stack *p = kboard_stack; 877 struct kboard_stack *p = kboard_stack;
878 bool found = 0; 878 bool found = false;
879 for (t = terminal_list; t; t = t->next_terminal) 879 for (t = terminal_list; t; t = t->next_terminal)
880 { 880 {
881 if (t->kboard == p->kboard) 881 if (t->kboard == p->kboard)
882 { 882 {
883 current_kboard = p->kboard; 883 current_kboard = p->kboard;
884 found = 1; 884 found = true;
885 break; 885 break;
886 } 886 }
887 } 887 }
@@ -889,7 +889,7 @@ pop_kboard (void)
889 { 889 {
890 /* The terminal we remembered has been deleted. */ 890 /* The terminal we remembered has been deleted. */
891 current_kboard = FRAME_KBOARD (SELECTED_FRAME ()); 891 current_kboard = FRAME_KBOARD (SELECTED_FRAME ());
892 single_kboard = 0; 892 single_kboard = false;
893 } 893 }
894 kboard_stack = p->next; 894 kboard_stack = p->next;
895 xfree (p); 895 xfree (p);
@@ -929,7 +929,7 @@ temporarily_switch_to_single_kboard (struct frame *f)
929 } 929 }
930 else if (f != NULL) 930 else if (f != NULL)
931 current_kboard = FRAME_KBOARD (f); 931 current_kboard = FRAME_KBOARD (f);
932 single_kboard = 1; 932 single_kboard = true;
933 record_unwind_protect_int (restore_kboard_configuration, was_locked); 933 record_unwind_protect_int (restore_kboard_configuration, was_locked);
934} 934}
935 935
@@ -1092,7 +1092,11 @@ command_loop (void)
1092 /* At least on GNU/Linux, saving signal mask is important here. */ 1092 /* At least on GNU/Linux, saving signal mask is important here. */
1093 if (sigsetjmp (return_to_command_loop, 1) != 0) 1093 if (sigsetjmp (return_to_command_loop, 1) != 0)
1094 { 1094 {
1095 /* Comes here from handle_sigsegv, see sysdep.c. */ 1095 /* Comes here from handle_sigsegv (see sysdep.c) and
1096 stack_overflow_handler (see w32fns.c). */
1097#ifdef WINDOWSNT
1098 w32_reset_stack_overflow_guard ();
1099#endif
1096 init_eval (); 1100 init_eval ();
1097 Vinternal__top_level_message = recover_top_level_message; 1101 Vinternal__top_level_message = recover_top_level_message;
1098 } 1102 }
@@ -1298,11 +1302,11 @@ command_loop_1 (void)
1298 kset_prefix_arg (current_kboard, Qnil); 1302 kset_prefix_arg (current_kboard, Qnil);
1299 kset_last_prefix_arg (current_kboard, Qnil); 1303 kset_last_prefix_arg (current_kboard, Qnil);
1300 Vdeactivate_mark = Qnil; 1304 Vdeactivate_mark = Qnil;
1301 waiting_for_input = 0; 1305 waiting_for_input = false;
1302 cancel_echoing (); 1306 cancel_echoing ();
1303 1307
1304 this_command_key_count = 0; 1308 this_command_key_count = 0;
1305 this_command_key_count_reset = 0; 1309 this_command_key_count_reset = false;
1306 this_single_command_key_start = 0; 1310 this_single_command_key_start = 0;
1307 1311
1308 if (NILP (Vmemory_full)) 1312 if (NILP (Vmemory_full))
@@ -1420,7 +1424,7 @@ command_loop_1 (void)
1420 { 1424 {
1421 cancel_echoing (); 1425 cancel_echoing ();
1422 this_command_key_count = 0; 1426 this_command_key_count = 0;
1423 this_command_key_count_reset = 0; 1427 this_command_key_count_reset = false;
1424 this_single_command_key_start = 0; 1428 this_single_command_key_start = 0;
1425 goto finalize; 1429 goto finalize;
1426 } 1430 }
@@ -1562,7 +1566,7 @@ command_loop_1 (void)
1562 kset_last_repeatable_command (current_kboard, Vreal_this_command); 1566 kset_last_repeatable_command (current_kboard, Vreal_this_command);
1563 cancel_echoing (); 1567 cancel_echoing ();
1564 this_command_key_count = 0; 1568 this_command_key_count = 0;
1565 this_command_key_count_reset = 0; 1569 this_command_key_count_reset = false;
1566 this_single_command_key_start = 0; 1570 this_single_command_key_start = 0;
1567 } 1571 }
1568 1572
@@ -1679,7 +1683,8 @@ adjust_point_for_property (ptrdiff_t last_pt, bool modified)
1679 suppress the point adjustment for automatic composition so that a 1683 suppress the point adjustment for automatic composition so that a
1680 user can keep inserting another character at point or keep 1684 user can keep inserting another character at point or keep
1681 deleting characters around point. */ 1685 deleting characters around point. */
1682 bool check_composition = ! modified, check_display = 1, check_invisible = 1; 1686 bool check_composition = ! modified;
1687 bool check_display = true, check_invisible = true;
1683 ptrdiff_t orig_pt = PT; 1688 ptrdiff_t orig_pt = PT;
1684 1689
1685 eassert (XBUFFER (XWINDOW (selected_window)->contents) == current_buffer); 1690 eassert (XBUFFER (XWINDOW (selected_window)->contents) == current_buffer);
@@ -1694,9 +1699,9 @@ adjust_point_for_property (ptrdiff_t last_pt, bool modified)
1694 && (beg = composition_adjust_point (last_pt, PT)) != PT) 1699 && (beg = composition_adjust_point (last_pt, PT)) != PT)
1695 { 1700 {
1696 SET_PT (beg); 1701 SET_PT (beg);
1697 check_display = check_invisible = 1; 1702 check_display = check_invisible = true;
1698 } 1703 }
1699 check_composition = 0; 1704 check_composition = false;
1700 if (check_display 1705 if (check_display
1701 && PT > BEGV && PT < ZV 1706 && PT > BEGV && PT < ZV
1702 && !NILP (val = get_char_property_and_overlay 1707 && !NILP (val = get_char_property_and_overlay
@@ -1716,13 +1721,13 @@ adjust_point_for_property (ptrdiff_t last_pt, bool modified)
1716 ? max (beg - 1, BEGV) 1721 ? max (beg - 1, BEGV)
1717 : beg) 1722 : beg)
1718 : end); 1723 : end);
1719 check_composition = check_invisible = 1; 1724 check_composition = check_invisible = true;
1720 } 1725 }
1721 check_display = 0; 1726 check_display = false;
1722 if (check_invisible && PT > BEGV && PT < ZV) 1727 if (check_invisible && PT > BEGV && PT < ZV)
1723 { 1728 {
1724 int inv; 1729 int inv;
1725 bool ellipsis = 0; 1730 bool ellipsis = false;
1726 beg = end = PT; 1731 beg = end = PT;
1727 1732
1728 /* Find boundaries `beg' and `end' of the invisible area, if any. */ 1733 /* Find boundaries `beg' and `end' of the invisible area, if any. */
@@ -1788,7 +1793,7 @@ adjust_point_for_property (ptrdiff_t last_pt, bool modified)
1788 was already in the range: we don't get to choose 1793 was already in the range: we don't get to choose
1789 which end of the range we have to go to. */ 1794 which end of the range we have to go to. */
1790 : (PT < last_pt ? beg : end)); 1795 : (PT < last_pt ? beg : end));
1791 check_composition = check_display = 1; 1796 check_composition = check_display = true;
1792 } 1797 }
1793#if 0 /* This assertion isn't correct, because SET_PT may end up setting 1798#if 0 /* This assertion isn't correct, because SET_PT may end up setting
1794 the point to something other than its argument, due to 1799 the point to something other than its argument, due to
@@ -1801,9 +1806,9 @@ adjust_point_for_property (ptrdiff_t last_pt, bool modified)
1801 if (!modified && !ellipsis && beg < end) 1806 if (!modified && !ellipsis && beg < end)
1802 { 1807 {
1803 if (last_pt == beg && PT == end && end < ZV) 1808 if (last_pt == beg && PT == end && end < ZV)
1804 (check_composition = check_display = 1, SET_PT (end + 1)); 1809 (check_composition = check_display = true, SET_PT (end + 1));
1805 else if (last_pt == end && PT == beg && beg > BEGV) 1810 else if (last_pt == end && PT == beg && beg > BEGV)
1806 (check_composition = check_display = 1, SET_PT (beg - 1)); 1811 (check_composition = check_display = true, SET_PT (beg - 1));
1807 else if (PT == ((PT < last_pt) ? beg : end)) 1812 else if (PT == ((PT < last_pt) ? beg : end))
1808 /* We've already moved as far as we can. Trying to go 1813 /* We've already moved as far as we can. Trying to go
1809 to the other end would mean moving backwards and thus 1814 to the other end would mean moving backwards and thus
@@ -1816,11 +1821,11 @@ adjust_point_for_property (ptrdiff_t last_pt, bool modified)
1816 (make_number (PT == beg ? end : beg), 1821 (make_number (PT == beg ? end : beg),
1817 Qinvisible, Qnil)), 1822 Qinvisible, Qnil)),
1818 !TEXT_PROP_MEANS_INVISIBLE (val))) 1823 !TEXT_PROP_MEANS_INVISIBLE (val)))
1819 (check_composition = check_display = 1, 1824 (check_composition = check_display = true,
1820 SET_PT (PT == beg ? end : beg)); 1825 SET_PT (PT == beg ? end : beg));
1821 } 1826 }
1822 } 1827 }
1823 check_invisible = 0; 1828 check_invisible = false;
1824 } 1829 }
1825} 1830}
1826 1831
@@ -1848,11 +1853,11 @@ safe_run_hooks_error (Lisp_Object error, ptrdiff_t nargs, Lisp_Object *args)
1848 if (SYMBOLP (hook)) 1853 if (SYMBOLP (hook))
1849 { 1854 {
1850 Lisp_Object val; 1855 Lisp_Object val;
1851 bool found = 0; 1856 bool found = false;
1852 Lisp_Object newval = Qnil; 1857 Lisp_Object newval = Qnil;
1853 for (val = find_symbol_value (hook); CONSP (val); val = XCDR (val)) 1858 for (val = find_symbol_value (hook); CONSP (val); val = XCDR (val))
1854 if (EQ (fun, XCAR (val))) 1859 if (EQ (fun, XCAR (val)))
1855 found = 1; 1860 found = true;
1856 else 1861 else
1857 newval = Fcons (XCAR (val), newval); 1862 newval = Fcons (XCAR (val), newval);
1858 if (found) 1863 if (found)
@@ -1864,7 +1869,7 @@ safe_run_hooks_error (Lisp_Object error, ptrdiff_t nargs, Lisp_Object *args)
1864 : Fdefault_value (hook)); 1869 : Fdefault_value (hook));
1865 CONSP (val); val = XCDR (val)) 1870 CONSP (val); val = XCDR (val))
1866 if (EQ (fun, XCAR (val))) 1871 if (EQ (fun, XCAR (val)))
1867 found = 1; 1872 found = true;
1868 else 1873 else
1869 newval = Fcons (XCAR (val), newval); 1874 newval = Fcons (XCAR (val), newval);
1870 if (found) 1875 if (found)
@@ -1929,7 +1934,7 @@ static void
1929poll_for_input (struct atimer *timer) 1934poll_for_input (struct atimer *timer)
1930{ 1935{
1931 if (poll_suppress_count == 0) 1936 if (poll_suppress_count == 0)
1932 pending_signals = 1; 1937 pending_signals = true;
1933} 1938}
1934 1939
1935#endif /* POLL_FOR_INPUT */ 1940#endif /* POLL_FOR_INPUT */
@@ -2133,7 +2138,7 @@ show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object,
2133 struct frame *f = NILP (do_mouse_tracking) ? NULL : some_mouse_moved (); 2138 struct frame *f = NILP (do_mouse_tracking) ? NULL : some_mouse_moved ();
2134 help = call1 (Qmouse_fixup_help_message, help); 2139 help = call1 (Qmouse_fixup_help_message, help);
2135 if (f) 2140 if (f)
2136 f->mouse_moved = 1; 2141 f->mouse_moved = true;
2137 } 2142 }
2138 2143
2139 if (STRINGP (help) || NILP (help)) 2144 if (STRINGP (help) || NILP (help))
@@ -2164,11 +2169,11 @@ read_char_help_form_unwind (void)
2164 2169
2165#define STOP_POLLING \ 2170#define STOP_POLLING \
2166do { if (! polling_stopped_here) stop_polling (); \ 2171do { if (! polling_stopped_here) stop_polling (); \
2167 polling_stopped_here = 1; } while (0) 2172 polling_stopped_here = true; } while (0)
2168 2173
2169#define RESUME_POLLING \ 2174#define RESUME_POLLING \
2170do { if (polling_stopped_here) start_polling (); \ 2175do { if (polling_stopped_here) start_polling (); \
2171 polling_stopped_here = 0; } while (0) 2176 polling_stopped_here = false; } while (0)
2172 2177
2173static Lisp_Object 2178static Lisp_Object
2174read_event_from_main_queue (struct timespec *end_time, 2179read_event_from_main_queue (struct timespec *end_time,
@@ -2209,7 +2214,7 @@ read_event_from_main_queue (struct timespec *end_time,
2209 kset_kbd_queue (kb, list1 (c)); 2214 kset_kbd_queue (kb, list1 (c));
2210 else 2215 else
2211 XSETCDR (last, list1 (c)); 2216 XSETCDR (last, list1 (c));
2212 kb->kbd_queue_has_data = 1; 2217 kb->kbd_queue_has_data = true;
2213 c = Qnil; 2218 c = Qnil;
2214 if (single_kboard) 2219 if (single_kboard)
2215 goto start; 2220 goto start;
@@ -2383,9 +2388,9 @@ read_char (int commandflag, Lisp_Object map,
2383 Lisp_Object tem, save; 2388 Lisp_Object tem, save;
2384 volatile Lisp_Object previous_echo_area_message; 2389 volatile Lisp_Object previous_echo_area_message;
2385 volatile Lisp_Object also_record; 2390 volatile Lisp_Object also_record;
2386 volatile bool reread; 2391 volatile bool reread, recorded;
2387 struct gcpro gcpro1, gcpro2; 2392 struct gcpro gcpro1, gcpro2;
2388 bool volatile polling_stopped_here = 0; 2393 bool volatile polling_stopped_here = false;
2389 struct kboard *orig_kboard = current_kboard; 2394 struct kboard *orig_kboard = current_kboard;
2390 2395
2391 also_record = Qnil; 2396 also_record = Qnil;
@@ -2401,6 +2406,8 @@ read_char (int commandflag, Lisp_Object map,
2401 2406
2402 retry: 2407 retry:
2403 2408
2409 recorded = false;
2410
2404 if (CONSP (Vunread_post_input_method_events)) 2411 if (CONSP (Vunread_post_input_method_events))
2405 { 2412 {
2406 c = XCAR (Vunread_post_input_method_events); 2413 c = XCAR (Vunread_post_input_method_events);
@@ -2423,7 +2430,7 @@ read_char (int commandflag, Lisp_Object map,
2423 2430
2424 if (CONSP (Vunread_command_events)) 2431 if (CONSP (Vunread_command_events))
2425 { 2432 {
2426 bool was_disabled = 0; 2433 bool was_disabled = false;
2427 2434
2428 c = XCAR (Vunread_command_events); 2435 c = XCAR (Vunread_command_events);
2429 Vunread_command_events = XCDR (Vunread_command_events); 2436 Vunread_command_events = XCDR (Vunread_command_events);
@@ -2442,7 +2449,7 @@ read_char (int commandflag, Lisp_Object map,
2442 && EQ (XCDR (c), Qdisabled) 2449 && EQ (XCDR (c), Qdisabled)
2443 && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c)))) 2450 && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c))))
2444 { 2451 {
2445 was_disabled = 1; 2452 was_disabled = true;
2446 c = XCAR (c); 2453 c = XCAR (c);
2447 } 2454 }
2448 2455
@@ -2452,7 +2459,7 @@ read_char (int commandflag, Lisp_Object map,
2452 /* Also check was_disabled so last-nonmenu-event won't return 2459 /* Also check was_disabled so last-nonmenu-event won't return
2453 a bad value when submenus are involved. (Bug#447) */ 2460 a bad value when submenus are involved. (Bug#447) */
2454 && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar) || was_disabled)) 2461 && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar) || was_disabled))
2455 *used_mouse_menu = 1; 2462 *used_mouse_menu = true;
2456 2463
2457 goto reread_for_input_method; 2464 goto reread_for_input_method;
2458 } 2465 }
@@ -2472,7 +2479,7 @@ read_char (int commandflag, Lisp_Object map,
2472 goto reread_for_input_method; 2479 goto reread_for_input_method;
2473 } 2480 }
2474 2481
2475 this_command_key_count_reset = 0; 2482 this_command_key_count_reset = false;
2476 2483
2477 if (!NILP (Vexecuting_kbd_macro)) 2484 if (!NILP (Vexecuting_kbd_macro))
2478 { 2485 {
@@ -2654,7 +2661,7 @@ read_char (int commandflag, Lisp_Object map,
2654 kset_kbd_queue (kb, list1 (c)); 2661 kset_kbd_queue (kb, list1 (c));
2655 else 2662 else
2656 XSETCDR (last, list1 (c)); 2663 XSETCDR (last, list1 (c));
2657 kb->kbd_queue_has_data = 1; 2664 kb->kbd_queue_has_data = true;
2658 current_kboard = kb; 2665 current_kboard = kb;
2659 /* This is going to exit from read_char 2666 /* This is going to exit from read_char
2660 so we had better get rid of this frame's stuff. */ 2667 so we had better get rid of this frame's stuff. */
@@ -2830,7 +2837,7 @@ read_char (int commandflag, Lisp_Object map,
2830 kset_kbd_queue (current_kboard, 2837 kset_kbd_queue (current_kboard,
2831 XCDR (KVAR (current_kboard, kbd_queue))); 2838 XCDR (KVAR (current_kboard, kbd_queue)));
2832 if (NILP (KVAR (current_kboard, kbd_queue))) 2839 if (NILP (KVAR (current_kboard, kbd_queue)))
2833 current_kboard->kbd_queue_has_data = 0; 2840 current_kboard->kbd_queue_has_data = false;
2834 input_pending = readable_events (0); 2841 input_pending = readable_events (0);
2835 if (EVENT_HAS_PARAMETERS (c) 2842 if (EVENT_HAS_PARAMETERS (c)
2836 && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qswitch_frame)) 2843 && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qswitch_frame))
@@ -2990,6 +2997,7 @@ read_char (int commandflag, Lisp_Object map,
2990 /* Store these characters into recent_keys, the dribble file if any, 2997 /* Store these characters into recent_keys, the dribble file if any,
2991 and the keyboard macro being defined, if any. */ 2998 and the keyboard macro being defined, if any. */
2992 record_char (c); 2999 record_char (c);
3000 recorded = true;
2993 if (! NILP (also_record)) 3001 if (! NILP (also_record))
2994 record_char (also_record); 3002 record_char (also_record);
2995 3003
@@ -3067,7 +3075,7 @@ read_char (int commandflag, Lisp_Object map,
3067 3075
3068 /* Clear out this_command_keys. */ 3076 /* Clear out this_command_keys. */
3069 this_command_key_count = 0; 3077 this_command_key_count = 0;
3070 this_command_key_count_reset = 0; 3078 this_command_key_count_reset = false;
3071 this_single_command_key_start = 0; 3079 this_single_command_key_start = 0;
3072 3080
3073 /* Now wipe the echo area. */ 3081 /* Now wipe the echo area. */
@@ -3125,6 +3133,14 @@ read_char (int commandflag, Lisp_Object map,
3125 Vunread_post_input_method_events 3133 Vunread_post_input_method_events
3126 = nconc2 (XCDR (tem), Vunread_post_input_method_events); 3134 = nconc2 (XCDR (tem), Vunread_post_input_method_events);
3127 } 3135 }
3136 /* When we consume events from the various unread-*-events lists, we
3137 bypass the code that records input, so record these events now if
3138 they were not recorded already. */
3139 if (!recorded)
3140 {
3141 record_char (c);
3142 recorded = true;
3143 }
3128 3144
3129 reread_first: 3145 reread_first:
3130 3146
@@ -3575,7 +3591,7 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event,
3575 kset_kbd_queue 3591 kset_kbd_queue
3576 (kb, list2 (make_lispy_switch_frame (event->ie.frame_or_window), 3592 (kb, list2 (make_lispy_switch_frame (event->ie.frame_or_window),
3577 make_number (c))); 3593 make_number (c)));
3578 kb->kbd_queue_has_data = 1; 3594 kb->kbd_queue_has_data = true;
3579 union buffered_input_event *sp; 3595 union buffered_input_event *sp;
3580 for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++) 3596 for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++)
3581 { 3597 {
@@ -3669,7 +3685,7 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event,
3669 do it now. */ 3685 do it now. */
3670 if (immediate_quit && NILP (Vinhibit_quit)) 3686 if (immediate_quit && NILP (Vinhibit_quit))
3671 { 3687 {
3672 immediate_quit = 0; 3688 immediate_quit = false;
3673 QUIT; 3689 QUIT;
3674 } 3690 }
3675 } 3691 }
@@ -3987,7 +4003,7 @@ kbd_buffer_get_event (KBOARD **kbp,
3987 obj = list1 (intern ("ns-unput-working-text")); 4003 obj = list1 (intern ("ns-unput-working-text"));
3988 kbd_fetch_ptr = event + 1; 4004 kbd_fetch_ptr = event + 1;
3989 if (used_mouse_menu) 4005 if (used_mouse_menu)
3990 *used_mouse_menu = 1; 4006 *used_mouse_menu = true;
3991 } 4007 }
3992#endif 4008#endif
3993 4009
@@ -4182,13 +4198,13 @@ kbd_buffer_get_event (KBOARD **kbp,
4182 && !EQ (event->ie.frame_or_window, event->ie.arg) 4198 && !EQ (event->ie.frame_or_window, event->ie.arg)
4183 && (event->kind == MENU_BAR_EVENT 4199 && (event->kind == MENU_BAR_EVENT
4184 || event->kind == TOOL_BAR_EVENT)) 4200 || event->kind == TOOL_BAR_EVENT))
4185 *used_mouse_menu = 1; 4201 *used_mouse_menu = true;
4186#endif 4202#endif
4187#ifdef HAVE_NS 4203#ifdef HAVE_NS
4188 /* Certain system events are non-key events. */ 4204 /* Certain system events are non-key events. */
4189 if (used_mouse_menu 4205 if (used_mouse_menu
4190 && event->kind == NS_NONKEY_EVENT) 4206 && event->kind == NS_NONKEY_EVENT)
4191 *used_mouse_menu = 1; 4207 *used_mouse_menu = true;
4192#endif 4208#endif
4193 4209
4194 /* Wipe out this event, to catch bugs. */ 4210 /* Wipe out this event, to catch bugs. */
@@ -6226,6 +6242,10 @@ parse_modifiers_uncached (Lisp_Object symbol, ptrdiff_t *modifier_end)
6226 case 't': 6242 case 't':
6227 MULTI_LETTER_MOD (triple_modifier, "triple", 6); 6243 MULTI_LETTER_MOD (triple_modifier, "triple", 6);
6228 break; 6244 break;
6245
6246 case 'u':
6247 MULTI_LETTER_MOD (up_modifier, "up", 2);
6248 break;
6229#undef MULTI_LETTER_MOD 6249#undef MULTI_LETTER_MOD
6230 6250
6231 } 6251 }
@@ -6273,16 +6293,19 @@ apply_modifiers_uncached (int modifiers, char *base, int base_len, int base_len_
6273 /* Since BASE could contain nulls, we can't use intern here; we have 6293 /* Since BASE could contain nulls, we can't use intern here; we have
6274 to use Fintern, which expects a genuine Lisp_String, and keeps a 6294 to use Fintern, which expects a genuine Lisp_String, and keeps a
6275 reference to it. */ 6295 reference to it. */
6276 char new_mods[sizeof "A-C-H-M-S-s-down-drag-double-triple-"]; 6296 char new_mods[sizeof "A-C-H-M-S-s-up-down-drag-double-triple-"];
6277 int mod_len; 6297 int mod_len;
6278 6298
6279 { 6299 {
6280 char *p = new_mods; 6300 char *p = new_mods;
6281 6301
6282 /* Only the event queue may use the `up' modifier; it should always 6302 /* Mouse events should not exhibit the `up' modifier once they
6283 be turned into a click or drag event before presented to lisp code. */ 6303 leave the event queue only accessible to C code; `up' will
6284 if (modifiers & up_modifier) 6304 always be turned into a click or drag event before being
6285 emacs_abort (); 6305 presented to lisp code. But since lisp events can be
6306 synthesized bypassing the event queue and pushed into
6307 `unread-command-events' or its companions, it's better to just
6308 deal with unexpected modifier combinations. */
6286 6309
6287 if (modifiers & alt_modifier) { *p++ = 'A'; *p++ = '-'; } 6310 if (modifiers & alt_modifier) { *p++ = 'A'; *p++ = '-'; }
6288 if (modifiers & ctrl_modifier) { *p++ = 'C'; *p++ = '-'; } 6311 if (modifiers & ctrl_modifier) { *p++ = 'C'; *p++ = '-'; }
@@ -6292,6 +6315,7 @@ apply_modifiers_uncached (int modifiers, char *base, int base_len, int base_len_
6292 if (modifiers & super_modifier) { *p++ = 's'; *p++ = '-'; } 6315 if (modifiers & super_modifier) { *p++ = 's'; *p++ = '-'; }
6293 if (modifiers & double_modifier) p = stpcpy (p, "double-"); 6316 if (modifiers & double_modifier) p = stpcpy (p, "double-");
6294 if (modifiers & triple_modifier) p = stpcpy (p, "triple-"); 6317 if (modifiers & triple_modifier) p = stpcpy (p, "triple-");
6318 if (modifiers & up_modifier) p = stpcpy (p, "up-");
6295 if (modifiers & down_modifier) p = stpcpy (p, "down-"); 6319 if (modifiers & down_modifier) p = stpcpy (p, "down-");
6296 if (modifiers & drag_modifier) p = stpcpy (p, "drag-"); 6320 if (modifiers & drag_modifier) p = stpcpy (p, "drag-");
6297 /* The click modifier is denoted by the absence of other modifiers. */ 6321 /* The click modifier is denoted by the absence of other modifiers. */
@@ -6411,8 +6435,7 @@ DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,
6411 BASE must be unmodified. 6435 BASE must be unmodified.
6412 6436
6413 This is like apply_modifiers_uncached, but uses BASE's 6437 This is like apply_modifiers_uncached, but uses BASE's
6414 Qmodifier_cache property, if present. It also builds 6438 Qmodifier_cache property, if present.
6415 Qevent_symbol_elements properties, since it has that info anyway.
6416 6439
6417 apply_modifiers copies the value of BASE's Qevent_kind property to 6440 apply_modifiers copies the value of BASE's Qevent_kind property to
6418 the modified symbol. */ 6441 the modified symbol. */
@@ -6758,6 +6781,10 @@ parse_solitary_modifier (Lisp_Object symbol)
6758 MULTI_LETTER_MOD (triple_modifier, "triple", 6); 6781 MULTI_LETTER_MOD (triple_modifier, "triple", 6);
6759 break; 6782 break;
6760 6783
6784 case 'u':
6785 MULTI_LETTER_MOD (up_modifier, "up", 2);
6786 break;
6787
6761#undef SINGLE_LETTER_MOD 6788#undef SINGLE_LETTER_MOD
6762#undef MULTI_LETTER_MOD 6789#undef MULTI_LETTER_MOD
6763 } 6790 }
@@ -6870,7 +6897,7 @@ int
6870gobble_input (void) 6897gobble_input (void)
6871{ 6898{
6872 int nread = 0; 6899 int nread = 0;
6873 bool err = 0; 6900 bool err = false;
6874 struct terminal *t; 6901 struct terminal *t;
6875 6902
6876 /* Store pending user signal events, if any. */ 6903 /* Store pending user signal events, if any. */
@@ -6889,7 +6916,7 @@ gobble_input (void)
6889 6916
6890 if (input_blocked_p ()) 6917 if (input_blocked_p ())
6891 { 6918 {
6892 pending_signals = 1; 6919 pending_signals = true;
6893 break; 6920 break;
6894 } 6921 }
6895 6922
@@ -6902,7 +6929,7 @@ gobble_input (void)
6902 6929
6903 if (nr == -1) /* Not OK to read input now. */ 6930 if (nr == -1) /* Not OK to read input now. */
6904 { 6931 {
6905 err = 1; 6932 err = true;
6906 } 6933 }
6907 else if (nr == -2) /* Non-transient error. */ 6934 else if (nr == -2) /* Non-transient error. */
6908 { 6935 {
@@ -7162,7 +7189,7 @@ handle_async_input (void)
7162void 7189void
7163process_pending_signals (void) 7190process_pending_signals (void)
7164{ 7191{
7165 pending_signals = 0; 7192 pending_signals = false;
7166 handle_async_input (); 7193 handle_async_input ();
7167 do_pending_atimers (); 7194 do_pending_atimers ();
7168} 7195}
@@ -7214,7 +7241,7 @@ totally_unblock_input (void)
7214void 7241void
7215handle_input_available_signal (int sig) 7242handle_input_available_signal (int sig)
7216{ 7243{
7217 pending_signals = 1; 7244 pending_signals = true;
7218 7245
7219 if (input_available_clear_time) 7246 if (input_available_clear_time)
7220 *input_available_clear_time = make_timespec (0, 0); 7247 *input_available_clear_time = make_timespec (0, 0);
@@ -7285,8 +7312,8 @@ handle_user_signal (int sig)
7285 && strcmp (special_event_name, p->name) == 0) 7312 && strcmp (special_event_name, p->name) == 0)
7286 { 7313 {
7287 /* Enter the debugger in many ways. */ 7314 /* Enter the debugger in many ways. */
7288 debug_on_next_call = 1; 7315 debug_on_next_call = true;
7289 debug_on_quit = 1; 7316 debug_on_quit = true;
7290 Vquit_flag = Qt; 7317 Vquit_flag = Qt;
7291 Vinhibit_quit = Qnil; 7318 Vinhibit_quit = Qnil;
7292 7319
@@ -7333,7 +7360,7 @@ store_user_signal_events (void)
7333{ 7360{
7334 struct user_signal_info *p; 7361 struct user_signal_info *p;
7335 struct input_event buf; 7362 struct input_event buf;
7336 bool buf_initialized = 0; 7363 bool buf_initialized = false;
7337 7364
7338 for (p = user_signals; p; p = p->next) 7365 for (p = user_signals; p; p = p->next)
7339 if (p->npending > 0) 7366 if (p->npending > 0)
@@ -7343,7 +7370,7 @@ store_user_signal_events (void)
7343 memset (&buf, 0, sizeof buf); 7370 memset (&buf, 0, sizeof buf);
7344 buf.kind = USER_SIGNAL_EVENT; 7371 buf.kind = USER_SIGNAL_EVENT;
7345 buf.frame_or_window = selected_frame; 7372 buf.frame_or_window = selected_frame;
7346 buf_initialized = 1; 7373 buf_initialized = true;
7347 } 7374 }
7348 7375
7349 do 7376 do
@@ -8175,7 +8202,7 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
8175 Lisp_Object filter = Qnil; 8202 Lisp_Object filter = Qnil;
8176 Lisp_Object caption; 8203 Lisp_Object caption;
8177 int i; 8204 int i;
8178 bool have_label = 0; 8205 bool have_label = false;
8179 8206
8180 /* Definition looks like `(menu-item CAPTION BINDING PROPS...)'. 8207 /* Definition looks like `(menu-item CAPTION BINDING PROPS...)'.
8181 Rule out items that aren't lists, don't start with 8208 Rule out items that aren't lists, don't start with
@@ -8284,7 +8311,7 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
8284 /* `:label LABEL-STRING'. */ 8311 /* `:label LABEL-STRING'. */
8285 set_prop (TOOL_BAR_ITEM_LABEL, 8312 set_prop (TOOL_BAR_ITEM_LABEL,
8286 STRINGP (value) ? value : build_string (bad_label)); 8313 STRINGP (value) ? value : build_string (bad_label));
8287 have_label = 1; 8314 have_label = true;
8288 } 8315 }
8289 else if (EQ (ikey, QCfilter)) 8316 else if (EQ (ikey, QCfilter))
8290 /* ':filter FORM'. */ 8317 /* ':filter FORM'. */
@@ -8450,7 +8477,7 @@ read_char_x_menu_prompt (Lisp_Object map,
8450 Lisp_Object prev_event, bool *used_mouse_menu) 8477 Lisp_Object prev_event, bool *used_mouse_menu)
8451{ 8478{
8452 if (used_mouse_menu) 8479 if (used_mouse_menu)
8453 *used_mouse_menu = 0; 8480 *used_mouse_menu = false;
8454 8481
8455 /* Use local over global Menu maps. */ 8482 /* Use local over global Menu maps. */
8456 8483
@@ -8499,7 +8526,7 @@ read_char_x_menu_prompt (Lisp_Object map,
8499 else if (NILP (value)) 8526 else if (NILP (value))
8500 value = Qt; 8527 value = Qt;
8501 if (used_mouse_menu) 8528 if (used_mouse_menu)
8502 *used_mouse_menu = 1; 8529 *used_mouse_menu = true;
8503 return value; 8530 return value;
8504 } 8531 }
8505 return Qnil ; 8532 return Qnil ;
@@ -8514,7 +8541,7 @@ read_char_minibuf_menu_prompt (int commandflag,
8514 /* FIXME: Use the minibuffer's frame width. */ 8541 /* FIXME: Use the minibuffer's frame width. */
8515 ptrdiff_t width = FRAME_COLS (SELECTED_FRAME ()) - 4; 8542 ptrdiff_t width = FRAME_COLS (SELECTED_FRAME ()) - 4;
8516 ptrdiff_t idx = -1; 8543 ptrdiff_t idx = -1;
8517 bool nobindings = 1; 8544 bool nobindings = true;
8518 Lisp_Object rest, vector; 8545 Lisp_Object rest, vector;
8519 Lisp_Object prompt_strings = Qnil; 8546 Lisp_Object prompt_strings = Qnil;
8520 8547
@@ -8543,7 +8570,7 @@ read_char_minibuf_menu_prompt (int commandflag,
8543 /* Present the documented bindings, a line at a time. */ 8570 /* Present the documented bindings, a line at a time. */
8544 while (1) 8571 while (1)
8545 { 8572 {
8546 bool notfirst = 0; 8573 bool notfirst = false;
8547 Lisp_Object menu_strings = prompt_strings; 8574 Lisp_Object menu_strings = prompt_strings;
8548 ptrdiff_t i = nlength; 8575 ptrdiff_t i = nlength;
8549 Lisp_Object obj; 8576 Lisp_Object obj;
@@ -8654,8 +8681,8 @@ read_char_minibuf_menu_prompt (int commandflag,
8654 PUSH_C_STR (", ", menu_strings); 8681 PUSH_C_STR (", ", menu_strings);
8655 i += 2; 8682 i += 2;
8656 } 8683 }
8657 notfirst = 1; 8684 notfirst = true;
8658 nobindings = 0; 8685 nobindings = false;
8659 8686
8660 /* If the char to type doesn't match the string's 8687 /* If the char to type doesn't match the string's
8661 first char, explicitly show what char to type. */ 8688 first char, explicitly show what char to type. */
@@ -8971,7 +8998,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
8971 /* True if we are trying to map a key by changing an upper-case 8998 /* True if we are trying to map a key by changing an upper-case
8972 letter to lower case, or a shifted function key to an unshifted 8999 letter to lower case, or a shifted function key to an unshifted
8973 one. */ 9000 one. */
8974 bool shift_translated = 0; 9001 bool shift_translated = false;
8975 9002
8976 /* If we receive a `switch-frame' or `select-window' event in the middle of 9003 /* If we receive a `switch-frame' or `select-window' event in the middle of
8977 a key sequence, we put it off for later. 9004 a key sequence, we put it off for later.
@@ -8982,7 +9009,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
8982 int original_uppercase_position = -1; 9009 int original_uppercase_position = -1;
8983 9010
8984 /* Gets around Microsoft compiler limitations. */ 9011 /* Gets around Microsoft compiler limitations. */
8985 bool dummyflag = 0; 9012 bool dummyflag = false;
8986 9013
8987 struct buffer *starting_buffer; 9014 struct buffer *starting_buffer;
8988 9015
@@ -9072,7 +9099,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9072 : (/* indec.start < t || fkey.start < t || */ keytran.start < t)) 9099 : (/* indec.start < t || fkey.start < t || */ keytran.start < t))
9073 { 9100 {
9074 Lisp_Object key; 9101 Lisp_Object key;
9075 bool used_mouse_menu = 0; 9102 bool used_mouse_menu = false;
9076 9103
9077 /* Where the last real key started. If we need to throw away a 9104 /* Where the last real key started. If we need to throw away a
9078 key that has expanded into more than one element of keybuf 9105 key that has expanded into more than one element of keybuf
@@ -9169,12 +9196,12 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9169 return. Any better way to fix this? -- cyd */ 9196 return. Any better way to fix this? -- cyd */
9170 || (interrupted_kboard != current_kboard)) 9197 || (interrupted_kboard != current_kboard))
9171 { 9198 {
9172 bool found = 0; 9199 bool found = false;
9173 struct kboard *k; 9200 struct kboard *k;
9174 9201
9175 for (k = all_kboards; k; k = k->next_kboard) 9202 for (k = all_kboards; k; k = k->next_kboard)
9176 if (k == interrupted_kboard) 9203 if (k == interrupted_kboard)
9177 found = 1; 9204 found = true;
9178 9205
9179 if (!found) 9206 if (!found)
9180 { 9207 {
@@ -9235,7 +9262,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9235 t = 0; 9262 t = 0;
9236 /* The Microsoft C compiler can't handle the goto that 9263 /* The Microsoft C compiler can't handle the goto that
9237 would go here. */ 9264 would go here. */
9238 dummyflag = 1; 9265 dummyflag = true;
9239 break; 9266 break;
9240 } 9267 }
9241 9268
@@ -9471,14 +9498,16 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9471 Drags reduce to clicks. 9498 Drags reduce to clicks.
9472 Double-clicks reduce to clicks. 9499 Double-clicks reduce to clicks.
9473 Triple-clicks reduce to double-clicks, then to clicks. 9500 Triple-clicks reduce to double-clicks, then to clicks.
9474 Down-clicks are eliminated. 9501 Up/Down-clicks are eliminated.
9475 Double-downs reduce to downs, then are eliminated. 9502 Double-downs reduce to downs, then are eliminated.
9476 Triple-downs reduce to double-downs, then to downs, 9503 Triple-downs reduce to double-downs, then to downs,
9477 then are eliminated. */ 9504 then are eliminated. */
9478 if (modifiers & (down_modifier | drag_modifier 9505 if (modifiers & (up_modifier | down_modifier
9506 | drag_modifier
9479 | double_modifier | triple_modifier)) 9507 | double_modifier | triple_modifier))
9480 { 9508 {
9481 while (modifiers & (down_modifier | drag_modifier 9509 while (modifiers & (up_modifier | down_modifier
9510 | drag_modifier
9482 | double_modifier | triple_modifier)) 9511 | double_modifier | triple_modifier))
9483 { 9512 {
9484 Lisp_Object new_head, new_click; 9513 Lisp_Object new_head, new_click;
@@ -9490,7 +9519,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9490 modifiers &= ~drag_modifier; 9519 modifiers &= ~drag_modifier;
9491 else 9520 else
9492 { 9521 {
9493 /* Dispose of this `down' event by simply jumping 9522 /* Dispose of this `up/down' event by simply jumping
9494 back to replay_key, to get another event. 9523 back to replay_key, to get another event.
9495 9524
9496 Note that if this event came from mock input, 9525 Note that if this event came from mock input,
@@ -9723,7 +9752,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9723 might get translated through function-key-map. */ 9752 might get translated through function-key-map. */
9724 keybuf[t - 1] = new_key; 9753 keybuf[t - 1] = new_key;
9725 mock_input = max (t, mock_input); 9754 mock_input = max (t, mock_input);
9726 shift_translated = 1; 9755 shift_translated = true;
9727 9756
9728 goto replay_sequence; 9757 goto replay_sequence;
9729 } 9758 }
@@ -9734,7 +9763,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9734 read_key_sequence_cmd = Vprefix_help_command; 9763 read_key_sequence_cmd = Vprefix_help_command;
9735 /* The Microsoft C compiler can't handle the goto that 9764 /* The Microsoft C compiler can't handle the goto that
9736 would go here. */ 9765 would go here. */
9737 dummyflag = 1; 9766 dummyflag = true;
9738 break; 9767 break;
9739 } 9768 }
9740 9769
@@ -9776,7 +9805,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9776 input-decode-map doesn't need to go through it again. */ 9805 input-decode-map doesn't need to go through it again. */
9777 fkey.start = fkey.end = 0; 9806 fkey.start = fkey.end = 0;
9778 keytran.start = keytran.end = 0; 9807 keytran.start = keytran.end = 0;
9779 shift_translated = 1; 9808 shift_translated = true;
9780 9809
9781 goto replay_sequence; 9810 goto replay_sequence;
9782 } 9811 }
@@ -9802,7 +9831,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9802 && t - 1 == original_uppercase_position) 9831 && t - 1 == original_uppercase_position)
9803 { 9832 {
9804 keybuf[t - 1] = original_uppercase; 9833 keybuf[t - 1] = original_uppercase;
9805 shift_translated = 0; 9834 shift_translated = false;
9806 } 9835 }
9807 9836
9808 if (shift_translated) 9837 if (shift_translated)
@@ -9855,7 +9884,7 @@ read_key_sequence_vs (Lisp_Object prompt, Lisp_Object continue_echo,
9855 if (NILP (continue_echo)) 9884 if (NILP (continue_echo))
9856 { 9885 {
9857 this_command_key_count = 0; 9886 this_command_key_count = 0;
9858 this_command_key_count_reset = 0; 9887 this_command_key_count_reset = false;
9859 this_single_command_key_start = 0; 9888 this_single_command_key_start = 0;
9860 } 9889 }
9861 9890
@@ -9990,7 +10019,7 @@ detect_input_pending_run_timers (bool do_display)
9990void 10019void
9991clear_input_pending (void) 10020clear_input_pending (void)
9992{ 10021{
9993 input_pending = 0; 10022 input_pending = false;
9994} 10023}
9995 10024
9996/* Return true if there are pending requeued events. 10025/* Return true if there are pending requeued events.
@@ -10134,7 +10163,7 @@ these events the first time. */)
10134 10163
10135 /* Cause whatever we put into unread-command-events 10164 /* Cause whatever we put into unread-command-events
10136 to echo as if it were being freshly read from the keyboard. */ 10165 to echo as if it were being freshly read from the keyboard. */
10137 this_command_key_count_reset = 1; 10166 this_command_key_count_reset = true;
10138 10167
10139 return Qnil; 10168 return Qnil;
10140} 10169}
@@ -10149,7 +10178,7 @@ KEEP-RECORD is non-nil. */)
10149 int i; 10178 int i;
10150 10179
10151 this_command_key_count = 0; 10180 this_command_key_count = 0;
10152 this_command_key_count_reset = 0; 10181 this_command_key_count_reset = false;
10153 10182
10154 if (NILP (keep_record)) 10183 if (NILP (keep_record))
10155 { 10184 {
@@ -10223,7 +10252,7 @@ Also end any kbd macro being defined. */)
10223 discard_tty_input (); 10252 discard_tty_input ();
10224 10253
10225 kbd_fetch_ptr = kbd_store_ptr; 10254 kbd_fetch_ptr = kbd_store_ptr;
10226 input_pending = 0; 10255 input_pending = false;
10227 10256
10228 return Qnil; 10257 return Qnil;
10229} 10258}
@@ -10321,7 +10350,7 @@ stuff_buffered_input (Lisp_Object stuffstring)
10321 clear_event (kbd_fetch_ptr); 10350 clear_event (kbd_fetch_ptr);
10322 } 10351 }
10323 10352
10324 input_pending = 0; 10353 input_pending = false;
10325#endif /* SIGTSTP */ 10354#endif /* SIGTSTP */
10326} 10355}
10327 10356
@@ -10331,7 +10360,7 @@ set_waiting_for_input (struct timespec *time_to_clear)
10331 input_available_clear_time = time_to_clear; 10360 input_available_clear_time = time_to_clear;
10332 10361
10333 /* Tell handle_interrupt to throw back to read_char, */ 10362 /* Tell handle_interrupt to throw back to read_char, */
10334 waiting_for_input = 1; 10363 waiting_for_input = true;
10335 10364
10336 /* If handle_interrupt was called before and buffered a C-g, 10365 /* If handle_interrupt was called before and buffered a C-g,
10337 make it run again now, to avoid timing error. */ 10366 make it run again now, to avoid timing error. */
@@ -10343,7 +10372,7 @@ void
10343clear_waiting_for_input (void) 10372clear_waiting_for_input (void)
10344{ 10373{
10345 /* Tell handle_interrupt not to throw back to read_char, */ 10374 /* Tell handle_interrupt not to throw back to read_char, */
10346 waiting_for_input = 0; 10375 waiting_for_input = false;
10347 input_available_clear_time = 0; 10376 input_available_clear_time = 0;
10348} 10377}
10349 10378
@@ -10504,7 +10533,7 @@ handle_interrupt (bool in_signal_handler)
10504 struct gl_state_s saved; 10533 struct gl_state_s saved;
10505 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; 10534 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
10506 10535
10507 immediate_quit = 0; 10536 immediate_quit = false;
10508 pthread_sigmask (SIG_SETMASK, &empty_mask, 0); 10537 pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
10509 saved = gl_state; 10538 saved = gl_state;
10510 GCPRO4 (saved.object, saved.global_code, 10539 GCPRO4 (saved.object, saved.global_code,
@@ -10519,7 +10548,7 @@ handle_interrupt (bool in_signal_handler)
10519 force_quit_count = count; 10548 force_quit_count = count;
10520 if (count == 3) 10549 if (count == 3)
10521 { 10550 {
10522 immediate_quit = 1; 10551 immediate_quit = true;
10523 Vinhibit_quit = Qnil; 10552 Vinhibit_quit = Qnil;
10524 } 10553 }
10525 Vquit_flag = Qt; 10554 Vquit_flag = Qt;
@@ -10553,7 +10582,7 @@ quit_throw_to_read_char (bool from_signal)
10553 10582
10554 /* Prevent another signal from doing this before we finish. */ 10583 /* Prevent another signal from doing this before we finish. */
10555 clear_waiting_for_input (); 10584 clear_waiting_for_input ();
10556 input_pending = 0; 10585 input_pending = false;
10557 10586
10558 Vunread_command_events = Qnil; 10587 Vunread_command_events = Qnil;
10559 10588
@@ -10581,13 +10610,13 @@ See also `current-input-mode'. */)
10581 { 10610 {
10582 /* When using X, don't give the user a real choice, 10611 /* When using X, don't give the user a real choice,
10583 because we haven't implemented the mechanisms to support it. */ 10612 because we haven't implemented the mechanisms to support it. */
10584 new_interrupt_input = 1; 10613 new_interrupt_input = true;
10585 } 10614 }
10586 else 10615 else
10587#endif /* HAVE_X_WINDOWS */ 10616#endif /* HAVE_X_WINDOWS */
10588 new_interrupt_input = !NILP (interrupt); 10617 new_interrupt_input = !NILP (interrupt);
10589#else /* not USABLE_SIGIO */ 10618#else /* not USABLE_SIGIO */
10590 new_interrupt_input = 0; 10619 new_interrupt_input = false;
10591#endif /* not USABLE_SIGIO */ 10620#endif /* not USABLE_SIGIO */
10592 10621
10593 if (new_interrupt_input != interrupt_input) 10622 if (new_interrupt_input != interrupt_input)
@@ -10879,8 +10908,8 @@ init_kboard (KBOARD *kb, Lisp_Object type)
10879 kset_prefix_arg (kb, Qnil); 10908 kset_prefix_arg (kb, Qnil);
10880 kset_last_prefix_arg (kb, Qnil); 10909 kset_last_prefix_arg (kb, Qnil);
10881 kset_kbd_queue (kb, Qnil); 10910 kset_kbd_queue (kb, Qnil);
10882 kb->kbd_queue_has_data = 0; 10911 kb->kbd_queue_has_data = false;
10883 kb->immediate_echo = 0; 10912 kb->immediate_echo = false;
10884 kset_echo_string (kb, Qnil); 10913 kset_echo_string (kb, Qnil);
10885 kb->echo_after_prompt = -1; 10914 kb->echo_after_prompt = -1;
10886 kb->kbd_macro_buffer = 0; 10915 kb->kbd_macro_buffer = 0;
@@ -10940,7 +10969,7 @@ delete_kboard (KBOARD *kb)
10940 && FRAME_LIVE_P (XFRAME (selected_frame))) 10969 && FRAME_LIVE_P (XFRAME (selected_frame)))
10941 { 10970 {
10942 current_kboard = FRAME_KBOARD (XFRAME (selected_frame)); 10971 current_kboard = FRAME_KBOARD (XFRAME (selected_frame));
10943 single_kboard = 0; 10972 single_kboard = false;
10944 if (current_kboard == kb) 10973 if (current_kboard == kb)
10945 emacs_abort (); 10974 emacs_abort ();
10946 } 10975 }
@@ -10954,7 +10983,7 @@ init_keyboard (void)
10954{ 10983{
10955 /* This is correct before outermost invocation of the editor loop. */ 10984 /* This is correct before outermost invocation of the editor loop. */
10956 command_loop_level = -1; 10985 command_loop_level = -1;
10957 immediate_quit = 0; 10986 immediate_quit = false;
10958 quit_char = Ctl ('g'); 10987 quit_char = Ctl ('g');
10959 Vunread_command_events = Qnil; 10988 Vunread_command_events = Qnil;
10960 timer_idleness_start_time = invalid_timespec (); 10989 timer_idleness_start_time = invalid_timespec ();
@@ -10963,9 +10992,9 @@ init_keyboard (void)
10963 kbd_fetch_ptr = kbd_buffer; 10992 kbd_fetch_ptr = kbd_buffer;
10964 kbd_store_ptr = kbd_buffer; 10993 kbd_store_ptr = kbd_buffer;
10965 do_mouse_tracking = Qnil; 10994 do_mouse_tracking = Qnil;
10966 input_pending = 0; 10995 input_pending = false;
10967 interrupt_input_blocked = 0; 10996 interrupt_input_blocked = 0;
10968 pending_signals = 0; 10997 pending_signals = false;
10969 10998
10970 /* This means that command_loop_1 won't try to select anything the first 10999 /* This means that command_loop_1 won't try to select anything the first
10971 time through. */ 11000 time through. */
@@ -11517,7 +11546,7 @@ See Info node `(elisp)Multiple Terminals'. */);
11517 DEFVAR_BOOL ("cannot-suspend", cannot_suspend, 11546 DEFVAR_BOOL ("cannot-suspend", cannot_suspend,
11518 doc: /* Non-nil means to always spawn a subshell instead of suspending. 11547 doc: /* Non-nil means to always spawn a subshell instead of suspending.
11519\(Even if the operating system has support for stopping a process.\) */); 11548\(Even if the operating system has support for stopping a process.\) */);
11520 cannot_suspend = 0; 11549 cannot_suspend = false;
11521 11550
11522 DEFVAR_BOOL ("menu-prompting", menu_prompting, 11551 DEFVAR_BOOL ("menu-prompting", menu_prompting,
11523 doc: /* Non-nil means prompt with menus when appropriate. 11552 doc: /* Non-nil means prompt with menus when appropriate.
@@ -11527,7 +11556,7 @@ The menu is displayed on the screen
11527if X menus were enabled at configuration 11556if X menus were enabled at configuration
11528time and the previous event was a mouse click prefix key. 11557time and the previous event was a mouse click prefix key.
11529Otherwise, menu prompting uses the echo area. */); 11558Otherwise, menu prompting uses the echo area. */);
11530 menu_prompting = 1; 11559 menu_prompting = true;
11531 11560
11532 DEFVAR_LISP ("menu-prompt-more-char", menu_prompt_more_char, 11561 DEFVAR_LISP ("menu-prompt-more-char", menu_prompt_more_char,
11533 doc: /* Character to see next line of menu prompt. 11562 doc: /* Character to see next line of menu prompt.
diff --git a/src/keyboard.h b/src/keyboard.h
index b843e8db903..3e4c475d285 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -170,7 +170,7 @@ struct kboard
170 kbd_queue_has_data is 0. When we push back an incomplete 170 kbd_queue_has_data is 0. When we push back an incomplete
171 command, then this flag is 0, meaning we don't want to try 171 command, then this flag is 0, meaning we don't want to try
172 reading from this KBOARD again until more input arrives. */ 172 reading from this KBOARD again until more input arrives. */
173 char kbd_queue_has_data; 173 bool_bf kbd_queue_has_data;
174 174
175 /* True means echo each character as typed. */ 175 /* True means echo each character as typed. */
176 bool_bf immediate_echo : 1; 176 bool_bf immediate_echo : 1;
diff --git a/src/lisp.h b/src/lisp.h
index 02109d72174..d3dcaecd2bb 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3667,7 +3667,8 @@ extern Lisp_Object sit_for (Lisp_Object, bool, int);
3667/* Defined in xdisp.c. */ 3667/* Defined in xdisp.c. */
3668extern bool noninteractive_need_newline; 3668extern bool noninteractive_need_newline;
3669extern Lisp_Object echo_area_buffer[2]; 3669extern Lisp_Object echo_area_buffer[2];
3670extern void add_to_log (const char *, Lisp_Object, Lisp_Object); 3670extern void add_to_log (char const *, ...);
3671extern void vadd_to_log (char const *, va_list);
3671extern void check_message_stack (void); 3672extern void check_message_stack (void);
3672extern void setup_echo_area_for_printing (bool); 3673extern void setup_echo_area_for_printing (bool);
3673extern bool push_message (void); 3674extern bool push_message (void);
@@ -4299,6 +4300,25 @@ extern void set_initial_environment (void);
4299extern void syms_of_callproc (void); 4300extern void syms_of_callproc (void);
4300 4301
4301/* Defined in doc.c. */ 4302/* Defined in doc.c. */
4303enum
4304 {
4305 /* Named constants for the UTF-8 encodings of U+2018 LEFT SINGLE
4306 QUOTATION MARK and U+2019 RIGHT SINGLE QUOTATION MARK. */
4307 uLSQM0 = 0xE2, uLSQM1 = 0x80, uLSQM2 = 0x98,
4308 uRSQM0 = 0xE2, uRSQM1 = 0x80, uRSQM2 = 0x99
4309 };
4310enum text_quoting_style
4311 {
4312 /* Use curved single quotes ‘like this’. */
4313 CURVE_QUOTING_STYLE,
4314
4315 /* Use grave accent and apostrophe `like this'. */
4316 GRAVE_QUOTING_STYLE,
4317
4318 /* Use apostrophes 'like this'. */
4319 STRAIGHT_QUOTING_STYLE
4320 };
4321extern enum text_quoting_style text_quoting_style (void);
4302extern Lisp_Object read_doc_string (Lisp_Object); 4322extern Lisp_Object read_doc_string (Lisp_Object);
4303extern Lisp_Object get_doc_string (Lisp_Object, bool, bool); 4323extern Lisp_Object get_doc_string (Lisp_Object, bool, bool);
4304extern void syms_of_doc (void); 4324extern void syms_of_doc (void);
diff --git a/src/lread.c b/src/lread.c
index 11c8d0031c9..ebd594c1a16 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -947,7 +947,8 @@ load_warn_old_style_backquotes (Lisp_Object file)
947{ 947{
948 if (!NILP (Vold_style_backquotes)) 948 if (!NILP (Vold_style_backquotes))
949 { 949 {
950 AUTO_STRING (format, "Loading `%s': old-style backquotes detected!"); 950 Lisp_Object format = build_string ("Loading "uLSQM"%s"uRSQM
951 ": old-style backquotes detected!");
951 CALLN (Fmessage, format, file); 952 CALLN (Fmessage, format, file);
952 } 953 }
953} 954}
@@ -1885,7 +1886,7 @@ readevalloop (Lisp_Object readcharfun,
1885 1886
1886 /* Ignore whitespace here, so we can detect eof. */ 1887 /* Ignore whitespace here, so we can detect eof. */
1887 if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r' 1888 if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r'
1888 || c == 0xa0) /* NBSP */ 1889 || c == NO_BREAK_SPACE)
1889 goto read_next; 1890 goto read_next;
1890 1891
1891 if (!NILP (Vpurify_flag) && c == '(') 1892 if (!NILP (Vpurify_flag) && c == '(')
@@ -2793,7 +2794,7 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list)
2793 uninterned_symbol = 1; 2794 uninterned_symbol = 1;
2794 c = READCHAR; 2795 c = READCHAR;
2795 if (!(c > 040 2796 if (!(c > 040
2796 && c != 0xa0 /* NBSP */ 2797 && c != NO_BREAK_SPACE
2797 && (c >= 0200 2798 && (c >= 0200
2798 || strchr ("\"';()[]#`,", c) == NULL))) 2799 || strchr ("\"';()[]#`,", c) == NULL)))
2799 { 2800 {
@@ -3127,7 +3128,7 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list)
3127 default: 3128 default:
3128 default_label: 3129 default_label:
3129 if (c <= 040) goto retry; 3130 if (c <= 040) goto retry;
3130 if (c == 0xa0) /* NBSP */ 3131 if (c == NO_BREAK_SPACE)
3131 goto retry; 3132 goto retry;
3132 3133
3133 read_symbol: 3134 read_symbol:
@@ -3167,7 +3168,7 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list)
3167 c = READCHAR; 3168 c = READCHAR;
3168 } 3169 }
3169 while (c > 040 3170 while (c > 040
3170 && c != 0xa0 /* NBSP */ 3171 && c != NO_BREAK_SPACE
3171 && (c >= 0200 3172 && (c >= 0200
3172 || strchr ("\"';()[]#`,", c) == NULL)); 3173 || strchr ("\"';()[]#`,", c) == NULL));
3173 3174
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
deleted file mode 100644
index 795b55a7c43..00000000000
--- a/src/makefile.w32-in
+++ /dev/null
@@ -1,1725 +0,0 @@
1# -*- Makefile -*- for GNU Emacs on the Microsoft Windows API.
2# Copyright (C) 2000-2015 Free Software Foundation, Inc.
3
4# This file is part of GNU Emacs.
5
6# GNU Emacs is free software: you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation, either version 3 of the License, or
9# (at your option) any later version.
10
11# GNU Emacs is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15
16# You should have received a copy of the GNU General Public License
17# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
18
19
20ALL = emacs
21
22.PHONY: $(ALL)
23
24# Set EMACSLOADPATH correctly (in case already defined in environment).
25EMACSLOADPATH=$(CURDIR)/../lisp
26
27# Size in MBs of the static heap in temacs.exe.
28HEAPSIZE = $(EMACS_HEAPSIZE)
29
30LOCAL_FLAGS = -Demacs=1 -I../lib -I../nt/inc $(EMACS_EXTRA_C_FLAGS)
31
32SRC = .
33EMACS = $(BLD)/emacs.exe
34TEMACS = $(BLD)/temacs.exe
35TEMACS_TMP = $(BLD)/temacs.bin
36TLIB0 = $(BLD)/temacs0.$(A)
37TLIB1 = $(BLD)/temacs1.$(A)
38TLIB2 = $(BLD)/temacs2.$(A)
39TOBJ = $(BLD)/firstfile.$(O)
40TRES = $(BLD)/emacs.res
41TLASTLIB = $(BLD)/lastfile.$(A)
42GNULIB = ../lib/$(BLD)/libgnu.$(A)
43
44DOC = $(OBJDIR)/etc/DOC
45
46FULL_LINK_FLAGS = $(LINK_FLAGS) $(TEMACS_EXTRA_LINK)
47
48#
49# Split up the objects into two sets so that we don't run out of
50# command line space when we link them into a library.
51#
52# Put emacs.$(O) in a separate lib, since we need to have firstfile.$(O)
53# as the "main" object file when linking.
54#
55OBJ0 = $(BLD)/emacs.$(O)
56
57OBJ1 = $(BLD)/alloc.$(O) \
58 $(BLD)/atimer.$(O) \
59 $(BLD)/buffer.$(O) \
60 $(BLD)/bytecode.$(O) \
61 $(BLD)/callint.$(O) \
62 $(BLD)/callproc.$(O) \
63 $(BLD)/casefiddle.$(O) \
64 $(BLD)/cmds.$(O) \
65 $(BLD)/data.$(O) \
66 $(BLD)/dired.$(O) \
67 $(BLD)/dispnew.$(O) \
68 $(BLD)/doc.$(O) \
69 $(BLD)/doprnt.$(O) \
70 $(BLD)/editfns.$(O) \
71 $(BLD)/eval.$(O) \
72 $(BLD)/fileio.$(O) \
73 $(BLD)/filelock.$(O) \
74 $(BLD)/fns.$(O) \
75 $(BLD)/indent.$(O) \
76 $(BLD)/insdel.$(O) \
77 $(BLD)/keyboard.$(O) \
78 $(BLD)/keymap.$(O) \
79 $(BLD)/lread.$(O) \
80 $(BLD)/macros.$(O) \
81 $(BLD)/marker.$(O) \
82 $(BLD)/minibuf.$(O) \
83 $(BLD)/w32.$(O) \
84 $(BLD)/w32heap.$(O) \
85 $(BLD)/w32inevt.$(O) \
86 $(BLD)/w32proc.$(O) \
87 $(BLD)/w32console.$(O) \
88 $(BLD)/print.$(O) \
89 $(BLD)/process.$(O) \
90 $(BLD)/regex.$(O) \
91 $(BLD)/scroll.$(O) \
92 $(BLD)/search.$(O) \
93 $(BLD)/sound.$(O) \
94 $(BLD)/syntax.$(O)
95
96OBJ2 = $(BLD)/sysdep.$(O) \
97 $(BLD)/term.$(O) \
98 $(BLD)/tparam.$(O) \
99 $(BLD)/undo.$(O) \
100 $(BLD)/unexw32.$(O) \
101 $(BLD)/window.$(O) \
102 $(BLD)/xdisp.$(O) \
103 $(BLD)/casetab.$(O) \
104 $(BLD)/floatfns.$(O) \
105 $(BLD)/frame.$(O) \
106 $(BLD)/gmalloc.$(O) \
107 $(BLD)/gnutls.$(O) \
108 $(BLD)/intervals.$(O) \
109 $(BLD)/composite.$(O) \
110 $(BLD)/ralloc.$(O) \
111 $(BLD)/textprop.$(O) \
112 $(BLD)/vm-limit.$(O) \
113 $(BLD)/region-cache.$(O) \
114 $(BLD)/bidi.$(O) \
115 $(BLD)/charset.$(O) \
116 $(BLD)/character.$(O) \
117 $(BLD)/chartab.$(O) \
118 $(BLD)/coding.$(O) \
119 $(BLD)/category.$(O) \
120 $(BLD)/ccl.$(O) \
121 $(BLD)/font.$(O) \
122 $(BLD)/fontset.$(O) \
123 $(BLD)/fringe.$(O) \
124 $(BLD)/image.$(O) \
125 $(BLD)/terminal.$(O) \
126 $(BLD)/menu.$(O) \
127 $(BLD)/xml.$(O) \
128 $(BLD)/profiler.$(O) \
129 $(BLD)/w32term.$(O) \
130 $(BLD)/w32xfns.$(O) \
131 $(BLD)/w32fns.$(O) \
132 $(BLD)/xfaces.$(O) \
133 $(BLD)/w32select.$(O) \
134 $(BLD)/w32menu.$(O) \
135 $(BLD)/w32reg.$(O) \
136 $(BLD)/w32font.$(O) \
137 $(BLD)/w32notify.$(O) \
138 $(BLD)/w32uniscribe.$(O)
139
140LIBS = $(TLIB0) \
141 $(TLIB1) \
142 $(TLIB2) \
143 $(TLASTLIB) \
144 $(GNULIB) \
145 $(WINMM) \
146 $(ADVAPI32) \
147 $(GDI32) \
148 $(COMDLG32) \
149 $(USER32) \
150 $(MPR) \
151 $(SHELL32) \
152 $(WINSPOOL) \
153 $(OLE32) \
154 $(COMCTL32) \
155 $(UNISCRIBE) \
156 $(USER_LIBS) \
157 $(libc)
158
159#
160# Build the executable and dump it.
161#
162all: $(ALL)
163
164#
165# The dumped executable
166#
167emacs: stamp_BLD $(EMACS)
168$(EMACS): $(DOC) $(TEMACS)
169 "$(THISDIR)/$(BLD)/temacs.exe" -batch -l loadup dump
170 -"$(THISDIR)/$(BLD)/emacs.exe" -batch -f list-load-path-shadows
171
172#
173# The undumped executable
174# Note the extra post-link step to insert a static preload heap section.
175# If preload runs out of memory, increase the last argument to addsection
176# (it is the preload heap size in MB).
177#
178temacs: stamp_BLD $(TEMACS)
179$(TEMACS): $(TLIB0) $(TLIB1) $(TLIB2) $(TLASTLIB) $(TOBJ) $(TRES) \
180 ../nt/$(BLD)/addsection.exe $(GNULIB)
181 $(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
182 "$(THISDIR)/../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP $(HEAPSIZE)
183
184# These omit firstfile.${O}, but there's no documentation in there
185# anyways.
186buildobj.h: $(SRC)/makefile.w32-in
187 $(MAKE) $(MFLAGS) make-buildobj-$(SHELLTYPE)
188
189# Cannot have blanks between the backslash and the redirection
190# characters, because CMD's `echo' will put them in buildobj.h.
191make-buildobj-CMD:
192 echo #define BUILDOBJ ^"\> buildobj.h
193 echo $(OBJ0) \>> buildobj.h
194 echo $(OBJ1) \>> buildobj.h
195 echo $(OBJ2) \>> buildobj.h
196 echo ^">> buildobj.h
197
198# "
199# The above line is here to countermand the single quote
200# on the last "echo" command above, wrt font-lock.
201make-buildobj-SH:
202 echo '#define BUILDOBJ $(DQUOTE)\' > buildobj.h
203 echo $(OBJ0) '\' >> buildobj.h
204 echo $(OBJ1) '\' >> buildobj.h
205 echo $(OBJ2) '\' >> buildobj.h
206 echo '$(DQUOTE)' >> buildobj.h
207
208GLOBAL_SOURCES = dosfns.c msdos.c \
209 xterm.c xfns.c xmenu.c xselect.c xrdb.c xsmfns.c fringe.c image.c \
210 fontset.c menu.c dbusbind.c \
211 w32.c w32console.c w32fns.c w32heap.c w32inevt.c cygw32.c \
212 w32menu.c w32proc.c w32reg.c w32select.c w32term.c w32xfns.c \
213 font.c w32font.c w32uniscribe.c w32notify.c \
214 dispnew.c frame.c scroll.c xdisp.c window.c bidi.c \
215 charset.c coding.c category.c ccl.c character.c chartab.c \
216 cm.c term.c terminal.c xfaces.c \
217 emacs.c keyboard.c macros.c keymap.c sysdep.c \
218 buffer.c filelock.c insdel.c marker.c \
219 minibuf.c fileio.c dired.c \
220 cmds.c casetab.c casefiddle.c indent.c search.c regex.c undo.c \
221 alloc.c data.c doc.c editfns.c callint.c \
222 eval.c floatfns.c fns.c print.c lread.c \
223 syntax.c bytecode.c \
224 process.c callproc.c unexw32.c \
225 region-cache.c sound.c atimer.c \
226 doprnt.c intervals.c textprop.c composite.c \
227 gnutls.c xml.c profiler.c
228SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
229 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o dbusbind.o
230obj = $(GLOBAL_SOURCES:.c=.o)
231
232globals.h: gl-stamp
233 @cmd $(SWITCHCHAR)c rem true
234
235gl-stamp: ../lib-src/$(BLD)/make-docfile.exe $(GLOBAL_SOURCES)
236 - $(DEL) gl-tmp
237 "$(THISDIR)/../lib-src/$(BLD)/make-docfile" -d . -g $(SOME_MACHINE_OBJECTS) $(obj) > gl-tmp
238 fc.exe $(SWITCHCHAR)b gl-tmp globals.h >nul 2>&1 || $(CP) gl-tmp globals.h
239 - $(DEL) gl-tmp
240 echo timestamp > $@
241
242bootstrap: bootstrap-emacs
243
244#
245# Build a temacs with a sufficiently large PURESIZE to load the
246# Lisp files from loadup.el in source form.
247#
248# WARNING: Do NOT split the part inside $(ARGQUOTE)s into multiple lines as
249# this can break with GNU Make 3.81 and later if sh.exe is used.
250bootstrap-temacs-CMD:
251 $(MAKE) $(MFLAGS) $(XMFLAGS) temacs CFLAGS=$(ARGQUOTE)$(ESC_CFLAGS) -DPURESIZE=$(EMACS_PURESIZE)$(ARGQUOTE)
252
253bootstrap-temacs-SH:
254 $(MAKE) $(MFLAGS) $(XMFLAGS) temacs CFLAGS=$(ARGQUOTE)$(CFLAGS) -DPURESIZE=$(EMACS_PURESIZE)$(ARGQUOTE)
255
256bootstrap-temacs:
257 $(MAKE) $(MFLAGS) bootstrap-temacs-$(SHELLTYPE)
258
259#
260# Dump an Emacs executable named bootstrap-emacs containing the
261# files from loadup.el in source form.
262#
263bootstrap-emacs: bootstrap-temacs
264 "$(THISDIR)/$(BLD)/temacs.exe" -batch -l loadup bootstrap
265 - mkdir "../bin"
266 $(CP) $(EMACS) ../bin
267
268#
269# Force recompile of files that depend on PURESIZE
270#
271bootstrap-clean:
272 - $(DEL) $(BLD)/alloc.$(O)
273 - $(DEL) $(BLD)/data.$(O)
274 - $(DEL) $(BLD)/intervals.$(O)
275 - $(DEL) $(BLD)/keyboard.$(O)
276 - $(DEL) $(BLD)/keymap.$(O)
277
278#
279# The resource file. NT 3.10 requires the use of cvtres; even though
280# it is not necessary on later versions, it is still ok to use it.
281#
282$(TRES): ../nt/emacs.rc stamp_BLD
283 $(RC) $(RC_INCLUDE)../nt $(RC_OUT)$@ ../nt/emacs.rc
284
285#
286# Build the library. Split up the build into two phases...otherwise we
287# run out of command line space.
288#
289$(TLIB0): $(OBJ0)
290 - $(DEL) $@
291 $(AR) $(AR_OUT)$@ $(ALL_DEPS)
292$(TLIB1): $(OBJ1)
293 - $(DEL) $@
294 $(AR) $(AR_OUT)$@ $(ALL_DEPS)
295$(TLIB2): $(OBJ2)
296 - $(DEL) $@
297 $(AR) $(AR_OUT)$@ $(ALL_DEPS)
298
299#
300# Place lastfile.$(O) in its own library so that it can be loaded after
301# the source libraries but before any system libraries. Doing so defines
302# the end of Emacs' data section portably across compilers and systems.
303#
304$(TLASTLIB): $(BLD)/lastfile.$(O)
305 - $(DEL) $@
306 $(AR) $(AR_OUT)$@ $(ALL_DEPS)
307
308#
309# Assuming INSTALL_DIR is defined, build and install emacs in it.
310#
311install: $(ALL)
312 - mkdir "$(INSTALL_DIR)/bin"
313 $(CP) $(EMACS) $(INSTALL_DIR)/bin
314
315#
316# Maintenance
317#
318# We used to delete *~, s/*~, m/*~ here, but that might inadvertently
319# remove precious files if it happens to match their short 8+3 aliases.
320clean:
321 - $(DEL) "s/*.h~" "m/*.h~"
322 - $(DEL) $(COMPILER_TEMP_FILES)
323 - $(DEL_TREE) $(OBJDIR)
324 - $(DEL) stamp_BLD gl-stamp globals.h
325 - $(DEL) buildobj.h
326
327distclean: cleanall
328 - $(DEL) config.h epaths.h Makefile
329
330maintainer-clean: distclean
331 - $(DEL) TAGS
332
333cleanall: clean
334 - $(DEL_TREE) obj
335 - $(DEL_TREE) obj-spd
336 - $(DEL_TREE) oo
337 - $(DEL_TREE) oo-spd
338
339## Arrange to make a tags table TAGS-LISP for ../lisp,
340## plus TAGS for the C files, which includes ../lisp/TAGS by reference.
341##
342## This works only with GNU Make.
343
344TAGS: $(OBJ0) $(OBJ1) $(OBJ2) $(CURDIR)/../nt/inc/ms-w32.h
345 $(MAKE) $(MFLAGS) TAGS-$(MAKETYPE)
346
347TAGS-LISP: $(OBJ0) $(OBJ1) $(OBJ2)
348 $(MAKE) $(MFLAGS) TAGS-LISP-$(MAKETYPE)
349
350TAGS-gmake:
351 ../lib-src/$(BLD)/etags.exe --include=TAGS-LISP --include=../nt/TAGS \
352 --regex=@../nt/emacs-src.tags \
353 $(OBJ0_c)
354 ../lib-src/$(BLD)/etags.exe -a --regex=@../nt/emacs-src.tags \
355 $(OBJ1_c)
356 ../lib-src/$(BLD)/etags.exe -a --regex=@../nt/emacs-src.tags \
357 $(OBJ2_c) \
358 $(CURDIR)/*.h $(CURDIR)/../nt/inc/ms-w32.h
359
360TAGS-nmake:
361 echo This target is not supported with NMake
362 exit -1
363
364frc:
365TAGS-LISP-gmake: frc
366 $(MAKE) $(MFLAGS) -C ../lisp TAGS-LISP DEST=../src
367
368TAGS-LISP-nmake:
369 echo This target is not supported with NMake
370 exit -1
371
372../nt/TAGS: frc
373 $(MAKE) $(MFLAGS) nt-TAGS-$(MAKETYPE)
374
375nt-TAGS-gmake:
376 $(MAKE) $(MFLAGS) -C ../nt TAGS
377
378nt-TAGS-nmake:
379 echo This target is not supported with NMake
380 exit -1
381
382full-tags: TAGS TAGS-LISP ../nt/TAGS
383.PHONY: full-tags
384
385### DEPENDENCIES ###
386
387EMACS_ROOT = ..
388GNU_LIB = $(EMACS_ROOT)/lib
389NT_INC = $(EMACS_ROOT)/nt/inc
390
391ACL_H = $(GNU_LIB)/acl.h \
392 $(NT_INC)/sys/stat.h \
393 $(NT_INC)/stdbool.h
394SYSTIME_H = $(SRC)/systime.h \
395 $(NT_INC)/sys/time.h \
396 $(GNU_LIB)/timespec.h
397ATIMER_H = $(SRC)/atimer.h \
398 $(NT_INC)/stdbool.h \
399 $(SYSTIME_H)
400BUFFER_H = $(SRC)/buffer.h \
401 $(SYSTIME_H)
402C_CTYPE_H = $(GNU_LIB)/c-ctype.h \
403 $(NT_INC)/stdbool.h
404CAREADLINKAT_H = $(GNU_LIB)/careadlinkat.h \
405 $(NT_INC)/unistd.h
406CHARACTER_H = $(SRC)/character.h \
407 $(GNU_LIB)/verify.h
408CCL_H = $(SRC)/ccl.h \
409 $(CHARACTER_H)
410CHARSET_H = $(SRC)/charset.h \
411 $(GNU_LIB)/verify.h
412CODING_H = $(SRC)/coding.h \
413 $(SRC)/composite.h
414MS_W32_H = $(NT_INC)/ms-w32.h \
415 $(NT_INC)/sys/stat.h
416CONF_POST_H = $(SRC)/conf_post.h \
417 $(MS_W32_H)
418CONFIG_H = $(SRC)/config.h \
419 $(CONF_POST_H)
420W32GUI_H = $(SRC)/w32gui.h \
421 $(SYSTIME_H)
422DISPEXTERN_H = $(SRC)/dispextern.h \
423 $(GNU_LIB)/c-strcase.h \
424 $(SYSTIME_H) \
425 $(W32GUI_H)
426FILEMODE_H = $(GNU_LIB)/filemode.h \
427 $(NT_INC)/sys/stat.h
428FRAME_H = $(SRC)/frame.h \
429 $(DISPEXTERN_H)
430FONT_H = $(SRC)/font.h \
431 $(CCL_H) \
432 $(FRAME_H)
433FTOASTR_H = $(GNU_LIB)/ftoastr.h \
434 $(GNU_LIB)/intprops.h
435GRP_H = $(NT_INC)/grp.h \
436 $(NT_INC)/pwd.h
437INTERVALS_H = $(SRC)/intervals.h \
438 $(SRC)/composite.h \
439 $(DISPEXTERN_H)
440INTTYPES_H = $(NT_INC)/inttypes.h \
441 $(NT_INC)/stdint.h
442KEYBOARD_H = $(SRC)/keyboard.h \
443 $(CODING_H) \
444 $(SYSTIME_H)
445LANGINFO_H = $(NT_INC)/langinfo.h \
446 $(NT_INC)/nl_types.h
447LISP_H = $(SRC)/lisp.h \
448 $(SRC)/globals.h \
449 $(GNU_LIB)/intprops.h \
450 $(INTTYPES_H) \
451 $(NT_INC)/stdalign.h \
452 $(NT_INC)/stdbool.h
453MD5_H = $(GNU_LIB)/md5.h \
454 $(NT_INC)/stdint.h
455MENU_H = $(SRC)/menu.h \
456 $(SYSTIME_H)
457PROCESS_H = $(SRC)/process.h \
458 $(SRC)/gnutls.h \
459 $(NT_INC)/unistd.h
460SHA1_H = $(GNU_LIB)/sha1.h \
461 $(NT_INC)/stdint.h
462SHA256_H = $(GNU_LIB)/sha256.h \
463 $(NT_INC)/stdint.h
464U64_H = $(GNU_LIB)/u64.h \
465 $(NT_INC)/stdint.h
466SHA512_H = $(GNU_LIB)/sha512.h \
467 $(U64_H)
468SIG2STR_H = $(GNU_LIB)/sig2str.h \
469 $(GNU_LIB)/intprops.h
470SOCKET_H = $(NT_INC)/sys/socket.h \
471 $(SRC)/w32.h
472STAT_TIME_H = $(GNU_LIB)/stat-time.h \
473 $(NT_INC)/sys/stat.h
474SYSSIGNAL_H = $(SRC)/syssignal.h \
475 $(NT_INC)/stdbool.h
476SYSTTY_H = $(SRC)/systty.h \
477 $(NT_INC)/sys/ioctl.h \
478 $(NT_INC)/unistd.h
479SYSWAIT_H = $(SRC)/syswait.h \
480 $(NT_INC)/stdbool.h \
481 $(NT_INC)/sys/wait.h
482TERMHOOKS_H = $(SRC)/termhooks.h \
483 $(SYSTIME_H)
484W32FONT_H = $(SRC)/w32font.h \
485 $(FONT_H)
486W32TERM_H = $(SRC)/w32term.h \
487 $(ATIMER_H) \
488 $(FRAME_H) \
489 $(W32GUI_H)
490WINDOW_H = $(SRC)/window.h \
491 $(DISPEXTERN_H)
492
493$(BLD)/alloc.$(O) : \
494 $(SRC)/alloc.c \
495 $(SRC)/blockinput.h \
496 $(SRC)/puresize.h \
497 $(SRC)/w32.h \
498 $(SRC)/w32heap.h \
499 $(NT_INC)/unistd.h \
500 $(GNU_LIB)/verify.h \
501 $(BUFFER_H) \
502 $(CHARACTER_H) \
503 $(CONFIG_H) \
504 $(FRAME_H) \
505 $(INTERVALS_H) \
506 $(KEYBOARD_H) \
507 $(LISP_H) \
508 $(PROCESS_H) \
509 $(TERMHOOKS_H) \
510 $(WINDOW_H)
511
512$(BLD)/atimer.$(O) : \
513 $(SRC)/atimer.c \
514 $(SRC)/blockinput.h \
515 $(NT_INC)/unistd.h \
516 $(ATIMER_H) \
517 $(CONFIG_H) \
518 $(LISP_H) \
519 $(SYSSIGNAL_H) \
520 $(SYSTIME_H)
521
522$(BLD)/bidi.$(O) : \
523 $(SRC)/bidi.c \
524 $(BUFFER_H) \
525 $(CHARACTER_H) \
526 $(CONFIG_H) \
527 $(DISPEXTERN_H) \
528 $(LISP_H)
529
530$(BLD)/buffer.$(O) : \
531 $(SRC)/buffer.c \
532 $(SRC)/blockinput.h \
533 $(SRC)/commands.h \
534 $(SRC)/indent.h \
535 $(SRC)/keymap.h \
536 $(SRC)/region-cache.h \
537 $(NT_INC)/sys/param.h \
538 $(NT_INC)/sys/stat.h \
539 $(NT_INC)/unistd.h \
540 $(GNU_LIB)/verify.h \
541 $(BUFFER_H) \
542 $(CHARACTER_H) \
543 $(CONFIG_H) \
544 $(FRAME_H) \
545 $(INTERVALS_H) \
546 $(KEYBOARD_H) \
547 $(LISP_H) \
548 $(WINDOW_H)
549
550$(BLD)/bytecode.$(O) : \
551 $(SRC)/bytecode.c \
552 $(SRC)/syntax.h \
553 $(BUFFER_H) \
554 $(CHARACTER_H) \
555 $(CONFIG_H) \
556 $(LISP_H) \
557 $(WINDOW_H)
558
559$(BLD)/callint.$(O) : \
560 $(SRC)/callint.c \
561 $(SRC)/commands.h \
562 $(SRC)/keymap.h \
563 $(BUFFER_H) \
564 $(CHARACTER_H) \
565 $(CONFIG_H) \
566 $(KEYBOARD_H) \
567 $(LISP_H) \
568 $(WINDOW_H)
569
570$(BLD)/callproc.$(O) : \
571 $(SRC)/callproc.c \
572 $(SRC)/blockinput.h \
573 $(SRC)/commands.h \
574 $(SRC)/composite.h \
575 $(SRC)/epaths.h \
576 $(SRC)/w32.h \
577 $(NT_INC)/sys/file.h \
578 $(NT_INC)/unistd.h \
579 $(BUFFER_H) \
580 $(CCL_H) \
581 $(CHARACTER_H) \
582 $(CODING_H) \
583 $(CONFIG_H) \
584 $(FRAME_H) \
585 $(LISP_H) \
586 $(PROCESS_H) \
587 $(SYSSIGNAL_H) \
588 $(SYSTTY_H) \
589 $(SYSWAIT_H) \
590 $(TERMHOOKS_H)
591
592$(BLD)/casefiddle.$(O) : \
593 $(SRC)/casefiddle.c \
594 $(SRC)/commands.h \
595 $(SRC)/composite.h \
596 $(SRC)/keymap.h \
597 $(SRC)/syntax.h \
598 $(BUFFER_H) \
599 $(CHARACTER_H) \
600 $(CONFIG_H) \
601 $(LISP_H)
602
603$(BLD)/casetab.$(O) : \
604 $(SRC)/casetab.c \
605 $(BUFFER_H) \
606 $(CHARACTER_H) \
607 $(CONFIG_H) \
608 $(LISP_H)
609
610$(BLD)/category.$(O) : \
611 $(SRC)/category.c \
612 $(SRC)/category.h \
613 $(SRC)/keymap.h \
614 $(BUFFER_H) \
615 $(CHARACTER_H) \
616 $(CHARSET_H) \
617 $(CONFIG_H) \
618 $(LISP_H)
619
620$(BLD)/ccl.$(O) : \
621 $(SRC)/ccl.c \
622 $(CCL_H) \
623 $(CHARACTER_H) \
624 $(CHARSET_H) \
625 $(CODING_H) \
626 $(CONFIG_H) \
627 $(LISP_H)
628
629$(BLD)/character.$(O) : \
630 $(SRC)/character.c \
631 $(SRC)/composite.h \
632 $(SRC)/disptab.h \
633 $(GNU_LIB)/intprops.h \
634 $(BUFFER_H) \
635 $(CHARACTER_H) \
636 $(CHARSET_H) \
637 $(CONFIG_H) \
638 $(LISP_H)
639
640$(BLD)/charset.$(O) : \
641 $(SRC)/charset.c \
642 $(SRC)/disptab.h \
643 $(NT_INC)/unistd.h \
644 $(BUFFER_H) \
645 $(CHARACTER_H) \
646 $(CHARSET_H) \
647 $(CODING_H) \
648 $(CONFIG_H) \
649 $(C_CTYPE_H) \
650 $(LISP_H)
651
652$(BLD)/chartab.$(O) : \
653 $(SRC)/chartab.c \
654 $(CCL_H) \
655 $(CHARACTER_H) \
656 $(CHARSET_H) \
657 $(CONFIG_H) \
658 $(LISP_H)
659
660$(BLD)/cmds.$(O) : \
661 $(SRC)/cmds.c \
662 $(SRC)/commands.h \
663 $(SRC)/keymap.h \
664 $(SRC)/syntax.h \
665 $(BUFFER_H) \
666 $(CHARACTER_H) \
667 $(CONFIG_H) \
668 $(DISPEXTERN_H) \
669 $(FRAME_H) \
670 $(KEYBOARD_H) \
671 $(LISP_H) \
672 $(WINDOW_H)
673
674$(BLD)/coding.$(O) : \
675 $(SRC)/coding.c \
676 $(SRC)/composite.h \
677 $(BUFFER_H) \
678 $(CCL_H) \
679 $(CHARACTER_H) \
680 $(CHARSET_H) \
681 $(CODING_H) \
682 $(CONFIG_H) \
683 $(FRAME_H) \
684 $(LISP_H) \
685 $(TERMHOOKS_H) \
686 $(WINDOW_H)
687
688$(BLD)/composite.$(O) : \
689 $(SRC)/composite.c \
690 $(BUFFER_H) \
691 $(CHARACTER_H) \
692 $(CODING_H) \
693 $(CONFIG_H) \
694 $(DISPEXTERN_H) \
695 $(FONT_H) \
696 $(FRAME_H) \
697 $(INTERVALS_H) \
698 $(LISP_H) \
699 $(TERMHOOKS_H) \
700 $(WINDOW_H)
701
702$(BLD)/data.$(O) : \
703 $(SRC)/data.c \
704 $(SRC)/keymap.h \
705 $(SRC)/puresize.h \
706 $(GNU_LIB)/intprops.h \
707 $(BUFFER_H) \
708 $(CHARACTER_H) \
709 $(CONFIG_H) \
710 $(FONT_H) \
711 $(FRAME_H) \
712 $(KEYBOARD_H) \
713 $(LISP_H) \
714 $(SYSSIGNAL_H) \
715 $(TERMHOOKS_H)
716
717$(BLD)/dired.$(O) : \
718 $(SRC)/dired.c \
719 $(SRC)/blockinput.h \
720 $(SRC)/commands.h \
721 $(SRC)/regex.h \
722 $(NT_INC)/dirent.h \
723 $(NT_INC)/pwd.h \
724 $(NT_INC)/sys/stat.h \
725 $(NT_INC)/unistd.h \
726 $(BUFFER_H) \
727 $(CHARACTER_H) \
728 $(CHARSET_H) \
729 $(CODING_H) \
730 $(CONFIG_H) \
731 $(FILEMODE_H) \
732 $(GRP_H) \
733 $(LISP_H) \
734 $(STAT_TIME_H) \
735 $(SYSTIME_H)
736
737$(BLD)/dispnew.$(O) : \
738 $(SRC)/dispnew.c \
739 $(SRC)/blockinput.h \
740 $(SRC)/cm.h \
741 $(SRC)/commands.h \
742 $(SRC)/disptab.h \
743 $(SRC)/indent.h \
744 $(SRC)/termchar.h \
745 $(SRC)/w32.h \
746 $(NT_INC)/unistd.h \
747 $(GNU_LIB)/fpending.h \
748 $(BUFFER_H) \
749 $(CHARACTER_H) \
750 $(CONFIG_H) \
751 $(DISPEXTERN_H) \
752 $(FRAME_H) \
753 $(INTERVALS_H) \
754 $(KEYBOARD_H) \
755 $(LISP_H) \
756 $(PROCESS_H) \
757 $(SYSSIGNAL_H) \
758 $(SYSTIME_H) \
759 $(TERMHOOKS_H) \
760 $(W32TERM_H) \
761 $(WINDOW_H)
762
763$(BLD)/doc.$(O) : \
764 $(SRC)/doc.c \
765 $(SRC)/buildobj.h \
766 $(SRC)/keymap.h \
767 $(NT_INC)/sys/file.h \
768 $(NT_INC)/unistd.h \
769 $(BUFFER_H) \
770 $(CHARACTER_H) \
771 $(CONFIG_H) \
772 $(C_CTYPE_H) \
773 $(KEYBOARD_H) \
774 $(LISP_H)
775
776$(BLD)/doprnt.$(O) : \
777 $(SRC)/doprnt.c \
778 $(NT_INC)/unistd.h \
779 $(CHARACTER_H) \
780 $(CONFIG_H) \
781 $(LISP_H)
782
783$(BLD)/editfns.$(O) : \
784 $(SRC)/editfns.c \
785 $(SRC)/blockinput.h \
786 $(NT_INC)/pwd.h \
787 $(NT_INC)/unistd.h \
788 $(GNU_LIB)/intprops.h \
789 $(GNU_LIB)/strftime.h \
790 $(GNU_LIB)/verify.h \
791 $(BUFFER_H) \
792 $(CHARACTER_H) \
793 $(CODING_H) \
794 $(CONFIG_H) \
795 $(FRAME_H) \
796 $(GRP_H) \
797 $(INTERVALS_H) \
798 $(LISP_H) \
799 $(SYSTIME_H) \
800 $(WINDOW_H)
801
802$(BLD)/emacs.$(O) : \
803 $(SRC)/emacs.c \
804 $(SRC)/blockinput.h \
805 $(SRC)/commands.h \
806 $(SRC)/gnutls.h \
807 $(SRC)/keymap.h \
808 $(SRC)/unexec.h \
809 $(SRC)/w32.h \
810 $(SRC)/w32common.h \
811 $(SRC)/w32heap.h \
812 $(SRC)/w32select.h \
813 $(NT_INC)/sys/file.h \
814 $(NT_INC)/unistd.h \
815 $(GNU_LIB)/close-stream.h \
816 $(ATIMER_H) \
817 $(BUFFER_H) \
818 $(CHARACTER_H) \
819 $(CONFIG_H) \
820 $(FRAME_H) \
821 $(INTERVALS_H) \
822 $(KEYBOARD_H) \
823 $(LISP_H) \
824 $(PROCESS_H) \
825 $(SYSSIGNAL_H) \
826 $(SYSTTY_H) \
827 $(TERMHOOKS_H) \
828 $(W32FONT_H) \
829 $(W32TERM_H) \
830 $(WINDOW_H)
831
832$(BLD)/eval.$(O) : \
833 $(SRC)/eval.c \
834 $(SRC)/blockinput.h \
835 $(SRC)/commands.h \
836 $(CONFIG_H) \
837 $(DISPEXTERN_H) \
838 $(FRAME_H) \
839 $(KEYBOARD_H) \
840 $(LISP_H)
841
842$(BLD)/fileio.$(O) : \
843 $(SRC)/fileio.c \
844 $(SRC)/blockinput.h \
845 $(SRC)/commands.h \
846 $(SRC)/w32.h \
847 $(NT_INC)/pwd.h \
848 $(NT_INC)/sys/acl.h \
849 $(NT_INC)/sys/file.h \
850 $(NT_INC)/sys/stat.h \
851 $(NT_INC)/unistd.h \
852 $(GNU_LIB)/allocator.h \
853 $(ACL_H) \
854 $(BUFFER_H) \
855 $(CAREADLINKAT_H) \
856 $(CHARACTER_H) \
857 $(CODING_H) \
858 $(CONFIG_H) \
859 $(C_CTYPE_H) \
860 $(DISPEXTERN_H) \
861 $(FRAME_H) \
862 $(INTERVALS_H) \
863 $(LISP_H) \
864 $(STAT_TIME_H) \
865 $(SYSTIME_H) \
866 $(WINDOW_H)
867
868$(BLD)/filelock.$(O) : \
869 $(SRC)/filelock.c \
870 $(SRC)/w32.h \
871 $(NT_INC)/pwd.h \
872 $(NT_INC)/sys/file.h \
873 $(NT_INC)/sys/stat.h \
874 $(NT_INC)/unistd.h \
875 $(BUFFER_H) \
876 $(CHARACTER_H) \
877 $(CODING_H) \
878 $(CONFIG_H) \
879 $(C_CTYPE_H) \
880 $(LISP_H) \
881 $(SYSTIME_H)
882
883$(BLD)/firstfile.$(O) : \
884 $(SRC)/firstfile.c \
885 $(CONFIG_H)
886
887$(BLD)/floatfns.$(O) : \
888 $(SRC)/floatfns.c \
889 $(CONFIG_H) \
890 $(LISP_H)
891
892$(BLD)/fns.$(O) : \
893 $(SRC)/fns.c \
894 $(SRC)/blockinput.h \
895 $(SRC)/commands.h \
896 $(SRC)/keymap.h \
897 $(NT_INC)/unistd.h \
898 $(GNU_LIB)/intprops.h \
899 $(BUFFER_H) \
900 $(CHARACTER_H) \
901 $(CODING_H) \
902 $(CONFIG_H) \
903 $(FRAME_H) \
904 $(INTERVALS_H) \
905 $(KEYBOARD_H) \
906 $(LANGINFO_H) \
907 $(LISP_H) \
908 $(MD5_H) \
909 $(SHA1_H) \
910 $(SHA256_H) \
911 $(SHA512_H) \
912 $(WINDOW_H)
913
914$(BLD)/font.$(O) : \
915 $(SRC)/font.c \
916 $(SRC)/composite.h \
917 $(SRC)/fontset.h \
918 $(BUFFER_H) \
919 $(CHARACTER_H) \
920 $(CHARSET_H) \
921 $(CONFIG_H) \
922 $(C_CTYPE_H) \
923 $(DISPEXTERN_H) \
924 $(FONT_H) \
925 $(FRAME_H) \
926 $(LISP_H) \
927 $(W32TERM_H) \
928 $(WINDOW_H)
929
930$(BLD)/fontset.$(O) : \
931 $(SRC)/fontset.c \
932 $(SRC)/blockinput.h \
933 $(SRC)/fontset.h \
934 $(BUFFER_H) \
935 $(CCL_H) \
936 $(CHARACTER_H) \
937 $(CHARSET_H) \
938 $(CONFIG_H) \
939 $(DISPEXTERN_H) \
940 $(FONT_H) \
941 $(FRAME_H) \
942 $(INTERVALS_H) \
943 $(KEYBOARD_H) \
944 $(LISP_H) \
945 $(TERMHOOKS_H) \
946 $(W32TERM_H) \
947 $(WINDOW_H)
948
949$(BLD)/frame.$(O) : \
950 $(SRC)/frame.c \
951 $(SRC)/blockinput.h \
952 $(SRC)/commands.h \
953 $(SRC)/fontset.h \
954 $(SRC)/termchar.h \
955 $(BUFFER_H) \
956 $(CHARACTER_H) \
957 $(CONFIG_H) \
958 $(C_CTYPE_H) \
959 $(DISPEXTERN_H) \
960 $(FONT_H) \
961 $(FRAME_H) \
962 $(KEYBOARD_H) \
963 $(LISP_H) \
964 $(TERMHOOKS_H) \
965 $(W32TERM_H) \
966 $(WINDOW_H)
967
968$(BLD)/fringe.$(O) : \
969 $(SRC)/fringe.c \
970 $(SRC)/blockinput.h \
971 $(BUFFER_H) \
972 $(CHARACTER_H) \
973 $(CONFIG_H) \
974 $(DISPEXTERN_H) \
975 $(FRAME_H) \
976 $(LISP_H) \
977 $(TERMHOOKS_H) \
978 $(WINDOW_H)
979
980$(BLD)/gmalloc.$(O) : \
981 $(SRC)/gmalloc.c \
982 $(SRC)/w32heap.h \
983 $(NT_INC)/stdint.h \
984 $(NT_INC)/unistd.h \
985 $(CONFIG_H)
986
987$(BLD)/gnutls.$(O) : \
988 $(SRC)/gnutls.c \
989 $(SRC)/w32.h \
990 $(CONFIG_H) \
991 $(LISP_H) \
992 $(PROCESS_H)
993
994$(BLD)/xml.$(O) : \
995 $(SRC)/xml.c \
996 $(SRC)/w32.h \
997 $(BUFFER_H) \
998 $(CHARACTER_H) \
999 $(CONFIG_H) \
1000 $(LISP_H)
1001
1002$(BLD)/profiler.$(O) : \
1003 $(SRC)/profiler.c \
1004 $(CONFIG_H) \
1005 $(LISP_H) \
1006 $(SYSSIGNAL_H) \
1007 $(SYSTIME_H)
1008
1009$(BLD)/image.$(O) : \
1010 $(SRC)/image.c \
1011 $(SRC)/blockinput.h \
1012 $(SRC)/epaths.h \
1013 $(SRC)/w32.h \
1014 $(NT_INC)/unistd.h \
1015 $(CHARACTER_H) \
1016 $(CODING_H) \
1017 $(CONFIG_H) \
1018 $(C_CTYPE_H) \
1019 $(DISPEXTERN_H) \
1020 $(FONT_H) \
1021 $(FRAME_H) \
1022 $(LISP_H) \
1023 $(SYSTIME_H) \
1024 $(TERMHOOKS_H) \
1025 $(W32TERM_H) \
1026 $(WINDOW_H)
1027
1028$(BLD)/indent.$(O) : \
1029 $(SRC)/indent.c \
1030 $(SRC)/category.h \
1031 $(SRC)/composite.h \
1032 $(SRC)/disptab.h \
1033 $(SRC)/indent.h \
1034 $(SRC)/region-cache.h \
1035 $(SRC)/termchar.h \
1036 $(BUFFER_H) \
1037 $(CHARACTER_H) \
1038 $(CONFIG_H) \
1039 $(DISPEXTERN_H) \
1040 $(FRAME_H) \
1041 $(INTERVALS_H) \
1042 $(KEYBOARD_H) \
1043 $(LISP_H) \
1044 $(WINDOW_H)
1045
1046$(BLD)/insdel.$(O) : \
1047 $(SRC)/insdel.c \
1048 $(SRC)/blockinput.h \
1049 $(SRC)/region-cache.h \
1050 $(GNU_LIB)/intprops.h \
1051 $(BUFFER_H) \
1052 $(CHARACTER_H) \
1053 $(CONFIG_H) \
1054 $(INTERVALS_H) \
1055 $(LISP_H) \
1056 $(WINDOW_H)
1057
1058$(BLD)/intervals.$(O) : \
1059 $(SRC)/intervals.c \
1060 $(SRC)/keymap.h \
1061 $(SRC)/puresize.h \
1062 $(GNU_LIB)/intprops.h \
1063 $(BUFFER_H) \
1064 $(CHARACTER_H) \
1065 $(CONFIG_H) \
1066 $(INTERVALS_H) \
1067 $(KEYBOARD_H) \
1068 $(LISP_H)
1069
1070$(BLD)/keyboard.$(O) : \
1071 $(SRC)/keyboard.c \
1072 $(SRC)/blockinput.h \
1073 $(SRC)/commands.h \
1074 $(SRC)/disptab.h \
1075 $(SRC)/keymap.h \
1076 $(SRC)/macros.h \
1077 $(SRC)/puresize.h \
1078 $(SRC)/syntax.h \
1079 $(SRC)/termchar.h \
1080 $(SRC)/termopts.h \
1081 $(NT_INC)/sys/ioctl.h \
1082 $(NT_INC)/unistd.h \
1083 $(ATIMER_H) \
1084 $(BUFFER_H) \
1085 $(CHARACTER_H) \
1086 $(CONFIG_H) \
1087 $(DISPEXTERN_H) \
1088 $(FRAME_H) \
1089 $(INTERVALS_H) \
1090 $(KEYBOARD_H) \
1091 $(LISP_H) \
1092 $(PROCESS_H) \
1093 $(SYSSIGNAL_H) \
1094 $(SYSTIME_H) \
1095 $(TERMHOOKS_H) \
1096 $(W32TERM_H) \
1097 $(WINDOW_H)
1098
1099$(BLD)/keymap.$(O) : \
1100 $(SRC)/keymap.c \
1101 $(SRC)/blockinput.h \
1102 $(SRC)/commands.h \
1103 $(SRC)/keymap.h \
1104 $(SRC)/puresize.h \
1105 $(BUFFER_H) \
1106 $(CHARACTER_H) \
1107 $(CHARSET_H) \
1108 $(CONFIG_H) \
1109 $(FRAME_H) \
1110 $(INTERVALS_H) \
1111 $(KEYBOARD_H) \
1112 $(LISP_H) \
1113 $(TERMHOOKS_H) \
1114 $(WINDOW_H)
1115
1116$(BLD)/lastfile.$(O) : \
1117 $(SRC)/lastfile.c \
1118 $(CONFIG_H)
1119
1120$(BLD)/lread.$(O) : \
1121 $(SRC)/lread.c \
1122 $(SRC)/blockinput.h \
1123 $(SRC)/commands.h \
1124 $(SRC)/epaths.h \
1125 $(NT_INC)/sys/file.h \
1126 $(NT_INC)/sys/stat.h \
1127 $(NT_INC)/unistd.h \
1128 $(BUFFER_H) \
1129 $(CHARACTER_H) \
1130 $(CHARSET_H) \
1131 $(CODING_H) \
1132 $(CONFIG_H) \
1133 $(FRAME_H) \
1134 $(INTERVALS_H) \
1135 $(KEYBOARD_H) \
1136 $(LISP_H) \
1137 $(STAT_TIME_H) \
1138 $(TERMHOOKS_H)
1139
1140$(BLD)/macros.$(O) : \
1141 $(SRC)/macros.c \
1142 $(SRC)/commands.h \
1143 $(SRC)/macros.h \
1144 $(BUFFER_H) \
1145 $(CHARACTER_H) \
1146 $(CONFIG_H) \
1147 $(KEYBOARD_H) \
1148 $(LISP_H) \
1149 $(WINDOW_H)
1150
1151$(BLD)/marker.$(O) : \
1152 $(SRC)/marker.c \
1153 $(BUFFER_H) \
1154 $(CHARACTER_H) \
1155 $(CONFIG_H) \
1156 $(LISP_H)
1157
1158$(BLD)/menu.$(O) : \
1159 $(SRC)/menu.c \
1160 $(SRC)/blockinput.h \
1161 $(SRC)/keymap.h \
1162 $(CONFIG_H) \
1163 $(DISPEXTERN_H) \
1164 $(FRAME_H) \
1165 $(KEYBOARD_H) \
1166 $(LISP_H) \
1167 $(MENU_H) \
1168 $(TERMHOOKS_H) \
1169 $(W32TERM_H) \
1170 $(WINDOW_H)
1171
1172$(BLD)/minibuf.$(O) : \
1173 $(SRC)/minibuf.c \
1174 $(SRC)/commands.h \
1175 $(SRC)/keymap.h \
1176 $(SRC)/syntax.h \
1177 $(BUFFER_H) \
1178 $(CHARACTER_H) \
1179 $(CONFIG_H) \
1180 $(DISPEXTERN_H) \
1181 $(FRAME_H) \
1182 $(INTERVALS_H) \
1183 $(KEYBOARD_H) \
1184 $(LISP_H) \
1185 $(TERMHOOKS_H) \
1186 $(WINDOW_H)
1187
1188$(BLD)/w32.$(O) : \
1189 $(SRC)/w32.c \
1190 $(SRC)/w32.h \
1191 $(SRC)/w32common.h \
1192 $(SRC)/w32heap.h \
1193 $(SRC)/w32select.h \
1194 $(NT_INC)/dirent.h \
1195 $(NT_INC)/pwd.h \
1196 $(NT_INC)/sys/acl.h \
1197 $(NT_INC)/sys/file.h \
1198 $(NT_INC)/sys/time.h \
1199 $(GNU_LIB)/allocator.h \
1200 $(CAREADLINKAT_H) \
1201 $(CODING_H) \
1202 $(CONFIG_H) \
1203 $(DISPEXTERN_H) \
1204 $(GRP_H) \
1205 $(LISP_H) \
1206 $(PROCESS_H) \
1207 $(SOCKET_H) \
1208 $(SYSTIME_H)
1209
1210$(BLD)/w32heap.$(O) : \
1211 $(SRC)/w32heap.c \
1212 $(SRC)/w32common.h \
1213 $(SRC)/w32heap.h \
1214 $(CONFIG_H) \
1215 $(LISP_H)
1216
1217$(BLD)/w32inevt.$(O) : \
1218 $(SRC)/w32inevt.c \
1219 $(SRC)/blockinput.h \
1220 $(SRC)/termchar.h \
1221 $(SRC)/w32heap.h \
1222 $(SRC)/w32inevt.h \
1223 $(CONFIG_H) \
1224 $(DISPEXTERN_H) \
1225 $(FRAME_H) \
1226 $(KEYBOARD_H) \
1227 $(LISP_H) \
1228 $(TERMHOOKS_H) \
1229 $(W32TERM_H) \
1230 $(WINDOW_H)
1231
1232$(BLD)/w32proc.$(O) : \
1233 $(SRC)/w32proc.c \
1234 $(SRC)/w32.h \
1235 $(SRC)/w32common.h \
1236 $(SRC)/w32heap.h \
1237 $(NT_INC)/nl_types.h \
1238 $(NT_INC)/sys/file.h \
1239 $(CODING_H) \
1240 $(CONFIG_H) \
1241 $(DISPEXTERN_H) \
1242 $(LANGINFO_H) \
1243 $(LISP_H) \
1244 $(PROCESS_H) \
1245 $(SYSSIGNAL_H) \
1246 $(SYSTIME_H) \
1247 $(SYSWAIT_H) \
1248 $(W32TERM_H)
1249
1250$(BLD)/w32console.$(O) : \
1251 $(SRC)/w32console.c \
1252 $(SRC)/disptab.h \
1253 $(SRC)/termchar.h \
1254 $(SRC)/w32common.h \
1255 $(SRC)/w32inevt.h \
1256 $(CHARACTER_H) \
1257 $(CODING_H) \
1258 $(CONFIG_H) \
1259 $(DISPEXTERN_H) \
1260 $(FRAME_H) \
1261 $(LISP_H) \
1262 $(TERMHOOKS_H) \
1263 $(W32TERM_H) \
1264 $(WINDOW_H)
1265
1266$(BLD)/print.$(O) : \
1267 $(SRC)/print.c \
1268 $(SRC)/blockinput.h \
1269 $(SRC)/termchar.h \
1270 $(BUFFER_H) \
1271 $(CHARACTER_H) \
1272 $(CHARSET_H) \
1273 $(CONFIG_H) \
1274 $(DISPEXTERN_H) \
1275 $(FONT_H) \
1276 $(FRAME_H) \
1277 $(FTOASTR_H) \
1278 $(INTERVALS_H) \
1279 $(KEYBOARD_H) \
1280 $(LISP_H) \
1281 $(PROCESS_H) \
1282 $(TERMHOOKS_H) \
1283 $(WINDOW_H)
1284
1285$(BLD)/process.$(O) : \
1286 $(SRC)/process.c \
1287 $(SRC)/blockinput.h \
1288 $(SRC)/commands.h \
1289 $(SRC)/composite.h \
1290 $(SRC)/gnutls.h \
1291 $(SRC)/sysselect.h \
1292 $(SRC)/termopts.h \
1293 $(NT_INC)/arpa/inet.h \
1294 $(NT_INC)/netdb.h \
1295 $(NT_INC)/netinet/in.h \
1296 $(NT_INC)/sys/file.h \
1297 $(NT_INC)/sys/ioctl.h \
1298 $(NT_INC)/sys/stat.h \
1299 $(NT_INC)/unistd.h \
1300 $(ATIMER_H) \
1301 $(BUFFER_H) \
1302 $(CHARACTER_H) \
1303 $(CODING_H) \
1304 $(CONFIG_H) \
1305 $(C_CTYPE_H) \
1306 $(DISPEXTERN_H) \
1307 $(FRAME_H) \
1308 $(KEYBOARD_H) \
1309 $(LISP_H) \
1310 $(PROCESS_H) \
1311 $(SIG2STR_H) \
1312 $(SOCKET_H) \
1313 $(SYSSIGNAL_H) \
1314 $(SYSTIME_H) \
1315 $(SYSTTY_H) \
1316 $(SYSWAIT_H) \
1317 $(TERMHOOKS_H) \
1318 $(W32TERM_H) \
1319 $(WINDOW_H)
1320
1321$(BLD)/ralloc.$(O) : \
1322 $(SRC)/ralloc.c \
1323 $(SRC)/blockinput.h \
1324 $(SRC)/getpagesize.h \
1325 $(NT_INC)/unistd.h \
1326 $(CONFIG_H) \
1327 $(LISP_H)
1328
1329$(BLD)/regex.$(O) : \
1330 $(SRC)/regex.c \
1331 $(SRC)/category.h \
1332 $(SRC)/regex.h \
1333 $(SRC)/syntax.h \
1334 $(BUFFER_H) \
1335 $(CHARACTER_H) \
1336 $(CONFIG_H) \
1337 $(LISP_H)
1338
1339$(BLD)/region-cache.$(O) : \
1340 $(SRC)/region-cache.c \
1341 $(SRC)/region-cache.h \
1342 $(BUFFER_H) \
1343 $(CHARACTER_H) \
1344 $(CONFIG_H) \
1345 $(LISP_H)
1346
1347$(BLD)/scroll.$(O) : \
1348 $(SRC)/scroll.c \
1349 $(SRC)/termchar.h \
1350 $(CONFIG_H) \
1351 $(DISPEXTERN_H) \
1352 $(FRAME_H) \
1353 $(KEYBOARD_H) \
1354 $(LISP_H) \
1355 $(TERMHOOKS_H) \
1356 $(WINDOW_H)
1357
1358$(BLD)/search.$(O) : \
1359 $(SRC)/search.c \
1360 $(SRC)/blockinput.h \
1361 $(SRC)/category.h \
1362 $(SRC)/commands.h \
1363 $(SRC)/regex.h \
1364 $(SRC)/region-cache.h \
1365 $(SRC)/syntax.h \
1366 $(BUFFER_H) \
1367 $(CHARACTER_H) \
1368 $(CHARSET_H) \
1369 $(CONFIG_H) \
1370 $(INTERVALS_H) \
1371 $(LISP_H)
1372
1373$(BLD)/sound.$(O) : \
1374 $(SRC)/sound.c \
1375 $(NT_INC)/unistd.h \
1376 $(ATIMER_H) \
1377 $(CONFIG_H) \
1378 $(DISPEXTERN_H) \
1379 $(LISP_H) \
1380 $(SYSSIGNAL_H)
1381
1382$(BLD)/syntax.$(O) : \
1383 $(SRC)/syntax.c \
1384 $(SRC)/category.h \
1385 $(SRC)/commands.h \
1386 $(SRC)/keymap.h \
1387 $(SRC)/regex.h \
1388 $(SRC)/syntax.h \
1389 $(BUFFER_H) \
1390 $(CHARACTER_H) \
1391 $(CONFIG_H) \
1392 $(INTERVALS_H) \
1393 $(LISP_H)
1394
1395$(BLD)/sysdep.$(O) : \
1396 $(SRC)/sysdep.c \
1397 $(SRC)/blockinput.h \
1398 $(SRC)/cm.h \
1399 $(SRC)/sysselect.h \
1400 $(SRC)/termchar.h \
1401 $(SRC)/termopts.h \
1402 $(NT_INC)/netdb.h \
1403 $(NT_INC)/pwd.h \
1404 $(NT_INC)/sys/file.h \
1405 $(NT_INC)/sys/param.h \
1406 $(NT_INC)/sys/stat.h \
1407 $(NT_INC)/unistd.h \
1408 $(GNU_LIB)/execinfo.h \
1409 $(GNU_LIB)/utimens.h \
1410 $(CONFIG_H) \
1411 $(C_CTYPE_H) \
1412 $(DISPEXTERN_H) \
1413 $(FRAME_H) \
1414 $(GRP_H) \
1415 $(KEYBOARD_H) \
1416 $(LISP_H) \
1417 $(PROCESS_H) \
1418 $(SOCKET_H) \
1419 $(SYSSIGNAL_H) \
1420 $(SYSTIME_H) \
1421 $(SYSTTY_H) \
1422 $(SYSWAIT_H) \
1423 $(TERMHOOKS_H) \
1424 $(WINDOW_H)
1425
1426$(BLD)/term.$(O) : \
1427 $(SRC)/term.c \
1428 $(SRC)/blockinput.h \
1429 $(SRC)/cm.h \
1430 $(SRC)/composite.h \
1431 $(SRC)/disptab.h \
1432 $(SRC)/keymap.h \
1433 $(SRC)/termchar.h \
1434 $(SRC)/tparam.h \
1435 $(NT_INC)/sys/file.h \
1436 $(NT_INC)/sys/time.h \
1437 $(NT_INC)/unistd.h \
1438 $(BUFFER_H) \
1439 $(CHARACTER_H) \
1440 $(CHARSET_H) \
1441 $(CODING_H) \
1442 $(CONFIG_H) \
1443 $(DISPEXTERN_H) \
1444 $(FRAME_H) \
1445 $(INTERVALS_H) \
1446 $(KEYBOARD_H) \
1447 $(LISP_H) \
1448 $(SYSSIGNAL_H) \
1449 $(SYSTTY_H) \
1450 $(TERMHOOKS_H) \
1451 $(W32TERM_H) \
1452 $(WINDOW_H)
1453
1454$(BLD)/terminal.$(O) : \
1455 $(SRC)/terminal.c \
1456 $(SRC)/termchar.h \
1457 $(CHARSET_H) \
1458 $(CODING_H) \
1459 $(CONFIG_H) \
1460 $(FRAME_H) \
1461 $(KEYBOARD_H) \
1462 $(LISP_H) \
1463 $(TERMHOOKS_H)
1464
1465$(BLD)/textprop.$(O) : \
1466 $(SRC)/textprop.c \
1467 $(BUFFER_H) \
1468 $(CHARACTER_H) \
1469 $(CONFIG_H) \
1470 $(INTERVALS_H) \
1471 $(LISP_H) \
1472 $(WINDOW_H)
1473
1474$(BLD)/tparam.$(O) : \
1475 $(SRC)/tparam.c \
1476 $(SRC)/tparam.h \
1477 $(CONFIG_H) \
1478 $(LISP_H)
1479
1480$(BLD)/undo.$(O) : \
1481 $(SRC)/undo.c \
1482 $(SRC)/commands.h \
1483 $(BUFFER_H) \
1484 $(CHARACTER_H) \
1485 $(CONFIG_H) \
1486 $(LISP_H) \
1487 $(WINDOW_H)
1488
1489$(BLD)/unexw32.$(O) : \
1490 $(SRC)/unexw32.c \
1491 $(SRC)/unexec.h \
1492 $(SRC)/w32.h \
1493 $(SRC)/w32common.h \
1494 $(SRC)/w32heap.h \
1495 $(CONFIG_H) \
1496 $(LISP_H)
1497
1498$(BLD)/vm-limit.$(O) : \
1499 $(SRC)/vm-limit.c \
1500 $(SRC)/w32heap.h \
1501 $(NT_INC)/unistd.h \
1502 $(CONFIG_H) \
1503 $(LISP_H)
1504
1505$(BLD)/window.$(O) : \
1506 $(SRC)/window.c \
1507 $(SRC)/blockinput.h \
1508 $(SRC)/commands.h \
1509 $(SRC)/disptab.h \
1510 $(SRC)/indent.h \
1511 $(SRC)/keymap.h \
1512 $(SRC)/termchar.h \
1513 $(BUFFER_H) \
1514 $(CHARACTER_H) \
1515 $(CONFIG_H) \
1516 $(DISPEXTERN_H) \
1517 $(FRAME_H) \
1518 $(INTERVALS_H) \
1519 $(KEYBOARD_H) \
1520 $(LISP_H) \
1521 $(TERMHOOKS_H) \
1522 $(W32TERM_H) \
1523 $(WINDOW_H)
1524
1525$(BLD)/xdisp.$(O) : \
1526 $(SRC)/xdisp.c \
1527 $(SRC)/blockinput.h \
1528 $(SRC)/commands.h \
1529 $(SRC)/disptab.h \
1530 $(SRC)/fontset.h \
1531 $(SRC)/indent.h \
1532 $(SRC)/keymap.h \
1533 $(SRC)/macros.h \
1534 $(SRC)/region-cache.h \
1535 $(SRC)/termchar.h \
1536 $(SRC)/termopts.h \
1537 $(ATIMER_H) \
1538 $(BUFFER_H) \
1539 $(CHARACTER_H) \
1540 $(CHARSET_H) \
1541 $(CODING_H) \
1542 $(CONFIG_H) \
1543 $(DISPEXTERN_H) \
1544 $(FONT_H) \
1545 $(FRAME_H) \
1546 $(INTERVALS_H) \
1547 $(KEYBOARD_H) \
1548 $(LISP_H) \
1549 $(PROCESS_H) \
1550 $(TERMHOOKS_H) \
1551 $(W32TERM_H) \
1552 $(WINDOW_H)
1553
1554$(BLD)/xfaces.$(O) : \
1555 $(SRC)/xfaces.c \
1556 $(SRC)/blockinput.h \
1557 $(SRC)/fontset.h \
1558 $(SRC)/termchar.h \
1559 $(NT_INC)/sys/stat.h \
1560 $(BUFFER_H) \
1561 $(CHARACTER_H) \
1562 $(CHARSET_H) \
1563 $(CONFIG_H) \
1564 $(C_CTYPE_H) \
1565 $(DISPEXTERN_H) \
1566 $(FONT_H) \
1567 $(FRAME_H) \
1568 $(INTERVALS_H) \
1569 $(KEYBOARD_H) \
1570 $(LISP_H) \
1571 $(TERMHOOKS_H) \
1572 $(W32TERM_H) \
1573 $(WINDOW_H)
1574
1575$(BLD)/w32fns.$(O) : \
1576 $(SRC)/w32fns.c \
1577 $(SRC)/blockinput.h \
1578 $(SRC)/epaths.h \
1579 $(SRC)/fontset.h \
1580 $(SRC)/w32.h \
1581 $(SRC)/w32common.h \
1582 $(SRC)/w32heap.h \
1583 $(NT_INC)/unistd.h \
1584 $(BUFFER_H) \
1585 $(CCL_H) \
1586 $(CHARACTER_H) \
1587 $(CHARSET_H) \
1588 $(CODING_H) \
1589 $(CONFIG_H) \
1590 $(DISPEXTERN_H) \
1591 $(FONT_H) \
1592 $(FRAME_H) \
1593 $(INTERVALS_H) \
1594 $(KEYBOARD_H) \
1595 $(LISP_H) \
1596 $(SYSTIME_H) \
1597 $(TERMHOOKS_H) \
1598 $(W32FONT_H) \
1599 $(W32TERM_H) \
1600 $(WINDOW_H)
1601
1602$(BLD)/w32menu.$(O) : \
1603 $(SRC)/w32menu.c \
1604 $(SRC)/blockinput.h \
1605 $(SRC)/keymap.h \
1606 $(SRC)/w32common.h \
1607 $(BUFFER_H) \
1608 $(CHARACTER_H) \
1609 $(CHARSET_H) \
1610 $(CODING_H) \
1611 $(CONFIG_H) \
1612 $(DISPEXTERN_H) \
1613 $(FRAME_H) \
1614 $(KEYBOARD_H) \
1615 $(LISP_H) \
1616 $(MENU_H) \
1617 $(TERMHOOKS_H) \
1618 $(W32TERM_H) \
1619 $(WINDOW_H)
1620
1621$(BLD)/w32term.$(O) : \
1622 $(SRC)/w32term.c \
1623 $(SRC)/blockinput.h \
1624 $(SRC)/disptab.h \
1625 $(SRC)/fontset.h \
1626 $(SRC)/keymap.h \
1627 $(SRC)/termchar.h \
1628 $(SRC)/termopts.h \
1629 $(SRC)/w32heap.h \
1630 $(NT_INC)/sys/stat.h \
1631 $(ATIMER_H) \
1632 $(BUFFER_H) \
1633 $(CCL_H) \
1634 $(CHARACTER_H) \
1635 $(CHARSET_H) \
1636 $(CODING_H) \
1637 $(CONFIG_H) \
1638 $(DISPEXTERN_H) \
1639 $(FONT_H) \
1640 $(FRAME_H) \
1641 $(INTERVALS_H) \
1642 $(KEYBOARD_H) \
1643 $(LISP_H) \
1644 $(PROCESS_H) \
1645 $(SYSTIME_H) \
1646 $(SYSTTY_H) \
1647 $(TERMHOOKS_H) \
1648 $(W32FONT_H) \
1649 $(W32TERM_H) \
1650 $(WINDOW_H)
1651
1652$(BLD)/w32select.$(O) : \
1653 $(SRC)/w32select.c \
1654 $(SRC)/blockinput.h \
1655 $(SRC)/composite.h \
1656 $(SRC)/w32common.h \
1657 $(CHARSET_H) \
1658 $(CODING_H) \
1659 $(CONFIG_H) \
1660 $(KEYBOARD_H) \
1661 $(LISP_H) \
1662 $(W32TERM_H)
1663
1664$(BLD)/w32reg.$(O) : \
1665 $(SRC)/w32reg.c \
1666 $(SRC)/blockinput.h \
1667 $(CONFIG_H) \
1668 $(LISP_H) \
1669 $(W32TERM_H)
1670
1671$(BLD)/w32xfns.$(O) : \
1672 $(SRC)/w32xfns.c \
1673 $(SRC)/blockinput.h \
1674 $(SRC)/fontset.h \
1675 $(CHARSET_H) \
1676 $(CONFIG_H) \
1677 $(FRAME_H) \
1678 $(KEYBOARD_H) \
1679 $(LISP_H) \
1680 $(W32TERM_H)
1681
1682$(BLD)/w32font.$(O) : \
1683 $(SRC)/w32font.c \
1684 $(SRC)/fontset.h \
1685 $(CHARACTER_H) \
1686 $(CHARSET_H) \
1687 $(CODING_H) \
1688 $(CONFIG_H) \
1689 $(DISPEXTERN_H) \
1690 $(FONT_H) \
1691 $(FRAME_H) \
1692 $(LISP_H) \
1693 $(W32FONT_H) \
1694 $(W32TERM_H)
1695
1696$(BLD)/w32uniscribe.$(O) : \
1697 $(SRC)/w32uniscribe.c \
1698 $(SRC)/composite.h \
1699 $(SRC)/fontset.h \
1700 $(CHARACTER_H) \
1701 $(CHARSET_H) \
1702 $(CONFIG_H) \
1703 $(DISPEXTERN_H) \
1704 $(FONT_H) \
1705 $(FRAME_H) \
1706 $(LISP_H) \
1707 $(W32FONT_H) \
1708 $(W32TERM_H)
1709
1710$(BLD)/w32notify.$(O) : \
1711 $(SRC)/w32notify.c \
1712 $(SRC)/w32.h \
1713 $(SRC)/w32common.h \
1714 $(CODING_H) \
1715 $(CONFIG_H) \
1716 $(FRAME_H) \
1717 $(KEYBOARD_H) \
1718 $(LISP_H) \
1719 $(TERMHOOKS_H) \
1720 $(W32TERM_H)
1721
1722# Each object file depends on stamp_BLD, because in parallel builds we must
1723# make sure $(BLD) exists before starting compilations.
1724#
1725$(OBJ0) $(OBJ1) $(OBJ2) $(BLD)/lastfile.$(O) $(BLD)/firstfile.$(O): stamp_BLD
diff --git a/src/nsimage.m b/src/nsimage.m
index 9302cd2f212..13e8504f460 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -102,7 +102,7 @@ ns_load_image (struct frame *f, struct image *img,
102 102
103 if (eImg == nil) 103 if (eImg == nil)
104 { 104 {
105 add_to_log ("Unable to load image %s", img->spec, Qnil); 105 add_to_log ("Unable to load image %s", img->spec);
106 return 0; 106 return 0;
107 } 107 }
108 108
diff --git a/src/regex.c b/src/regex.c
index 38c5e350541..dcf286454b3 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -1544,9 +1544,9 @@ do { \
1544 DEBUG_PRINT (" Push frame index: %zd\n", fail_stack.frame); \ 1544 DEBUG_PRINT (" Push frame index: %zd\n", fail_stack.frame); \
1545 PUSH_FAILURE_INT (fail_stack.frame); \ 1545 PUSH_FAILURE_INT (fail_stack.frame); \
1546 \ 1546 \
1547 DEBUG_PRINT (" Push string %p: `", string_place); \ 1547 DEBUG_PRINT (" Push string %p: \"", string_place); \
1548 DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, size2);\ 1548 DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, size2);\
1549 DEBUG_PRINT ("'\n"); \ 1549 DEBUG_PRINT ("\"\n"); \
1550 PUSH_FAILURE_POINTER (string_place); \ 1550 PUSH_FAILURE_POINTER (string_place); \
1551 \ 1551 \
1552 DEBUG_PRINT (" Push pattern %p: ", pattern); \ 1552 DEBUG_PRINT (" Push pattern %p: ", pattern); \
@@ -1598,9 +1598,9 @@ do { \
1598 on_failure_keep_string_jump opcode, and we want to throw away the \ 1598 on_failure_keep_string_jump opcode, and we want to throw away the \
1599 saved NULL, thus retaining our current position in the string. */ \ 1599 saved NULL, thus retaining our current position in the string. */ \
1600 str = POP_FAILURE_POINTER (); \ 1600 str = POP_FAILURE_POINTER (); \
1601 DEBUG_PRINT (" Popping string %p: `", str); \ 1601 DEBUG_PRINT (" Popping string %p: \"", str); \
1602 DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \ 1602 DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \
1603 DEBUG_PRINT ("'\n"); \ 1603 DEBUG_PRINT ("\"\n"); \
1604 \ 1604 \
1605 fail_stack.frame = POP_FAILURE_INT (); \ 1605 fail_stack.frame = POP_FAILURE_INT (); \
1606 DEBUG_PRINT (" Popping frame index: %zd\n", fail_stack.frame); \ 1606 DEBUG_PRINT (" Popping frame index: %zd\n", fail_stack.frame); \
@@ -5127,9 +5127,9 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
5127 5127
5128 DEBUG_PRINT ("The compiled pattern is: "); 5128 DEBUG_PRINT ("The compiled pattern is: ");
5129 DEBUG_PRINT_COMPILED_PATTERN (bufp, p, pend); 5129 DEBUG_PRINT_COMPILED_PATTERN (bufp, p, pend);
5130 DEBUG_PRINT ("The string to match is: `"); 5130 DEBUG_PRINT ("The string to match is: \"");
5131 DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2); 5131 DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2);
5132 DEBUG_PRINT ("'\n"); 5132 DEBUG_PRINT ("\"\n");
5133 5133
5134 /* This loops over pattern commands. It exits by returning from the 5134 /* This loops over pattern commands. It exits by returning from the
5135 function if the match is complete, or it drops through if the match 5135 function if the match is complete, or it drops through if the match
@@ -5435,7 +5435,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1,
5435 && buf_ch == '\000')) 5435 && buf_ch == '\000'))
5436 goto fail; 5436 goto fail;
5437 5437
5438 DEBUG_PRINT (" Matched `%d'.\n", *d); 5438 DEBUG_PRINT (" Matched \"%d\".\n", *d);
5439 d += buf_charlen; 5439 d += buf_charlen;
5440 } 5440 }
5441 break; 5441 break;
diff --git a/src/regex.h b/src/regex.h
index 3dfecf0a7e5..c89ca46d4bd 100644
--- a/src/regex.h
+++ b/src/regex.h
@@ -603,7 +603,9 @@ typedef wchar_t re_wchar_t;
603# define re_wctype_to_bit(cc) 0 603# define re_wctype_to_bit(cc) 0
604#else 604#else
605# define CHAR_CLASS_MAX_LENGTH 9 /* Namely, `multibyte'. */ 605# define CHAR_CLASS_MAX_LENGTH 9 /* Namely, `multibyte'. */
606# define btowc(c) c 606# ifndef emacs
607# define btowc(c) c
608# endif
607 609
608/* Character classes. */ 610/* Character classes. */
609typedef enum { RECC_ERROR = 0, 611typedef enum { RECC_ERROR = 0,
diff --git a/src/syntax.c b/src/syntax.c
index 0d8b08c01b6..d543a5f9823 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -1333,7 +1333,10 @@ DEFUN ("internal-describe-syntax-value", Finternal_describe_syntax_value,
1333 insert_string (" (nestable)"); 1333 insert_string (" (nestable)");
1334 1334
1335 if (prefix) 1335 if (prefix)
1336 insert_string (",\n\t is a prefix character for `backward-prefix-chars'"); 1336 insert1 (CALLN (Fformat,
1337 (build_string
1338 (",\n\t is a prefix character for "
1339 uLSQM"backward-prefix-chars"uRSQM))));
1337 1340
1338 return syntax; 1341 return syntax;
1339} 1342}
diff --git a/src/sysdep.c b/src/sysdep.c
index df3e573a6ea..25f111ad0ed 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1612,7 +1612,7 @@ handle_arith_signal (int sig)
1612 xsignal0 (Qarith_error); 1612 xsignal0 (Qarith_error);
1613} 1613}
1614 1614
1615#ifdef HAVE_STACK_OVERFLOW_HANDLING 1615#if defined HAVE_STACK_OVERFLOW_HANDLING && !defined WINDOWSNT
1616 1616
1617/* Alternate stack used by SIGSEGV handler below. */ 1617/* Alternate stack used by SIGSEGV handler below. */
1618 1618
@@ -1708,7 +1708,7 @@ init_sigsegv (void)
1708 return sigaction (SIGSEGV, &sa, NULL) < 0 ? 0 : 1; 1708 return sigaction (SIGSEGV, &sa, NULL) < 0 ? 0 : 1;
1709} 1709}
1710 1710
1711#else /* not HAVE_STACK_OVERFLOW_HANDLING */ 1711#else /* not HAVE_STACK_OVERFLOW_HANDLING or WINDOWSNT */
1712 1712
1713static bool 1713static bool
1714init_sigsegv (void) 1714init_sigsegv (void)
@@ -1716,7 +1716,7 @@ init_sigsegv (void)
1716 return 0; 1716 return 0;
1717} 1717}
1718 1718
1719#endif /* HAVE_STACK_OVERFLOW_HANDLING */ 1719#endif /* HAVE_STACK_OVERFLOW_HANDLING && !WINDOWSNT */
1720 1720
1721static void 1721static void
1722deliver_arith_signal (int sig) 1722deliver_arith_signal (int sig)
diff --git a/src/w32fns.c b/src/w32fns.c
index ad93bd41851..2cb99c90057 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -2941,7 +2941,11 @@ get_wm_chars (HWND aWnd, int *buf, int buflen, int ignore_ctrl, int ctrl,
2941 environments!) should have different values. Moreover, switching to a 2941 environments!) should have different values. Moreover, switching to a
2942 non-Emacs window with the same language environment, and using (dead)keys 2942 non-Emacs window with the same language environment, and using (dead)keys
2943 there would change the value stored in the kernel, but not this value. */ 2943 there would change the value stored in the kernel, but not this value. */
2944static int after_deadkey = 0; 2944/* A layout may emit deadkey=0. It looks like this would reset the state
2945 of the kernel's finite automaton (equivalent to emiting 0-length string,
2946 which is otherwise impossible in the dead-key map of a layout).
2947 Be ready to treat the case when this delivers WM_(SYS)DEADCHAR. */
2948static int after_deadkey = -1;
2945 2949
2946int 2950int
2947deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam, 2951deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
@@ -2951,7 +2955,7 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
2951 points to a keypress. 2955 points to a keypress.
2952 (However, the "old style" TranslateMessage() would deliver at most 16 of 2956 (However, the "old style" TranslateMessage() would deliver at most 16 of
2953 them.) Be on a safe side, and prepare to treat many more. */ 2957 them.) Be on a safe side, and prepare to treat many more. */
2954 int ctrl_cnt, buf[1024], count, is_dead, after_dead = (after_deadkey != -1); 2958 int ctrl_cnt, buf[1024], count, is_dead, after_dead = (after_deadkey > 0);
2955 2959
2956 /* Since the keypress processing logic of Windows has a lot of state, it 2960 /* Since the keypress processing logic of Windows has a lot of state, it
2957 is important to call TranslateMessage() for every keyup/keydown, AND 2961 is important to call TranslateMessage() for every keyup/keydown, AND
@@ -3131,7 +3135,7 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
3131 } 3135 }
3132 else if (wmsg.dwModifiers & (alt_modifier | meta_modifier) 3136 else if (wmsg.dwModifiers & (alt_modifier | meta_modifier)
3133 || (console_modifiers 3137 || (console_modifiers
3134 & (RIGHT_WIN_PRESSED | RIGHT_WIN_PRESSED 3138 & (LEFT_WIN_PRESSED | RIGHT_WIN_PRESSED
3135 | APPS_PRESSED | SCROLLLOCK_ON))) 3139 | APPS_PRESSED | SCROLLLOCK_ON)))
3136 { 3140 {
3137 /* Pure Alt (or combination of Alt, Win, APPS, scrolllock. */ 3141 /* Pure Alt (or combination of Alt, Win, APPS, scrolllock. */
@@ -9239,18 +9243,71 @@ static DWORD except_code;
9239static PVOID except_addr; 9243static PVOID except_addr;
9240 9244
9241#ifndef CYGWIN 9245#ifndef CYGWIN
9246
9247/* Stack overflow recovery. */
9248
9249/* Re-establish the guard page at stack limit. This is needed because
9250 when a stack overflow is detected, Windows removes the guard bit
9251 from the guard page, so if we don't re-establish that protection,
9252 the next stack overflow will cause a crash. */
9253void
9254w32_reset_stack_overflow_guard (void)
9255{
9256 /* MinGW headers don't declare this (should be in malloc.h). */
9257 _CRTIMP int __cdecl _resetstkoflw (void);
9258
9259 /* We ignore the return value. If _resetstkoflw fails, the next
9260 stack overflow will crash the program. */
9261 (void)_resetstkoflw ();
9262}
9263
9264static void
9265stack_overflow_handler (void)
9266{
9267 /* Hard GC error may lead to stack overflow caused by
9268 too nested calls to mark_object. No way to survive. */
9269 if (gc_in_progress)
9270 terminate_due_to_signal (SIGSEGV, 40);
9271#ifdef _WIN64
9272 /* See ms-w32.h: MinGW64's longjmp crashes if invoked in this context. */
9273 __builtin_longjmp (return_to_command_loop, 1);
9274#else
9275 sys_longjmp (return_to_command_loop, 1);
9276#endif
9277}
9278
9242/* This handler records the exception code and the address where it 9279/* This handler records the exception code and the address where it
9243 was triggered so that this info could be included in the backtrace. 9280 was triggered so that this info could be included in the backtrace.
9244 Without that, the backtrace in some cases has no information 9281 Without that, the backtrace in some cases has no information
9245 whatsoever about the offending code, and looks as if the top-level 9282 whatsoever about the offending code, and looks as if the top-level
9246 exception handler in the MinGW startup code di the one that 9283 exception handler in the MinGW startup code was the one that
9247 crashed. */ 9284 crashed. We also recover from stack overflow, by calling our stack
9285 overflow handler that jumps back to top level. */
9248static LONG CALLBACK 9286static LONG CALLBACK
9249my_exception_handler (EXCEPTION_POINTERS * exception_data) 9287my_exception_handler (EXCEPTION_POINTERS * exception_data)
9250{ 9288{
9251 except_code = exception_data->ExceptionRecord->ExceptionCode; 9289 except_code = exception_data->ExceptionRecord->ExceptionCode;
9252 except_addr = exception_data->ExceptionRecord->ExceptionAddress; 9290 except_addr = exception_data->ExceptionRecord->ExceptionAddress;
9253 9291
9292 /* If this is a stack overflow exception, attempt to recover. */
9293 if (exception_data->ExceptionRecord->ExceptionCode == EXCEPTION_STACK_OVERFLOW
9294 && exception_data->ExceptionRecord->NumberParameters == 2
9295 /* We can only longjmp to top level from the main thread. */
9296 && GetCurrentThreadId () == dwMainThreadId)
9297 {
9298 /* Call stack_overflow_handler (). */
9299#ifdef _WIN64
9300 exception_data->ContextRecord->Rip = (DWORD_PTR) &stack_overflow_handler;
9301#else
9302 exception_data->ContextRecord->Eip = (DWORD_PTR) &stack_overflow_handler;
9303#endif
9304 /* Zero this out, so the stale address of the stack overflow
9305 exception we handled is not displayed in some future
9306 unrelated crash. */
9307 except_addr = 0;
9308 return EXCEPTION_CONTINUE_EXECUTION;
9309 }
9310
9254 if (prev_exception_handler) 9311 if (prev_exception_handler)
9255 return prev_exception_handler (exception_data); 9312 return prev_exception_handler (exception_data);
9256 return EXCEPTION_EXECUTE_HANDLER; 9313 return EXCEPTION_EXECUTE_HANDLER;
@@ -9448,6 +9505,10 @@ globals_of_w32fns (void)
9448 InitCommonControls (); 9505 InitCommonControls ();
9449 9506
9450 syms_of_w32uniscribe (); 9507 syms_of_w32uniscribe ();
9508
9509 /* Needed for recovery from C stack overflows in batch mode. */
9510 if (noninteractive)
9511 dwMainThreadId = GetCurrentThreadId ();
9451} 9512}
9452 9513
9453#ifdef NTGUI_UNICODE 9514#ifdef NTGUI_UNICODE
diff --git a/src/xdisp.c b/src/xdisp.c
index e45cb8702b2..6d747ebc5ce 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4187,13 +4187,13 @@ handle_invisible_prop (struct it *it)
4187 4187
4188 if (STRINGP (it->string)) 4188 if (STRINGP (it->string))
4189 { 4189 {
4190 Lisp_Object end_charpos, limit, charpos; 4190 Lisp_Object end_charpos, limit;
4191 4191
4192 /* Get the value of the invisible text property at the 4192 /* Get the value of the invisible text property at the
4193 current position. Value will be nil if there is no such 4193 current position. Value will be nil if there is no such
4194 property. */ 4194 property. */
4195 charpos = make_number (IT_STRING_CHARPOS (*it)); 4195 end_charpos = make_number (IT_STRING_CHARPOS (*it));
4196 prop = Fget_text_property (charpos, Qinvisible, it->string); 4196 prop = Fget_text_property (end_charpos, Qinvisible, it->string);
4197 invis = TEXT_PROP_MEANS_INVISIBLE (prop); 4197 invis = TEXT_PROP_MEANS_INVISIBLE (prop);
4198 4198
4199 if (invis != 0 && IT_STRING_CHARPOS (*it) < it->end_charpos) 4199 if (invis != 0 && IT_STRING_CHARPOS (*it) < it->end_charpos)
@@ -4211,8 +4211,12 @@ handle_invisible_prop (struct it *it)
4211 XSETINT (limit, len); 4211 XSETINT (limit, len);
4212 do 4212 do
4213 { 4213 {
4214 end_charpos = Fnext_single_property_change (charpos, Qinvisible, 4214 end_charpos
4215 it->string, limit); 4215 = Fnext_single_property_change (end_charpos, Qinvisible,
4216 it->string, limit);
4217 /* Since LIMIT is always an integer, so should be the
4218 value returned by Fnext_single_property_change. */
4219 eassert (INTEGERP (end_charpos));
4216 if (INTEGERP (end_charpos)) 4220 if (INTEGERP (end_charpos))
4217 { 4221 {
4218 endpos = XFASTINT (end_charpos); 4222 endpos = XFASTINT (end_charpos);
@@ -4221,6 +4225,8 @@ handle_invisible_prop (struct it *it)
4221 if (invis == 2) 4225 if (invis == 2)
4222 display_ellipsis_p = true; 4226 display_ellipsis_p = true;
4223 } 4227 }
4228 else /* Should never happen; but if it does, exit the loop. */
4229 endpos = len;
4224 } 4230 }
4225 while (invis != 0 && endpos < len); 4231 while (invis != 0 && endpos < len);
4226 4232
@@ -4256,7 +4262,7 @@ handle_invisible_prop (struct it *it)
4256 } 4262 }
4257 else 4263 else
4258 { 4264 {
4259 IT_STRING_CHARPOS (*it) = XFASTINT (end_charpos); 4265 IT_STRING_CHARPOS (*it) = endpos;
4260 compute_string_pos (&it->current.string_pos, old, it->string); 4266 compute_string_pos (&it->current.string_pos, old, it->string);
4261 } 4267 }
4262 } 4268 }
@@ -5966,6 +5972,7 @@ pop_it (struct it *it)
5966{ 5972{
5967 struct iterator_stack_entry *p; 5973 struct iterator_stack_entry *p;
5968 bool from_display_prop = it->from_disp_prop_p; 5974 bool from_display_prop = it->from_disp_prop_p;
5975 ptrdiff_t prev_pos = IT_CHARPOS (*it);
5969 5976
5970 eassert (it->sp > 0); 5977 eassert (it->sp > 0);
5971 --it->sp; 5978 --it->sp;
@@ -6054,6 +6061,11 @@ pop_it (struct it *it)
6054 && IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos) 6061 && IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos)
6055 || (CONSP (it->object) && it->method == GET_FROM_STRETCH)); 6062 || (CONSP (it->object) && it->method == GET_FROM_STRETCH));
6056 } 6063 }
6064 /* If we move the iterator over text covered by a display property
6065 to a new buffer position, any info about previously seen overlays
6066 is no longer valid. */
6067 if (from_display_prop && it->sp == 0 && CHARPOS (it->position) != prev_pos)
6068 it->ignore_overlay_strings_at_pos_p = false;
6057} 6069}
6058 6070
6059 6071
@@ -6878,9 +6890,10 @@ get_next_display_element (struct it *it)
6878 non-ASCII spaces and hyphens specially. */ 6890 non-ASCII spaces and hyphens specially. */
6879 if (! ASCII_CHAR_P (c) && ! NILP (Vnobreak_char_display)) 6891 if (! ASCII_CHAR_P (c) && ! NILP (Vnobreak_char_display))
6880 { 6892 {
6881 if (c == 0xA0) 6893 if (c == NO_BREAK_SPACE)
6882 nonascii_space_p = true; 6894 nonascii_space_p = true;
6883 else if (c == 0xAD || c == 0x2010 || c == 0x2011) 6895 else if (c == SOFT_HYPHEN || c == HYPHEN
6896 || c == NON_BREAKING_HYPHEN)
6884 nonascii_hyphen_p = true; 6897 nonascii_hyphen_p = true;
6885 } 6898 }
6886 6899
@@ -9784,27 +9797,50 @@ include the height of both, if present, in the return value. */)
9784 Messages 9797 Messages
9785 ***********************************************************************/ 9798 ***********************************************************************/
9786 9799
9800/* Return the number of arguments the format string FORMAT needs. */
9801
9802static ptrdiff_t
9803format_nargs (char const *format)
9804{
9805 ptrdiff_t nargs = 0;
9806 for (char const *p = format; (p = strchr (p, '%')); p++)
9807 if (p[1] == '%')
9808 p++;
9809 else
9810 nargs++;
9811 return nargs;
9812}
9787 9813
9788/* Add a message with format string FORMAT and arguments ARG1 and ARG2 9814/* Add a message with format string FORMAT and formatted arguments
9789 to *Messages*. */ 9815 to *Messages*. */
9790 9816
9791void 9817void
9792add_to_log (const char *format, Lisp_Object arg1, Lisp_Object arg2) 9818add_to_log (const char *format, ...)
9793{ 9819{
9794 Lisp_Object msg, fmt; 9820 va_list ap;
9795 char *buffer; 9821 va_start (ap, format);
9796 ptrdiff_t len; 9822 vadd_to_log (format, ap);
9797 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; 9823 va_end (ap);
9798 USE_SAFE_ALLOCA; 9824}
9799
9800 fmt = msg = Qnil;
9801 GCPRO4 (fmt, msg, arg1, arg2);
9802 9825
9803 fmt = build_string (format); 9826void
9804 msg = CALLN (Fformat, fmt, arg1, arg2); 9827vadd_to_log (char const *format, va_list ap)
9828{
9829 ptrdiff_t nargs = 1 + format_nargs (format);
9830 Lisp_Object args[10];
9831 eassert (nargs <= ARRAYELTS (args));
9832 args[0] = build_string (format);
9833 for (ptrdiff_t i = 1; i <= nargs; i++)
9834 args[i] = va_arg (ap, Lisp_Object);
9835 Lisp_Object msg = Qnil;
9836 struct gcpro gcpro1, gcpro2;
9837 GCPRO2 (args, msg);
9838 gcpro1.nvars = nargs;
9839 msg = Fformat (nargs, args);
9805 9840
9806 len = SBYTES (msg) + 1; 9841 ptrdiff_t len = SBYTES (msg) + 1;
9807 buffer = SAFE_ALLOCA (len); 9842 USE_SAFE_ALLOCA;
9843 char *buffer = SAFE_ALLOCA (len);
9808 memcpy (buffer, SDATA (msg), len); 9844 memcpy (buffer, SDATA (msg), len);
9809 9845
9810 message_dolog (buffer, len - 1, true, false); 9846 message_dolog (buffer, len - 1, true, false);
@@ -10239,9 +10275,9 @@ message_with_string (const char *m, Lisp_Object string, bool log)
10239/* Dump an informative message to the minibuf. If M is 0, clear out 10275/* Dump an informative message to the minibuf. If M is 0, clear out
10240 any existing message, and let the mini-buffer text show through. 10276 any existing message, and let the mini-buffer text show through.
10241 10277
10242 The message must be safe ASCII only. If strings may contain escape 10278 The message must be safe ASCII and the format must not contain ` or
10243 sequences or non-ASCII characters, convert them to Lisp strings and 10279 '. If your message and format do not fit into this category,
10244 use Fmessage. */ 10280 convert your arguments to Lisp objects and use Fmessage instead. */
10245 10281
10246static void ATTRIBUTE_FORMAT_PRINTF (1, 0) 10282static void ATTRIBUTE_FORMAT_PRINTF (1, 0)
10247vmessage (const char *m, va_list ap) 10283vmessage (const char *m, va_list ap)
@@ -19216,7 +19252,7 @@ append_space_for_newline (struct it *it, bool default_face_p)
19216 funny, and height of empty lines will be incorrect. */ 19252 funny, and height of empty lines will be incorrect. */
19217 g = it->glyph_row->glyphs[TEXT_AREA] + n; 19253 g = it->glyph_row->glyphs[TEXT_AREA] + n;
19218 struct font *font = face->font ? face->font : FRAME_FONT (it->f); 19254 struct font *font = face->font ? face->font : FRAME_FONT (it->f);
19219 if (n == 0 || it->glyph_row->height < font->pixel_size) 19255 if (n == 0)
19220 { 19256 {
19221 Lisp_Object height, total_height; 19257 Lisp_Object height, total_height;
19222 int extra_line_spacing = it->extra_line_spacing; 19258 int extra_line_spacing = it->extra_line_spacing;
diff --git a/src/xfaces.c b/src/xfaces.c
index f0b6d393f99..d519578198b 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -797,7 +797,7 @@ load_pixmap (struct frame *f, Lisp_Object name)
797 797
798 if (bitmap_id < 0) 798 if (bitmap_id < 0)
799 { 799 {
800 add_to_log ("Invalid or undefined bitmap `%s'", name, Qnil); 800 add_to_log ("Invalid or undefined bitmap "uLSQM"%s"uRSQM, name);
801 bitmap_id = 0; 801 bitmap_id = 0;
802 } 802 }
803 else 803 else
@@ -1099,7 +1099,7 @@ load_color2 (struct frame *f, struct face *face, Lisp_Object name,
1099 to the values in an existing cell. */ 1099 to the values in an existing cell. */
1100 if (!defined_color (f, SSDATA (name), color, true)) 1100 if (!defined_color (f, SSDATA (name), color, true))
1101 { 1101 {
1102 add_to_log ("Unable to load color \"%s\"", name, Qnil); 1102 add_to_log ("Unable to load color \"%s\"", name);
1103 1103
1104 switch (target_index) 1104 switch (target_index)
1105 { 1105 {
@@ -2247,7 +2247,7 @@ merge_face_ref (struct frame *f, Lisp_Object face_ref, Lisp_Object *to,
2247 else 2247 else
2248 { 2248 {
2249 if (err_msgs) 2249 if (err_msgs)
2250 add_to_log ("Invalid face color", color_name, Qnil); 2250 add_to_log ("Invalid face color %S", color_name);
2251 ok = false; 2251 ok = false;
2252 } 2252 }
2253 } 2253 }
@@ -2452,7 +2452,7 @@ merge_face_ref (struct frame *f, Lisp_Object face_ref, Lisp_Object *to,
2452 /* FACE_REF ought to be a face name. */ 2452 /* FACE_REF ought to be a face name. */
2453 ok = merge_named_face (f, face_ref, to, named_merge_points); 2453 ok = merge_named_face (f, face_ref, to, named_merge_points);
2454 if (!ok && err_msgs) 2454 if (!ok && err_msgs)
2455 add_to_log ("Invalid face reference: %s", face_ref, Qnil); 2455 add_to_log ("Invalid face reference: %s", face_ref);
2456 } 2456 }
2457 2457
2458 return ok; 2458 return ok;
diff --git a/src/xselect.c b/src/xselect.c
index bd2d65e795f..b54ddd83237 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -2147,8 +2147,10 @@ x_clipboard_manager_save (Lisp_Object frame)
2147static Lisp_Object 2147static Lisp_Object
2148x_clipboard_manager_error_1 (Lisp_Object err) 2148x_clipboard_manager_error_1 (Lisp_Object err)
2149{ 2149{
2150 AUTO_STRING (format, "X clipboard manager error: %s\n\ 2150 Lisp_Object format
2151If the problem persists, set `x-select-enable-clipboard-manager' to nil."); 2151 = build_string ("X clipboard manager error: %s\n"
2152 "If the problem persists, set "
2153 uLSQM"x-select-enable-clipboard-manager"uRSQM" to nil.");
2152 CALLN (Fmessage, format, CAR (CDR (err))); 2154 CALLN (Fmessage, format, CAR (CDR (err)));
2153 return Qnil; 2155 return Qnil;
2154} 2156}
diff --git a/src/xsettings.c b/src/xsettings.c
index 028487b91ee..f6a8bfdebd9 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -537,10 +537,10 @@ parse_settings (unsigned char *prop,
537 else 537 else
538 settings->seen &= ~SEEN_RGBA; 538 settings->seen &= ~SEEN_RGBA;
539 } 539 }
540 else if (strcmp (name, "Xft/DPI") == 0) 540 else if (strcmp (name, "Xft/DPI") == 0 && ival != (CARD32) -1)
541 { 541 {
542 settings->seen |= SEEN_DPI; 542 settings->seen |= SEEN_DPI;
543 settings->dpi = (double)ival/1024.0; 543 settings->dpi = ival / 1024.0;
544 } 544 }
545 else if (strcmp (name, "Xft/lcdfilter") == 0) 545 else if (strcmp (name, "Xft/lcdfilter") == 0)
546 { 546 {