diff options
| author | Noah Friedman | 2015-08-17 13:00:36 -0700 |
|---|---|---|
| committer | Noah Friedman | 2015-08-17 13:00:36 -0700 |
| commit | a84225d29c40a8cf3f860d2b58517102eef33436 (patch) | |
| tree | 8c26150075a37ad5c141d0c5c7aa08eee9749814 /src | |
| parent | b892438d7a424e61f174d8b8a57e78077aa96a0c (diff) | |
| parent | 62f65abf279da30e6fff4bcf3462b548aeb2dc97 (diff) | |
| download | emacs-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.c | 16 | ||||
| -rw-r--r-- | src/bidi.c | 8 | ||||
| -rw-r--r-- | src/character.h | 24 | ||||
| -rw-r--r-- | src/charset.c | 2 | ||||
| -rw-r--r-- | src/composite.c | 2 | ||||
| -rw-r--r-- | src/dispnew.c | 2 | ||||
| -rw-r--r-- | src/doc.c | 70 | ||||
| -rw-r--r-- | src/doprnt.c | 60 | ||||
| -rw-r--r-- | src/editfns.c | 202 | ||||
| -rw-r--r-- | src/emacs.c | 34 | ||||
| -rw-r--r-- | src/image.c | 229 | ||||
| -rw-r--r-- | src/keyboard.c | 247 | ||||
| -rw-r--r-- | src/keyboard.h | 2 | ||||
| -rw-r--r-- | src/lisp.h | 22 | ||||
| -rw-r--r-- | src/lread.c | 11 | ||||
| -rw-r--r-- | src/makefile.w32-in | 1725 | ||||
| -rw-r--r-- | src/nsimage.m | 2 | ||||
| -rw-r--r-- | src/regex.c | 14 | ||||
| -rw-r--r-- | src/regex.h | 4 | ||||
| -rw-r--r-- | src/syntax.c | 5 | ||||
| -rw-r--r-- | src/sysdep.c | 6 | ||||
| -rw-r--r-- | src/w32fns.c | 71 | ||||
| -rw-r--r-- | src/xdisp.c | 88 | ||||
| -rw-r--r-- | src/xfaces.c | 8 | ||||
| -rw-r--r-- | src/xselect.c | 6 | ||||
| -rw-r--r-- | src/xsettings.c | 4 |
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, | |||
| 3765 | static Lisp_Object | 3765 | static Lisp_Object |
| 3766 | run_finalizer_handler (Lisp_Object args) | 3766 | run_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. */ | ||
| 63 | enum | ||
| 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) |
| @@ -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. */ | ||
| 690 | enum | ||
| 691 | { | ||
| 692 | LEFT_SINGLE_QUOTATION_MARK = 0x2018, | ||
| 693 | uLSQM0 = 0xE2, uLSQM1 = 0x80, uLSQM2 = 0x98, | ||
| 694 | uRSQM0 = 0xE2, uRSQM1 = 0x80, uRSQM2 = 0x99, | ||
| 695 | }; | ||
| 696 | static unsigned char const LSQM[] = { uLSQM0, uLSQM1, uLSQM2 }; | 688 | static unsigned char const LSQM[] = { uLSQM0, uLSQM1, uLSQM2 }; |
| 697 | static unsigned char const RSQM[] = { uRSQM0, uRSQM1, uRSQM2 }; | 689 | static unsigned char const RSQM[] = { uRSQM0, uRSQM1, uRSQM2 }; |
| 698 | 690 | ||
| 691 | static bool | ||
| 692 | default_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. */ | ||
| 705 | enum text_quoting_style | ||
| 706 | text_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 | |||
| 699 | DEFUN ("substitute-command-keys", Fsubstitute_command_keys, | 718 | DEFUN ("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 | |||
| 1044 | displayable, and like ‘grave’ otherwise. */); | 1052 | displayable, 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, | |||
| 3800 | The first argument is a format control string. | 3800 | The first argument is a format control string. |
| 3801 | The other arguments are substituted into it to make the result, a string. | 3801 | The other arguments are substituted into it to make the result, a string. |
| 3802 | 3802 | ||
| 3803 | The format control string may contain %-sequences meaning to substitute | 3803 | The format control string may contain ordinary characters, |
| 3804 | the next available argument: | 3804 | %-sequences meaning to substitute the next available argument, |
| 3805 | and 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 | |||
| 3846 | decimal point itself is omitted. For %s and %S, the precision | 3847 | decimal point itself is omitted. For %s and %S, the precision |
| 3847 | specifier truncates the string to the given width. | 3848 | specifier truncates the string to the given width. |
| 3848 | 3849 | ||
| 3850 | \\=‘ and \\=’ means print left and right quotes as per | ||
| 3851 | ‘text-quoting-style’. | ||
| 3852 | |||
| 3853 | Return the first argument if it contains no format directives. | ||
| 3854 | Otherwise, return a new string. | ||
| 3855 | |||
| 3849 | usage: (format STRING &rest OBJECTS) */) | 3856 | usage: (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. */ | ||
| 352 | static bool | ||
| 353 | using_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: | |||
| 2423 | Anything else (in Emacs 24.1, the possibilities are: aix, berkeley-unix, | 2447 | Anything else (in Emacs 24.1, the possibilities are: aix, berkeley-unix, |
| 2424 | hpux, irix, usg-unix-v) indicates some sort of Unix system. */); | 2448 | hpux, 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 | ||
| 638 | static void | 638 | static void |
| 639 | image_error (const char *format, Lisp_Object arg1, Lisp_Object arg2) | 639 | image_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 | |||
| 5809 | my_png_warning (png_struct *png_ptr, const char *msg) | 5817 | my_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) | |||
| 629 | void | 629 | void |
| 630 | cancel_echoing (void) | 630 | cancel_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 () | |||
| 832 | void | 832 | void |
| 833 | single_kboard_state () | 833 | single_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 | |||
| 843 | not_single_kboard_state (KBOARD *kboard) | 843 | not_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 | |||
| 1929 | poll_for_input (struct atimer *timer) | 1934 | poll_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 \ |
| 2166 | do { if (! polling_stopped_here) stop_polling (); \ | 2171 | do { 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 \ |
| 2170 | do { if (polling_stopped_here) start_polling (); \ | 2175 | do { if (polling_stopped_here) start_polling (); \ |
| 2171 | polling_stopped_here = 0; } while (0) | 2176 | polling_stopped_here = false; } while (0) |
| 2172 | 2177 | ||
| 2173 | static Lisp_Object | 2178 | static Lisp_Object |
| 2174 | read_event_from_main_queue (struct timespec *end_time, | 2179 | read_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 | |||
| 6870 | gobble_input (void) | 6897 | gobble_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) | |||
| 7162 | void | 7189 | void |
| 7163 | process_pending_signals (void) | 7190 | process_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) | |||
| 7214 | void | 7241 | void |
| 7215 | handle_input_available_signal (int sig) | 7242 | handle_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) | |||
| 9990 | void | 10019 | void |
| 9991 | clear_input_pending (void) | 10020 | clear_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 | |||
| 10343 | clear_waiting_for_input (void) | 10372 | clear_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 | |||
| 11527 | if X menus were enabled at configuration | 11556 | if X menus were enabled at configuration |
| 11528 | time and the previous event was a mouse click prefix key. | 11557 | time and the previous event was a mouse click prefix key. |
| 11529 | Otherwise, menu prompting uses the echo area. */); | 11558 | Otherwise, 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. */ |
| 3668 | extern bool noninteractive_need_newline; | 3668 | extern bool noninteractive_need_newline; |
| 3669 | extern Lisp_Object echo_area_buffer[2]; | 3669 | extern Lisp_Object echo_area_buffer[2]; |
| 3670 | extern void add_to_log (const char *, Lisp_Object, Lisp_Object); | 3670 | extern void add_to_log (char const *, ...); |
| 3671 | extern void vadd_to_log (char const *, va_list); | ||
| 3671 | extern void check_message_stack (void); | 3672 | extern void check_message_stack (void); |
| 3672 | extern void setup_echo_area_for_printing (bool); | 3673 | extern void setup_echo_area_for_printing (bool); |
| 3673 | extern bool push_message (void); | 3674 | extern bool push_message (void); |
| @@ -4299,6 +4300,25 @@ extern void set_initial_environment (void); | |||
| 4299 | extern void syms_of_callproc (void); | 4300 | extern void syms_of_callproc (void); |
| 4300 | 4301 | ||
| 4301 | /* Defined in doc.c. */ | 4302 | /* Defined in doc.c. */ |
| 4303 | enum | ||
| 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 | }; | ||
| 4310 | enum 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 | }; | ||
| 4321 | extern enum text_quoting_style text_quoting_style (void); | ||
| 4302 | extern Lisp_Object read_doc_string (Lisp_Object); | 4322 | extern Lisp_Object read_doc_string (Lisp_Object); |
| 4303 | extern Lisp_Object get_doc_string (Lisp_Object, bool, bool); | 4323 | extern Lisp_Object get_doc_string (Lisp_Object, bool, bool); |
| 4304 | extern void syms_of_doc (void); | 4324 | extern 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 | |||
| 20 | ALL = emacs | ||
| 21 | |||
| 22 | .PHONY: $(ALL) | ||
| 23 | |||
| 24 | # Set EMACSLOADPATH correctly (in case already defined in environment). | ||
| 25 | EMACSLOADPATH=$(CURDIR)/../lisp | ||
| 26 | |||
| 27 | # Size in MBs of the static heap in temacs.exe. | ||
| 28 | HEAPSIZE = $(EMACS_HEAPSIZE) | ||
| 29 | |||
| 30 | LOCAL_FLAGS = -Demacs=1 -I../lib -I../nt/inc $(EMACS_EXTRA_C_FLAGS) | ||
| 31 | |||
| 32 | SRC = . | ||
| 33 | EMACS = $(BLD)/emacs.exe | ||
| 34 | TEMACS = $(BLD)/temacs.exe | ||
| 35 | TEMACS_TMP = $(BLD)/temacs.bin | ||
| 36 | TLIB0 = $(BLD)/temacs0.$(A) | ||
| 37 | TLIB1 = $(BLD)/temacs1.$(A) | ||
| 38 | TLIB2 = $(BLD)/temacs2.$(A) | ||
| 39 | TOBJ = $(BLD)/firstfile.$(O) | ||
| 40 | TRES = $(BLD)/emacs.res | ||
| 41 | TLASTLIB = $(BLD)/lastfile.$(A) | ||
| 42 | GNULIB = ../lib/$(BLD)/libgnu.$(A) | ||
| 43 | |||
| 44 | DOC = $(OBJDIR)/etc/DOC | ||
| 45 | |||
| 46 | FULL_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 | # | ||
| 55 | OBJ0 = $(BLD)/emacs.$(O) | ||
| 56 | |||
| 57 | OBJ1 = $(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 | |||
| 96 | OBJ2 = $(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 | |||
| 140 | LIBS = $(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 | # | ||
| 162 | all: $(ALL) | ||
| 163 | |||
| 164 | # | ||
| 165 | # The dumped executable | ||
| 166 | # | ||
| 167 | emacs: 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 | # | ||
| 178 | temacs: 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. | ||
| 186 | buildobj.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. | ||
| 191 | make-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. | ||
| 201 | make-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 | |||
| 208 | GLOBAL_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 | ||
| 228 | SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ | ||
| 229 | xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o dbusbind.o | ||
| 230 | obj = $(GLOBAL_SOURCES:.c=.o) | ||
| 231 | |||
| 232 | globals.h: gl-stamp | ||
| 233 | @cmd $(SWITCHCHAR)c rem true | ||
| 234 | |||
| 235 | gl-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 | |||
| 242 | bootstrap: 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. | ||
| 250 | bootstrap-temacs-CMD: | ||
| 251 | $(MAKE) $(MFLAGS) $(XMFLAGS) temacs CFLAGS=$(ARGQUOTE)$(ESC_CFLAGS) -DPURESIZE=$(EMACS_PURESIZE)$(ARGQUOTE) | ||
| 252 | |||
| 253 | bootstrap-temacs-SH: | ||
| 254 | $(MAKE) $(MFLAGS) $(XMFLAGS) temacs CFLAGS=$(ARGQUOTE)$(CFLAGS) -DPURESIZE=$(EMACS_PURESIZE)$(ARGQUOTE) | ||
| 255 | |||
| 256 | bootstrap-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 | # | ||
| 263 | bootstrap-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 | # | ||
| 271 | bootstrap-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 | # | ||
| 311 | install: $(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. | ||
| 320 | clean: | ||
| 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 | |||
| 327 | distclean: cleanall | ||
| 328 | - $(DEL) config.h epaths.h Makefile | ||
| 329 | |||
| 330 | maintainer-clean: distclean | ||
| 331 | - $(DEL) TAGS | ||
| 332 | |||
| 333 | cleanall: 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 | |||
| 344 | TAGS: $(OBJ0) $(OBJ1) $(OBJ2) $(CURDIR)/../nt/inc/ms-w32.h | ||
| 345 | $(MAKE) $(MFLAGS) TAGS-$(MAKETYPE) | ||
| 346 | |||
| 347 | TAGS-LISP: $(OBJ0) $(OBJ1) $(OBJ2) | ||
| 348 | $(MAKE) $(MFLAGS) TAGS-LISP-$(MAKETYPE) | ||
| 349 | |||
| 350 | TAGS-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 | |||
| 360 | TAGS-nmake: | ||
| 361 | echo This target is not supported with NMake | ||
| 362 | exit -1 | ||
| 363 | |||
| 364 | frc: | ||
| 365 | TAGS-LISP-gmake: frc | ||
| 366 | $(MAKE) $(MFLAGS) -C ../lisp TAGS-LISP DEST=../src | ||
| 367 | |||
| 368 | TAGS-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 | |||
| 375 | nt-TAGS-gmake: | ||
| 376 | $(MAKE) $(MFLAGS) -C ../nt TAGS | ||
| 377 | |||
| 378 | nt-TAGS-nmake: | ||
| 379 | echo This target is not supported with NMake | ||
| 380 | exit -1 | ||
| 381 | |||
| 382 | full-tags: TAGS TAGS-LISP ../nt/TAGS | ||
| 383 | .PHONY: full-tags | ||
| 384 | |||
| 385 | ### DEPENDENCIES ### | ||
| 386 | |||
| 387 | EMACS_ROOT = .. | ||
| 388 | GNU_LIB = $(EMACS_ROOT)/lib | ||
| 389 | NT_INC = $(EMACS_ROOT)/nt/inc | ||
| 390 | |||
| 391 | ACL_H = $(GNU_LIB)/acl.h \ | ||
| 392 | $(NT_INC)/sys/stat.h \ | ||
| 393 | $(NT_INC)/stdbool.h | ||
| 394 | SYSTIME_H = $(SRC)/systime.h \ | ||
| 395 | $(NT_INC)/sys/time.h \ | ||
| 396 | $(GNU_LIB)/timespec.h | ||
| 397 | ATIMER_H = $(SRC)/atimer.h \ | ||
| 398 | $(NT_INC)/stdbool.h \ | ||
| 399 | $(SYSTIME_H) | ||
| 400 | BUFFER_H = $(SRC)/buffer.h \ | ||
| 401 | $(SYSTIME_H) | ||
| 402 | C_CTYPE_H = $(GNU_LIB)/c-ctype.h \ | ||
| 403 | $(NT_INC)/stdbool.h | ||
| 404 | CAREADLINKAT_H = $(GNU_LIB)/careadlinkat.h \ | ||
| 405 | $(NT_INC)/unistd.h | ||
| 406 | CHARACTER_H = $(SRC)/character.h \ | ||
| 407 | $(GNU_LIB)/verify.h | ||
| 408 | CCL_H = $(SRC)/ccl.h \ | ||
| 409 | $(CHARACTER_H) | ||
| 410 | CHARSET_H = $(SRC)/charset.h \ | ||
| 411 | $(GNU_LIB)/verify.h | ||
| 412 | CODING_H = $(SRC)/coding.h \ | ||
| 413 | $(SRC)/composite.h | ||
| 414 | MS_W32_H = $(NT_INC)/ms-w32.h \ | ||
| 415 | $(NT_INC)/sys/stat.h | ||
| 416 | CONF_POST_H = $(SRC)/conf_post.h \ | ||
| 417 | $(MS_W32_H) | ||
| 418 | CONFIG_H = $(SRC)/config.h \ | ||
| 419 | $(CONF_POST_H) | ||
| 420 | W32GUI_H = $(SRC)/w32gui.h \ | ||
| 421 | $(SYSTIME_H) | ||
| 422 | DISPEXTERN_H = $(SRC)/dispextern.h \ | ||
| 423 | $(GNU_LIB)/c-strcase.h \ | ||
| 424 | $(SYSTIME_H) \ | ||
| 425 | $(W32GUI_H) | ||
| 426 | FILEMODE_H = $(GNU_LIB)/filemode.h \ | ||
| 427 | $(NT_INC)/sys/stat.h | ||
| 428 | FRAME_H = $(SRC)/frame.h \ | ||
| 429 | $(DISPEXTERN_H) | ||
| 430 | FONT_H = $(SRC)/font.h \ | ||
| 431 | $(CCL_H) \ | ||
| 432 | $(FRAME_H) | ||
| 433 | FTOASTR_H = $(GNU_LIB)/ftoastr.h \ | ||
| 434 | $(GNU_LIB)/intprops.h | ||
| 435 | GRP_H = $(NT_INC)/grp.h \ | ||
| 436 | $(NT_INC)/pwd.h | ||
| 437 | INTERVALS_H = $(SRC)/intervals.h \ | ||
| 438 | $(SRC)/composite.h \ | ||
| 439 | $(DISPEXTERN_H) | ||
| 440 | INTTYPES_H = $(NT_INC)/inttypes.h \ | ||
| 441 | $(NT_INC)/stdint.h | ||
| 442 | KEYBOARD_H = $(SRC)/keyboard.h \ | ||
| 443 | $(CODING_H) \ | ||
| 444 | $(SYSTIME_H) | ||
| 445 | LANGINFO_H = $(NT_INC)/langinfo.h \ | ||
| 446 | $(NT_INC)/nl_types.h | ||
| 447 | LISP_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 | ||
| 453 | MD5_H = $(GNU_LIB)/md5.h \ | ||
| 454 | $(NT_INC)/stdint.h | ||
| 455 | MENU_H = $(SRC)/menu.h \ | ||
| 456 | $(SYSTIME_H) | ||
| 457 | PROCESS_H = $(SRC)/process.h \ | ||
| 458 | $(SRC)/gnutls.h \ | ||
| 459 | $(NT_INC)/unistd.h | ||
| 460 | SHA1_H = $(GNU_LIB)/sha1.h \ | ||
| 461 | $(NT_INC)/stdint.h | ||
| 462 | SHA256_H = $(GNU_LIB)/sha256.h \ | ||
| 463 | $(NT_INC)/stdint.h | ||
| 464 | U64_H = $(GNU_LIB)/u64.h \ | ||
| 465 | $(NT_INC)/stdint.h | ||
| 466 | SHA512_H = $(GNU_LIB)/sha512.h \ | ||
| 467 | $(U64_H) | ||
| 468 | SIG2STR_H = $(GNU_LIB)/sig2str.h \ | ||
| 469 | $(GNU_LIB)/intprops.h | ||
| 470 | SOCKET_H = $(NT_INC)/sys/socket.h \ | ||
| 471 | $(SRC)/w32.h | ||
| 472 | STAT_TIME_H = $(GNU_LIB)/stat-time.h \ | ||
| 473 | $(NT_INC)/sys/stat.h | ||
| 474 | SYSSIGNAL_H = $(SRC)/syssignal.h \ | ||
| 475 | $(NT_INC)/stdbool.h | ||
| 476 | SYSTTY_H = $(SRC)/systty.h \ | ||
| 477 | $(NT_INC)/sys/ioctl.h \ | ||
| 478 | $(NT_INC)/unistd.h | ||
| 479 | SYSWAIT_H = $(SRC)/syswait.h \ | ||
| 480 | $(NT_INC)/stdbool.h \ | ||
| 481 | $(NT_INC)/sys/wait.h | ||
| 482 | TERMHOOKS_H = $(SRC)/termhooks.h \ | ||
| 483 | $(SYSTIME_H) | ||
| 484 | W32FONT_H = $(SRC)/w32font.h \ | ||
| 485 | $(FONT_H) | ||
| 486 | W32TERM_H = $(SRC)/w32term.h \ | ||
| 487 | $(ATIMER_H) \ | ||
| 488 | $(FRAME_H) \ | ||
| 489 | $(W32GUI_H) | ||
| 490 | WINDOW_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. */ |
| 609 | typedef enum { RECC_ERROR = 0, | 611 | typedef 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 | ||
| 1713 | static bool | 1713 | static bool |
| 1714 | init_sigsegv (void) | 1714 | init_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 | ||
| 1721 | static void | 1721 | static void |
| 1722 | deliver_arith_signal (int sig) | 1722 | deliver_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. */ |
| 2944 | static 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. */ | ||
| 2948 | static int after_deadkey = -1; | ||
| 2945 | 2949 | ||
| 2946 | int | 2950 | int |
| 2947 | deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam, | 2951 | deliver_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; | |||
| 9239 | static PVOID except_addr; | 9243 | static 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. */ | ||
| 9253 | void | ||
| 9254 | w32_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 | |||
| 9264 | static void | ||
| 9265 | stack_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. */ | ||
| 9248 | static LONG CALLBACK | 9286 | static LONG CALLBACK |
| 9249 | my_exception_handler (EXCEPTION_POINTERS * exception_data) | 9287 | my_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 | |||
| 9802 | static ptrdiff_t | ||
| 9803 | format_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 | ||
| 9791 | void | 9817 | void |
| 9792 | add_to_log (const char *format, Lisp_Object arg1, Lisp_Object arg2) | 9818 | add_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); | 9826 | void |
| 9804 | msg = CALLN (Fformat, fmt, arg1, arg2); | 9827 | vadd_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 | ||
| 10246 | static void ATTRIBUTE_FORMAT_PRINTF (1, 0) | 10282 | static void ATTRIBUTE_FORMAT_PRINTF (1, 0) |
| 10247 | vmessage (const char *m, va_list ap) | 10283 | vmessage (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) | |||
| 2147 | static Lisp_Object | 2147 | static Lisp_Object |
| 2148 | x_clipboard_manager_error_1 (Lisp_Object err) | 2148 | x_clipboard_manager_error_1 (Lisp_Object err) |
| 2149 | { | 2149 | { |
| 2150 | AUTO_STRING (format, "X clipboard manager error: %s\n\ | 2150 | Lisp_Object format |
| 2151 | If 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 | { |