aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2007-05-30 14:40:46 +0000
committerMiles Bader2007-05-30 14:40:46 +0000
commit62390cbfc25653003034b812258be9cfb5f3edee (patch)
tree7ee220bf44a2e65dd80511bced7b77cfa1233b12
parent2d423dd0a720b08c61ee10023554b2a0491f8fae (diff)
parent7a781a5480b9a1f55d28a76e1d1f89aaa2421f97 (diff)
downloademacs-62390cbfc25653003034b812258be9cfb5f3edee.tar.gz
emacs-62390cbfc25653003034b812258be9cfb5f3edee.zip
Merge from emacs--devo--0
Patches applied: * emacs--devo--0 (patch 774-780) - Update from CVS - Merge from emacs--rel--22, gnus--rel--5.10 - Merge from emacs--rel--22 - Fix tq.el edge case * emacs--rel--22 (patch 28-32) - Update from CVS * gnus--rel--5.10 (patch 224-225) - Merge from emacs--devo--0, emacs--rel--22 - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-213
-rw-r--r--etc/ChangeLog4
-rw-r--r--etc/NEWS.2214
-rw-r--r--etc/PROBLEMS21
-rw-r--r--lisp/ChangeLog69
-rw-r--r--lisp/emacs-lisp/rx.el9
-rw-r--r--lisp/emacs-lisp/tq.el5
-rw-r--r--lisp/gnus/ChangeLog5
-rw-r--r--lisp/gnus/message.el14
-rw-r--r--lisp/log-edit.el2
-rw-r--r--lisp/net/tramp-ftp.el10
-rw-r--r--lisp/net/tramp-smb.el7
-rw-r--r--lisp/net/tramp-util.el1
-rw-r--r--lisp/net/tramp-uu.el3
-rw-r--r--lisp/net/tramp-vc.el2
-rw-r--r--lisp/net/tramp.el207
-rw-r--r--lisp/net/trampver.el2
-rw-r--r--lisp/net/webjump.el2
-rw-r--r--lisp/progmodes/idlwave.el4
-rw-r--r--lisp/textmodes/sgml-mode.el23
-rw-r--r--lisp/textmodes/table.el26
-rw-r--r--lisp/url/ChangeLog6
-rw-r--r--lisp/url/url-mailto.el4
-rw-r--r--lispref/ChangeLog6
-rw-r--r--lispref/commands.texi50
-rw-r--r--man/ChangeLog11
-rw-r--r--man/erc.texi5
-rw-r--r--man/tramp.texi6
-rw-r--r--man/trampver.texi2
-rw-r--r--oldXMenu/ChangeLog4
-rw-r--r--oldXMenu/XMakeAssoc.c2
-rw-r--r--src/ChangeLog18
-rw-r--r--src/ccl.c2
-rw-r--r--src/data.c2
-rw-r--r--src/fns.c2
-rw-r--r--src/frame.c7
-rw-r--r--src/macterm.c4
-rw-r--r--src/msdos.c4
-rw-r--r--src/sysdep.c2
-rw-r--r--src/term.c65
-rw-r--r--src/termhooks.h1
-rw-r--r--src/window.c2
-rw-r--r--src/xdisp.c10
-rw-r--r--src/xfaces.c2
43 files changed, 409 insertions, 238 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index e793d0256d3..425b0dc353a 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
12007-05-29 Robert J. Chassell <bob@rattlesnake.com>
2
3 * NEWS: Fix instances of `allow' without object.
4
12007-05-22 Glenn Morris <rgm@gnu.org> 52007-05-22 Glenn Morris <rgm@gnu.org>
2 6
3 * NEWS.22: New file with entries for Emacs 22. 7 * NEWS.22: New file with entries for Emacs 22.
diff --git a/etc/NEWS.22 b/etc/NEWS.22
index 84c7b3b3bf1..41c446ccae8 100644
--- a/etc/NEWS.22
+++ b/etc/NEWS.22
@@ -442,7 +442,7 @@ same string that would be displayed on mouse-over using the
442`help-echo' property, but, in certain cases, it can display a more 442`help-echo' property, but, in certain cases, it can display a more
443keyboard oriented alternative. 443keyboard oriented alternative.
444 444
445*** New user option `help-at-pt-display-when-idle' allows to 445*** New user option `help-at-pt-display-when-idle' allows you to
446automatically show the help provided by `display-local-help' on 446automatically show the help provided by `display-local-help' on
447point-over, after suitable idle time. The amount of idle time is 447point-over, after suitable idle time. The amount of idle time is
448determined by the user option `help-at-pt-timer-delay' and defaults 448determined by the user option `help-at-pt-timer-delay' and defaults
@@ -1949,11 +1949,11 @@ old name remains available as alias, but has been marked obsolete.
1949 1949
1950If point is at the end of a file buffer before reverting, Auto Revert 1950If point is at the end of a file buffer before reverting, Auto Revert
1951mode keeps it at the end after reverting. Similarly if point is 1951mode keeps it at the end after reverting. Similarly if point is
1952displayed at the end of a file buffer in any window, it stays at 1952displayed at the end of a file buffer in any window, it stays at the end
1953the end of the buffer in that window. This allows to tail a file: 1953of the buffer in that window. This allows you to "tail" a file: just
1954just put point at the end of the buffer and it stays there. This 1954put point at the end of the buffer and it stays there. This rule
1955rule applies to file buffers. For non-file buffers, the behavior can 1955applies to file buffers. For non-file buffers, the behavior can be mode
1956be mode dependent. 1956dependent.
1957 1957
1958If you are sure that the file will only change by growing at the end, 1958If you are sure that the file will only change by growing at the end,
1959then you can tail the file more efficiently by using the new minor 1959then you can tail the file more efficiently by using the new minor
@@ -3047,7 +3047,7 @@ struct members in C, members variables in C++ and variables in PHP.
3047 3047
3048*** Support for `movemail' from GNU mailutils was added to Rmail. 3048*** Support for `movemail' from GNU mailutils was added to Rmail.
3049 3049
3050This version of `movemail' allows to read mail from a wide range of 3050This version of `movemail' allows you to read mail from a wide range of
3051mailbox formats, including remote POP3 and IMAP4 mailboxes with or 3051mailbox formats, including remote POP3 and IMAP4 mailboxes with or
3052without TLS encryption. If GNU mailutils is installed on the system 3052without TLS encryption. If GNU mailutils is installed on the system
3053and its version of `movemail' can be found in exec-path, it will be 3053and its version of `movemail' can be found in exec-path, it will be
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 317d7d70783..f35f3fdc659 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -2456,27 +2456,6 @@ This results from a bug in a VERY old version of GNU Sed. To solve
2456the problem, install the current version of GNU Sed, then rerun 2456the problem, install the current version of GNU Sed, then rerun
2457Emacs's configure script. 2457Emacs's configure script.
2458 2458
2459*** Compiling on GNU/Linux fails due to a missing left operand in gnu-linux.h.
2460
2461The error messages have the form:
2462
2463 ../src/s/gnu-linux.h:49:24: error: operator '>' has no left operand
2464
2465This error occurs because your system defines LINUX_VERSION_CODE in
2466the standard header file linux/version.h but does not give it a value.
2467As a workaround, you can edit the file src/s/gnu-linux.h to add the
2468needed definition. On the line after "#include <linux/version.h>",
2469add a line as shown below:
2470
2471#include <linux/version.h>
2472#define LINUX_VERSION_CODE 132626
2473
2474The number to use depends on your kernel version (the example shown is
2475for kernel 2.6.18). The number can be obtained by running the
2476following command in the shell:
2477
2478uname -r | sed -e 's/\./ /g' -e 's/-.*//' | awk '{print $1*(2^16) + $2*(2^8) + $3}'
2479
2480*** Building a 32-bit executable on a 64-bit GNU/Linux architecture. 2459*** Building a 32-bit executable on a 64-bit GNU/Linux architecture.
2481 2460
2482First ensure that the necessary 32-bit system libraries and include 2461First ensure that the necessary 32-bit system libraries and include
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0d1d4d59110..9a79d4a0b55 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,72 @@
12007-05-30 Michael Olson <mwolson@gnu.org>
2
3 * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has
4 died and we are trying to send a signal to it. The program using
5 tq.el should periodically check to see whether the process has
6 died and react appropriately -- this is not the responsibility of
7 tq.el, and is consistent with the rest of the tq.el source code.
8
92007-05-29 Martin Rudalics <rudalics@gmx.at>
10
11 * textmodes/table.el (table--point-entered-cell-function)
12 (table--point-left-cell-function): Bind
13 `inhibit-point-motion-hooks' to t.
14
152007-05-29 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
16
17 * emacs-lisp/rx.el (rx): Doc fix.
18
192007-05-28 Juanma Barranquero <lekktu@gmail.com>
20
21 * progmodes/idlwave.el (idlwave-routines): Fix typo in docstring.
22
232007-05-28 Michael Albinus <michael.albinus@gmx.de>
24
25 Sync with Tramp 2.0.56.
26
27 * net/tramp.el:
28 * net/tramp-ftp.el:
29 * net/tramp-smb.el:
30 * net/tramp-util.el:
31 * net/tramp-vc.el:
32 Don't load cl.el, because that pollutes the namespace. Replace cl
33 macros by their implementations where necessary. Requested by
34 Richard Stallman <rms@gnu.org>.
35
36 * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it
37 doesn't exist.
38 (with-parsed-tramp-file-name): Protect debug spec during
39 compilation.
40 (tramp-handle-insert-directory): Check (featurep 'ls-lisp).
41 (tramp-file-name-p, tramp-file-name-multi-method)
42 (tramp-file-name-method, tramp-file-name-user)
43 (tramp-file-name-host, tramp-file-name-localname): New defuns,
44 replacing defstruct `tramp-file-name'.
45 (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1)
46 (tramp-dissect-file-name, tramp-dissect-multi-file-name): Apply
47 `vector' instead of `make-tramp-file-name'.
48 (tramp-handle-make-auto-save-file-name): Apply
49 `tramp-temporary-file-directory' for compatibility reasons.
50 (tramp-completion-mode): Use `natnump' instead of `wholenump'
51 because of XEmacs.
52 (tramp-completion-mode): `last-input-event' is nil when XEmacs is
53 started.
54
552007-05-28 Chong Yidong <cyd@stupidchicken.com>
56
57 * textmodes/sgml-mode.el (sgml-point-entered): Use condition-case.
58
592007-05-27 Tetsurou Okazaki <okazaki@be.to> (tiny change)
60
61 * log-edit.el (log-edit-changelog-paragraph): Return point-max
62 as the end of the ChangeLog paragraph when it ends without a line
63 termination.
64
652007-05-27 Ryan Yeske <rcyeske@gmail.com>
66
67 * net/webjump.el (webjump-sample-sites):
68 Add simple Wikipedia query.
69
12007-05-25 Stefan Monnier <monnier@iro.umontreal.ca> 702007-05-25 Stefan Monnier <monnier@iro.umontreal.ca>
2 71
3 * emacs-lisp/derived.el (define-derived-mode): Remove bogus 72 * emacs-lisp/derived.el (define-derived-mode): Remove bogus
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index 39134443d86..54f88ba3ea5 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -725,8 +725,7 @@ CHAR
725 matches the empty string, but only at point. 725 matches the empty string, but only at point.
726 726
727`word-start', `bow' 727`word-start', `bow'
728 matches the empty string, but only at the beginning or end of a 728 matches the empty string, but only at the beginning of a word.
729 word.
730 729
731`word-end', `eow' 730`word-end', `eow'
732 matches the empty string, but only at the end of a word. 731 matches the empty string, but only at the end of a word.
@@ -740,6 +739,12 @@ CHAR
740 matches the empty string, but not at the beginning or end of a 739 matches the empty string, but not at the beginning or end of a
741 word. 740 word.
742 741
742`symbol-start'
743 matches the empty string, but only at the beginning of a symbol.
744
745`symbol-end'
746 matches the empty string, but only at the end of a symbol.
747
743`digit', `numeric', `num' 748`digit', `numeric', `num'
744 matches 0 through 9. 749 matches 0 through 9.
745 750
diff --git a/lisp/emacs-lisp/tq.el b/lisp/emacs-lisp/tq.el
index b12c21b6730..f20015fd720 100644
--- a/lisp/emacs-lisp/tq.el
+++ b/lisp/emacs-lisp/tq.el
@@ -100,8 +100,9 @@ to a tcp server on another machine."
100(defun tq-queue-pop (tq) 100(defun tq-queue-pop (tq)
101 (setcar tq (cdr (car tq))) 101 (setcar tq (cdr (car tq)))
102 (let ((question (tq-queue-head-question tq))) 102 (let ((question (tq-queue-head-question tq)))
103 (when question 103 (condition-case nil
104 (process-send-string (tq-process tq) question))) 104 (process-send-string (tq-process tq) question)
105 (error nil)))
105 (null (car tq))) 106 (null (car tq)))
106 107
107(defun tq-enqueue (tq question regexp closure fn &optional delay-question) 108(defun tq-enqueue (tq question regexp closure fn &optional delay-question)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 9f4df39957f..631869e4f34 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,8 @@
12007-05-28 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * message.el (message-pop-to-buffer): Add switch-function argument.
4 (message-mail): Pass switch-function argument to it.
5
12007-05-24 Katsumi Yamaoka <yamaoka@jpl.org> 62007-05-24 Katsumi Yamaoka <yamaoka@jpl.org>
2 7
3 * message.el (message-narrow-to-headers-or-head): Ignore 8 * message.el (message-narrow-to-headers-or-head): Ignore
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 432bd69b67f..eef854f4fb7 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -5576,7 +5576,7 @@ between beginning of field and beginning of line."
5576 'car-less-than-car))) 5576 'car-less-than-car)))
5577 new))))) 5577 new)))))
5578 5578
5579(defun message-pop-to-buffer (name) 5579(defun message-pop-to-buffer (name &optional switch-function)
5580 "Pop to buffer NAME, and warn if it already exists and is modified." 5580 "Pop to buffer NAME, and warn if it already exists and is modified."
5581 (let ((buffer (get-buffer name))) 5581 (let ((buffer (get-buffer name)))
5582 (if (and buffer 5582 (if (and buffer
@@ -5587,14 +5587,16 @@ between beginning of field and beginning of line."
5587 (progn 5587 (progn
5588 (gnus-select-frame-set-input-focus (window-frame window)) 5588 (gnus-select-frame-set-input-focus (window-frame window))
5589 (select-window window)) 5589 (select-window window))
5590 (set-buffer (pop-to-buffer buffer))) 5590 (funcall (or switch-function 'pop-to-buffer) buffer)
5591 (set-buffer buffer))
5591 (when (and (buffer-modified-p) 5592 (when (and (buffer-modified-p)
5592 (not (prog1 5593 (not (prog1
5593 (y-or-n-p 5594 (y-or-n-p
5594 "Message already being composed; erase? ") 5595 "Message already being composed; erase? ")
5595 (message nil)))) 5596 (message nil))))
5596 (error "Message being composed"))) 5597 (error "Message being composed")))
5597 (set-buffer (pop-to-buffer name))) 5598 (funcall (or switch-function 'pop-to-buffer) name)
5599 (set-buffer name))
5598 (erase-buffer) 5600 (erase-buffer)
5599 (message-mode))) 5601 (message-mode)))
5600 5602
@@ -5831,15 +5833,15 @@ is a function used to switch to and display the mail buffer."
5831 (interactive) 5833 (interactive)
5832 (let ((message-this-is-mail t) replybuffer) 5834 (let ((message-this-is-mail t) replybuffer)
5833 (unless (message-mail-user-agent) 5835 (unless (message-mail-user-agent)
5834 (funcall 5836 (message-pop-to-buffer
5835 (or switch-function 'message-pop-to-buffer)
5836 ;; Search for the existing message buffer if `continue' is non-nil. 5837 ;; Search for the existing message buffer if `continue' is non-nil.
5837 (let ((message-generate-new-buffers 5838 (let ((message-generate-new-buffers
5838 (when (or (not continue) 5839 (when (or (not continue)
5839 (eq message-generate-new-buffers 'standard) 5840 (eq message-generate-new-buffers 'standard)
5840 (functionp message-generate-new-buffers)) 5841 (functionp message-generate-new-buffers))
5841 message-generate-new-buffers))) 5842 message-generate-new-buffers)))
5842 (message-buffer-name "mail" to)))) 5843 (message-buffer-name "mail" to))
5844 switch-function))
5843 ;; FIXME: message-mail should do something if YANK-ACTION is not 5845 ;; FIXME: message-mail should do something if YANK-ACTION is not
5844 ;; insert-buffer. 5846 ;; insert-buffer.
5845 (and (consp yank-action) (eq (car yank-action) 'insert-buffer) 5847 (and (consp yank-action) (eq (car yank-action) 'insert-buffer)
diff --git a/lisp/log-edit.el b/lisp/log-edit.el
index ed0a5c464e9..8f63635ee49 100644
--- a/lisp/log-edit.el
+++ b/lisp/log-edit.el
@@ -538,7 +538,7 @@ If we are between paragraphs, return the previous paragraph."
538 (point)) 538 (point))
539 (if (re-search-forward "^[ \t\n]*$" nil t) 539 (if (re-search-forward "^[ \t\n]*$" nil t)
540 (match-beginning 0) 540 (match-beginning 0)
541 (point))))) 541 (point-max)))))
542 542
543(defun log-edit-changelog-subparagraph () 543(defun log-edit-changelog-subparagraph ()
544 "Return the bounds of the ChangeLog subparagraph containing point. 544 "Return the bounds of the ChangeLog subparagraph containing point.
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index 2749a6858c0..d33873d1689 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -1,6 +1,7 @@
1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*- 1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*-
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
4;; 2007 Free Software Foundation, Inc.
4 5
5;; Author: Michael Albinus <michael.albinus@gmx.de> 6;; Author: Michael Albinus <michael.albinus@gmx.de>
6;; Keywords: comm, processes 7;; Keywords: comm, processes
@@ -31,12 +32,7 @@
31 32
32(require 'tramp) 33(require 'tramp)
33 34
34(eval-when-compile 35(eval-when-compile (require 'custom))
35 (require 'cl)
36 (require 'custom)
37 ;; Emacs 19.34 compatibility hack -- is this needed?
38 (or (>= emacs-major-version 20)
39 (load "cl-seq")))
40 36
41;; Disable Ange-FTP from file-name-handler-alist. 37;; Disable Ange-FTP from file-name-handler-alist.
42;; To handle EFS, the following functions need to be dealt with: 38;; To handle EFS, the following functions need to be dealt with:
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 5d5d441193d..7382bdef63b 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -31,12 +31,7 @@
31(require 'tramp) 31(require 'tramp)
32 32
33;; Pacify byte-compiler 33;; Pacify byte-compiler
34(eval-when-compile 34(eval-when-compile (require 'custom))
35 (require 'cl)
36 (require 'custom)
37 ;; Emacs 19.34 compatibility hack -- is this needed?
38 (or (>= emacs-major-version 20)
39 (load "cl-seq")))
40 35
41;; Avoid byte-compiler warnings if the byte-compiler supports this. 36;; Avoid byte-compiler warnings if the byte-compiler supports this.
42;; Currently, XEmacs supports this. 37;; Currently, XEmacs supports this.
diff --git a/lisp/net/tramp-util.el b/lisp/net/tramp-util.el
index 81857ae4225..4895edf019b 100644
--- a/lisp/net/tramp-util.el
+++ b/lisp/net/tramp-util.el
@@ -29,7 +29,6 @@
29 29
30;;; Code: 30;;; Code:
31 31
32(eval-when-compile (require 'cl))
33(require 'compile) 32(require 'compile)
34(require 'tramp) 33(require 'tramp)
35(add-hook 'tramp-util-unload-hook 34(add-hook 'tramp-util-unload-hook
diff --git a/lisp/net/tramp-uu.el b/lisp/net/tramp-uu.el
index ce047489260..32bb9857f7f 100644
--- a/lisp/net/tramp-uu.el
+++ b/lisp/net/tramp-uu.el
@@ -1,7 +1,8 @@
1;;; -*- coding: iso-2022-7bit; -*- 1;;; -*- coding: iso-2022-7bit; -*-
2;;; tramp-uu.el --- uuencode in Lisp 2;;; tramp-uu.el --- uuencode in Lisp
3 3
4;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 4;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
5;; 2007 Free Software Foundation, Inc.
5 6
6;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 7;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
7;; Keywords: comm, terminals 8;; Keywords: comm, terminals
diff --git a/lisp/net/tramp-vc.el b/lisp/net/tramp-vc.el
index eda98364a98..cc5566d6354 100644
--- a/lisp/net/tramp-vc.el
+++ b/lisp/net/tramp-vc.el
@@ -31,8 +31,6 @@
31 31
32;;; Code: 32;;; Code:
33 33
34(eval-when-compile
35 (require 'cl))
36(require 'vc) 34(require 'vc)
37;; Old VC defines vc-rcs-release in vc.el, new VC requires extra module. 35;; Old VC defines vc-rcs-release in vc.el, new VC requires extra module.
38(unless (boundp 'vc-rcs-release) 36(unless (boundp 'vc-rcs-release)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 20ac73d0f75..f85620ee323 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -151,11 +151,7 @@ Otherwise, use a separate filename syntax for Tramp.")
151 (when (featurep 'tramp-smb) 151 (when (featurep 'tramp-smb)
152 (unload-feature 'tramp-smb 'force))))))) 152 (unload-feature 'tramp-smb 'force)))))))
153 153
154(require 'cl)
155(require 'custom) 154(require 'custom)
156;; Emacs 19.34 compatibility hack -- is this needed?
157(or (>= emacs-major-version 20)
158 (load "cl-seq"))
159 155
160(unless (boundp 'custom-print-functions) 156(unless (boundp 'custom-print-functions)
161 (defvar custom-print-functions nil)) ; not autoloaded before Emacs 20.4 157 (defvar custom-print-functions nil)) ; not autoloaded before Emacs 20.4
@@ -175,6 +171,11 @@ Otherwise, use a separate filename syntax for Tramp.")
175 (when (boundp 'byte-compile-not-obsolete-var) 171 (when (boundp 'byte-compile-not-obsolete-var)
176 (setq byte-compile-not-obsolete-var 'directory-sep-char))) 172 (setq byte-compile-not-obsolete-var 'directory-sep-char)))
177 173
174;; `set-buffer-multibyte' comes from Emacs Leim.
175(eval-and-compile
176 (unless (fboundp 'set-buffer-multibyte)
177 (defalias 'set-buffer-multibyte 'ignore)))
178
178;;; User Customizable Internal Variables: 179;;; User Customizable Internal Variables:
179 180
180(defgroup tramp nil 181(defgroup tramp nil
@@ -2077,7 +2078,9 @@ If VAR is nil, then we bind `v' to the structure and `multi-method',
2077 2078
2078(put 'with-parsed-tramp-file-name 'lisp-indent-function 2) 2079(put 'with-parsed-tramp-file-name 'lisp-indent-function 2)
2079;; Enable debugging. 2080;; Enable debugging.
2080(def-edebug-spec with-parsed-tramp-file-name (form symbolp body)) 2081(eval-and-compile
2082 (when (featurep 'edebug)
2083 (def-edebug-spec with-parsed-tramp-file-name (form symbolp body))))
2081;; Highlight as keyword. 2084;; Highlight as keyword.
2082(when (functionp 'font-lock-add-keywords) 2085(when (functionp 'font-lock-add-keywords)
2083 (funcall 'font-lock-add-keywords 2086 (funcall 'font-lock-add-keywords
@@ -2384,10 +2387,10 @@ target of the symlink differ."
2384 "Integer constant overflow in reader") 2387 "Integer constant overflow in reader")
2385 (string-match 2388 (string-match
2386 "^[0-9]+\\([0-9][0-9][0-9][0-9][0-9]\\)\\'" 2389 "^[0-9]+\\([0-9][0-9][0-9][0-9][0-9]\\)\\'"
2387 (caddr err))) 2390 (car (cddr err))))
2388 (let* ((big (read (substring (caddr err) 0 2391 (let* ((big (read (substring (car (cddr err)) 0
2389 (match-beginning 1)))) 2392 (match-beginning 1))))
2390 (small (read (match-string 1 (caddr err)))) 2393 (small (read (match-string 1 (car (cddr err)))))
2391 (twiddle (/ small 65536))) 2394 (twiddle (/ small 65536)))
2392 (cons (+ big twiddle) 2395 (cons (+ big twiddle)
2393 (- small (* twiddle 65536)))))))) 2396 (- small (* twiddle 65536))))))))
@@ -2807,7 +2810,7 @@ of."
2807 object))) 2810 object)))
2808 (cell root)) 2811 (cell root))
2809 (while (cdr cell) 2812 (while (cdr cell)
2810 (if (and match (not (string-match match (caadr cell)))) 2813 (if (and match (not (string-match match (car (cadr cell)))))
2811 ;; Remove from list 2814 ;; Remove from list
2812 (setcdr cell (cddr cell)) 2815 (setcdr cell (cddr cell))
2813 ;; Include in list 2816 ;; Include in list
@@ -3426,10 +3429,10 @@ This is like `dired-recursive-delete-directory' for tramp files."
3426(defun tramp-handle-insert-directory 3429(defun tramp-handle-insert-directory
3427 (filename switches &optional wildcard full-directory-p) 3430 (filename switches &optional wildcard full-directory-p)
3428 "Like `insert-directory' for tramp files." 3431 "Like `insert-directory' for tramp files."
3429 (if (and (boundp 'ls-lisp-use-insert-directory-program) 3432 (if (and (featurep 'ls-lisp)
3430 (not (symbol-value 'ls-lisp-use-insert-directory-program))) 3433 (not (symbol-value 'ls-lisp-use-insert-directory-program)))
3431 (tramp-run-real-handler 'insert-directory 3434 (tramp-run-real-handler
3432 (list filename switches wildcard full-directory-p)) 3435 'insert-directory (list filename switches wildcard full-directory-p))
3433 ;; For the moment, we assume that the remote "ls" program does not 3436 ;; For the moment, we assume that the remote "ls" program does not
3434 ;; grok "--dired". In the future, we should detect this on 3437 ;; grok "--dired". In the future, we should detect this on
3435 ;; connection setup. 3438 ;; connection setup.
@@ -3869,12 +3872,7 @@ This will break if COMMAND prints a newline, followed by the value of
3869 "Like `file-remote-p' for tramp files." 3872 "Like `file-remote-p' for tramp files."
3870 (when (tramp-tramp-file-p filename) 3873 (when (tramp-tramp-file-p filename)
3871 (with-parsed-tramp-file-name filename nil 3874 (with-parsed-tramp-file-name filename nil
3872 (make-tramp-file-name 3875 (vector multi-method method user host ""))))
3873 :multi-method multi-method
3874 :method method
3875 :user user
3876 :host host
3877 :localname ""))))
3878 3876
3879(defun tramp-handle-insert-file-contents 3877(defun tramp-handle-insert-file-contents
3880 (filename &optional visit beg end replace) 3878 (filename &optional visit beg end replace)
@@ -3919,7 +3917,7 @@ This will break if COMMAND prints a newline, followed by the value of
3919 (when (boundp 'last-coding-system-used) 3917 (when (boundp 'last-coding-system-used)
3920 (set 'last-coding-system-used coding-system-used)) 3918 (set 'last-coding-system-used coding-system-used))
3921 (list (expand-file-name filename) 3919 (list (expand-file-name filename)
3922 (second result)))))) 3920 (cadr result))))))
3923 3921
3924 3922
3925(defun tramp-handle-find-backup-file-name (filename) 3923(defun tramp-handle-find-backup-file-name (filename)
@@ -3978,7 +3976,8 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
3978 (when (and (string-match (car x) buffer-file-name) 3976 (when (and (string-match (car x) buffer-file-name)
3979 (not (car (cddr x)))) 3977 (not (car (cddr x))))
3980 (setq tramp-auto-save-directory 3978 (setq tramp-auto-save-directory
3981 (or tramp-auto-save-directory temporary-file-directory)))) 3979 (or tramp-auto-save-directory
3980 (tramp-temporary-file-directory)))))
3982 (symbol-value 'auto-save-file-name-transforms))) 3981 (symbol-value 'auto-save-file-name-transforms)))
3983 ;; Create directory. 3982 ;; Create directory.
3984 (when tramp-auto-save-directory 3983 (when tramp-auto-save-directory
@@ -4566,7 +4565,7 @@ Falls back to normal file name handler if no tramp file name handler exists."
4566 (member (match-string 1 file) (mapcar 'car tramp-methods))) 4565 (member (match-string 1 file) (mapcar 'car tramp-methods)))
4567 ((or (equal last-input-event 'tab) 4566 ((or (equal last-input-event 'tab)
4568 ;; Emacs 4567 ;; Emacs
4569 (and (wholenump last-input-event) 4568 (and (natnump last-input-event)
4570 (or 4569 (or
4571 ;; ?\t has event-modifier 'control 4570 ;; ?\t has event-modifier 'control
4572 (char-equal last-input-event ?\t) 4571 (char-equal last-input-event ?\t)
@@ -4575,6 +4574,10 @@ Falls back to normal file name handler if no tramp file name handler exists."
4575 (char-equal last-input-event ?\ ))))) 4574 (char-equal last-input-event ?\ )))))
4576 ;; XEmacs 4575 ;; XEmacs
4577 (and (featurep 'xemacs) 4576 (and (featurep 'xemacs)
4577 ;; `last-input-event' might be nil.
4578 (not (null last-input-event))
4579 ;; `last-input-event' may have no character approximation.
4580 (funcall (symbol-function 'event-to-character) last-input-event)
4578 (or 4581 (or
4579 ;; ?\t has event-modifier 'control 4582 ;; ?\t has event-modifier 'control
4580 (char-equal 4583 (char-equal
@@ -4771,24 +4774,14 @@ remote host and localname (filename on remote host)."
4771 (match-string (nth 1 structure) name))) 4774 (match-string (nth 1 structure) name)))
4772 (if (and method (member method tramp-multi-methods)) 4775 (if (and method (member method tramp-multi-methods))
4773 ;; Not handled (yet). 4776 ;; Not handled (yet).
4774 (make-tramp-file-name 4777 (vector method nil nil nil nil)
4775 :multi-method method
4776 :method nil
4777 :user nil
4778 :host nil
4779 :localname nil)
4780 (let ((user (and (nth 2 structure) 4778 (let ((user (and (nth 2 structure)
4781 (match-string (nth 2 structure) name))) 4779 (match-string (nth 2 structure) name)))
4782 (host (and (nth 3 structure) 4780 (host (and (nth 3 structure)
4783 (match-string (nth 3 structure) name))) 4781 (match-string (nth 3 structure) name)))
4784 (localname (and (nth 4 structure) 4782 (localname (and (nth 4 structure)
4785 (match-string (nth 4 structure) name)))) 4783 (match-string (nth 4 structure) name))))
4786 (make-tramp-file-name 4784 (vector nil method user host localname)))))))
4787 :multi-method nil
4788 :method method
4789 :user user
4790 :host host
4791 :localname localname)))))))
4792 4785
4793;; This function returns all possible method completions, adding the 4786;; This function returns all possible method completions, adding the
4794;; trailing method delimeter. 4787;; trailing method delimeter.
@@ -5191,7 +5184,7 @@ USER the array of user names, HOST the array of host names."
5191 (aref user i) (aref host i)) 5184 (aref user i) (aref host i))
5192 (format "%s@%s:" (aref method i) (aref host i))) 5185 (format "%s@%s:" (aref method i) (aref host i)))
5193 string-list)) 5186 string-list))
5194 (incf i)) 5187 (setq i (1+ i)))
5195 (format "*%s/%s %s*" 5188 (format "*%s/%s %s*"
5196 prefix multi-method 5189 prefix multi-method
5197 (apply 'concat (reverse string-list))))) 5190 (apply 'concat (reverse string-list)))))
@@ -5928,7 +5921,7 @@ log in as u2 to h2."
5928 ;; is done here. 5921 ;; is done here.
5929 (funcall multi-func p m u h command) 5922 (funcall multi-func p m u h command)
5930 (erase-buffer) 5923 (erase-buffer)
5931 (incf i))) 5924 (setq i (1+ i))))
5932 (tramp-open-connection-setup-interactive-shell 5925 (tramp-open-connection-setup-interactive-shell
5933 p multi-method method user host) 5926 p multi-method method user host)
5934 (tramp-post-connection multi-method method user host))))) 5927 (tramp-post-connection multi-method method user host)))))
@@ -6824,7 +6817,8 @@ If `tramp-discard-garbage' is nil, just erase buffer."
6824 6817
6825(defun tramp-mode-string-to-int (mode-string) 6818(defun tramp-mode-string-to-int (mode-string)
6826 "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits." 6819 "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits."
6827 (let* ((mode-chars (string-to-vector mode-string)) 6820 (let* (case-fold-search
6821 (mode-chars (string-to-vector mode-string))
6828 (owner-read (aref mode-chars 1)) 6822 (owner-read (aref mode-chars 1))
6829 (owner-write (aref mode-chars 2)) 6823 (owner-write (aref mode-chars 2))
6830 (owner-execute-or-setid (aref mode-chars 3)) 6824 (owner-execute-or-setid (aref mode-chars 3))
@@ -6836,45 +6830,61 @@ If `tramp-discard-garbage' is nil, just erase buffer."
6836 (other-execute-or-sticky (aref mode-chars 9))) 6830 (other-execute-or-sticky (aref mode-chars 9)))
6837 (save-match-data 6831 (save-match-data
6838 (logior 6832 (logior
6839 (case owner-read 6833 (cond
6840 (?r (tramp-octal-to-decimal "00400")) (?- 0) 6834 ((char-equal owner-read ?r) (tramp-octal-to-decimal "00400"))
6841 (t (error "Second char `%c' must be one of `r-'" owner-read))) 6835 ((char-equal owner-read ?-) 0)
6842 (case owner-write 6836 (t (error "Second char `%c' must be one of `r-'" owner-read)))
6843 (?w (tramp-octal-to-decimal "00200")) (?- 0) 6837 (cond
6844 (t (error "Third char `%c' must be one of `w-'" owner-write))) 6838 ((char-equal owner-write ?w) (tramp-octal-to-decimal "00200"))
6845 (case owner-execute-or-setid 6839 ((char-equal owner-write ?-) 0)
6846 (?x (tramp-octal-to-decimal "00100")) 6840 (t (error "Third char `%c' must be one of `w-'" owner-write)))
6847 (?S (tramp-octal-to-decimal "04000")) 6841 (cond
6848 (?s (tramp-octal-to-decimal "04100")) 6842 ((char-equal owner-execute-or-setid ?x)
6849 (?- 0) 6843 (tramp-octal-to-decimal "00100"))
6850 (t (error "Fourth char `%c' must be one of `xsS-'" 6844 ((char-equal owner-execute-or-setid ?S)
6851 owner-execute-or-setid))) 6845 (tramp-octal-to-decimal "04000"))
6852 (case group-read 6846 ((char-equal owner-execute-or-setid ?s)
6853 (?r (tramp-octal-to-decimal "00040")) (?- 0) 6847 (tramp-octal-to-decimal "04100"))
6854 (t (error "Fifth char `%c' must be one of `r-'" group-read))) 6848 ((char-equal owner-execute-or-setid ?-) 0)
6855 (case group-write 6849 (t (error "Fourth char `%c' must be one of `xsS-'"
6856 (?w (tramp-octal-to-decimal "00020")) (?- 0) 6850 owner-execute-or-setid)))
6857 (t (error "Sixth char `%c' must be one of `w-'" group-write))) 6851 (cond
6858 (case group-execute-or-setid 6852 ((char-equal group-read ?r) (tramp-octal-to-decimal "00040"))
6859 (?x (tramp-octal-to-decimal "00010")) 6853 ((char-equal group-read ?-) 0)
6860 (?S (tramp-octal-to-decimal "02000")) 6854 (t (error "Fifth char `%c' must be one of `r-'" group-read)))
6861 (?s (tramp-octal-to-decimal "02010")) 6855 (cond
6862 (?- 0) 6856 ((char-equal group-write ?w) (tramp-octal-to-decimal "00020"))
6863 (t (error "Seventh char `%c' must be one of `xsS-'" 6857 ((char-equal group-write ?-) 0)
6864 group-execute-or-setid))) 6858 (t (error "Sixth char `%c' must be one of `w-'" group-write)))
6865 (case other-read 6859 (cond
6866 (?r (tramp-octal-to-decimal "00004")) (?- 0) 6860 ((char-equal group-execute-or-setid ?x)
6867 (t (error "Eighth char `%c' must be one of `r-'" other-read))) 6861 (tramp-octal-to-decimal "00010"))
6868 (case other-write 6862 ((char-equal group-execute-or-setid ?S)
6869 (?w (tramp-octal-to-decimal "00002")) (?- 0) 6863 (tramp-octal-to-decimal "02000"))
6864 ((char-equal group-execute-or-setid ?s)
6865 (tramp-octal-to-decimal "02010"))
6866 ((char-equal group-execute-or-setid ?-) 0)
6867 (t (error "Seventh char `%c' must be one of `xsS-'"
6868 group-execute-or-setid)))
6869 (cond
6870 ((char-equal other-read ?r)
6871 (tramp-octal-to-decimal "00004"))
6872 ((char-equal other-read ?-) 0)
6873 (t (error "Eighth char `%c' must be one of `r-'" other-read)))
6874 (cond
6875 ((char-equal other-write ?w) (tramp-octal-to-decimal "00002"))
6876 ((char-equal other-write ?-) 0)
6870 (t (error "Nineth char `%c' must be one of `w-'" other-write))) 6877 (t (error "Nineth char `%c' must be one of `w-'" other-write)))
6871 (case other-execute-or-sticky 6878 (cond
6872 (?x (tramp-octal-to-decimal "00001")) 6879 ((char-equal other-execute-or-sticky ?x)
6873 (?T (tramp-octal-to-decimal "01000")) 6880 (tramp-octal-to-decimal "00001"))
6874 (?t (tramp-octal-to-decimal "01001")) 6881 ((char-equal other-execute-or-sticky ?T)
6875 (?- 0) 6882 (tramp-octal-to-decimal "01000"))
6876 (t (error "Tenth char `%c' must be one of `xtT-'" 6883 ((char-equal other-execute-or-sticky ?t)
6877 other-execute-or-sticky))))))) 6884 (tramp-octal-to-decimal "01001"))
6885 ((char-equal other-execute-or-sticky ?-) 0)
6886 (t (error "Tenth char `%c' must be one of `xtT-'"
6887 other-execute-or-sticky)))))))
6878 6888
6879(defun tramp-convert-file-attributes (multi-method method user host attr) 6889(defun tramp-convert-file-attributes (multi-method method user host attr)
6880 "Convert file-attributes ATTR generated by perl script or ls. 6890 "Convert file-attributes ATTR generated by perl script or ls.
@@ -6977,7 +6987,29 @@ Not actually used. Use `(format \"%o\" i)' instead?"
6977;; internal data structure. Convenience functions for internal 6987;; internal data structure. Convenience functions for internal
6978;; data structure. 6988;; data structure.
6979 6989
6980(defstruct tramp-file-name multi-method method user host localname) 6990(defun tramp-file-name-p (obj)
6991 "Check whether TRAMP-FILE-NAME is a Tramp object."
6992 (and (vectorp obj) (= 5 (length obj))))
6993
6994(defun tramp-file-name-multi-method (obj)
6995 "Return MULTI-METHOD component of TRAMP-FILE-NAME."
6996 (and (tramp-file-name-p obj) (aref obj 0)))
6997
6998(defun tramp-file-name-method (obj)
6999 "Return METHOD component of TRAMP-FILE-NAME."
7000 (and (tramp-file-name-p obj) (aref obj 1)))
7001
7002(defun tramp-file-name-user (obj)
7003 "Return USER component of TRAMP-FILE-NAME."
7004 (and (tramp-file-name-p obj) (aref obj 2)))
7005
7006(defun tramp-file-name-host (obj)
7007 "Return HOST component of TRAMP-FILE-NAME."
7008 (and (tramp-file-name-p obj) (aref obj 3)))
7009
7010(defun tramp-file-name-localname (obj)
7011 "Return LOCALNAME component of TRAMP-FILE-NAME."
7012 (and (tramp-file-name-p obj) (aref obj 4)))
6981 7013
6982(defun tramp-tramp-file-p (name) 7014(defun tramp-tramp-file-p (name)
6983 "Return t iff NAME is a tramp file." 7015 "Return t iff NAME is a tramp file."
@@ -7010,12 +7042,7 @@ localname (file name on remote host)."
7010 (let ((user (match-string (nth 2 tramp-file-name-structure) name)) 7042 (let ((user (match-string (nth 2 tramp-file-name-structure) name))
7011 (host (match-string (nth 3 tramp-file-name-structure) name)) 7043 (host (match-string (nth 3 tramp-file-name-structure) name))
7012 (localname (match-string (nth 4 tramp-file-name-structure) name))) 7044 (localname (match-string (nth 4 tramp-file-name-structure) name)))
7013 (make-tramp-file-name 7045 (vector nil method (or user nil) host localname))))))
7014 :multi-method nil
7015 :method method
7016 :user (or user nil)
7017 :host host
7018 :localname localname))))))
7019 7046
7020(defun tramp-find-default-method (user host) 7047(defun tramp-find-default-method (user host)
7021 "Look up the right method to use in `tramp-default-method-alist'." 7048 "Look up the right method to use in `tramp-default-method-alist'."
@@ -7055,7 +7082,7 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
7055 (setq method (match-string method-index name)) 7082 (setq method (match-string method-index name))
7056 (setq hops (match-string hops-index name)) 7083 (setq hops (match-string hops-index name))
7057 (setq len (/ (length (match-data t)) 2)) 7084 (setq len (/ (length (match-data t)) 2))
7058 (when (< localname-index 0) (incf localname-index len)) 7085 (when (< localname-index 0) (setq localname-index (+ localname-index len)))
7059 (setq localname (match-string localname-index name)) 7086 (setq localname (match-string localname-index name))
7060 (let ((index 0)) 7087 (let ((index 0))
7061 (while (string-match hop-regexp hops index) 7088 (while (string-match hop-regexp hops index)
@@ -7066,12 +7093,12 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
7066 (cons (match-string hop-user-index hops) hop-users)) 7093 (cons (match-string hop-user-index hops) hop-users))
7067 (setq hop-hosts 7094 (setq hop-hosts
7068 (cons (match-string hop-host-index hops) hop-hosts)))) 7095 (cons (match-string hop-host-index hops) hop-hosts))))
7069 (make-tramp-file-name 7096 (vector
7070 :multi-method method 7097 method
7071 :method (apply 'vector (reverse hop-methods)) 7098 (apply 'vector (reverse hop-methods))
7072 :user (apply 'vector (reverse hop-users)) 7099 (apply 'vector (reverse hop-users))
7073 :host (apply 'vector (reverse hop-hosts)) 7100 (apply 'vector (reverse hop-hosts))
7074 :localname localname))) 7101 localname)))
7075 7102
7076(defun tramp-make-tramp-file-name (multi-method method user host localname) 7103(defun tramp-make-tramp-file-name (multi-method method user host localname)
7077 "Constructs a tramp file name from METHOD, USER, HOST and LOCALNAME." 7104 "Constructs a tramp file name from METHOD, USER, HOST and LOCALNAME."
@@ -7103,7 +7130,7 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
7103 (let ((m (aref method i)) (u (aref user i)) (h (aref host i))) 7130 (let ((m (aref method i)) (u (aref user i)) (h (aref host i)))
7104 (setq hops (concat hops (format-spec hop-format 7131 (setq hops (concat hops (format-spec hop-format
7105 `((?m . ,m) (?u . ,u) (?h . ,h))))) 7132 `((?m . ,m) (?u . ,u) (?h . ,h)))))
7106 (incf i))) 7133 (setq i (1+ i))))
7107 (concat prefix hops localname))) 7134 (concat prefix hops localname)))
7108 7135
7109(defun tramp-make-copy-program-file-name (user host localname) 7136(defun tramp-make-copy-program-file-name (user host localname)
@@ -7218,7 +7245,7 @@ as default."
7218 (assoc (tramp-find-method multi-method method user host) 7245 (assoc (tramp-find-method multi-method method user host)
7219 tramp-methods)))) 7246 tramp-methods))))
7220 (if entry 7247 (if entry
7221 (second entry) 7248 (cadr entry)
7222 (symbol-value param)))) 7249 (symbol-value param))))
7223 7250
7224 7251
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index 04f7bc754f2..485c58afa65 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -30,7 +30,7 @@
30;; are auto-frobbed from configure.ac, so you should edit that file and run 30;; are auto-frobbed from configure.ac, so you should edit that file and run
31;; "autoconf && ./configure" to change them. 31;; "autoconf && ./configure" to change them.
32 32
33(defconst tramp-version "2.0.55" 33(defconst tramp-version "2.0.56"
34 "This version of Tramp.") 34 "This version of Tramp.")
35 35
36(defconst tramp-bug-report-address "tramp-devel@gnu.org" 36(defconst tramp-bug-report-address "tramp-devel@gnu.org"
diff --git a/lisp/net/webjump.el b/lisp/net/webjump.el
index 7f4fce16bce..03ce6305196 100644
--- a/lisp/net/webjump.el
+++ b/lisp/net/webjump.el
@@ -229,6 +229,8 @@
229 ("Yahoo" . 229 ("Yahoo" .
230 [simple-query "www.yahoo.com" "search.yahoo.com/search?p=" ""]) 230 [simple-query "www.yahoo.com" "search.yahoo.com/search?p=" ""])
231 ("Yahoo: Reference" . "www.yahoo.com/Reference/") 231 ("Yahoo: Reference" . "www.yahoo.com/Reference/")
232 ("Wikipedia" .
233 [simple-query "wikipedia.org" "wikipedia.org/wiki/" ""])
232 234
233 ;; Misc. general interest. 235 ;; Misc. general interest.
234 ("Interactive Weather Information Network" . webjump-to-iwin) 236 ("Interactive Weather Information Network" . webjump-to-iwin)
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 0556c87b43d..cf518b17d94 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -4342,7 +4342,7 @@ catalog \('lib).")
4342(defvar idlwave-true-path-alist nil 4342(defvar idlwave-true-path-alist nil
4343 "Like `idlwave-path-alist', but with true filenames.") 4343 "Like `idlwave-path-alist', but with true filenames.")
4344(defvar idlwave-routines nil 4344(defvar idlwave-routines nil
4345 "Holds the combinded procedure/function/method routine-info.") 4345 "Holds the combined procedure/function/method routine-info.")
4346(defvar idlwave-class-alist nil 4346(defvar idlwave-class-alist nil
4347 "Holds the class names known to IDLWAVE.") 4347 "Holds the class names known to IDLWAVE.")
4348(defvar idlwave-class-history nil 4348(defvar idlwave-class-history nil
@@ -4846,7 +4846,7 @@ Gets set in cached XML rinfo, or `idlw-rinfo.el'.")
4846 ;; Create a sysvar list entry from the xml parsed list. 4846 ;; Create a sysvar list entry from the xml parsed list.
4847 (let* ((nameblock (nth 1 xml-entry)) 4847 (let* ((nameblock (nth 1 xml-entry))
4848 (name (cdr (assq 'name nameblock))) 4848 (name (cdr (assq 'name nameblock)))
4849 (sysvar (substring name (progn (string-match "^ *!" name) 4849 (sysvar (substring name (progn (string-match "^ *!" name)
4850 (match-end 0)))) 4850 (match-end 0))))
4851 (link (cdr (assq 'link nameblock))) 4851 (link (cdr (assq 'link nameblock)))
4852 (params (cddr xml-entry)) 4852 (params (cddr xml-entry))
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 7eabb10a80a..85f6ccff70a 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -894,16 +894,19 @@ With prefix argument ARG, repeat this ARG times."
894 ;; Show preceding or following hidden tag, depending of cursor direction. 894 ;; Show preceding or following hidden tag, depending of cursor direction.
895 (let ((inhibit-point-motion-hooks t)) 895 (let ((inhibit-point-motion-hooks t))
896 (save-excursion 896 (save-excursion
897 (message "Invisible tag: %s" 897 (condition-case nil
898 ;; Strip properties, otherwise, the text is invisible. 898 (message "Invisible tag: %s"
899 (buffer-substring-no-properties 899 ;; Strip properties, otherwise, the text is invisible.
900 (point) 900 (buffer-substring-no-properties
901 (if (or (and (> x y) 901 (point)
902 (not (eq (following-char) ?<))) 902 (if (or (and (> x y)
903 (and (< x y) 903 (not (eq (following-char) ?<)))
904 (eq (preceding-char) ?>))) 904 (and (< x y)
905 (backward-list) 905 (eq (preceding-char) ?>)))
906 (forward-list))))))) 906 (backward-list)
907 (forward-list))))
908 (error nil)))))
909
907 910
908 911
909(defun sgml-validate (command) 912(defun sgml-validate (command)
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index c0a85eeb68c..69c3c60f912 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -5333,21 +5333,25 @@ instead of the current buffer and returns the OBJECT."
5333(defun table--point-entered-cell-function (&optional old-point new-point) 5333(defun table--point-entered-cell-function (&optional old-point new-point)
5334 "Point has entered a cell. 5334 "Point has entered a cell.
5335Refresh the menu bar." 5335Refresh the menu bar."
5336 (unless table-cell-entered-state 5336 ;; Avoid calling point-motion-hooks recursively.
5337 (setq table-cell-entered-state t) 5337 (let ((inhibit-point-motion-hooks t))
5338 (setq table-mode-indicator t) 5338 (unless table-cell-entered-state
5339 (force-mode-line-update) 5339 (setq table-cell-entered-state t)
5340 (table--warn-incompatibility) 5340 (setq table-mode-indicator t)
5341 (run-hooks 'table-point-entered-cell-hook))) 5341 (force-mode-line-update)
5342 (table--warn-incompatibility)
5343 (run-hooks 'table-point-entered-cell-hook))))
5342 5344
5343(defun table--point-left-cell-function (&optional old-point new-point) 5345(defun table--point-left-cell-function (&optional old-point new-point)
5344 "Point has left a cell. 5346 "Point has left a cell.
5345Refresh the menu bar." 5347Refresh the menu bar."
5346 (when table-cell-entered-state 5348 ;; Avoid calling point-motion-hooks recursively.
5347 (setq table-cell-entered-state nil) 5349 (let ((inhibit-point-motion-hooks t))
5348 (setq table-mode-indicator nil) 5350 (when table-cell-entered-state
5349 (force-mode-line-update) 5351 (setq table-cell-entered-state nil)
5350 (run-hooks 'table-point-left-cell-hook))) 5352 (setq table-mode-indicator nil)
5353 (force-mode-line-update)
5354 (run-hooks 'table-point-left-cell-hook))))
5351 5355
5352(defun table--warn-incompatibility () 5356(defun table--warn-incompatibility ()
5353 "If called from interactive operation warn the know incompatibilities. 5357 "If called from interactive operation warn the know incompatibilities.
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 8c53d49fdd1..d9efd3a4540 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,9 @@
12007-05-29 Chong Yidong <cyd@stupidchicken.com>
2
3 * url-mailto.el (url-mailto): Insert body after
4 mail-header-separator if present, so that it is before signature.
5 Suggested by Leo <sdl.web@gmail.com>.
6
12007-04-15 Chong Yidong <cyd@stupidchicken.com> 72007-04-15 Chong Yidong <cyd@stupidchicken.com>
2 8
3 * url-parse.el (url-generic-parse-url): Revert 2006-10-09 changes. 9 * url-parse.el (url-generic-parse-url): Revert 2006-10-09 changes.
diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el
index 9f20989a0b1..6585ba8e458 100644
--- a/lisp/url/url-mailto.el
+++ b/lisp/url/url-mailto.el
@@ -100,7 +100,9 @@
100 (while args 100 (while args
101 (if (string= (caar args) "body") 101 (if (string= (caar args) "body")
102 (progn 102 (progn
103 (goto-char (point-max)) 103 (goto-char (point-min))
104 (or (search-forward (concat "\n" mail-header-separator "\n") nil t)
105 (goto-char (point-max)))
104 (insert (mapconcat 106 (insert (mapconcat
105 #'(lambda (string) 107 #'(lambda (string)
106 (replace-regexp-in-string "\r\n" "\n" string)) 108 (replace-regexp-in-string "\r\n" "\n" string))
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 1092346448e..a9d931d3140 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,9 @@
12007-05-30 Nick Roberts <nickrob@snap.net.nz>
2
3 * commands.texi (Click Events): Layout more logically. Describe
4 width and height.
5 (Drag Events, Motion Events): Update to new format for position.
6
12007-05-12 Richard Stallman <rms@gnu.org> 72007-05-12 Richard Stallman <rms@gnu.org>
2 8
3 * text.texi (Margins): indent-to-left-margin is not the default. 9 * text.texi (Margins): indent-to-left-margin is not the default.
diff --git a/lispref/commands.texi b/lispref/commands.texi
index 8354346c35e..10f4555e1f0 100644
--- a/lispref/commands.texi
+++ b/lispref/commands.texi
@@ -1196,12 +1196,7 @@ describe events by their types; thus, if there is a key binding for
1196@item @var{position} 1196@item @var{position}
1197This is the position where the mouse click occurred. The actual 1197This is the position where the mouse click occurred. The actual
1198format of @var{position} depends on what part of a window was clicked 1198format of @var{position} depends on what part of a window was clicked
1199on. The various formats are described below. 1199on.
1200
1201@item @var{click-count}
1202This is the number of rapid repeated presses so far of the same mouse
1203button. @xref{Repeat Events}.
1204@end table
1205 1200
1206For mouse click events in the text area, mode line, header line, or in 1201For mouse click events in the text area, mode line, header line, or in
1207the marginal areas, @var{position} has this form: 1202the marginal areas, @var{position} has this form:
@@ -1223,6 +1218,12 @@ which the click occurred. It is one of the symbols @code{mode-line},
1223@code{header-line}, @code{vertical-line}, @code{left-margin}, 1218@code{header-line}, @code{vertical-line}, @code{left-margin},
1224@code{right-margin}, @code{left-fringe}, or @code{right-fringe}. 1219@code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
1225 1220
1221In one special case, @var{pos-or-area} is a list containing a symbol (one
1222of the symbols listed above) instead of just the symbol. This happens
1223after the imaginary prefix keys for the event are inserted into the
1224input stream. @xref{Key Sequence Input}.
1225
1226
1226@item @var{x}, @var{y} 1227@item @var{x}, @var{y}
1227These are the pixel-denominated coordinates of the click, relative to 1228These are the pixel-denominated coordinates of the click, relative to
1228the top left corner of @var{window}, which is @code{(0 . 0)}. 1229the top left corner of @var{window}, which is @code{(0 . 0)}.
@@ -1238,6 +1239,7 @@ This is the object on which the click occurred. It is either
1238(@var{string} . @var{string-pos}) when there is a string-type text 1239(@var{string} . @var{string-pos}) when there is a string-type text
1239property at the click position. 1240property at the click position.
1240 1241
1242@table @asis
1241@item @var{string} 1243@item @var{string}
1242This is the string on which the click occurred, including any 1244This is the string on which the click occurred, including any
1243properties. 1245properties.
@@ -1245,6 +1247,7 @@ properties.
1245@item @var{string-pos} 1247@item @var{string-pos}
1246This is the position in the string on which the click occurred, 1248This is the position in the string on which the click occurred,
1247relevant if properties at the click need to be looked up. 1249relevant if properties at the click need to be looked up.
1250@end table
1248 1251
1249@item @var{text-pos} 1252@item @var{text-pos}
1250For clicks on a marginal area or on a fringe, this is the buffer 1253For clicks on a marginal area or on a fringe, this is the buffer
@@ -1267,8 +1270,12 @@ These are the pixel-denominated coordinates of the click, relative to
1267the top left corner of @var{object}, which is @code{(0 . 0)}. If 1270the top left corner of @var{object}, which is @code{(0 . 0)}. If
1268@var{object} is @code{nil}, the coordinates are relative to the top 1271@var{object} is @code{nil}, the coordinates are relative to the top
1269left corner of the character glyph clicked on. 1272left corner of the character glyph clicked on.
1270@end table
1271 1273
1274@item @var{width}, @var{height}
1275These are the pixel-denominated width and height of @var{object}.
1276@end table
1277
1278@sp 1
1272For mouse clicks on a scroll-bar, @var{position} has this form: 1279For mouse clicks on a scroll-bar, @var{position} has this form:
1273 1280
1274@example 1281@example
@@ -1299,10 +1306,10 @@ of the symbols @code{above-handle}, @code{handle}, @code{below-handle},
1299@code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}. 1306@code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}.
1300@end table 1307@end table
1301 1308
1302In one special case, @var{buffer-pos} is a list containing a symbol (one 1309@item @var{click-count}
1303of the symbols listed above) instead of just the symbol. This happens 1310This is the number of rapid repeated presses so far of the same mouse
1304after the imaginary prefix keys for the event are inserted into the 1311button. @xref{Repeat Events}.
1305input stream. @xref{Key Sequence Input}. 1312@end table
1306 1313
1307@node Drag Events 1314@node Drag Events
1308@subsection Drag Events 1315@subsection Drag Events
@@ -1318,19 +1325,18 @@ position and the final position, like this:
1318 1325
1319@example 1326@example
1320(@var{event-type} 1327(@var{event-type}
1321 (@var{window1} @var{buffer-pos1} (@var{x1} . @var{y1}) @var{timestamp1}) 1328 (@var{window1} START-POSITION)
1322 (@var{window2} @var{buffer-pos2} (@var{x2} . @var{y2}) @var{timestamp2}) 1329 (@var{window2} END-POSITION))
1323 @var{click-count})
1324@end example 1330@end example
1325 1331
1326For a drag event, the name of the symbol @var{event-type} contains the 1332For a drag event, the name of the symbol @var{event-type} contains the
1327prefix @samp{drag-}. For example, dragging the mouse with button 2 held 1333prefix @samp{drag-}. For example, dragging the mouse with button 2
1328down generates a @code{drag-mouse-2} event. The second and third 1334held down generates a @code{drag-mouse-2} event. The second and third
1329elements of the event give the starting and ending position of the drag. 1335elements of the event give the starting and ending position of the
1330Aside from that, the data have the same meanings as in a click event 1336drag. They have the same form as @var{position} in a click event
1331(@pxref{Click Events}). You can access the second element of any mouse 1337(@pxref{Click Events}) that is not on the scroll bar part of the
1332event in the same way, with no need to distinguish drag events from 1338window. You can access the second element of any mouse event in the
1333others. 1339same way, with no need to distinguish drag events from others.
1334 1340
1335The @samp{drag-} prefix follows the modifier key prefixes such as 1341The @samp{drag-} prefix follows the modifier key prefixes such as
1336@samp{C-} and @samp{M-}. 1342@samp{C-} and @samp{M-}.
@@ -1470,7 +1476,7 @@ of the mouse without any button activity. Mouse motion events are
1470represented by lists that look like this: 1476represented by lists that look like this:
1471 1477
1472@example 1478@example
1473(mouse-movement (@var{window} @var{buffer-pos} (@var{x} . @var{y}) @var{timestamp})) 1479(mouse-movement (POSITION))
1474@end example 1480@end example
1475 1481
1476The second element of the list describes the current position of the 1482The second element of the list describes the current position of the
diff --git a/man/ChangeLog b/man/ChangeLog
index e4dd9d18a8c..d6ebb72db4b 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,14 @@
12007-05-28 Michael Albinus <michael.albinus@gmx.de>
2
3 Sync with Tramp 2.0.56.
4
5 * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc
6 settings. Reported by Ted Zlatanov <tzz@lifelogs.com>.
7
82007-05-26 Michael Olson <mwolson@gnu.org>
9
10 * erc.texi (Modules): Fix references to completion modules.
11
12007-05-09 Reiner Steib <Reiner.Steib@gmx.de> 122007-05-09 Reiner Steib <Reiner.Steib@gmx.de>
2 13
3 * gnus.texi (Running NNDiary): Use ~/.gnus.el instead of gnusrc. 14 * gnus.texi (Running NNDiary): Use ~/.gnus.el instead of gnusrc.
diff --git a/man/erc.texi b/man/erc.texi
index 72561b33072..3e52bb42c92 100644
--- a/man/erc.texi
+++ b/man/erc.texi
@@ -564,7 +564,8 @@ Buttonize URLs, nicknames, and other text
564Mark unidentified users on freenode and other servers supporting CAPAB. 564Mark unidentified users on freenode and other servers supporting CAPAB.
565 565
566@cindex modules, completion 566@cindex modules, completion
567@item pcomplete 567@cindex modules, pcomplete
568@item completion (aka pcomplete)
568Complete nicknames and commands (programmable) 569Complete nicknames and commands (programmable)
569 570
570@cindex modules, fill 571@cindex modules, fill
@@ -572,7 +573,7 @@ Complete nicknames and commands (programmable)
572Wrap long lines 573Wrap long lines
573 574
574@cindex modules, hecomplete 575@cindex modules, hecomplete
575@item completion 576@item hecomplete
576Complete nicknames and commands (old). This is the old module---you 577Complete nicknames and commands (old). This is the old module---you
577might prefer the ``completion'' module instead. 578might prefer the ``completion'' module instead.
578 579
diff --git a/man/tramp.texi b/man/tramp.texi
index 7acef2663e4..67b0647787c 100644
--- a/man/tramp.texi
+++ b/man/tramp.texi
@@ -2051,7 +2051,11 @@ setting the regular expression detecting the prompt.
2051A special problem is the zsh, which uses left-hand side and right-hand 2051A special problem is the zsh, which uses left-hand side and right-hand
2052side prompts in parallel. Therefore, it is necessary to disable the 2052side prompts in parallel. Therefore, it is necessary to disable the
2053zsh line editor on the remote host. You shall add to @file{~/.zshrc} 2053zsh line editor on the remote host. You shall add to @file{~/.zshrc}
2054the following command: @command{[ $TERM = "dumb" ] && unsetopt zle}. 2054the following command:
2055
2056@example
2057[ $TERM = "dumb" ] && unsetopt zle && PS1='$ '
2058@end example
2055 2059
2056@item 2060@item
2057@value{tramp} doesn't transfer strings with more than 500 characters 2061@value{tramp} doesn't transfer strings with more than 500 characters
diff --git a/man/trampver.texi b/man/trampver.texi
index c512de4c74b..6c770dc8ad1 100644
--- a/man/trampver.texi
+++ b/man/trampver.texi
@@ -9,7 +9,7 @@
9@c In the Tramp CVS, the version number is auto-frobbed from 9@c In the Tramp CVS, the version number is auto-frobbed from
10@c configure.ac, so you should edit that file and run 10@c configure.ac, so you should edit that file and run
11@c "autoconf && ./configure" to change the version number. 11@c "autoconf && ./configure" to change the version number.
12@set trampver 2.0.55 12@set trampver 2.0.56
13 13
14@c Other flags from configuration 14@c Other flags from configuration
15@set prefix /usr/local 15@set prefix /usr/local
diff --git a/oldXMenu/ChangeLog b/oldXMenu/ChangeLog
index c92563d3bc2..9a7f01ed901 100644
--- a/oldXMenu/ChangeLog
+++ b/oldXMenu/ChangeLog
@@ -1,3 +1,7 @@
12007-05-30 Ulrich Mueller <ulm@gentoo.org> (tiny change)
2
3 * XMakeAssoc.c (XMakeAssoc): Use malloc rather than xmalloc.
4
12007-02-27 Glenn Morris <rgm@gnu.org> 52007-02-27 Glenn Morris <rgm@gnu.org>
2 6
3 * Imakefile: Remove unused file with no explicit legal info. 7 * Imakefile: Remove unused file with no explicit legal info.
diff --git a/oldXMenu/XMakeAssoc.c b/oldXMenu/XMakeAssoc.c
index d443084ac13..cf039c8f3c1 100644
--- a/oldXMenu/XMakeAssoc.c
+++ b/oldXMenu/XMakeAssoc.c
@@ -81,7 +81,7 @@ XMakeAssoc(dpy, table, x_id, data)
81 /* If we are here then the new entry should be inserted just */ 81 /* If we are here then the new entry should be inserted just */
82 /* before the current value of "Entry". */ 82 /* before the current value of "Entry". */
83 /* Create a new XAssoc and load it with new provided data. */ 83 /* Create a new XAssoc and load it with new provided data. */
84 new_entry = (XAssoc *) xmalloc(sizeof(XAssoc)); 84 new_entry = (XAssoc *) malloc(sizeof(XAssoc));
85 new_entry->display = dpy; 85 new_entry->display = dpy;
86 new_entry->x_id = x_id; 86 new_entry->x_id = x_id;
87 new_entry->data = data; 87 new_entry->data = data;
diff --git a/src/ChangeLog b/src/ChangeLog
index bafb3991d2e..31b8f51bf18 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,21 @@
12007-05-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2
3 * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
4 around current_column call.
5
62007-05-26 Dan Nicolaescu <dann@ics.uci.edu>
7
8 * xfaces.c (syms_of_xfaces): Delete stray semicolon.
9 * xdisp.c (next_element_from_buffer):
10 * window.c (delete_window):
11 * term.c (term_mouse_highlight):
12 * msdos.c (getdefdir):
13 * macterm.c (mac_create_bitmap_from_bitmap_data)
14 (init_font_name_table):
15 * fns.c (Fsxhash):
16 * data.c (Fmake_local_variable):
17 * ccl.c (ccl_driver): Likewise.
18
12007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 192007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 20
3 * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event): 21 * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event):
diff --git a/src/ccl.c b/src/ccl.c
index c13f7c863b1..96f6b413bc5 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1222,7 +1222,7 @@ ccl_driver (ccl, source, destination, src_size, dst_size, charset_list)
1222 case CCL_MOD: reg[rrr] = i % j; break; 1222 case CCL_MOD: reg[rrr] = i % j; break;
1223 case CCL_AND: reg[rrr] = i & j; break; 1223 case CCL_AND: reg[rrr] = i & j; break;
1224 case CCL_OR: reg[rrr] = i | j; break; 1224 case CCL_OR: reg[rrr] = i | j; break;
1225 case CCL_XOR: reg[rrr] = i ^ j;; break; 1225 case CCL_XOR: reg[rrr] = i ^ j; break;
1226 case CCL_LSH: reg[rrr] = i << j; break; 1226 case CCL_LSH: reg[rrr] = i << j; break;
1227 case CCL_RSH: reg[rrr] = i >> j; break; 1227 case CCL_RSH: reg[rrr] = i >> j; break;
1228 case CCL_LSH8: reg[rrr] = (i << 8) | j; break; 1228 case CCL_LSH8: reg[rrr] = (i << 8) | j; break;
diff --git a/src/data.c b/src/data.c
index af166329f81..32e5a6892aa 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1575,7 +1575,7 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
1575 XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; 1575 XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0;
1576 XBUFFER_LOCAL_VALUE (newval)->check_frame = 0; 1576 XBUFFER_LOCAL_VALUE (newval)->check_frame = 0;
1577 XBUFFER_LOCAL_VALUE (newval)->cdr = tem; 1577 XBUFFER_LOCAL_VALUE (newval)->cdr = tem;
1578 SET_SYMBOL_VALUE (variable, newval);; 1578 SET_SYMBOL_VALUE (variable, newval);
1579 } 1579 }
1580 /* Make sure this buffer has its own value of symbol. */ 1580 /* Make sure this buffer has its own value of symbol. */
1581 tem = Fassq (variable, current_buffer->local_var_alist); 1581 tem = Fassq (variable, current_buffer->local_var_alist);
diff --git a/src/fns.c b/src/fns.c
index 86d9407db9a..9460a7c87c2 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -4585,7 +4585,7 @@ DEFUN ("sxhash", Fsxhash, Ssxhash, 1, 1, 0,
4585 (obj) 4585 (obj)
4586 Lisp_Object obj; 4586 Lisp_Object obj;
4587{ 4587{
4588 unsigned hash = sxhash (obj, 0);; 4588 unsigned hash = sxhash (obj, 0);
4589 return make_number (hash); 4589 return make_number (hash);
4590} 4590}
4591 4591
diff --git a/src/frame.c b/src/frame.c
index 284b04494a8..4b26e087c85 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1549,6 +1549,13 @@ before calling this function on it, like this.
1549 Fselect_frame (frame); 1549 Fselect_frame (frame);
1550 mouse_moveto (XINT (x), XINT (y)); 1550 mouse_moveto (XINT (x), XINT (y));
1551 } 1551 }
1552#else
1553#ifdef HAVE_GPM
1554 {
1555 Fselect_frame (frame);
1556 term_mouse_moveto (XINT (x), XINT (y));
1557 }
1558#endif
1552#endif 1559#endif
1553#endif 1560#endif
1554 1561
diff --git a/src/macterm.c b/src/macterm.c
index f7b375c22da..64b4e094d14 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -736,7 +736,7 @@ mac_create_bitmap_from_bitmap_data (bitmap, bits, w, h)
736 /* Bitswap XBM bytes to match how Mac does things. */ 736 /* Bitswap XBM bytes to match how Mac does things. */
737 unsigned char c = *bits++; 737 unsigned char c = *bits++;
738 *p++ = (unsigned char)((swap_nibble[c & 0xf] << 4) 738 *p++ = (unsigned char)((swap_nibble[c & 0xf] << 4)
739 | (swap_nibble[(c>>4) & 0xf]));; 739 | (swap_nibble[(c>>4) & 0xf]));
740 } 740 }
741 } 741 }
742 742
@@ -7577,7 +7577,7 @@ init_font_name_table ()
7577 make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE), 7577 make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE),
7578 make_float (DEFAULT_REHASH_SIZE), 7578 make_float (DEFAULT_REHASH_SIZE),
7579 make_float (DEFAULT_REHASH_THRESHOLD), 7579 make_float (DEFAULT_REHASH_THRESHOLD),
7580 Qnil, Qnil, Qnil);; 7580 Qnil, Qnil, Qnil);
7581 h = XHASH_TABLE (atsu_font_id_hash); 7581 h = XHASH_TABLE (atsu_font_id_hash);
7582 7582
7583 err = ATSUFontCount (&nfonts); 7583 err = ATSUFontCount (&nfonts);
diff --git a/src/msdos.c b/src/msdos.c
index d40aafdcb34..151aec5561d 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1584,7 +1584,7 @@ IT_note_mouse_highlight (struct frame *f, int x, int y)
1584 { 1584 {
1585 extern Lisp_Object Qmouse_face; 1585 extern Lisp_Object Qmouse_face;
1586 Lisp_Object mouse_face, overlay, position, *overlay_vec; 1586 Lisp_Object mouse_face, overlay, position, *overlay_vec;
1587 int noverlays, obegv, ozv;; 1587 int noverlays, obegv, ozv;
1588 struct buffer *obuf; 1588 struct buffer *obuf;
1589 1589
1590 /* If we get an out-of-range value, return now; avoid an error. */ 1590 /* If we get an out-of-range value, return now; avoid an error. */
@@ -4071,7 +4071,7 @@ getdefdir (drive, dst)
4071 int drive; 4071 int drive;
4072 char *dst; 4072 char *dst;
4073{ 4073{
4074 char in_path[4], *p = in_path, e = errno;; 4074 char in_path[4], *p = in_path, e = errno;
4075 4075
4076 /* Generate "X:." (when drive is X) or "." (when drive is 0). */ 4076 /* Generate "X:." (when drive is X) or "." (when drive is 0). */
4077 if (drive != 0) 4077 if (drive != 0)
diff --git a/src/sysdep.c b/src/sysdep.c
index 202cab4abd2..95ad90c2a1b 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1679,7 +1679,7 @@ init_sys_modes ()
1679 if (term_gpm) 1679 if (term_gpm)
1680 { 1680 {
1681 fcntl (gpm_fd, F_SETOWN, getpid ()); 1681 fcntl (gpm_fd, F_SETOWN, getpid ());
1682 fcntl (gpm_fd, F_SETFL, O_NONBLOCK); 1682 fcntl (gpm_fd, F_SETFL, fcntl (gpm_fd, F_GETFL, 0) | O_NONBLOCK);
1683 init_sigio (gpm_fd); 1683 init_sigio (gpm_fd);
1684 } 1684 }
1685#endif /* HAVE_GPM */ 1685#endif /* HAVE_GPM */
diff --git a/src/term.c b/src/term.c
index b8e972043a4..f23963cc39c 100644
--- a/src/term.c
+++ b/src/term.c
@@ -427,7 +427,7 @@ int term_gpm = 0;
427static int mouse_face_beg_row, mouse_face_beg_col; 427static int mouse_face_beg_row, mouse_face_beg_col;
428static int mouse_face_end_row, mouse_face_end_col; 428static int mouse_face_end_row, mouse_face_end_col;
429static int mouse_face_past_end; 429static int mouse_face_past_end;
430static Lisp_Object mouse_face_window; 430static Lisp_Object Qmouse_face_window;
431static int mouse_face_face_id; 431static int mouse_face_face_id;
432 432
433/* FRAME and X, Y position of mouse when last checked for 433/* FRAME and X, Y position of mouse when last checked for
@@ -2494,10 +2494,23 @@ set_tty_color_mode (f, val)
2494 ***********************************************************************/ 2494 ***********************************************************************/
2495 2495
2496#ifdef HAVE_GPM 2496#ifdef HAVE_GPM
2497void term_mouse_moveto (int x, int y)
2498{
2499 const char *name;
2500 int fd;
2501 name = (const char *) ttyname (0);
2502 fd = open (name, O_WRONLY);
2503 /* TODO: how to set mouse position?
2504 SOME_FUNCTION (x, y, fd); */
2505 close (fd);
2506 last_mouse_x = x;
2507 last_mouse_y = y;
2508}
2509
2497static void 2510static void
2498term_show_mouse_face (enum draw_glyphs_face draw) 2511term_show_mouse_face (enum draw_glyphs_face draw)
2499{ 2512{
2500 struct window *w = XWINDOW (mouse_face_window); 2513 struct window *w = XWINDOW (Qmouse_face_window);
2501 int save_x, save_y; 2514 int save_x, save_y;
2502 int i, j; 2515 int i, j;
2503 2516
@@ -2573,12 +2586,12 @@ term_show_mouse_face (enum draw_glyphs_face draw)
2573static void 2586static void
2574term_clear_mouse_face () 2587term_clear_mouse_face ()
2575{ 2588{
2576 if (!NILP (mouse_face_window)) 2589 if (!NILP (Qmouse_face_window))
2577 term_show_mouse_face (DRAW_NORMAL_TEXT); 2590 term_show_mouse_face (DRAW_NORMAL_TEXT);
2578 2591
2579 mouse_face_beg_row = mouse_face_beg_col = -1; 2592 mouse_face_beg_row = mouse_face_beg_col = -1;
2580 mouse_face_end_row = mouse_face_end_col = -1; 2593 mouse_face_end_row = mouse_face_end_col = -1;
2581 mouse_face_window = Qnil; 2594 Qmouse_face_window = Qnil;
2582} 2595}
2583 2596
2584/* Find the glyph matrix position of buffer position POS in window W. 2597/* Find the glyph matrix position of buffer position POS in window W.
@@ -2679,7 +2692,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2679 if (!WINDOWP (window)) 2692 if (!WINDOWP (window))
2680 return; 2693 return;
2681 2694
2682 if (!EQ (window, mouse_face_window)) 2695 if (!EQ (window, Qmouse_face_window))
2683 term_clear_mouse_face (); 2696 term_clear_mouse_face ();
2684 2697
2685 w = XWINDOW (window); 2698 w = XWINDOW (window);
@@ -2737,7 +2750,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2737 { 2750 {
2738 extern Lisp_Object Qmouse_face; 2751 extern Lisp_Object Qmouse_face;
2739 Lisp_Object mouse_face, overlay, position, *overlay_vec; 2752 Lisp_Object mouse_face, overlay, position, *overlay_vec;
2740 int noverlays, obegv, ozv;; 2753 int noverlays, obegv, ozv;
2741 struct buffer *obuf; 2754 struct buffer *obuf;
2742 2755
2743 /* If we get an out-of-range value, return now; avoid an error. */ 2756 /* If we get an out-of-range value, return now; avoid an error. */
@@ -2762,7 +2775,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2762 noverlays = sort_overlays (overlay_vec, noverlays, w); 2775 noverlays = sort_overlays (overlay_vec, noverlays, w);
2763 2776
2764 /* Check mouse-face highlighting. */ 2777 /* Check mouse-face highlighting. */
2765 if (!(EQ (window, mouse_face_window) 2778 if (!(EQ (window, Qmouse_face_window)
2766 && y >= mouse_face_beg_row 2779 && y >= mouse_face_beg_row
2767 && y <= mouse_face_end_row 2780 && y <= mouse_face_end_row
2768 && (y > mouse_face_beg_row 2781 && (y > mouse_face_beg_row
@@ -2812,7 +2825,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2812 = !fast_find_position (w, XFASTINT (after), 2825 = !fast_find_position (w, XFASTINT (after),
2813 &mouse_face_end_col, 2826 &mouse_face_end_col,
2814 &mouse_face_end_row); 2827 &mouse_face_end_row);
2815 mouse_face_window = window; 2828 Qmouse_face_window = window;
2816 2829
2817 mouse_face_face_id 2830 mouse_face_face_id
2818 = face_at_buffer_position (w, pos, 0, 0, 2831 = face_at_buffer_position (w, pos, 0, 0,
@@ -2847,7 +2860,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
2847 = !fast_find_position (w, XFASTINT (after), 2860 = !fast_find_position (w, XFASTINT (after),
2848 &mouse_face_end_col, 2861 &mouse_face_end_col,
2849 &mouse_face_end_row); 2862 &mouse_face_end_row);
2850 mouse_face_window = window; 2863 Qmouse_face_window = window;
2851 2864
2852 mouse_face_face_id 2865 mouse_face_face_id
2853 = face_at_buffer_position (w, pos, 0, 0, 2866 = face_at_buffer_position (w, pos, 0, 0,
@@ -2934,33 +2947,31 @@ term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
2934 Set *time to the time the mouse was at the returned position. 2947 Set *time to the time the mouse was at the returned position.
2935 2948
2936 This should clear mouse_moved until the next motion 2949 This should clear mouse_moved until the next motion
2937 event arrives. 2950 event arrives. */
2938
2939 NOT CURRENTLY INVOKED: see mouse_position_hook below. */
2940static void 2951static void
2941term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window, 2952term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
2942 enum scroll_bar_part *part, Lisp_Object *x, 2953 enum scroll_bar_part *part, Lisp_Object *x,
2943 Lisp_Object *y, unsigned long *time) 2954 Lisp_Object *y, unsigned long *time)
2944{ 2955{
2945 Gpm_Event event;
2946 struct timeval now; 2956 struct timeval now;
2947 int i; 2957 Lisp_Object frame, window;
2948 2958 struct window *w;
2949 BLOCK_INPUT;
2950 2959
2951 *fp = SELECTED_FRAME (); 2960 *fp = SELECTED_FRAME ();
2961 (*fp)->mouse_moved = 0;
2952 2962
2953 *bar_window = Qnil; 2963 *bar_window = Qnil;
2954 *part = 0; 2964 *part = 0;
2955 2965
2956 i = Gpm_GetSnapshot (&event); 2966 XSETINT (*x, last_mouse_x);
2967 XSETINT (*y, last_mouse_y);
2968 XSETFRAME (frame, *fp);
2969 window = Fwindow_at (*x, *y, frame);
2957 2970
2958 XSETINT (*x, event.x); 2971 XSETINT (*x, last_mouse_x - WINDOW_LEFT_EDGE_COL (XWINDOW (window)));
2959 XSETINT (*y, event.y); 2972 XSETINT (*y, last_mouse_y - WINDOW_TOP_EDGE_LINE (XWINDOW (window)));
2960 gettimeofday(&now, 0); 2973 gettimeofday(&now, 0);
2961 *time = (now.tv_sec * 1000) + (now.tv_usec / 1000); 2974 *time = (now.tv_sec * 1000) + (now.tv_usec / 1000);
2962
2963 UNBLOCK_INPUT;
2964} 2975}
2965 2976
2966/* Prepare a mouse-event in *RESULT for placement in the input queue. 2977/* Prepare a mouse-event in *RESULT for placement in the input queue.
@@ -3059,7 +3070,7 @@ handle_one_term_event (Gpm_Event *event, struct input_event* hold_quit)
3059 name = (const char *) ttyname (0); 3070 name = (const char *) ttyname (0);
3060 fd = open (name, O_WRONLY); 3071 fd = open (name, O_WRONLY);
3061 ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1); 3072 ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1);
3062 close(fd); 3073 close (fd);
3063 3074
3064 term_mouse_movement (f, event); 3075 term_mouse_movement (f, event);
3065 3076
@@ -3074,7 +3085,6 @@ handle_one_term_event (Gpm_Event *event, struct input_event* hold_quit)
3074 else { 3085 else {
3075 f->mouse_moved = 0; 3086 f->mouse_moved = 0;
3076 term_mouse_click (&ie, event, f); 3087 term_mouse_click (&ie, event, f);
3077 //kbd_buffer_store_event_hold (&ie, hold_quit);
3078 } 3088 }
3079 3089
3080 done: 3090 done:
@@ -3159,11 +3169,8 @@ term_init (terminal_type)
3159 encode_terminal_dst_size = 0; 3169 encode_terminal_dst_size = 0;
3160 3170
3161#ifdef HAVE_GPM 3171#ifdef HAVE_GPM
3162 /* TODO: Can't get Gpm_Snapshot in term_mouse_position to work: test with 3172 mouse_position_hook = term_mouse_position;
3163 (mouse-position). Also set-mouse-position won't work as is. */ 3173 Qmouse_face_window = Qnil;
3164 /* mouse_position_hook = term_mouse_position; */
3165
3166 mouse_face_window = Qnil;
3167#endif 3174#endif
3168 3175
3169#ifdef WINDOWSNT 3176#ifdef WINDOWSNT
@@ -3616,6 +3623,8 @@ bigger, or it may make it blink, or it may do nothing at all. */);
3616#ifdef HAVE_GPM 3623#ifdef HAVE_GPM
3617 defsubr (&Sterm_open_connection); 3624 defsubr (&Sterm_open_connection);
3618 defsubr (&Sterm_close_connection); 3625 defsubr (&Sterm_close_connection);
3626
3627 staticpro (&Qmouse_face_window);
3619#endif /* HAVE_GPM */ 3628#endif /* HAVE_GPM */
3620 3629
3621 fullscreen_hook = NULL; 3630 fullscreen_hook = NULL;
diff --git a/src/termhooks.h b/src/termhooks.h
index 1e9968530e8..ee6e707e6b5 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -453,6 +453,7 @@ enum {
453#ifdef HAVE_GPM 453#ifdef HAVE_GPM
454#include <gpm.h> 454#include <gpm.h>
455extern int handle_one_term_event (Gpm_Event *, struct input_event *); 455extern int handle_one_term_event (Gpm_Event *, struct input_event *);
456extern void term_mouse_moveto (int, int);
456 457
457/* Nonzero means mouse is enabled on Linux console */ 458/* Nonzero means mouse is enabled on Linux console */
458extern int term_gpm; 459extern int term_gpm;
diff --git a/src/window.c b/src/window.c
index 3fb558d637a..f417c7458d4 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1532,7 +1532,7 @@ delete_window (window)
1532 if (!EQ (window, pwindow)) 1532 if (!EQ (window, pwindow))
1533 break; 1533 break;
1534 /* Otherwise, try another window for SWINDOW. */ 1534 /* Otherwise, try another window for SWINDOW. */
1535 swindow = Fnext_window (swindow, Qlambda, Qnil);; 1535 swindow = Fnext_window (swindow, Qlambda, Qnil);
1536 1536
1537 /* If we get back to the frame's selected window, 1537 /* If we get back to the frame's selected window,
1538 it means there was no acceptable alternative, 1538 it means there was no acceptable alternative,
diff --git a/src/xdisp.c b/src/xdisp.c
index 48e894afcec..1cc8cf10611 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -6417,7 +6417,7 @@ next_element_from_buffer (it)
6417 it->c = *p, it->len = 1; 6417 it->c = *p, it->len = 1;
6418 6418
6419 /* Record what we have and where it came from. */ 6419 /* Record what we have and where it came from. */
6420 it->what = IT_CHARACTER;; 6420 it->what = IT_CHARACTER;
6421 it->object = it->w->buffer; 6421 it->object = it->w->buffer;
6422 it->position = it->current.pos; 6422 it->position = it->current.pos;
6423 6423
@@ -10996,7 +10996,7 @@ redisplay_internal (preserve_echo_area)
10996 int must_finish = 0; 10996 int must_finish = 0;
10997 struct text_pos tlbufpos, tlendpos; 10997 struct text_pos tlbufpos, tlendpos;
10998 int number_of_visible_frames; 10998 int number_of_visible_frames;
10999 int count; 10999 int count, count1;
11000 struct frame *sf; 11000 struct frame *sf;
11001 int polling_stopped_here = 0; 11001 int polling_stopped_here = 0;
11002 11002
@@ -11134,6 +11134,10 @@ redisplay_internal (preserve_echo_area)
11134 update_mode_lines++; 11134 update_mode_lines++;
11135 } 11135 }
11136 11136
11137 /* Avoid invocation of point motion hooks by `current_column' below. */
11138 count1 = SPECPDL_INDEX ();
11139 specbind (Qinhibit_point_motion_hooks, Qt);
11140
11137 /* If %c is in the mode line, update it if needed. */ 11141 /* If %c is in the mode line, update it if needed. */
11138 if (!NILP (w->column_number_displayed) 11142 if (!NILP (w->column_number_displayed)
11139 /* This alternative quickly identifies a common case 11143 /* This alternative quickly identifies a common case
@@ -11145,6 +11149,8 @@ redisplay_internal (preserve_echo_area)
11145 != (int) current_column ())) /* iftc */ 11149 != (int) current_column ())) /* iftc */
11146 w->update_mode_line = Qt; 11150 w->update_mode_line = Qt;
11147 11151
11152 unbind_to (count1, Qnil);
11153
11148 FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1; 11154 FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1;
11149 11155
11150 /* The variable buffer_shared is set in redisplay_window and 11156 /* The variable buffer_shared is set in redisplay_window and
diff --git a/src/xfaces.c b/src/xfaces.c
index 660fa34d5cf..1b314a6fa13 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -8477,7 +8477,7 @@ syms_of_xfaces ()
8477 staticpro (&QCforeground); 8477 staticpro (&QCforeground);
8478 QCbackground = intern (":background"); 8478 QCbackground = intern (":background");
8479 staticpro (&QCbackground); 8479 staticpro (&QCbackground);
8480 QCstipple = intern (":stipple");; 8480 QCstipple = intern (":stipple");
8481 staticpro (&QCstipple); 8481 staticpro (&QCstipple);
8482 QCwidth = intern (":width"); 8482 QCwidth = intern (":width");
8483 staticpro (&QCwidth); 8483 staticpro (&QCwidth);