diff options
| author | Karoly Lorentey | 2004-08-19 15:05:01 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-08-19 15:05:01 +0000 |
| commit | bda56b550fc7fffcec4d94e2cafc3793d0cec624 (patch) | |
| tree | 6fff2c4bd2b46711c2527c403b95a621b7e9bf5e /src | |
| parent | ccc84c2458c0a2e4e2ca62fa4c43527902f7e101 (diff) | |
| parent | eacd5edcd3f50db44271fae73dce8949ceb47ca8 (diff) | |
| download | emacs-bda56b550fc7fffcec4d94e2cafc3793d0cec624.tar.gz emacs-bda56b550fc7fffcec4d94e2cafc3793d0cec624.zip | |
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-489
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-490
Update from CVS: man/fixit.texi (Spelling): Fix typo.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-491
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-492
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-493
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-494
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-495
Update from CVS: Add missing lisp/mh-e files
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-496
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-497
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-498
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-499
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-500
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-234
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 41 | ||||
| -rw-r--r-- | src/buffer.c | 2 | ||||
| -rw-r--r-- | src/fileio.c | 5 | ||||
| -rw-r--r-- | src/intervals.c | 4 | ||||
| -rw-r--r-- | src/minibuf.c | 5 | ||||
| -rw-r--r-- | src/process.c | 69 | ||||
| -rw-r--r-- | src/sysdep.c | 23 | ||||
| -rw-r--r-- | src/xfaces.c | 5 |
8 files changed, 122 insertions, 32 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 3f9b6d85e51..9d9c4ee498c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,40 @@ | |||
| 1 | 2004-08-18 Kim F. Storm <storm@cua.dk> | ||
| 2 | |||
| 3 | * process.c (Faccept_process_output): Add arg JUST-THIS-ONE; | ||
| 4 | forward to wait_reading_process_input via DO_DISPLAY arg. | ||
| 5 | (wait_reading_process_input): If DO_DISPLAY < 0 for a process | ||
| 6 | object, only process output from that process; also inhibit | ||
| 7 | running timers if DO_DISPLAY==-2. | ||
| 8 | |||
| 9 | 2004-08-17 Kim F. Storm <storm@cua.dk> | ||
| 10 | |||
| 11 | * process.c (process_send_signal): Fix last change--use | ||
| 12 | _POSIX_VDISABLE instead of CVDISABLE when available. | ||
| 13 | |||
| 14 | 2004-08-16 Richard M. Stallman <rms@gnu.org> | ||
| 15 | |||
| 16 | * sysdep.c (child_setup_tty) [SIGNALS_VIA_CHARACTERS]: | ||
| 17 | Set VQUIT and VINTR chars to the standard ones if they are unset. | ||
| 18 | [AIX]: Don't do that here. And don't force VINTR to standard | ||
| 19 | when SIGNALS_VIA_CHARACTERS. | ||
| 20 | |||
| 21 | * process.c (process_send_signal) | ||
| 22 | [SIGNALS_VIA_CHARACTERS, HAVE_TERMIOS]: Clean up. | ||
| 23 | Do nothing if the character is CVDISABLE. | ||
| 24 | |||
| 25 | * xfaces.c (merge_face_ref): Specifying `unspecified' is a no-op. | ||
| 26 | |||
| 27 | * intervals.c (move_if_not_intangible): | ||
| 28 | Force POSITION to be between BEGV and ZV. | ||
| 29 | |||
| 30 | 2004-08-14 John Paul Wallington <jpw@gnu.org> | ||
| 31 | |||
| 32 | * buffer.c (Frestore_buffer_modified_p): Doc fix. | ||
| 33 | |||
| 34 | * fileio.c (Fread_file_name): Doc fix. | ||
| 35 | |||
| 36 | * minibuf.c (syms_of_minibuf) <completion-ignore-case>: Doc fix. | ||
| 37 | |||
| 1 | 2004-08-09 Luc Teirlinck <teirllm@auburn.edu> | 38 | 2004-08-09 Luc Teirlinck <teirllm@auburn.edu> |
| 2 | 39 | ||
| 3 | * keymap.c (Fmake_keymap, Fmap_keymap, Fwhere_is_internal): Doc fixes. | 40 | * keymap.c (Fmake_keymap, Fmap_keymap, Fwhere_is_internal): Doc fixes. |
| @@ -66,6 +103,10 @@ | |||
| 66 | 103 | ||
| 67 | * callint.c (Fcall_interactively): Doc fix. | 104 | * callint.c (Fcall_interactively): Doc fix. |
| 68 | 105 | ||
| 106 | 2004-07-30 Richard M. Stallman <rms@gnu.org> | ||
| 107 | |||
| 108 | * abbrev.c (Fexpand_abbrev): Undo previous change. | ||
| 109 | |||
| 69 | 2004-07-30 Kim F. Storm <storm@cua.dk> | 110 | 2004-07-30 Kim F. Storm <storm@cua.dk> |
| 70 | 111 | ||
| 71 | * editfns.c (Fformat): Allocate extra (dummy) element in info. | 112 | * editfns.c (Fformat): Allocate extra (dummy) element in info. |
diff --git a/src/buffer.c b/src/buffer.c index f55ae7983f4..bade501b1a7 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -1077,7 +1077,7 @@ A non-nil FLAG means mark the buffer modified. */) | |||
| 1077 | 1077 | ||
| 1078 | DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p, | 1078 | DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p, |
| 1079 | Srestore_buffer_modified_p, 1, 1, 0, | 1079 | Srestore_buffer_modified_p, 1, 1, 0, |
| 1080 | doc: /* Like `set-buffer-modified-p', with a differences concerning redisplay. | 1080 | doc: /* Like `set-buffer-modified-p', with a difference concerning redisplay. |
| 1081 | It is not ensured that mode lines will be updated to show the modified | 1081 | It is not ensured that mode lines will be updated to show the modified |
| 1082 | state of the current buffer. Use with care. */) | 1082 | state of the current buffer. Use with care. */) |
| 1083 | (flag) | 1083 | (flag) |
diff --git a/src/fileio.c b/src/fileio.c index 180f6f94130..da544f72234 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -6195,7 +6195,10 @@ DIR should be an absolute directory name. It defaults to the value of | |||
| 6195 | 6195 | ||
| 6196 | If this command was invoked with the mouse, use a file dialog box if | 6196 | If this command was invoked with the mouse, use a file dialog box if |
| 6197 | `use-dialog-box' is non-nil, and the window system or X toolkit in use | 6197 | `use-dialog-box' is non-nil, and the window system or X toolkit in use |
| 6198 | provides a file dialog box. */) | 6198 | provides a file dialog box. |
| 6199 | |||
| 6200 | See also `read-file-name-completion-ignore-case' | ||
| 6201 | and `read-file-name-function'. */) | ||
| 6199 | (prompt, dir, default_filename, mustmatch, initial, predicate) | 6202 | (prompt, dir, default_filename, mustmatch, initial, predicate) |
| 6200 | Lisp_Object prompt, dir, default_filename, mustmatch, initial, predicate; | 6203 | Lisp_Object prompt, dir, default_filename, mustmatch, initial, predicate; |
| 6201 | { | 6204 | { |
diff --git a/src/intervals.c b/src/intervals.c index 33ef9a34177..a822dafefcf 100644 --- a/src/intervals.c +++ b/src/intervals.c | |||
| @@ -2275,6 +2275,10 @@ move_if_not_intangible (position) | |||
| 2275 | pos = Fnext_char_property_change (pos, Qnil); | 2275 | pos = Fnext_char_property_change (pos, Qnil); |
| 2276 | 2276 | ||
| 2277 | } | 2277 | } |
| 2278 | else if (position < BEGV) | ||
| 2279 | position = BEGV; | ||
| 2280 | else if (position > ZV) | ||
| 2281 | position = ZV; | ||
| 2278 | 2282 | ||
| 2279 | /* If the whole stretch between PT and POSITION isn't intangible, | 2283 | /* If the whole stretch between PT and POSITION isn't intangible, |
| 2280 | try moving to POSITION (which means we actually move farther | 2284 | try moving to POSITION (which means we actually move farther |
diff --git a/src/minibuf.c b/src/minibuf.c index d28a5799afa..3d2c6c3a475 100644 --- a/src/minibuf.c +++ b/src/minibuf.c | |||
| @@ -2678,7 +2678,10 @@ property of a history variable overrides this default. */); | |||
| 2678 | Vcompletion_auto_help = Qt; | 2678 | Vcompletion_auto_help = Qt; |
| 2679 | 2679 | ||
| 2680 | DEFVAR_BOOL ("completion-ignore-case", &completion_ignore_case, | 2680 | DEFVAR_BOOL ("completion-ignore-case", &completion_ignore_case, |
| 2681 | doc: /* Non-nil means don't consider case significant in completion. */); | 2681 | doc: /* Non-nil means don't consider case significant in completion. |
| 2682 | |||
| 2683 | See also `read-file-name-completion-ignore-case' concerning case significance | ||
| 2684 | in completion when reading a file name. */); | ||
| 2682 | completion_ignore_case = 0; | 2685 | completion_ignore_case = 0; |
| 2683 | 2686 | ||
| 2684 | DEFVAR_BOOL ("enable-recursive-minibuffers", &enable_recursive_minibuffers, | 2687 | DEFVAR_BOOL ("enable-recursive-minibuffers", &enable_recursive_minibuffers, |
diff --git a/src/process.c b/src/process.c index ff3f79158ca..1cebdf07875 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -3718,7 +3718,7 @@ close_process_descs () | |||
| 3718 | } | 3718 | } |
| 3719 | 3719 | ||
| 3720 | DEFUN ("accept-process-output", Faccept_process_output, Saccept_process_output, | 3720 | DEFUN ("accept-process-output", Faccept_process_output, Saccept_process_output, |
| 3721 | 0, 3, 0, | 3721 | 0, 4, 0, |
| 3722 | doc: /* Allow any pending output from subprocesses to be read by Emacs. | 3722 | doc: /* Allow any pending output from subprocesses to be read by Emacs. |
| 3723 | It is read into the process' buffers or given to their filter functions. | 3723 | It is read into the process' buffers or given to their filter functions. |
| 3724 | Non-nil arg PROCESS means do not return until some output has been received | 3724 | Non-nil arg PROCESS means do not return until some output has been received |
| @@ -3726,15 +3726,20 @@ from PROCESS. | |||
| 3726 | Non-nil second arg TIMEOUT and third arg TIMEOUT-MSECS are number of | 3726 | Non-nil second arg TIMEOUT and third arg TIMEOUT-MSECS are number of |
| 3727 | seconds and microseconds to wait; return after that much time whether | 3727 | seconds and microseconds to wait; return after that much time whether |
| 3728 | or not there is input. | 3728 | or not there is input. |
| 3729 | If optional fourth arg JUST-THIS-ONE is non-nil, only accept output | ||
| 3730 | from PROCESS, suspending reading output from other processes. | ||
| 3731 | If JUST-THIS-ONE is an integer, don't run any timers either. | ||
| 3729 | Return non-nil iff we received any output before the timeout expired. */) | 3732 | Return non-nil iff we received any output before the timeout expired. */) |
| 3730 | (process, timeout, timeout_msecs) | 3733 | (process, timeout, timeout_msecs, just_this_one) |
| 3731 | register Lisp_Object process, timeout, timeout_msecs; | 3734 | register Lisp_Object process, timeout, timeout_msecs, just_this_one; |
| 3732 | { | 3735 | { |
| 3733 | int seconds; | 3736 | int seconds; |
| 3734 | int useconds; | 3737 | int useconds; |
| 3735 | 3738 | ||
| 3736 | if (! NILP (process)) | 3739 | if (! NILP (process)) |
| 3737 | CHECK_PROCESS (process); | 3740 | CHECK_PROCESS (process); |
| 3741 | else | ||
| 3742 | just_this_one = Qnil; | ||
| 3738 | 3743 | ||
| 3739 | if (! NILP (timeout_msecs)) | 3744 | if (! NILP (timeout_msecs)) |
| 3740 | { | 3745 | { |
| @@ -3776,7 +3781,9 @@ Return non-nil iff we received any output before the timeout expired. */) | |||
| 3776 | XSETFASTINT (process, 0); | 3781 | XSETFASTINT (process, 0); |
| 3777 | 3782 | ||
| 3778 | return | 3783 | return |
| 3779 | (wait_reading_process_input (seconds, useconds, process, 0) | 3784 | (wait_reading_process_input (seconds, useconds, process, |
| 3785 | NILP (just_this_one) ? 0 : | ||
| 3786 | !INTEGERP (just_this_one) ? -1 : -2) | ||
| 3780 | ? Qt : Qnil); | 3787 | ? Qt : Qnil); |
| 3781 | } | 3788 | } |
| 3782 | 3789 | ||
| @@ -4009,8 +4016,11 @@ wait_reading_process_input_1 () | |||
| 4009 | process. The return value is true iff we read some input from | 4016 | process. The return value is true iff we read some input from |
| 4010 | that process. | 4017 | that process. |
| 4011 | 4018 | ||
| 4012 | DO_DISPLAY != 0 means redisplay should be done to show subprocess | 4019 | If READ_KBD is a process object, DO_DISPLAY < 0 means handle only |
| 4013 | output that arrives. | 4020 | output from that process (suspending output from other processes) |
| 4021 | and DO_DISPLAY == -2 specifically means don't run any timers either. | ||
| 4022 | Otherwise, != 0 means redisplay should be done to show subprocess | ||
| 4023 | output that arrives. | ||
| 4014 | 4024 | ||
| 4015 | If READ_KBD is a pointer to a struct Lisp_Process, then the | 4025 | If READ_KBD is a pointer to a struct Lisp_Process, then the |
| 4016 | function returns true iff we received input from that process | 4026 | function returns true iff we received input from that process |
| @@ -4032,6 +4042,7 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display) | |||
| 4032 | EMACS_TIME timeout, end_time; | 4042 | EMACS_TIME timeout, end_time; |
| 4033 | int wait_channel = -1; | 4043 | int wait_channel = -1; |
| 4034 | struct Lisp_Process *wait_proc = 0; | 4044 | struct Lisp_Process *wait_proc = 0; |
| 4045 | int just_wait_proc = 0; | ||
| 4035 | int got_some_input = 0; | 4046 | int got_some_input = 0; |
| 4036 | /* Either nil or a cons cell, the car of which is of interest and | 4047 | /* Either nil or a cons cell, the car of which is of interest and |
| 4037 | may be changed outside of this routine. */ | 4048 | may be changed outside of this routine. */ |
| @@ -4048,6 +4059,11 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display) | |||
| 4048 | wait_proc = XPROCESS (read_kbd); | 4059 | wait_proc = XPROCESS (read_kbd); |
| 4049 | wait_channel = XINT (wait_proc->infd); | 4060 | wait_channel = XINT (wait_proc->infd); |
| 4050 | XSETFASTINT (read_kbd, 0); | 4061 | XSETFASTINT (read_kbd, 0); |
| 4062 | if (do_display < 0) | ||
| 4063 | { | ||
| 4064 | just_wait_proc = do_display; | ||
| 4065 | do_display = 0; | ||
| 4066 | } | ||
| 4051 | } | 4067 | } |
| 4052 | 4068 | ||
| 4053 | /* If waiting for non-nil in a cell, record where. */ | 4069 | /* If waiting for non-nil in a cell, record where. */ |
| @@ -4122,7 +4138,8 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display) | |||
| 4122 | But not if wait_for_cell; in those cases, | 4138 | But not if wait_for_cell; in those cases, |
| 4123 | the wait is supposed to be short, | 4139 | the wait is supposed to be short, |
| 4124 | and those callers cannot handle running arbitrary Lisp code here. */ | 4140 | and those callers cannot handle running arbitrary Lisp code here. */ |
| 4125 | if (NILP (wait_for_cell)) | 4141 | if (NILP (wait_for_cell) |
| 4142 | && just_wait_proc != -2) | ||
| 4126 | { | 4143 | { |
| 4127 | EMACS_TIME timer_delay; | 4144 | EMACS_TIME timer_delay; |
| 4128 | 4145 | ||
| @@ -4258,7 +4275,12 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display) | |||
| 4258 | 4275 | ||
| 4259 | /* Wait till there is something to do */ | 4276 | /* Wait till there is something to do */ |
| 4260 | 4277 | ||
| 4261 | if (!NILP (wait_for_cell)) | 4278 | if (just_wait_proc) |
| 4279 | { | ||
| 4280 | FD_SET (XINT (wait_proc->infd), &Available); | ||
| 4281 | check_connect = check_delay = 0; | ||
| 4282 | } | ||
| 4283 | else if (!NILP (wait_for_cell)) | ||
| 4262 | { | 4284 | { |
| 4263 | Available = non_process_wait_mask; | 4285 | Available = non_process_wait_mask; |
| 4264 | check_connect = check_delay = 0; | 4286 | check_connect = check_delay = 0; |
| @@ -5549,29 +5571,40 @@ process_send_signal (process, signo, current_group, nomsg) | |||
| 5549 | work. If the system has it, use it. */ | 5571 | work. If the system has it, use it. */ |
| 5550 | #ifdef HAVE_TERMIOS | 5572 | #ifdef HAVE_TERMIOS |
| 5551 | struct termios t; | 5573 | struct termios t; |
| 5574 | cc_t *sig_char = NULL; | ||
| 5575 | |||
| 5576 | tcgetattr (XINT (p->infd), &t); | ||
| 5552 | 5577 | ||
| 5553 | switch (signo) | 5578 | switch (signo) |
| 5554 | { | 5579 | { |
| 5555 | case SIGINT: | 5580 | case SIGINT: |
| 5556 | tcgetattr (XINT (p->infd), &t); | 5581 | sig_char = &t.c_cc[VINTR]; |
| 5557 | send_process (proc, &t.c_cc[VINTR], 1, Qnil); | 5582 | break; |
| 5558 | return; | ||
| 5559 | 5583 | ||
| 5560 | case SIGQUIT: | 5584 | case SIGQUIT: |
| 5561 | tcgetattr (XINT (p->infd), &t); | 5585 | sig_char = &t.c_cc[VQUIT]; |
| 5562 | send_process (proc, &t.c_cc[VQUIT], 1, Qnil); | 5586 | break; |
| 5563 | return; | ||
| 5564 | 5587 | ||
| 5565 | case SIGTSTP: | 5588 | case SIGTSTP: |
| 5566 | tcgetattr (XINT (p->infd), &t); | ||
| 5567 | #if defined (VSWTCH) && !defined (PREFER_VSUSP) | 5589 | #if defined (VSWTCH) && !defined (PREFER_VSUSP) |
| 5568 | send_process (proc, &t.c_cc[VSWTCH], 1, Qnil); | 5590 | sig_char = &t.c_cc[VSWTCH]; |
| 5569 | #else | 5591 | #else |
| 5570 | send_process (proc, &t.c_cc[VSUSP], 1, Qnil); | 5592 | sig_char = &t.c_cc[VSUSP]; |
| 5571 | #endif | 5593 | #endif |
| 5572 | return; | 5594 | break; |
| 5573 | } | 5595 | } |
| 5574 | 5596 | ||
| 5597 | #ifndef _POSIX_VDISABLE | ||
| 5598 | #ifdef CVDISABLE | ||
| 5599 | #define _POSIX_VDISABLE CVDISABLE | ||
| 5600 | #else | ||
| 5601 | #define _POSIX_VDISABLE '\0' | ||
| 5602 | #endif | ||
| 5603 | #endif | ||
| 5604 | |||
| 5605 | if (sig_char && *sig_char != _POSIX_VDISABLE) | ||
| 5606 | send_process (proc, sig_char, 1, Qnil); | ||
| 5607 | return; | ||
| 5575 | #else /* ! HAVE_TERMIOS */ | 5608 | #else /* ! HAVE_TERMIOS */ |
| 5576 | 5609 | ||
| 5577 | /* On Berkeley descendants, the following IOCTL's retrieve the | 5610 | /* On Berkeley descendants, the following IOCTL's retrieve the |
diff --git a/src/sysdep.c b/src/sysdep.c index 018fdc1fd57..26f433c9a1d 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -607,6 +607,15 @@ child_setup_tty (out) | |||
| 607 | s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */ | 607 | s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */ |
| 608 | #endif /* HPUX */ | 608 | #endif /* HPUX */ |
| 609 | 609 | ||
| 610 | #ifdef SIGNALS_VIA_CHARACTERS | ||
| 611 | /* the QUIT and INTR character are used in process_send_signal | ||
| 612 | so set them here to something useful. */ | ||
| 613 | if (s.main.c_cc[VQUIT] == 0377) | ||
| 614 | s.main.c_cc[VQUIT] = '\\'&037; /* Control-\ */ | ||
| 615 | if (s.main.c_cc[VINTR] == 0377) | ||
| 616 | s.main.c_cc[VINTR] = 'C'&037; /* Control-C */ | ||
| 617 | #endif /* not SIGNALS_VIA_CHARACTERS */ | ||
| 618 | |||
| 610 | #ifdef AIX | 619 | #ifdef AIX |
| 611 | /* AIX enhanced edit loses NULs, so disable it */ | 620 | /* AIX enhanced edit loses NULs, so disable it */ |
| 612 | #ifndef IBMR2AIX | 621 | #ifndef IBMR2AIX |
| @@ -617,16 +626,10 @@ child_setup_tty (out) | |||
| 617 | don't ignore break, but don't signal either, so it looks like NUL. */ | 626 | don't ignore break, but don't signal either, so it looks like NUL. */ |
| 618 | s.main.c_iflag &= ~IGNBRK; | 627 | s.main.c_iflag &= ~IGNBRK; |
| 619 | s.main.c_iflag &= ~BRKINT; | 628 | s.main.c_iflag &= ~BRKINT; |
| 620 | /* QUIT and INTR work better as signals, so disable character forms */ | 629 | /* rms: Formerly it set s.main.c_cc[VINTR] to 0377 here |
| 621 | s.main.c_cc[VINTR] = 0377; | 630 | unconditionally. Then a SIGNALS_VIA_CHARACTERS conditional |
| 622 | #ifdef SIGNALS_VIA_CHARACTERS | 631 | would force it to 0377. That looks like duplicated code. */ |
| 623 | /* the QUIT and INTR character are used in process_send_signal | 632 | #ifndef SIGNALS_VIA_CHARACTERS |
| 624 | so set them here to something useful. */ | ||
| 625 | if (s.main.c_cc[VQUIT] == 0377) | ||
| 626 | s.main.c_cc[VQUIT] = '\\'&037; /* Control-\ */ | ||
| 627 | if (s.main.c_cc[VINTR] == 0377) | ||
| 628 | s.main.c_cc[VINTR] = 'C'&037; /* Control-C */ | ||
| 629 | #else /* no TIOCGPGRP or no TIOCGLTC or no TIOCGETC */ | ||
| 630 | /* QUIT and INTR work better as signals, so disable character forms */ | 633 | /* QUIT and INTR work better as signals, so disable character forms */ |
| 631 | s.main.c_cc[VQUIT] = 0377; | 634 | s.main.c_cc[VQUIT] = 0377; |
| 632 | s.main.c_cc[VINTR] = 0377; | 635 | s.main.c_cc[VINTR] = 0377; |
diff --git a/src/xfaces.c b/src/xfaces.c index f664249a290..10b7ef1148c 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -3629,7 +3629,10 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points) | |||
| 3629 | Lisp_Object value = XCAR (XCDR (face_ref)); | 3629 | Lisp_Object value = XCAR (XCDR (face_ref)); |
| 3630 | int err = 0; | 3630 | int err = 0; |
| 3631 | 3631 | ||
| 3632 | if (EQ (keyword, QCfamily)) | 3632 | /* Specifying `unspecified' is a no-op. */ |
| 3633 | if (EQ (value, Qunspecified)) | ||
| 3634 | ; | ||
| 3635 | else if (EQ (keyword, QCfamily)) | ||
| 3633 | { | 3636 | { |
| 3634 | if (STRINGP (value)) | 3637 | if (STRINGP (value)) |
| 3635 | to[LFACE_FAMILY_INDEX] = value; | 3638 | to[LFACE_FAMILY_INDEX] = value; |