summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog60
-rw-r--r--lisp/calendar/appt.el46
-rw-r--r--lisp/calendar/cal-coptic.el4
-rw-r--r--lisp/calendar/cal-french.el4
-rw-r--r--lisp/calendar/cal-hebrew.el22
-rw-r--r--lisp/calendar/cal-islam.el12
-rw-r--r--lisp/calendar/cal-julian.el4
-rw-r--r--lisp/calendar/cal-mayan.el8
-rw-r--r--lisp/calendar/calendar.el6
-rw-r--r--lisp/calendar/diary-lib.el8
-rw-r--r--lisp/play/morse.el8
-rw-r--r--src/ChangeLog31
-rw-r--r--src/fringe.c6
-rw-r--r--src/keyboard.c176
-rw-r--r--src/lisp.h18
15 files changed, 236 insertions, 177 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f5e51f9a093..bf4e852c494 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,7 +1,35 @@
+2004-02-19 Simon Josefsson <jas@extundo.com>
+
+ * play/morse.el: Fix typo.
+ (morse-code): Add @.
+
+2004-02-19 Glenn Morris <gmorris@ast.cam.ac.uk>
+
+ * calendar/appt.el (appt-display-format): Change default to
+ 'ignore, for backwards compatability.
+ (appt-display-message): If appt-display-format is 'ignore,
+ respect old vars appt-msg-window and appt-visible.
+ (appt-activate): Don't depend on return value of cancel-timer.
+
+ * calendar/calendar.el (calendar-holidays): Doc fix.
+
+ * calendar/cal-coptic.el (coptic-prompt-for-date):
+ Use assoc-string instead of assoc-ignore-case.
+ * calendar/cal-french.el (calendar-goto-french-date): Ditto.
+ * calendar/cal-hebrew.el (calendar-goto-hebrew-date)
+ (mark-hebrew-diary-entries, list-yahrzeit-dates): Ditto.
+ * calendar/cal-islam.el (calendar-goto-islamic-date)
+ (mark-islamic-diary-entries): Ditto.
+ * calendar/cal-julian.el (calendar-goto-julian-date): Ditto.
+ * calendar/cal-mayan.el (calendar-read-mayan-haab-date)
+ (calendar-read-mayan-tzolkin-date): Ditto.
+ * calendar/calendar.el (calendar-read-date): Ditto.
+ * calendar/diary-lib.el (mark-diary-entries): Ditto.
+
2004-02-18 Markus Rost <rost@mathematik.uni-bielefeld.de>
- * progmodes/executable.el (executable-command-find-posix-p): Fix
- choice of the directory.
+ * progmodes/executable.el (executable-command-find-posix-p):
+ Fix choice of the directory.
2004-02-17 Luc Teirlinck <teirllm@auburn.edu>
@@ -55,11 +83,11 @@
* rmail-spam-filter.el: (vm-use-spam-filter)
(rsf-min-region-length-added-to-spam-list): New variables.
- (rsf-bbdb-auto-delete-spam-bbdb-entries): Renamed from
+ (rsf-bbdb-auto-delete-spam-bbdb-entries): Rename from
rmail-bbdb-auto-delete-spam-entries. Added cc: to recipients for
spam testing. Don't delete spam message if automatic deletion
after output via variable rmail-delete-after-output is turned on.
- (rsf-bbdb-dont-create-entries-for-deleted-messages): Renamed from
+ (rsf-bbdb-dont-create-entries-for-deleted-messages): Rename from
rsf-bbdb-dont-create-entries-for-spam.
(check-field): New function, extracted from code in
rmail-spam-filter to ease addition of header fields like
@@ -69,11 +97,10 @@
(rmail-spam-filter): Replace repeated test code for header fields
by calls to check-field; change the call to
rmail-output-to-rmail-file such that rmail-current-message stays
- the same to avoid wrong deletion of unseen
- flags.
+ the same to avoid wrong deletion of unseen flags.
(rsf-add-contents-type): New function to convert old format
of rmail-spam-definitions-alist into new one.
- Changed prefixes of all variables and functions from
+ Change prefixes of all variables and functions from
rmail-spam-filter- or spam-filter- or rmail-spam- to rsf-.
2004-02-16 Eli Zaretskii <eliz@elta.co.il>
@@ -97,8 +124,8 @@
2004-02-16 Eli Zaretskii <eliz@elta.co.il>
* emacs-lisp/rx.el (rx-check, rx-check-any, rx-check-not)
- (rx-repeat, rx-check-backref, rx-syntax, rx-to-string): Use
- lower-case "rx" in all error message.
+ (rx-repeat, rx-check-backref, rx-syntax, rx-to-string):
+ Use lower-case "rx" in all error message.
2004-02-16 Dave Love <fx@gnu.org>
@@ -125,7 +152,7 @@
* autorevert.el (auto-revert-active-p, auto-revert-list-diff)
(auto-revert-dired-file-list, auto-revert-dired-changed-p)
(auto-revert-handler, auto-revert-active-p): New functions.
- (auto-revert-buffers): Moved revert logic to `auto-revert-handler'
+ (auto-revert-buffers): Move revert logic to `auto-revert-handler'
and `auto-revert-active-p'.
(eval-when-compile): Defvar dired-directory and vc-mode.
(auto-revert-vc-cvs-file-version, auto-revert-vc-buffer-p)
@@ -188,7 +215,7 @@
2004-02-14 Martin Stjernholm <bug-cc-mode@gnu.org>
- * Makefile.in: Fixed the CC Mode recompile kludge so it works
+ * Makefile.in: Fix the CC Mode recompile kludge so it works
when building in a different directory.
2004-02-13 Luc Teirlinck <teirllm@auburn.edu>
@@ -197,6 +224,17 @@
2004-02-11 Stefan Monnier <monnier@iro.umontreal.ca>
+ * diff.el: Don't use compile any more, use diff-mode instead.
+ (diff-regexp-alist, diff-old-file, diff-new-file)
+ (diff-parse-differences, diff-process-setup): Remove.
+ (diff-sentinel): New fun.
+ (diff): Use it. Run the process ourselves.
+ Use diff-mode for the rest of the processing.
+
+ * diff.el (diff): Simplify code handling `switch'.
+
+2004-02-11 Stefan Monnier <monnier@iro.umontreal.ca>
+
* pcvs-defs.el (cvs-menu): Add `tag'.
2004-02-11 Luc Teirlinck <teirllm@auburn.edu>
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index f6e33aeefe0..d002b6fd212 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -43,7 +43,7 @@
;;; documentation of the function `appt-check' is required.
;;; Relevant customizable variables are also listed in the
;;; documentation of that function.
-;;;
+;;;
;;; Today's appointment list is initialized from the diary when this
;;; package is activated. Additionally, the appointments list is
;;; recreated automatically at 12:01am for those who do not logout
@@ -121,15 +121,16 @@ If non-nil, this variable overrides `appt-visible'."
(make-obsolete-variable 'appt-msg-window 'appt-display-format "21.4")
;; TODO - add popup.
-(defcustom appt-display-format (cond (appt-msg-window 'window)
- (appt-visible 'echo)
- (t nil))
+(defcustom appt-display-format 'ignore
"How appointment reminders should be displayed.
The options are:
window - use a separate window
echo - use the echo area
nil - no visible reminder.
-See also `appt-audible' and `appt-display-mode-line'."
+See also `appt-audible' and `appt-display-mode-line'.
+
+The default value is 'ignore, which means to fall back on the value
+of the (obsolete) variables `appt-msg-window' and `appt-visible'."
:type '(choice
(const :tag "Separate window" window)
(const :tag "Echo-area" echo)
@@ -222,17 +223,24 @@ If this is non-nil, appointment checking is active.")
The string STRING describes the appointment, due in integer MINS minutes.
The format of the visible reminder is controlled by `appt-display-format'.
The variable `appt-audible' controls the audible reminder."
- (cond ((eq appt-display-format 'window)
- (funcall appt-disp-window-function
- (number-to-string mins)
- (format-time-string "%a %b %e " (current-time))
- string)
- (run-at-time (format "%d sec" appt-display-duration)
- nil
- appt-delete-window-function))
- ((eq appt-display-format 'echo)
- (message "%s" string)))
- (if appt-audible (beep 1)))
+ ;; let binding for backwards compatability. Remove when obsolete
+ ;; vars appt-msg-window and appt-visible are dropped.
+ (let ((appt-display-format
+ (if (eq appt-display-format 'ignore)
+ (cond (appt-msg-window 'window)
+ (appt-visible 'echo))
+ appt-display-format)))
+ (cond ((eq appt-display-format 'window)
+ (funcall appt-disp-window-function
+ (number-to-string mins)
+ (format-time-string "%a %b %e " (current-time))
+ string)
+ (run-at-time (format "%d sec" appt-display-duration)
+ nil
+ appt-delete-window-function))
+ ((eq appt-display-format 'echo)
+ (message "%s" string)))
+ (if appt-audible (beep 1))))
(defun appt-check (&optional force)
@@ -648,9 +656,9 @@ ARG is positive, otherwise off."
(remove-hook 'write-file-functions 'appt-update-list)
(or global-mode-string (setq global-mode-string '("")))
(delq 'appt-mode-string global-mode-string)
- (and appt-timer
- (cancel-timer appt-timer)
- (setq appt-timer nil))
+ (when appt-timer
+ (cancel-timer appt-timer)
+ (setq appt-timer nil))
(when appt-active
(add-hook 'write-file-functions 'appt-update-list)
(setq appt-timer (run-at-time t 60 'appt-check)
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el
index f33e80d6991..df1201a23c4 100644
--- a/lisp/calendar/cal-coptic.el
+++ b/lisp/calendar/cal-coptic.el
@@ -151,14 +151,14 @@ Echo Coptic date unless NOECHO is t."
(calendar-coptic-from-absolute
(calendar-absolute-from-gregorian today))))))
(completion-ignore-case t)
- (month (cdr (assoc-ignore-case
+ (month (cdr (assoc-string
(completing-read
(format "%s calendar month name: " coptic-name)
(mapcar 'list
(append coptic-calendar-month-name-array nil))
nil t)
(calendar-make-alist coptic-calendar-month-name-array
- 1))))
+ 1) t)))
(last (coptic-calendar-last-day-of-month month year))
(day (calendar-read
(format "%s calendar day (1-%d): " coptic-name last)
diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el
index 7c855e4127a..d988b008f53 100644
--- a/lisp/calendar/cal-french.el
+++ b/lisp/calendar/cal-french.el
@@ -228,12 +228,12 @@ Echo French Revolutionary date unless NOECHO is t."
(concat "Jour " x))
special-days))))))))
(completion-ignore-case t)
- (month (cdr (assoc-ignore-case
+ (month (cdr (assoc-string
(completing-read
"Mois ou Sansculottide: "
month-list
nil t)
- (calendar-make-alist month-list 1 'car))))
+ (calendar-make-alist month-list 1 'car) t)))
(day (if (> month 12)
(- month 12)
(calendar-read
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index acdac6ce5c6..776868159be 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -236,17 +236,17 @@ Driven by the variable `calendar-date-display-form'."
calendar-hebrew-month-name-array-leap-year
calendar-hebrew-month-name-array-common-year))
(completion-ignore-case t)
- (month (cdr (assoc-ignore-case
+ (month (cdr (assoc-string
(completing-read
"Hebrew calendar month name: "
(mapcar 'list (append month-array nil))
(if (= year 3761)
'(lambda (x)
(let ((m (cdr
- (assoc-ignore-case
+ (assoc-string
(car x)
- (calendar-make-alist
- month-array)))))
+ (calendar-make-alist month-array)
+ t))))
(< 0
(calendar-absolute-from-hebrew
(list m
@@ -254,7 +254,7 @@ Driven by the variable `calendar-date-display-form'."
m year)
year))))))
t)
- (calendar-make-alist month-array 1))))
+ (calendar-make-alist month-array 1) t)))
(last (hebrew-calendar-last-day-of-month month year))
(first (if (and (= year 3761) (= month 10))
18 1))
@@ -753,18 +753,18 @@ is provided for use as part of the nongregorian-diary-marking-hook."
(string-to-int y-str)))))
(if dd-name
(mark-calendar-days-named
- (cdr (assoc-ignore-case dd-name
+ (cdr (assoc-string dd-name
(calendar-make-alist
calendar-day-name-array
- 0 nil calendar-day-abbrev-array))))
+ 0 nil calendar-day-abbrev-array) t)))
(if mm-name
(setq mm
(if (string-equal mm-name "*") 0
(cdr
- (assoc-ignore-case
+ (assoc-string
mm-name
(calendar-make-alist
- calendar-hebrew-month-name-array-leap-year))))))
+ calendar-hebrew-month-name-array-leap-year) t)))))
(mark-hebrew-calendar-date-pattern mm dd yy)))))
(setq d (cdr d)))))
@@ -839,12 +839,12 @@ from the cursor position."
(int-to-string (extract-calendar-year today))))
(month-array calendar-month-name-array)
(completion-ignore-case t)
- (month (cdr (assoc-ignore-case
+ (month (cdr (assoc-string
(completing-read
"Month of death (name): "
(mapcar 'list (append month-array nil))
nil t)
- (calendar-make-alist month-array 1))))
+ (calendar-make-alist month-array 1) t)))
(last (calendar-last-day-of-month month year))
(day (calendar-read
(format "Day of death (1-%d): " last)
diff --git a/lisp/calendar/cal-islam.el b/lisp/calendar/cal-islam.el
index 482b77d74d9..8dcf5c29b1f 100644
--- a/lisp/calendar/cal-islam.el
+++ b/lisp/calendar/cal-islam.el
@@ -154,12 +154,12 @@ Driven by the variable `calendar-date-display-form'."
(calendar-absolute-from-gregorian today))))))
(month-array calendar-islamic-month-name-array)
(completion-ignore-case t)
- (month (cdr (assoc-ignore-case
+ (month (cdr (assoc-string
(completing-read
"Islamic calendar month name: "
(mapcar 'list (append month-array nil))
nil t)
- (calendar-make-alist month-array 1))))
+ (calendar-make-alist month-array 1) t)))
(last (islamic-calendar-last-day-of-month month year))
(day (calendar-read
(format "Islamic calendar day (1-%d): " last)
@@ -372,16 +372,16 @@ provided for use as part of the nongregorian-diary-marking-hook."
(string-to-int y-str)))))
(if dd-name
(mark-calendar-days-named
- (cdr (assoc-ignore-case dd-name
+ (cdr (assoc-string dd-name
(calendar-make-alist
calendar-day-name-array
- 0 nil calendar-day-abbrev-array))))
+ 0 nil calendar-day-abbrev-array) t)))
(if mm-name
(setq mm (if (string-equal mm-name "*") 0
- (cdr (assoc-ignore-case
+ (cdr (assoc-string
mm-name
(calendar-make-alist
- calendar-islamic-month-name-array))))))
+ calendar-islamic-month-name-array) t)))))
(mark-islamic-calendar-date-pattern mm dd yy)))))
(setq d (cdr d)))))
diff --git a/lisp/calendar/cal-julian.el b/lisp/calendar/cal-julian.el
index ac422602dc4..67fb8515b24 100644
--- a/lisp/calendar/cal-julian.el
+++ b/lisp/calendar/cal-julian.el
@@ -115,12 +115,12 @@ Driven by the variable `calendar-date-display-form'."
today))))))
(month-array calendar-month-name-array)
(completion-ignore-case t)
- (month (cdr (assoc-ignore-case
+ (month (cdr (assoc-string
(completing-read
"Julian calendar month name: "
(mapcar 'list (append month-array nil))
nil t)
- (calendar-make-alist month-array 1))))
+ (calendar-make-alist month-array 1) t)))
(last
(if (and (zerop (% year 4)) (= month 2))
29
diff --git a/lisp/calendar/cal-mayan.el b/lisp/calendar/cal-mayan.el
index acaa1709080..c2c3e027c4b 100644
--- a/lisp/calendar/cal-mayan.el
+++ b/lisp/calendar/cal-mayan.el
@@ -256,11 +256,11 @@ Returns nil if such a tzolkin-haab combination is impossible."
(haab-month-list (append calendar-mayan-haab-month-name-array
(and (< haab-day 5) '("Uayeb"))))
(haab-month (cdr
- (assoc-ignore-case
+ (assoc-string
(completing-read "Haab uinal: "
(mapcar 'list haab-month-list)
nil t)
- (calendar-make-alist haab-month-list 1)))))
+ (calendar-make-alist haab-month-list 1) t))))
(cons haab-day haab-month)))
(defun calendar-read-mayan-tzolkin-date ()
@@ -271,11 +271,11 @@ Returns nil if such a tzolkin-haab combination is impossible."
'(lambda (x) (and (> x 0) (< x 14)))))
(tzolkin-name-list (append calendar-mayan-tzolkin-names-array nil))
(tzolkin-name (cdr
- (assoc-ignore-case
+ (assoc-string
(completing-read "Tzolkin uinal: "
(mapcar 'list tzolkin-name-list)
nil t)
- (calendar-make-alist tzolkin-name-list 1)))))
+ (calendar-make-alist tzolkin-name-list 1) t))))
(cons tzolkin-count tzolkin-name)))
(defun calendar-next-calendar-round-date
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 7440a5c7e02..a0644f54aa2 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1164,7 +1164,7 @@ example, to include American presidential elections, which occur on the first
Tuesday after the first Monday in November of years divisible by 4, add
(holiday-sexp
- (if (zerop (% year 4))
+ '(if (zerop (% year 4))
(calendar-gregorian-from-absolute
(1+ (calendar-dayname-on-or-before
1 (+ 6 (calendar-absolute-from-gregorian
@@ -2544,12 +2544,12 @@ If optional NODAY is t, does not ask for day, but just returns
(calendar-current-date)))))
(month-array calendar-month-name-array)
(completion-ignore-case t)
- (month (cdr (assoc-ignore-case
+ (month (cdr (assoc-string
(completing-read
"Month name: "
(mapcar 'list (append month-array nil))
nil t)
- (calendar-make-alist month-array 1))))
+ (calendar-make-alist month-array 1) t)))
(last (calendar-last-day-of-month month year)))
(if noday
(if (eq noday t)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index d2a0075fb71..bb4ea20f804 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -906,19 +906,19 @@ After the entries are marked, the hooks `nongregorian-diary-marking-hook' and
marks (nth 1 temp))))
(if dd-name
(mark-calendar-days-named
- (cdr (assoc-ignore-case
+ (cdr (assoc-string
dd-name
(calendar-make-alist
calendar-day-name-array
- 0 nil calendar-day-abbrev-array))) marks)
+ 0 nil calendar-day-abbrev-array) t)) marks)
(if mm-name
(setq mm
(if (string-equal mm-name "*") 0
- (cdr (assoc-ignore-case
+ (cdr (assoc-string
mm-name
(calendar-make-alist
calendar-month-name-array
- 1 nil calendar-month-abbrev-array))))))
+ 1 nil calendar-month-abbrev-array) t)))))
(mark-calendar-date-pattern mm dd yy marks))))
(setq d (cdr d))))
(mark-sexp-diary-entries)
diff --git a/lisp/play/morse.el b/lisp/play/morse.el
index cda88f4e640..ce4e4877e5e 100644
--- a/lisp/play/morse.el
+++ b/lisp/play/morse.el
@@ -1,6 +1,6 @@
;;; morse.el --- convert text to morse code and back -*- coding: utf-8 -*-
-;; Copyright (C) 1995, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2002, 2004 Free Software Foundation, Inc.
;; Author: Rick Farnbach <rick_farnbach@MENTORG.COM>
;; Keywords: games
@@ -24,7 +24,7 @@
;;; Commentary:
-;; Converts text to Morse code and back with M-x morese-region and
+;; Converts text to Morse code and back with M-x morse-region and
;; M-x unmorse-region (though Morse code is no longer official :-().
;;; Code:
@@ -88,7 +88,9 @@
("Ñ" . "--.--")
("Ö" . "---.")
("Ø" . "---.")
- ("Ü" . "..--"))
+ ("Ü" . "..--")
+ ;; Recently standardized
+ ("@" . ".--.-."))
"Morse code character set.")
;;;###autoload
diff --git a/src/ChangeLog b/src/ChangeLog
index 744259568e4..58661af0867 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,26 @@
+2004-02-20 Kim F. Storm <storm@cua.dk>
+
+ * keyboard.c: Undo 2004-02-16 and 2004-02-17 changes.
+ The following changes are relative to the 2004-01-21 revision.
+ (NREAD_INPUT_EVENTS): Define as max number of input events to read
+ in one call to read_socket_hook. Value is 8.
+ (read_avail_input): Separate and rework handling of read_socket_hook
+ and non-read_socket_hook cases. Use smaller input_event buffer
+ in read_socket_hook case, and repeat if full buffer is read. Use
+ new local variable 'discard' to skip input after C-g.
+ In non-read_socket_hook case, just use a single input_event, and
+ call kbd_buffer_store_event on the fly for each character.
+
+2004-02-19 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp.h (union Lisp_Object): Give a more precise type for `type'.
+ Remove unused `gu' alternative.
+
+2004-02-19 Andreas Schwab <schwab@suse.de>
+
+ * fringe.c (Fdefine_fringe_bitmap): Use && instead of & to avoid
+ warning.
+
2004-02-18 Kim F. Storm <storm@cua.dk>
* xdisp.c (get_window_cursor_type, display_and_set_cursor):
@@ -44,9 +67,9 @@
2004-02-15 Stefan Monnier <monnier@iro.umontreal.ca>
- * data.c (Fbyteorder):
- * fringe.c (Fdefine_fringe_bitmap):
- * xdisp.c (handle_single_display_prop):
+ * data.c (Fbyteorder):
+ * fringe.c (Fdefine_fringe_bitmap):
+ * xdisp.c (handle_single_display_prop):
* xselect.c (x_handle_dnd_message): Lisp_Object/int mixup.
2004-02-16 Jason Rumney <jasonr@gnu.org>
@@ -59,7 +82,7 @@
controlling emulation of a three button mouse with option and
command keys.
(Qreverse, mac_get_enumlated_btn): Handle the emulation
- (mac_event_to_emacs_modifiers, XTread_socket): Ditto
+ (mac_event_to_emacs_modifiers, XTread_socket): Ditto.
2004-02-15 Kim F. Storm <storm@cua.dk>
diff --git a/src/fringe.c b/src/fringe.c
index bd93b4cfce5..b14668e8d7e 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1192,9 +1192,9 @@ Return new bitmap number, or nil of no more free bitmap slots. */)
fb.dynamic = 1;
- xfb = (struct fringe_bitmap *)xmalloc (sizeof fb
- + fb.height * BYTES_PER_BITMAP_ROW);
- fb.bits = b = (unsigned short *)(xfb+1);
+ xfb = (struct fringe_bitmap *) xmalloc (sizeof fb
+ + fb.height * BYTES_PER_BITMAP_ROW);
+ fb.bits = b = (unsigned short *) (xfb + 1);
bzero (b, fb.height);
j = 0;
diff --git a/src/keyboard.c b/src/keyboard.c
index 26b1bfa89e1..4cae90cd764 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -4051,9 +4051,9 @@ kbd_buffer_get_event (kbp, used_mouse_menu)
If there is no valid info, it does not store anything
so x remains nil. */
x = Qnil;
-
+
/* XXX Can f or mouse_position_hook be NULL here? */
- if (f && FRAME_DISPLAY (f)->mouse_position_hook)
+ if (f && FRAME_DISPLAY (f)->mouse_position_hook)
(*FRAME_DISPLAY (f)->mouse_position_hook) (&f, 0, &bar_window,
&part, &x, &y, &time);
@@ -4986,7 +4986,7 @@ make_lispy_position (f, x, y, time)
{
Lisp_Object string;
int charpos;
-
+
posn = (part == ON_LEFT_MARGIN) ? Qleft_margin : Qright_margin;
rx = wx, ry = wy;
string = marginal_area_string (w, part, &rx, &ry, &charpos,
@@ -5469,7 +5469,7 @@ make_lispy_event (event)
{
Lisp_Object position;
Lisp_Object head;
-
+
/* Build the position as appropriate for this mouse click. */
struct frame *f = XFRAME (event->frame_or_window);
@@ -6457,7 +6457,7 @@ get_filtered_input_pending (addr, do_timers_now, filter_events)
/* If input is being read as it arrives, and we have none, there is none. */
if (*addr > 0 || (interrupt_input && ! interrupts_deferred))
return;
-
+
/* Try to read some input and see how much we get. */
gobble_input (0);
*addr = (!NILP (Vquit_flag)
@@ -6560,14 +6560,6 @@ record_asynch_buffer_change ()
#ifndef VMS
-/* We make the read_avail_input buffer static to avoid zeroing out the
- whole struct input_event buf on every call. */
-static struct input_event read_avail_input_buf[KBD_BUFFER_SIZE];
-
-/* I don't know whether it is necessary, but make read_avail_input
- re-entrant. */
-static int in_read_avail_input = 0;
-
/* Read any terminal input already buffered up by the system
into the kbd_buffer, but do not wait.
@@ -6578,75 +6570,89 @@ static int in_read_avail_input = 0;
only when SIGIO is blocked.
Returns the number of keyboard chars read, or -1 meaning
- this is a bad time to try to read input. */
+ this is a bad time to try to read input.
+
+ Typically, there are just a few available input events to be read
+ here, so we really don't need to allocate and initialize a big
+ buffer of input_events as we used to do. Instead, we just allocate
+ a small buffer of input events -- and then poll for more input if we
+ read a full buffer of input events. */
+
+#define NREAD_INPUT_EVENTS 8
static int
read_avail_input (expected)
int expected;
{
- struct input_event *buf = read_avail_input_buf;
- struct input_event tmp_buf[KBD_BUFFER_SIZE];
register int i;
int nread = 0;
struct display *d;
-
- /* Trivial hack to make read_avail_input re-entrant. */
- if (in_read_avail_input++)
- {
- buf = tmp_buf;
- for (i = 0; i < KBD_BUFFER_SIZE; i++)
- EVENT_INIT (buf[i]);
- }
/* Loop through the available displays, and call their input hooks. */
d = display_list;
while (d)
{
struct display *next = d->next_display;
-
- if (d->read_socket_hook)
- /* No need for FIONREAD or fcntl; just say don't wait. */
- nread = (*d->read_socket_hook) (d, buf, KBD_BUFFER_SIZE, expected);
- if (nread == -2) /* -2 means non-transient error */
+ if (d->read_socket_hook)
{
- /* The display device terminated; it should be closed. */
+ int discard = 0;
+ int nr;
- /* Kill Emacs if this was our last display. */
- if (! display_list->next_display)
- kill (getpid (), SIGHUP);
+ do {
+ struct input_event buf[NREAD_INPUT_EVENTS];
- /* XXX Is calling delete_display safe here? It calls Fdelete_frame. */
- if (d->delete_display_hook)
- (*d->delete_display_hook) (d);
- else
- delete_display (d);
- }
- else if (nread > 0)
- {
- /* We've got input. */
- break;
+ for (i = 0; i < NREAD_INPUT_EVENTS; i++)
+ EVENT_INIT (buf[i]);
+
+ /* No need for FIONREAD or fcntl; just say don't wait. */
+ nr = (*d->read_socket_hook) (d, buf, NREAD_INPUT_EVENTS, expected);
+
+ if (nr > 0)
+ {
+ /* We've got input. */
+ nread += nr;
+ expected = 0;
+
+ /* Scan the chars for C-g and store them in kbd_buffer. */
+ for (i = 0; !discard && i < nr; i++)
+ {
+ kbd_buffer_store_event (&buf[i]);
+ /* Don't look at input that follows a C-g too closely.
+ This reduces lossage due to autorepeat on C-g. */
+ if (buf[i].kind == ASCII_KEYSTROKE_EVENT
+ && buf[i].code == quit_char)
+ discard = 1;
+ }
+ }
+ else if (nr == -2) /* Non-transient error. */
+ {
+ /* The display device terminated; it should be closed. */
+
+ /* Kill Emacs if this was our last display. */
+ if (! display_list->next_display)
+ /* Formerly simply reported no input, but that
+ sometimes led to a failure of Emacs to terminate.
+ SIGHUP seems appropriate if we can't reach the
+ terminal. */
+ /* ??? Is it really right to send the signal just to
+ this process rather than to the whole process
+ group? Perhaps on systems with FIONREAD Emacs is
+ alone in its group. */
+ kill (getpid (), SIGHUP);
+
+ /* XXX Is calling delete_display safe here? It calls Fdelete_frame. */
+ if (d->delete_display_hook)
+ (*d->delete_display_hook) (d);
+ else
+ delete_display (d);
+ }
+ } while (nr == NREAD_INPUT_EVENTS);
}
d = next;
}
- /* Scan the chars for C-g and store them in kbd_buffer. */
- for (i = 0; i < nread; i++)
- {
- kbd_buffer_store_event (&buf[i]);
- /* Don't look at input that follows a C-g too closely.
- This reduces lossage due to autorepeat on C-g. */
- if (buf[i].kind == ASCII_KEYSTROKE_EVENT
- && buf[i].code == quit_char)
- break;
- }
-
- /* Clear used events */
- if (--in_read_avail_input == 0)
- for (i = 0; i < nread; i++)
- EVENT_INIT (buf[i]);
-
return nread;
}
@@ -6668,10 +6674,10 @@ tty_read_avail_input (struct display *display,
int n_to_read, i;
struct tty_display_info *tty = display->display_info.tty;
int nread = 0;
-
+
if (display->type != output_termcap)
abort ();
-
+
/* XXX I think the following code should be moved to separate hook
functions in system-dependent files. */
#ifdef WINDOWSNT
@@ -6681,15 +6687,15 @@ tty_read_avail_input (struct display *display,
n_to_read = dos_keysns ();
if (n_to_read == 0)
return 0;
-
+
cbuf[0] = dos_keyread ();
nread = 1;
-
+
#else /* not MSDOS */
if (! tty->term_initted) /* In case we get called during bootstrap. */
return 0;
-
+
/* Determine how many characters we should *try* to read. */
#ifdef FIONREAD
/* Find out how much input is available. */
@@ -6713,7 +6719,7 @@ tty_read_avail_input (struct display *display,
you lose;
#endif
#endif
-
+
/* Now read; for one reason or another, this will not block.
NREAD is set to the number of chars read. */
do
@@ -6753,19 +6759,19 @@ tty_read_avail_input (struct display *display,
0
#endif
);
-
+
#ifndef FIONREAD
#if defined (USG) || defined (DGUX) || defined (CYGWIN)
fcntl (fileno (TTY_INPUT (tty)), F_SETFL, 0);
#endif /* USG or DGUX or CYGWIN */
#endif /* no FIONREAD */
-
+
if (nread <= 0)
return nread;
-
+
#endif /* not MSDOS */
#endif /* not WINDOWSNT */
-
+
for (i = 0; i < nread; i++)
{
buf[i].kind = ASCII_KEYSTROKE_EVENT;
@@ -6774,7 +6780,7 @@ tty_read_avail_input (struct display *display,
buf[i].modifiers = meta_modifier;
if (tty->meta_key != 2)
cbuf[i] &= ~0x80;
-
+
buf[i].code = cbuf[i];
/* Set the frame corresponding to the active tty. Note that the
value of selected_frame is not reliable here, redisplay tends
@@ -6785,7 +6791,6 @@ tty_read_avail_input (struct display *display,
return nread;
}
-
#endif /* not VMS */
void
@@ -8316,7 +8321,7 @@ access_keymap_keyremap (map, key, prompt, do_funcall)
int do_funcall;
{
Lisp_Object next;
-
+
next = access_keymap (map, key, 1, 0, 1);
/* Handle symbol with autoload definition. */
@@ -8331,7 +8336,7 @@ access_keymap_keyremap (map, key, prompt, do_funcall)
&& (!NILP (Farrayp (XSYMBOL (next)->function))
|| KEYMAPP (XSYMBOL (next)->function)))
next = XSYMBOL (next)->function;
-
+
/* If the keymap gives a function, not an
array, then call the function with one arg and use
its value instead. */
@@ -9345,7 +9350,7 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
/* Adjust the function-key-map counters. */
fkey.end += diff;
fkey.start += diff;
-
+
goto replay_sequence;
}
}
@@ -10146,7 +10151,7 @@ On such systems, Emacs starts a subshell instead of suspending. */)
if (tty_list && tty_list->next)
error ("Suspend is not supported with multiple ttys");
-
+
if (!NILP (stuffstring))
CHECK_STRING (stuffstring);
@@ -10280,7 +10285,7 @@ interrupt_signal (signalnum) /* If we don't have an argument, */
else
{
/* Otherwise, the SIGINT was probably generated by C-g. */
-
+
/* Set internal_last_event_frame to the top frame of the
controlling tty, if we have a frame there. We disable the
interrupt key on secondary ttys, so the SIGINT must have come
@@ -10294,7 +10299,7 @@ interrupt_signal (signalnum) /* If we don't have an argument, */
}
/* This routine is called at interrupt level in response to C-g.
-
+
It is called from the SIGINT handler or kbd_buffer_store_event.
If `waiting_for_input' is non zero, then unless `echoing' is
@@ -10307,7 +10312,7 @@ interrupt_signal (signalnum) /* If we don't have an argument, */
static void
handle_interrupt ()
{
- char c;
+ char c;
struct frame *sf = SELECTED_FRAME ();
cancel_echoing ();
@@ -10480,7 +10485,7 @@ See also `current-input-mode'. */)
Currently it compiles fine, but its semantics are wrong. It sets
global parameters (e.g. interrupt_input) based on only the
current frame's device. */
-
+
if (!NILP (quit)
&& (!INTEGERP (quit) || XINT (quit) < 0 || XINT (quit) > 0400))
error ("set-input-mode: QUIT must be an ASCII character");
@@ -10528,7 +10533,7 @@ See also `current-input-mode'. */)
else
tty->meta_key = 2;
}
-
+
if (!NILP (quit))
/* Don't let this value be out of range. */
quit_char = XINT (quit) & (NILP (meta) ? 0177 : 0377);
@@ -10562,7 +10567,7 @@ The elements of this list correspond to the arguments of
{
Lisp_Object val[4];
struct frame *sf = XFRAME (selected_frame);
-
+
val[0] = interrupt_input ? Qt : Qnil;
if (FRAME_TERMCAP_P (sf))
{
@@ -10671,13 +10676,6 @@ init_keyboard ()
do_mouse_tracking = Qnil;
#endif
input_pending = 0;
-#ifndef VMS
- {
- int i;
- for (i = 0; i < KBD_BUFFER_SIZE; i++)
- EVENT_INIT (read_avail_input_buf[i]);
- }
-#endif
/* This means that command_loop_1 won't try to select anything the first
time through. */
@@ -11423,7 +11421,7 @@ keys_of_keyboard ()
/* Handling it at such a low-level causes read_key_sequence to get
* confused because it doesn't realize that the current_buffer was
* changed by read_char.
- *
+ *
* initial_define_lispy_key (Vspecial_event_map, "select-window",
* "handle-select-window"); */
initial_define_lispy_key (Vspecial_event_map, "save-session",
diff --git a/src/lisp.h b/src/lisp.h
index a0bc2af24bb..8affbc76126 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -178,18 +178,13 @@ union Lisp_Object
struct
{
EMACS_INT val : VALBITS;
- EMACS_UINT type : GCTYPEBITS;
+ enum Lisp_Type type : GCTYPEBITS;
} s;
struct
{
EMACS_UINT val : VALBITS;
- EMACS_UINT type : GCTYPEBITS;
+ enum Lisp_Type type : GCTYPEBITS;
} u;
- struct
- {
- EMACS_UINT val : VALBITS;
- enum Lisp_Type type : GCTYPEBITS;
- } gu;
}
Lisp_Object;
@@ -204,19 +199,14 @@ union Lisp_Object
struct
{
- EMACS_UINT type : GCTYPEBITS;
+ enum Lisp_Type type : GCTYPEBITS;
EMACS_INT val : VALBITS;
} s;
struct
{
- EMACS_UINT type : GCTYPEBITS;
+ enum Lisp_Type type : GCTYPEBITS;
EMACS_UINT val : VALBITS;
} u;
- struct
- {
- enum Lisp_Type type : GCTYPEBITS;
- EMACS_UINT val : VALBITS;
- } gu;
}
Lisp_Object;