aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-04-19 13:33:31 +0000
committerKaroly Lorentey2005-04-19 13:33:31 +0000
commit8d6f9bce72ee94ed6c297b79a181eac3f5beca74 (patch)
tree36cf3b6a5923171e371f9236eab36ad7de742b48
parent774a8da14bb2520b6adad223ab13f0b64f002872 (diff)
parentcd01ded928a8d082b9dbed6e9747c3d31b337b71 (diff)
downloademacs-8d6f9bce72ee94ed6c297b79a181eac3f5beca74.tar.gz
emacs-8d6f9bce72ee94ed6c297b79a181eac3f5beca74.zip
Merged from miles@gnu.org--gnu-2005 (patch 66, 266-268)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-266 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-267 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-268 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-66 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-330
-rw-r--r--lisp/ChangeLog30
-rw-r--r--lisp/desktop.el7
-rw-r--r--lisp/emulation/cua-base.el18
-rw-r--r--lisp/gnus/ChangeLog4
-rw-r--r--lisp/gnus/qp.el11
-rw-r--r--lisp/isearch.el63
-rw-r--r--lisp/tooltip.el20
-rw-r--r--lisp/url/ChangeLog5
-rw-r--r--lisp/url/url.el26
-rw-r--r--lispref/ChangeLog5
-rw-r--r--lispref/customize.texi13
-rw-r--r--man/ChangeLog5
-rw-r--r--man/misc.texi3
-rw-r--r--src/ChangeLog53
-rw-r--r--src/dispextern.h8
-rw-r--r--src/dispnew.c6
-rw-r--r--src/fns.c4
-rw-r--r--src/fringe.c16
-rw-r--r--src/lread.c6
-rw-r--r--src/macterm.c6
-rw-r--r--src/window.c1
-rw-r--r--src/window.h3
-rw-r--r--src/xdisp.c52
-rw-r--r--src/xfaces.c5
-rw-r--r--src/xmenu.c10
25 files changed, 225 insertions, 155 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 8b97c774aaa..4d8e8c6dd52 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,33 @@
12005-04-18 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * isearch.el (isearch-edit-string): Make the search-ring available for
4 minibuffer history commands.
5 (minibuffer-local-isearch-map): Remove bindings for M-p and M-n,
6 the default history commands now work just as well.
7 (isearch-ring-retreat-edit, isearch-ring-advance-edit): Remove.
8
92005-04-18 Kim F. Storm <storm@cua.dk>
10
11 * emulation/cua-base.el (cua--pre-command-handler): Add more
12 elaborate check for shift modifier on non-window systems.
13
142005-04-18 Lars Hansen <larsh@math.ku.dk>
15
16 * desktop.el: Make "--no-desktop" turn off `desktop-save-mode'.
17
182005-04-18 Kim F. Storm <storm@cua.dk>
19
20 * tooltip.el (tooltip-show): Change second arg to USE-ECHO-AREA
21 and make it optional. Don't test tooltip-gud-echo-area here.
22 (tooltip-gud-process-output, gdb-tooltip-print):
23 Pass tooltip-gud-echo-area to tooltip-show.
24 (tooltip-help-tips): Remove second optional arg to tooltip-show.
25
262005-04-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
27
28 * tooltip.el (tooltip-mode): `emacs-quick-startup' and
29 `display-graphic-p' may not be bound yet.
30
12005-04-17 Luc Teirlinck <teirllm@auburn.edu> 312005-04-17 Luc Teirlinck <teirllm@auburn.edu>
2 32
3 * startup.el (command-line): No longer enable Xterm Mouse mode by 33 * startup.el (command-line): No longer enable Xterm Mouse mode by
diff --git a/lisp/desktop.el b/lisp/desktop.el
index ed663d375d5..8e81e8826fe 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -1030,9 +1030,10 @@ If there are no buffers left to create, kill the timer."
1030 'after-init-hook 1030 'after-init-hook
1031 '(lambda () 1031 '(lambda ()
1032 (let ((key "--no-desktop")) 1032 (let ((key "--no-desktop"))
1033 (if (member key command-line-args) 1033 (when (member key command-line-args)
1034 (delete key command-line-args) 1034 (setq command-line-args (delete key command-line-args))
1035 (when desktop-save-mode (desktop-read)))))) 1035 (setq desktop-save-mode nil)))
1036 (when desktop-save-mode (desktop-read))))
1036 1037
1037(provide 'desktop) 1038(provide 'desktop)
1038 1039
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index 77e8f636931..6aeb4bab5a2 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -1066,10 +1066,20 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1066 ;; If rectangle is active, expand rectangle in specified direction and ignore the movement. 1066 ;; If rectangle is active, expand rectangle in specified direction and ignore the movement.
1067 (if movement 1067 (if movement
1068 (cond 1068 (cond
1069 ((memq 'shift (event-modifiers 1069 ((if window-system
1070 (aref (if window-system 1070 (memq 'shift (event-modifiers
1071 (this-single-command-raw-keys) 1071 (aref (this-single-command-raw-keys) 0)))
1072 (this-single-command-keys)) 0))) 1072 (or
1073 (memq 'shift (event-modifiers
1074 (aref (this-single-command-keys) 0)))
1075 ;; See if raw escape sequence maps to a shifted event, e.g. S-up or C-S-home.
1076 (and (boundp 'function-key-map)
1077 function-key-map
1078 (let ((ev (lookup-key function-key-map
1079 (this-single-command-raw-keys))))
1080 (and (vector ev)
1081 (symbolp (setq ev (aref ev 0)))
1082 (string-match "S-" (symbol-name ev)))))))
1073 (unless mark-active 1083 (unless mark-active
1074 (push-mark-command nil t)) 1084 (push-mark-command nil t))
1075 (setq cua--last-region-shifted t) 1085 (setq cua--last-region-shifted t)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 2ec1e0bc62e..f08f21fadb7 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,7 @@
12005-04-18 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * qp.el (quoted-printable-encode-region): Save excursion.
4
12005-04-13 Katsumi Yamaoka <yamaoka@jpl.org> 52005-04-13 Katsumi Yamaoka <yamaoka@jpl.org>
2 6
3 * gnus-art.el (gnus-mime-inline-part): Use mm-string-to-multibyte. 7 * gnus-art.el (gnus-mime-inline-part): Use mm-string-to-multibyte.
diff --git a/lisp/gnus/qp.el b/lisp/gnus/qp.el
index 3789e0efda8..1004abeb02b 100644
--- a/lisp/gnus/qp.el
+++ b/lisp/gnus/qp.el
@@ -1,6 +1,7 @@
1;;; qp.el --- Quoted-Printable functions 1;;; qp.el --- Quoted-Printable functions
2 2
3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
4;; Free Software Foundation, Inc.
4 5
5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
6;; Keywords: mail, extensions 7;; Keywords: mail, extensions
@@ -100,15 +101,15 @@ You should probably avoid non-ASCII characters in this arg.
100If `mm-use-ultra-safe-encoding' is set, fold lines unconditionally and 101If `mm-use-ultra-safe-encoding' is set, fold lines unconditionally and
101encode lines starting with \"From\"." 102encode lines starting with \"From\"."
102 (interactive "r") 103 (interactive "r")
103 (goto-char from)
104 (if (re-search-forward (mm-string-to-multibyte "[^\x0-\x7f\x80-\xff]")
105 to t)
106 (error "Multibyte character in QP encoding region"))
107 (unless class 104 (unless class
108 ;; Avoid using 8bit characters. = is \075. 105 ;; Avoid using 8bit characters. = is \075.
109 ;; Equivalent to "^\000-\007\013\015-\037\200-\377=" 106 ;; Equivalent to "^\000-\007\013\015-\037\200-\377="
110 (setq class "\010-\012\014\040-\074\076-\177")) 107 (setq class "\010-\012\014\040-\074\076-\177"))
111 (save-excursion 108 (save-excursion
109 (goto-char from)
110 (if (re-search-forward (mm-string-to-multibyte "[^\x0-\x7f\x80-\xff]")
111 to t)
112 (error "Multibyte character in QP encoding region"))
112 (save-restriction 113 (save-restriction
113 (narrow-to-region from to) 114 (narrow-to-region from to)
114 ;; Encode all the non-ascii and control characters. 115 ;; Encode all the non-ascii and control characters.
diff --git a/lisp/isearch.el b/lisp/isearch.el
index dfd50b2a8a1..e01f2c0c0ec 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -405,12 +405,6 @@ A value of nil means highlight all matches."
405 (let ((map (make-sparse-keymap))) 405 (let ((map (make-sparse-keymap)))
406 (set-keymap-parent map minibuffer-local-map) 406 (set-keymap-parent map minibuffer-local-map)
407 (define-key map "\r" 'isearch-nonincremental-exit-minibuffer) 407 (define-key map "\r" 'isearch-nonincremental-exit-minibuffer)
408 (define-key map "\M-n" 'isearch-ring-advance-edit)
409 (define-key map [next] 'isearch-ring-advance-edit)
410 (define-key map [down] 'isearch-ring-advance-edit)
411 (define-key map "\M-p" 'isearch-ring-retreat-edit)
412 (define-key map [prior] 'isearch-ring-retreat-edit)
413 (define-key map [up] 'isearch-ring-retreat-edit)
414 (define-key map "\M-\t" 'isearch-complete-edit) 408 (define-key map "\M-\t" 'isearch-complete-edit)
415 (define-key map "\C-s" 'isearch-forward-exit-minibuffer) 409 (define-key map "\C-s" 'isearch-forward-exit-minibuffer)
416 (define-key map "\C-r" 'isearch-reverse-exit-minibuffer) 410 (define-key map "\C-r" 'isearch-reverse-exit-minibuffer)
@@ -937,8 +931,6 @@ The following additional command keys are active while editing.
937\\[isearch-nonincremental-exit-minibuffer] to do one nonincremental search. 931\\[isearch-nonincremental-exit-minibuffer] to do one nonincremental search.
938\\[isearch-forward-exit-minibuffer] to resume isearching forward. 932\\[isearch-forward-exit-minibuffer] to resume isearching forward.
939\\[isearch-reverse-exit-minibuffer] to resume isearching backward. 933\\[isearch-reverse-exit-minibuffer] to resume isearching backward.
940\\[isearch-ring-advance-edit] to replace the search string with the next item in the search ring.
941\\[isearch-ring-retreat-edit] to replace the search string with the previous item in the search ring.
942\\[isearch-complete-edit] to complete the search string using the search ring. 934\\[isearch-complete-edit] to complete the search string using the search ring.
943\\<isearch-mode-map> 935\\<isearch-mode-map>
944If first char entered is \\[isearch-yank-word-or-char], then do word search instead." 936If first char entered is \\[isearch-yank-word-or-char], then do word search instead."
@@ -1024,12 +1016,12 @@ If first char entered is \\[isearch-yank-word-or-char], then do word search inst
1024 (isearch-unread e)) 1016 (isearch-unread e))
1025 (setq cursor-in-echo-area nil) 1017 (setq cursor-in-echo-area nil)
1026 (setq isearch-new-string 1018 (setq isearch-new-string
1027 (let (junk-ring) 1019 (read-from-minibuffer
1028 (read-from-minibuffer 1020 (isearch-message-prefix nil nil isearch-nonincremental)
1029 (isearch-message-prefix nil nil isearch-nonincremental) 1021 isearch-string
1030 isearch-string 1022 minibuffer-local-isearch-map nil
1031 minibuffer-local-isearch-map nil 1023 (if isearch-regexp 'regexp-search-ring 'search-ring)
1032 'junk-ring nil t)) 1024 nil t)
1033 isearch-new-message 1025 isearch-new-message
1034 (mapconcat 'isearch-text-char-description 1026 (mapconcat 'isearch-text-char-description
1035 isearch-new-string ""))) 1027 isearch-new-string "")))
@@ -1860,49 +1852,6 @@ Obsolete."
1860 (interactive) 1852 (interactive)
1861 (isearch-ring-adjust nil)) 1853 (isearch-ring-adjust nil))
1862 1854
1863(defun isearch-ring-advance-edit (n)
1864 "Insert the next element of the search history into the minibuffer.
1865With prefix arg N, insert the Nth element."
1866 (interactive "p")
1867 (let* ((yank-pointer-name (if isearch-regexp
1868 'regexp-search-ring-yank-pointer
1869 'search-ring-yank-pointer))
1870 (yank-pointer (eval yank-pointer-name))
1871 (ring (if isearch-regexp regexp-search-ring search-ring))
1872 (length (length ring)))
1873 (if (zerop length)
1874 ()
1875 (set yank-pointer-name
1876 (setq yank-pointer
1877 (mod (- (or yank-pointer 0) n)
1878 length)))
1879
1880 (delete-field)
1881 (insert (nth yank-pointer ring))
1882 (goto-char (point-max)))))
1883
1884(defun isearch-ring-retreat-edit (n)
1885 "Insert the previous element of the search history into the minibuffer.
1886With prefix arg N, insert the Nth element."
1887 (interactive "p")
1888 (isearch-ring-advance-edit (- n)))
1889
1890;;(defun isearch-ring-adjust-edit (advance)
1891;; "Use the next or previous search string in the ring while in minibuffer."
1892;; (isearch-ring-adjust1 advance)
1893;; (erase-buffer)
1894;; (insert isearch-string))
1895
1896;;(defun isearch-ring-advance-edit ()
1897;; (interactive)
1898;; (isearch-ring-adjust-edit 'advance))
1899
1900;;(defun isearch-ring-retreat-edit ()
1901;; "Retreat to the previous search string in the ring while in the minibuffer."
1902;; (interactive)
1903;; (isearch-ring-adjust-edit nil))
1904
1905
1906(defun isearch-complete1 () 1855(defun isearch-complete1 ()
1907 ;; Helper for isearch-complete and isearch-complete-edit 1856 ;; Helper for isearch-complete and isearch-complete-edit
1908 ;; Return t if completion OK, nil if no completion exists. 1857 ;; Return t if completion OK, nil if no completion exists.
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index c903dbac523..d70e20e5b6b 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -188,8 +188,9 @@ With ARG, turn tooltip mode on if and only if ARG is positive."
188 ;; If you change the :init-value below, you also need to change the 188 ;; If you change the :init-value below, you also need to change the
189 ;; corresponding code in startup.el. 189 ;; corresponding code in startup.el.
190 :init-value (not (or noninteractive 190 :init-value (not (or noninteractive
191 emacs-quick-startup 191 (and (boundp 'emacs-quick-startup) emacs-quick-startup)
192 (not (display-graphic-p)) 192 (not (and (fboundp 'display-graphic-p)
193 (display-graphic-p)))
193 (not (fboundp 'x-show-tip)))) 194 (not (fboundp 'x-show-tip))))
194 :group 'tooltip 195 :group 'tooltip
195 (unless (or (null tooltip-mode) (fboundp 'x-show-tip)) 196 (unless (or (null tooltip-mode) (fboundp 'x-show-tip))
@@ -289,7 +290,7 @@ change the existing association. Value is the resulting alist."
289 (push (cons key value) alist)) 290 (push (cons key value) alist))
290 alist)) 291 alist))
291 292
292(defun tooltip-show (text gud-tip) 293(defun tooltip-show (text &optional use-echo-area)
293 "Show a tooltip window displaying TEXT. 294 "Show a tooltip window displaying TEXT.
294 295
295Text larger than `x-max-tooltip-size' is clipped. 296Text larger than `x-max-tooltip-size' is clipped.
@@ -300,8 +301,9 @@ is displayed. Otherwise, the tooltip pops at offsets specified by
300`tooltip-x-offset' and `tooltip-y-offset' from the current mouse 301`tooltip-x-offset' and `tooltip-y-offset' from the current mouse
301position. 302position.
302 303
303GUD-TIP is t if the tooltip is from a GUD session and nil otherwise." 304Optional second arg USE-ECHO-AREA non-nil means to show tooltip
304 (if (and gud-tip tooltip-gud-echo-area) 305in echo area."
306 (if use-echo-area
305 (message "%s" text) 307 (message "%s" text)
306 (condition-case error 308 (condition-case error
307 (let ((params (copy-sequence tooltip-frame-parameters)) 309 (let ((params (copy-sequence tooltip-frame-parameters))
@@ -417,7 +419,8 @@ This event can be examined by forms in TOOLTIP-GUD-DISPLAY.")
417(defun tooltip-gud-process-output (process output) 419(defun tooltip-gud-process-output (process output)
418 "Process debugger output and show it in a tooltip window." 420 "Process debugger output and show it in a tooltip window."
419 (set-process-filter process tooltip-gud-original-filter) 421 (set-process-filter process tooltip-gud-original-filter)
420 (tooltip-show (tooltip-strip-prompt process output) t)) 422 (tooltip-show (tooltip-strip-prompt process output)
423 tooltip-gud-echo-area))
421 424
422(defun tooltip-gud-print-command (expr) 425(defun tooltip-gud-print-command (expr)
423 "Return a suitable command to print the expression EXPR. 426 "Return a suitable command to print the expression EXPR.
@@ -464,7 +467,8 @@ This function must return nil if it doesn't handle EVENT."
464 (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer) 467 (with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer)
465 (let ((string (buffer-string))) 468 (let ((string (buffer-string)))
466 ;; remove newline for tooltip-gud-echo-area 469 ;; remove newline for tooltip-gud-echo-area
467 (substring string 0 (- (length string) 1)))) t)) 470 (substring string 0 (- (length string) 1))))
471 tooltip-gud-echo-area))
468 472
469 473
470;;; Tooltip help. 474;;; Tooltip help.
@@ -497,7 +501,7 @@ This is installed on the hook `tooltip-hook', which is run when
497the timer with ID `tooltip-timeout-id' fires. 501the timer with ID `tooltip-timeout-id' fires.
498Value is non-nil if this function handled the tip." 502Value is non-nil if this function handled the tip."
499 (when (stringp tooltip-help-message) 503 (when (stringp tooltip-help-message)
500 (tooltip-show tooltip-help-message nil) 504 (tooltip-show tooltip-help-message)
501 t)) 505 t))
502 506
503(provide 'tooltip) 507(provide 'tooltip)
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 82b7f64dc01..a023bdf18c7 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,8 @@
12005-04-18 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * url.el (url-retrieve-synchronously): Work around the fact that
4 url-http sometimes doesn't call the callback.
5
12005-04-04 Lute Kamstra <lute@gnu.org> 62005-04-04 Lute Kamstra <lute@gnu.org>
2 7
3 * url-handlers.el (url-handler-mode): Specify :group. 8 * url-handlers.el (url-handler-mode): Specify :group.
diff --git a/lisp/url/url.el b/lisp/url/url.el
index a9fd46bc23a..05ef85c9300 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -180,15 +180,23 @@ no further processing). URL is either a string or a parsed URL."
180 (url-debug 'retrieval 180 (url-debug 'retrieval
181 "Spinning in url-retrieve-synchronously: %S (%S)" 181 "Spinning in url-retrieve-synchronously: %S (%S)"
182 retrieval-done asynch-buffer) 182 retrieval-done asynch-buffer)
183 ;; We used to use `sit-for' here, but in some cases it wouldn't 183 (if (memq (process-status proc) '(closed exit signal failed))
184 ;; work because apparently pending keyboard input would always 184 ;; FIXME: It's not clear whether url-retrieve's callback is
185 ;; interrupt it before it got a chance to handle process input. 185 ;; guaranteed to be called or not. It seems that url-http
186 ;; `sleep-for' was tried but it lead to other forms of 186 ;; decides sometimes consciously not to call it, so it's not
187 ;; hanging. --Stef 187 ;; clear that it's a bug, but even if we need to decide how
188 (unless (accept-process-output proc) 188 ;; url-http can then warn us that the download has completed.
189 ;; accept-process-output returned nil, maybe because the process 189 ;; In the mean time, we use this here workaround.
190 ;; exited (and may have been replaced with another). 190 (setq retrieval-done t)
191 (setq proc (get-buffer-process asynch-buffer))))) 191 ;; We used to use `sit-for' here, but in some cases it wouldn't
192 ;; work because apparently pending keyboard input would always
193 ;; interrupt it before it got a chance to handle process input.
194 ;; `sleep-for' was tried but it lead to other forms of
195 ;; hanging. --Stef
196 (unless (accept-process-output proc)
197 ;; accept-process-output returned nil, maybe because the process
198 ;; exited (and may have been replaced with another).
199 (setq proc (get-buffer-process asynch-buffer))))))
192 asynch-buffer))) 200 asynch-buffer)))
193 201
194(defun url-mm-callback (&rest ignored) 202(defun url-mm-callback (&rest ignored)
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 39bcba57c42..14be8680906 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,8 @@
12005-04-18 Nick Roberts <nickrob@snap.net.nz>
2
3 * customize.texi (Variable Definitions): Replace tooltip-mode
4 example with save-place.
5
12005-04-17 Richard M. Stallman <rms@gnu.org> 62005-04-17 Richard M. Stallman <rms@gnu.org>
2 7
3 * buffers.texi (Indirect Buffers): Clarify. 8 * buffers.texi (Indirect Buffers): Clarify.
diff --git a/lispref/customize.texi b/lispref/customize.texi
index a1a61ab6b09..10911cea165 100644
--- a/lispref/customize.texi
+++ b/lispref/customize.texi
@@ -283,17 +283,14 @@ those other variables already have their intended values.
283operation of a certain feature. Assuming that the package is coded to 283operation of a certain feature. Assuming that the package is coded to
284check the value of the option, you still need to arrange for the package 284check the value of the option, you still need to arrange for the package
285to be loaded. You can do that with @code{:require}. @xref{Common 285to be loaded. You can do that with @code{:require}. @xref{Common
286Keywords}. Here is an example, from the library @file{tooltip.el}: 286Keywords}. Here is an example, from the library @file{saveplace.el}:
287 287
288@example 288@example
289(defcustom tooltip-mode nil 289(defcustom save-place nil
290 "Non-nil if Tooltip mode is enabled..." 290 "*Non-nil means automatically save place in each file..."
291 :set (lambda (symbol value)
292 (tooltip-mode (or value 0)))
293 :initialize 'custom-initialize-default
294 :type 'boolean 291 :type 'boolean
295 :require 'tooltip 292 :require 'saveplace
296 :group 'tooltip) 293 :group 'save-place)
297@end example 294@end example
298 295
299If a customization item has a type such as @code{hook} or @code{alist}, 296If a customization item has a type such as @code{hook} or @code{alist},
diff --git a/man/ChangeLog b/man/ChangeLog
index eccaa607dbd..694196c47b8 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,8 @@
12005-04-18 Lars Hansen <larsh@math.ku.dk>
2
3 * misc.texi (Saving Emacs Sessions): Add that "--no-desktop" now
4 turns off desktop-save-mode.
5
12005-04-17 Luc Teirlinck <teirllm@auburn.edu> 62005-04-17 Luc Teirlinck <teirllm@auburn.edu>
2 7
3 * frames.texi (XTerm Mouse): Xterm Mouse mode is no longer enabled 8 * frames.texi (XTerm Mouse): Xterm Mouse mode is no longer enabled
diff --git a/man/misc.texi b/man/misc.texi
index f1e05cae89c..f54bb3a79e2 100644
--- a/man/misc.texi
+++ b/man/misc.texi
@@ -1937,7 +1937,8 @@ another directory by typing @kbd{M-x desktop-change-dir}. Typing
1937@kbd{M-x desktop-revert} reverts to the desktop previously reloaded. 1937@kbd{M-x desktop-revert} reverts to the desktop previously reloaded.
1938 1938
1939 Specify the option @samp{--no-desktop} on the command line when you 1939 Specify the option @samp{--no-desktop} on the command line when you
1940don't want it to reload any saved desktop. 1940don't want it to reload any saved desktop. This turns off
1941@code{desktop-save-mode} for the current session.
1941 1942
1942@vindex desktop-restore-eager 1943@vindex desktop-restore-eager
1943 By default, all the buffers in the desktop are restored at one go. 1944 By default, all the buffers in the desktop are restored at one go.
diff --git a/src/ChangeLog b/src/ChangeLog
index 3483a2c5905..ac7d5fb07f3 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,55 @@
12005-04-18 Kim F. Storm <storm@cua.dk>
2
3 * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap.
4 It replaces the corresponding member from struct window, as a
5 window may now show multiple overlay arrows.
6 Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap.
7
8 * dispnew.c (row_equal_p, update_window_line, scrolling_window):
9 Compare overlay_arrow_bitmap than overlay_arrow_p members.
10
11 * fringe.c (draw_fringe_bitmap): Use overlay_arrow_bitmap from row
12 rather than from window.
13 (update_window_fringes): Compare overlay_arrow_bitmap rather than
14 overlay_arrow_p members.
15 (Ffringe_bitmaps_at_pos): Return fringe overlay_arrow_bitmap name
16 if not default.
17
18 * window.h (struct window): Remove member overlay_arrow_bitmap.
19
20 * window.c (make_window): Don't initialize overlay_arrow_bitmap.
21
22 * xdisp.c (overlay_arrow_string_or_property): Remove PBITMAP arg.
23 Calls changed. Don't check for overlay-arrow-bitmap property here.
24 (overlay_arrow_at_row): Remove PBITMAP arg. Instead, if left
25 fringe is present, return Lisp integer for bitmap (or -1 for default).
26 Fix value of overlay-arrow-bitmap property to be a symbol, use
27 lookup_fringe_bitmap to parse it.
28 (display_line): Change call to overlay_arrow_at_row. Store integer
29 return value as overlay bitmap in row rather than window.
30 Only show overlay arrow if row displays text, or if no other overlay
31 arrow is seen in window (if overlay marker is at point-max).
32
332005-04-18 Thien-Thi Nguyen <ttn@gnu.org>
34
35 * xfaces.c (realize_x_face) [!HAVE_WINDOW_SYSTEM]: Return NULL.
36
372005-04-18 Lute Kamstra <lute@gnu.org>
38
39 * lread.c (Vloads_in_progress): Static.
40 * fns.c (Vloads_in_progress): Remove extern.
41 (load_in_progress): Add extern.
42 (Frequire): Use load_in_progress instead of Vloads_in_progress.
43
442005-04-18 Thien-Thi Nguyen <ttn@gnu.org>
45
46 * xmenu.c (Fx_popup_menu): Initialize error_name to NULL.
47
482005-04-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
49
50 * macterm.c (XTread_socket): Don't beep on keyboard input even if
51 no frame is visible.
52
12005-04-16 Dan Nicolaescu <dann@ics.uci.edu> 532005-04-16 Dan Nicolaescu <dann@ics.uci.edu>
2 54
3 * term.c (struct keys): Add support for shifted keys. 55 * term.c (struct keys): Add support for shifted keys.
@@ -110,7 +162,6 @@
110 into "(any string)". 162 into "(any string)".
111 163
112 * lread.c (Vloads_in_progress): Not static. 164 * lread.c (Vloads_in_progress): Not static.
113
114 * fns.c (Vloads_in_progress): Add extern. 165 * fns.c (Vloads_in_progress): Add extern.
115 (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil. 166 (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil.
116 167
diff --git a/src/dispextern.h b/src/dispextern.h
index fbc816865b4..abcda4fc731 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -726,6 +726,11 @@ struct glyph_row
726 position of the next row. */ 726 position of the next row. */
727 struct display_pos end; 727 struct display_pos end;
728 728
729 /* Non-zero means the overlay arrow bitmap is on this line.
730 -1 means use default overlay arrow bitmap, else
731 it specifies actual fringe bitmap number. */
732 int overlay_arrow_bitmap;
733
729 /* Left fringe bitmap number (enum fringe_bitmap_type). */ 734 /* Left fringe bitmap number (enum fringe_bitmap_type). */
730 unsigned left_user_fringe_bitmap : FRINGE_ID_BITS; 735 unsigned left_user_fringe_bitmap : FRINGE_ID_BITS;
731 736
@@ -764,9 +769,6 @@ struct glyph_row
764 unsigned truncated_on_left_p : 1; 769 unsigned truncated_on_left_p : 1;
765 unsigned truncated_on_right_p : 1; 770 unsigned truncated_on_right_p : 1;
766 771
767 /* 1 means the overlay arrow is on this line. */
768 unsigned overlay_arrow_p : 1;
769
770 /* 1 means that this row displays a continued line, i.e. it has a 772 /* 1 means that this row displays a continued line, i.e. it has a
771 continuation mark at the right side. */ 773 continuation mark at the right side. */
772 unsigned continued_p : 1; 774 unsigned continued_p : 1;
diff --git a/src/dispnew.c b/src/dispnew.c
index f549a8dde91..d7b5590c532 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -1506,7 +1506,7 @@ row_equal_p (w, a, b, mouse_face_p)
1506 || a->left_fringe_face_id != b->left_fringe_face_id 1506 || a->left_fringe_face_id != b->left_fringe_face_id
1507 || a->right_fringe_bitmap != b->right_fringe_bitmap 1507 || a->right_fringe_bitmap != b->right_fringe_bitmap
1508 || a->right_fringe_face_id != b->right_fringe_face_id 1508 || a->right_fringe_face_id != b->right_fringe_face_id
1509 || a->overlay_arrow_p != b->overlay_arrow_p 1509 || a->overlay_arrow_bitmap != b->overlay_arrow_bitmap
1510 || a->exact_window_width_line_p != b->exact_window_width_line_p 1510 || a->exact_window_width_line_p != b->exact_window_width_line_p
1511 || a->overlapped_p != b->overlapped_p 1511 || a->overlapped_p != b->overlapped_p
1512 || (MATRIX_ROW_CONTINUATION_LINE_P (a) 1512 || (MATRIX_ROW_CONTINUATION_LINE_P (a)
@@ -4539,7 +4539,7 @@ update_window_line (w, vpos, mouse_face_overwritten_p)
4539 || desired_row->y != current_row->y 4539 || desired_row->y != current_row->y
4540 || desired_row->visible_height != current_row->visible_height 4540 || desired_row->visible_height != current_row->visible_height
4541 || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p 4541 || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p
4542 || desired_row->overlay_arrow_p != current_row->overlay_arrow_p 4542 || desired_row->overlay_arrow_bitmap != current_row->overlay_arrow_bitmap
4543 || current_row->redraw_fringe_bitmaps_p 4543 || current_row->redraw_fringe_bitmaps_p
4544 || desired_row->mode_line_p != current_row->mode_line_p 4544 || desired_row->mode_line_p != current_row->mode_line_p
4545 || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p 4545 || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p
@@ -5051,7 +5051,7 @@ scrolling_window (w, header_line_p)
5051 || to->right_fringe_bitmap != from->right_fringe_bitmap 5051 || to->right_fringe_bitmap != from->right_fringe_bitmap
5052 || to->left_fringe_face_id != from->left_fringe_face_id 5052 || to->left_fringe_face_id != from->left_fringe_face_id
5053 || to->right_fringe_face_id != from->right_fringe_face_id 5053 || to->right_fringe_face_id != from->right_fringe_face_id
5054 || to->overlay_arrow_p != from->overlay_arrow_p)) 5054 || to->overlay_arrow_bitmap != from->overlay_arrow_bitmap))
5055 from->redraw_fringe_bitmaps_p = 1; 5055 from->redraw_fringe_bitmaps_p = 1;
5056 assign_row (to, from); 5056 assign_row (to, from);
5057 to->enabled_p = 1, from->enabled_p = 0; 5057 to->enabled_p = 1, from->enabled_p = 0;
diff --git a/src/fns.c b/src/fns.c
index e921579f79b..daa9e10c465 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -66,7 +66,7 @@ int use_file_dialog;
66extern int minibuffer_auto_raise; 66extern int minibuffer_auto_raise;
67extern Lisp_Object minibuf_window; 67extern Lisp_Object minibuf_window;
68extern Lisp_Object Vlocale_coding_system; 68extern Lisp_Object Vlocale_coding_system;
69extern Lisp_Object Vloads_in_progress; 69extern int load_in_progress;
70 70
71Lisp_Object Qstring_lessp, Qprovide, Qrequire; 71Lisp_Object Qstring_lessp, Qprovide, Qrequire;
72Lisp_Object Qyes_or_no_p_history; 72Lisp_Object Qyes_or_no_p_history;
@@ -3460,7 +3460,7 @@ The normal messages at start and end of loading FILENAME are suppressed. */)
3460 even if the feature specified is already loaded. 3460 even if the feature specified is already loaded.
3461 But not more than once in any file, 3461 But not more than once in any file,
3462 and not when we aren't loading a file. */ 3462 and not when we aren't loading a file. */
3463 if (! NILP (Vloads_in_progress)) 3463 if (load_in_progress)
3464 { 3464 {
3465 tem = Fcons (Qrequire, feature); 3465 tem = Fcons (Qrequire, feature);
3466 if (NILP (Fmember (tem, Vcurrent_load_list))) 3466 if (NILP (Fmember (tem, Vcurrent_load_list)))
diff --git a/src/fringe.c b/src/fringe.c
index 39479dfed21..19e6e60d114 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -700,11 +700,11 @@ draw_fringe_bitmap (w, row, left_p)
700 700
701 draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP); 701 draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP);
702 702
703 if (left_p && row->overlay_arrow_p) 703 if (left_p && row->overlay_arrow_bitmap != NO_FRINGE_BITMAP)
704 draw_fringe_bitmap_1 (w, row, 1, 1, 704 draw_fringe_bitmap_1 (w, row, 1, 1,
705 (w->overlay_arrow_bitmap 705 (row->overlay_arrow_bitmap < 0
706 ? w->overlay_arrow_bitmap 706 ? OVERLAY_ARROW_BITMAP
707 : OVERLAY_ARROW_BITMAP)); 707 : row->overlay_arrow_bitmap));
708} 708}
709 709
710 710
@@ -960,10 +960,10 @@ update_window_fringes (w, force_p)
960 cur->right_fringe_face_id = right_face_id; 960 cur->right_fringe_face_id = right_face_id;
961 } 961 }
962 962
963 if (row->overlay_arrow_p != cur->overlay_arrow_p) 963 if (row->overlay_arrow_bitmap != cur->overlay_arrow_bitmap)
964 { 964 {
965 redraw_p = row->redraw_fringe_bitmaps_p = cur->redraw_fringe_bitmaps_p = 1; 965 redraw_p = row->redraw_fringe_bitmaps_p = cur->redraw_fringe_bitmaps_p = 1;
966 cur->overlay_arrow_p = row->overlay_arrow_p; 966 cur->overlay_arrow_bitmap = row->overlay_arrow_bitmap;
967 } 967 }
968 968
969 row->left_fringe_bitmap = left; 969 row->left_fringe_bitmap = left;
@@ -1414,7 +1414,9 @@ Return nil if POS is not visible in WINDOW. */)
1414 if (row) 1414 if (row)
1415 return list3 (get_fringe_bitmap_name (row->left_fringe_bitmap), 1415 return list3 (get_fringe_bitmap_name (row->left_fringe_bitmap),
1416 get_fringe_bitmap_name (row->right_fringe_bitmap), 1416 get_fringe_bitmap_name (row->right_fringe_bitmap),
1417 (row->overlay_arrow_p ? Qt : Qnil)); 1417 (row->overlay_arrow_bitmap == 0 ? Qnil
1418 : row->overlay_arrow_bitmap < 0 ? Qt
1419 : get_fringe_bitmap_name (row->overlay_arrow_bitmap)));
1418 else 1420 else
1419 return Qnil; 1421 return Qnil;
1420} 1422}
diff --git a/src/lread.c b/src/lread.c
index d36d45c8c7d..869e95a00e0 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1,6 +1,6 @@
1/* Lisp parsing and input streams. 1/* Lisp parsing and input streams.
2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997, 1998, 2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997, 1998,
3 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. 3 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -90,7 +90,7 @@ Lisp_Object Qinhibit_file_name_operation;
90extern Lisp_Object Qevent_symbol_element_mask; 90extern Lisp_Object Qevent_symbol_element_mask;
91extern Lisp_Object Qfile_exists_p; 91extern Lisp_Object Qfile_exists_p;
92 92
93/* non-zero if inside `load' */ 93/* non-zero iff inside `load' */
94int load_in_progress; 94int load_in_progress;
95 95
96/* Directory in which the sources were found. */ 96/* Directory in which the sources were found. */
@@ -194,7 +194,7 @@ static int new_backquote_flag;
194/* A list of file names for files being loaded in Fload. Used to 194/* A list of file names for files being loaded in Fload. Used to
195 check for recursive loads. */ 195 check for recursive loads. */
196 196
197Lisp_Object Vloads_in_progress; 197static Lisp_Object Vloads_in_progress;
198 198
199/* Non-zero means load dangerous compiled Lisp files. */ 199/* Non-zero means load dangerous compiled Lisp files. */
200 200
diff --git a/src/macterm.c b/src/macterm.c
index 5aab6ec5364..7bef378b590 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -8590,13 +8590,15 @@ XTread_socket (sd, expected, hold_quit)
8590 struct frame *f = mac_focus_frame (dpyinfo); 8590 struct frame *f = mac_focus_frame (dpyinfo);
8591 WindowPtr window_ptr; 8591 WindowPtr window_ptr;
8592 8592
8593 if (!f) 8593#if 0
8594 if (dpyinfo->x_focus_frame == NULL)
8594 { 8595 {
8595 /* Beep if wheel move occurs when all the frames 8596 /* Beep if wheel move occurs when all the frames
8596 are invisible. */ 8597 are invisible. */
8597 SysBeep(1); 8598 SysBeep(1);
8598 break; 8599 break;
8599 } 8600 }
8601#endif
8600 8602
8601 GetEventParameter(eventRef, kEventParamMouseWheelDelta, 8603 GetEventParameter(eventRef, kEventParamMouseWheelDelta,
8602 typeSInt32, NULL, sizeof (SInt32), 8604 typeSInt32, NULL, sizeof (SInt32),
@@ -9011,6 +9013,7 @@ XTread_socket (sd, expected, hold_quit)
9011 break; 9013 break;
9012#endif 9014#endif
9013 9015
9016#if 0
9014 if (dpyinfo->x_focus_frame == NULL) 9017 if (dpyinfo->x_focus_frame == NULL)
9015 { 9018 {
9016 /* Beep if keyboard input occurs when all the frames 9019 /* Beep if keyboard input occurs when all the frames
@@ -9018,6 +9021,7 @@ XTread_socket (sd, expected, hold_quit)
9018 SysBeep (1); 9021 SysBeep (1);
9019 break; 9022 break;
9020 } 9023 }
9024#endif
9021 9025
9022 { 9026 {
9023 static SInt16 last_key_script = -1; 9027 static SInt16 last_key_script = -1;
diff --git a/src/window.c b/src/window.c
index a1b3c879bb5..86c16ff5719 100644
--- a/src/window.c
+++ b/src/window.c
@@ -288,7 +288,6 @@ make_window ()
288 p->fringes_outside_margins = Qnil; 288 p->fringes_outside_margins = Qnil;
289 p->scroll_bar_width = Qnil; 289 p->scroll_bar_width = Qnil;
290 p->vertical_scroll_bar_type = Qt; 290 p->vertical_scroll_bar_type = Qt;
291 p->overlay_arrow_bitmap = 0;
292 291
293 Vwindow_list = Qnil; 292 Vwindow_list = Qnil;
294 return val; 293 return val;
diff --git a/src/window.h b/src/window.h
index 8df0b6bb3eb..493b5aa9486 100644
--- a/src/window.h
+++ b/src/window.h
@@ -259,9 +259,6 @@ struct window
259 /* This is handy for undrawing the cursor. */ 259 /* This is handy for undrawing the cursor. */
260 int phys_cursor_ascent, phys_cursor_height; 260 int phys_cursor_ascent, phys_cursor_height;
261 261
262 /* Alternate overlay-arrow-bitmap in this window. */
263 int overlay_arrow_bitmap;
264
265 /* Non-zero means the cursor is currently displayed. This can be 262 /* Non-zero means the cursor is currently displayed. This can be
266 set to zero by functions overpainting the cursor image. */ 263 set to zero by functions overpainting the cursor image. */
267 unsigned phys_cursor_on_p : 1; 264 unsigned phys_cursor_on_p : 1;
diff --git a/src/xdisp.c b/src/xdisp.c
index c832f1fa5e0..12ee4fef7d3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -9638,22 +9638,14 @@ redisplay ()
9638 9638
9639 9639
9640static Lisp_Object 9640static Lisp_Object
9641overlay_arrow_string_or_property (var, pbitmap) 9641overlay_arrow_string_or_property (var)
9642 Lisp_Object var; 9642 Lisp_Object var;
9643 int *pbitmap;
9644{ 9643{
9645 Lisp_Object pstr = Fget (var, Qoverlay_arrow_string); 9644 Lisp_Object val;
9646 Lisp_Object bitmap;
9647 9645
9648 if (pbitmap) 9646 if (val = Fget (var, Qoverlay_arrow_string), STRINGP (val))
9649 { 9647 return val;
9650 *pbitmap = 0;
9651 if (bitmap = Fget (var, Qoverlay_arrow_bitmap), INTEGERP (bitmap))
9652 *pbitmap = XINT (bitmap);
9653 }
9654 9648
9655 if (!NILP (pstr))
9656 return pstr;
9657 return Voverlay_arrow_string; 9649 return Voverlay_arrow_string;
9658} 9650}
9659 9651
@@ -9703,7 +9695,7 @@ overlay_arrows_changed_p ()
9703 continue; 9695 continue;
9704 if (! EQ (COERCE_MARKER (val), 9696 if (! EQ (COERCE_MARKER (val),
9705 Fget (var, Qlast_arrow_position)) 9697 Fget (var, Qlast_arrow_position))
9706 || ! (pstr = overlay_arrow_string_or_property (var, 0), 9698 || ! (pstr = overlay_arrow_string_or_property (var),
9707 EQ (pstr, Fget (var, Qlast_arrow_string)))) 9699 EQ (pstr, Fget (var, Qlast_arrow_string))))
9708 return 1; 9700 return 1;
9709 } 9701 }
@@ -9733,7 +9725,7 @@ update_overlay_arrows (up_to_date)
9733 Fput (var, Qlast_arrow_position, 9725 Fput (var, Qlast_arrow_position,
9734 COERCE_MARKER (val)); 9726 COERCE_MARKER (val));
9735 Fput (var, Qlast_arrow_string, 9727 Fput (var, Qlast_arrow_string,
9736 overlay_arrow_string_or_property (var, 0)); 9728 overlay_arrow_string_or_property (var));
9737 } 9729 }
9738 else if (up_to_date < 0 9730 else if (up_to_date < 0
9739 || !NILP (Fget (var, Qlast_arrow_position))) 9731 || !NILP (Fget (var, Qlast_arrow_position)))
@@ -9746,14 +9738,13 @@ update_overlay_arrows (up_to_date)
9746 9738
9747 9739
9748/* Return overlay arrow string to display at row. 9740/* Return overlay arrow string to display at row.
9749 Return t if display as bitmap in left fringe. 9741 Return integer (bitmap number) for arrow bitmap in left fringe.
9750 Return nil if no overlay arrow. */ 9742 Return nil if no overlay arrow. */
9751 9743
9752static Lisp_Object 9744static Lisp_Object
9753overlay_arrow_at_row (it, row, pbitmap) 9745overlay_arrow_at_row (it, row)
9754 struct it *it; 9746 struct it *it;
9755 struct glyph_row *row; 9747 struct glyph_row *row;
9756 int *pbitmap;
9757{ 9748{
9758 Lisp_Object vlist; 9749 Lisp_Object vlist;
9759 9750
@@ -9773,17 +9764,21 @@ overlay_arrow_at_row (it, row, pbitmap)
9773 && current_buffer == XMARKER (val)->buffer 9764 && current_buffer == XMARKER (val)->buffer
9774 && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) 9765 && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val)))
9775 { 9766 {
9776 val = overlay_arrow_string_or_property (var, pbitmap);
9777 if (FRAME_WINDOW_P (it->f) 9767 if (FRAME_WINDOW_P (it->f)
9778 && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0) 9768 && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0)
9779 return Qt; 9769 {
9780 if (STRINGP (val)) 9770 if (val = Fget (var, Qoverlay_arrow_bitmap), SYMBOLP (val))
9781 return val; 9771 {
9782 break; 9772 int fringe_bitmap;
9773 if ((fringe_bitmap = lookup_fringe_bitmap (val)) != 0)
9774 return make_number (fringe_bitmap);
9775 }
9776 return make_number (-1); /* Use default arrow bitmap */
9777 }
9778 return overlay_arrow_string_or_property (var);
9783 } 9779 }
9784 } 9780 }
9785 9781
9786 *pbitmap = 0;
9787 return Qnil; 9782 return Qnil;
9788} 9783}
9789 9784
@@ -14847,7 +14842,6 @@ display_line (it)
14847 struct it *it; 14842 struct it *it;
14848{ 14843{
14849 struct glyph_row *row = it->glyph_row; 14844 struct glyph_row *row = it->glyph_row;
14850 int overlay_arrow_bitmap;
14851 Lisp_Object overlay_arrow_string; 14845 Lisp_Object overlay_arrow_string;
14852 14846
14853 /* We always start displaying at hpos zero even if hscrolled. */ 14847 /* We always start displaying at hpos zero even if hscrolled. */
@@ -15255,9 +15249,9 @@ display_line (it)
15255 mark this glyph row as the one containing the overlay arrow. 15249 mark this glyph row as the one containing the overlay arrow.
15256 This is clearly a mess with variable size fonts. It would be 15250 This is clearly a mess with variable size fonts. It would be
15257 better to let it be displayed like cursors under X. */ 15251 better to let it be displayed like cursors under X. */
15258 if ((overlay_arrow_string 15252 if ((row->displays_text_p || !overlay_arrow_seen)
15259 = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap), 15253 && (overlay_arrow_string = overlay_arrow_at_row (it, row),
15260 !NILP (overlay_arrow_string))) 15254 !NILP (overlay_arrow_string)))
15261 { 15255 {
15262 /* Overlay arrow in window redisplay is a fringe bitmap. */ 15256 /* Overlay arrow in window redisplay is a fringe bitmap. */
15263 if (STRINGP (overlay_arrow_string)) 15257 if (STRINGP (overlay_arrow_string))
@@ -15287,8 +15281,8 @@ display_line (it)
15287 } 15281 }
15288 else 15282 else
15289 { 15283 {
15290 it->w->overlay_arrow_bitmap = overlay_arrow_bitmap; 15284 xassert (INTEGERP (overlay_arrow_string));
15291 row->overlay_arrow_p = 1; 15285 row->overlay_arrow_bitmap = XINT (overlay_arrow_string);
15292 } 15286 }
15293 overlay_arrow_seen = 1; 15287 overlay_arrow_seen = 1;
15294 } 15288 }
diff --git a/src/xfaces.c b/src/xfaces.c
index 51dcfb144d1..89267c8f7f6 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -7115,8 +7115,9 @@ realize_x_face (cache, attrs, c, base_face)
7115 int c; 7115 int c;
7116 struct face *base_face; 7116 struct face *base_face;
7117{ 7117{
7118 struct face *face = NULL;
7118#ifdef HAVE_WINDOW_SYSTEM 7119#ifdef HAVE_WINDOW_SYSTEM
7119 struct face *face, *default_face; 7120 struct face *default_face;
7120 struct frame *f; 7121 struct frame *f;
7121 Lisp_Object stipple, overline, strike_through, box; 7122 Lisp_Object stipple, overline, strike_through, box;
7122 7123
@@ -7312,8 +7313,8 @@ realize_x_face (cache, attrs, c, base_face)
7312 face->stipple = load_pixmap (f, stipple, &face->pixmap_w, &face->pixmap_h); 7313 face->stipple = load_pixmap (f, stipple, &face->pixmap_w, &face->pixmap_h);
7313 7314
7314 xassert (FACE_SUITABLE_FOR_CHAR_P (face, c)); 7315 xassert (FACE_SUITABLE_FOR_CHAR_P (face, c));
7315 return face;
7316#endif /* HAVE_WINDOW_SYSTEM */ 7316#endif /* HAVE_WINDOW_SYSTEM */
7317 return face;
7317} 7318}
7318 7319
7319 7320
diff --git a/src/xmenu.c b/src/xmenu.c
index b29b74b6e44..f32074c2f6a 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -771,7 +771,7 @@ cached information about equivalent key sequences. */)
771 Lisp_Object keymap, tem; 771 Lisp_Object keymap, tem;
772 int xpos = 0, ypos = 0; 772 int xpos = 0, ypos = 0;
773 Lisp_Object title; 773 Lisp_Object title;
774 char *error_name; 774 char *error_name = NULL;
775 Lisp_Object selection; 775 Lisp_Object selection;
776 FRAME_PTR f = NULL; 776 FRAME_PTR f = NULL;
777 Lisp_Object x, y, window; 777 Lisp_Object x, y, window;
@@ -2483,7 +2483,7 @@ create_and_show_popup_menu (f, first_wv, x, y, for_click)
2483 if (FRAME_X_DISPLAY_INFO (f)->grabbed & (1 << i)) 2483 if (FRAME_X_DISPLAY_INFO (f)->grabbed & (1 << i))
2484 break; 2484 break;
2485 } 2485 }
2486 2486
2487 /* Display the menu. */ 2487 /* Display the menu. */
2488 gtk_widget_show_all (menu); 2488 gtk_widget_show_all (menu);
2489 gtk_menu_popup (GTK_MENU (menu), 0, 0, pos_func, &popup_x_y, i, 0); 2489 gtk_menu_popup (GTK_MENU (menu), 0, 0, pos_func, &popup_x_y, i, 0);
@@ -2601,7 +2601,7 @@ create_and_show_popup_menu (f, first_wv, x, y, for_click)
2601 /* Display the menu. */ 2601 /* Display the menu. */
2602 lw_popup_menu (menu, (XEvent *) &dummy); 2602 lw_popup_menu (menu, (XEvent *) &dummy);
2603 popup_activated_flag = 1; 2603 popup_activated_flag = 1;
2604 2604
2605 { 2605 {
2606 int fact = 4 * sizeof (LWLIB_ID); 2606 int fact = 4 * sizeof (LWLIB_ID);
2607 int specpdl_count = SPECPDL_INDEX (); 2607 int specpdl_count = SPECPDL_INDEX ();
@@ -3225,7 +3225,7 @@ pop_down_menu (arg)
3225{ 3225{
3226 struct Lisp_Save_Value *p1 = XSAVE_VALUE (Fcar (arg)); 3226 struct Lisp_Save_Value *p1 = XSAVE_VALUE (Fcar (arg));
3227 struct Lisp_Save_Value *p2 = XSAVE_VALUE (Fcdr (arg)); 3227 struct Lisp_Save_Value *p2 = XSAVE_VALUE (Fcdr (arg));
3228 3228
3229 FRAME_PTR f = p1->pointer; 3229 FRAME_PTR f = p1->pointer;
3230 XMenu *menu = p2->pointer; 3230 XMenu *menu = p2->pointer;
3231 3231
@@ -3459,7 +3459,7 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
3459#ifndef MSDOS 3459#ifndef MSDOS
3460 XMenuActivateSetWaitFunction (x_menu_wait_for_event, FRAME_X_DISPLAY (f)); 3460 XMenuActivateSetWaitFunction (x_menu_wait_for_event, FRAME_X_DISPLAY (f));
3461#endif 3461#endif
3462 3462
3463 record_unwind_protect (pop_down_menu, 3463 record_unwind_protect (pop_down_menu,
3464 Fcons (make_save_value (f, 0), 3464 Fcons (make_save_value (f, 0),
3465 make_save_value (menu, 0))); 3465 make_save_value (menu, 0)));