summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 @@
+2007-05-29 Robert J. Chassell <bob@rattlesnake.com>
+
+ * NEWS: Fix instances of `allow' without object.
+
2007-05-22 Glenn Morris <rgm@gnu.org>
* 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
`help-echo' property, but, in certain cases, it can display a more
keyboard oriented alternative.
-*** New user option `help-at-pt-display-when-idle' allows to
+*** New user option `help-at-pt-display-when-idle' allows you to
automatically show the help provided by `display-local-help' on
point-over, after suitable idle time. The amount of idle time is
determined 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.
If point is at the end of a file buffer before reverting, Auto Revert
mode keeps it at the end after reverting. Similarly if point is
-displayed at the end of a file buffer in any window, it stays at
-the end of the buffer in that window. This allows to tail a file:
-just put point at the end of the buffer and it stays there. This
-rule applies to file buffers. For non-file buffers, the behavior can
-be mode dependent.
+displayed at the end of a file buffer in any window, it stays at the end
+of the buffer in that window. This allows you to "tail" a file: just
+put point at the end of the buffer and it stays there. This rule
+applies to file buffers. For non-file buffers, the behavior can be mode
+dependent.
If you are sure that the file will only change by growing at the end,
then 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.
*** Support for `movemail' from GNU mailutils was added to Rmail.
-This version of `movemail' allows to read mail from a wide range of
+This version of `movemail' allows you to read mail from a wide range of
mailbox formats, including remote POP3 and IMAP4 mailboxes with or
without TLS encryption. If GNU mailutils is installed on the system
and 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
the problem, install the current version of GNU Sed, then rerun
Emacs's configure script.
-*** Compiling on GNU/Linux fails due to a missing left operand in gnu-linux.h.
-
-The error messages have the form:
-
- ../src/s/gnu-linux.h:49:24: error: operator '>' has no left operand
-
-This error occurs because your system defines LINUX_VERSION_CODE in
-the standard header file linux/version.h but does not give it a value.
-As a workaround, you can edit the file src/s/gnu-linux.h to add the
-needed definition. On the line after "#include <linux/version.h>",
-add a line as shown below:
-
-#include <linux/version.h>
-#define LINUX_VERSION_CODE 132626
-
-The number to use depends on your kernel version (the example shown is
-for kernel 2.6.18). The number can be obtained by running the
-following command in the shell:
-
-uname -r | sed -e 's/\./ /g' -e 's/-.*//' | awk '{print $1*(2^16) + $2*(2^8) + $3}'
-
*** Building a 32-bit executable on a 64-bit GNU/Linux architecture.
First 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 @@
+2007-05-30 Michael Olson <mwolson@gnu.org>
+
+ * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has
+ died and we are trying to send a signal to it. The program using
+ tq.el should periodically check to see whether the process has
+ died and react appropriately -- this is not the responsibility of
+ tq.el, and is consistent with the rest of the tq.el source code.
+
+2007-05-29 Martin Rudalics <rudalics@gmx.at>
+
+ * textmodes/table.el (table--point-entered-cell-function)
+ (table--point-left-cell-function): Bind
+ `inhibit-point-motion-hooks' to t.
+
+2007-05-29 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
+
+ * emacs-lisp/rx.el (rx): Doc fix.
+
+2007-05-28 Juanma Barranquero <lekktu@gmail.com>
+
+ * progmodes/idlwave.el (idlwave-routines): Fix typo in docstring.
+
+2007-05-28 Michael Albinus <michael.albinus@gmx.de>
+
+ Sync with Tramp 2.0.56.
+
+ * net/tramp.el:
+ * net/tramp-ftp.el:
+ * net/tramp-smb.el:
+ * net/tramp-util.el:
+ * net/tramp-vc.el:
+ Don't load cl.el, because that pollutes the namespace. Replace cl
+ macros by their implementations where necessary. Requested by
+ Richard Stallman <rms@gnu.org>.
+
+ * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it
+ doesn't exist.
+ (with-parsed-tramp-file-name): Protect debug spec during
+ compilation.
+ (tramp-handle-insert-directory): Check (featurep 'ls-lisp).
+ (tramp-file-name-p, tramp-file-name-multi-method)
+ (tramp-file-name-method, tramp-file-name-user)
+ (tramp-file-name-host, tramp-file-name-localname): New defuns,
+ replacing defstruct `tramp-file-name'.
+ (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1)
+ (tramp-dissect-file-name, tramp-dissect-multi-file-name): Apply
+ `vector' instead of `make-tramp-file-name'.
+ (tramp-handle-make-auto-save-file-name): Apply
+ `tramp-temporary-file-directory' for compatibility reasons.
+ (tramp-completion-mode): Use `natnump' instead of `wholenump'
+ because of XEmacs.
+ (tramp-completion-mode): `last-input-event' is nil when XEmacs is
+ started.
+
+2007-05-28 Chong Yidong <cyd@stupidchicken.com>
+
+ * textmodes/sgml-mode.el (sgml-point-entered): Use condition-case.
+
+2007-05-27 Tetsurou Okazaki <okazaki@be.to> (tiny change)
+
+ * log-edit.el (log-edit-changelog-paragraph): Return point-max
+ as the end of the ChangeLog paragraph when it ends without a line
+ termination.
+
+2007-05-27 Ryan Yeske <rcyeske@gmail.com>
+
+ * net/webjump.el (webjump-sample-sites):
+ Add simple Wikipedia query.
+
2007-05-25 Stefan Monnier <monnier@iro.umontreal.ca>
* 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
matches the empty string, but only at point.
`word-start', `bow'
- matches the empty string, but only at the beginning or end of a
- word.
+ matches the empty string, but only at the beginning of a word.
`word-end', `eow'
matches the empty string, but only at the end of a word.
@@ -740,6 +739,12 @@ CHAR
matches the empty string, but not at the beginning or end of a
word.
+`symbol-start'
+ matches the empty string, but only at the beginning of a symbol.
+
+`symbol-end'
+ matches the empty string, but only at the end of a symbol.
+
`digit', `numeric', `num'
matches 0 through 9.
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."
(defun tq-queue-pop (tq)
(setcar tq (cdr (car tq)))
(let ((question (tq-queue-head-question tq)))
- (when question
- (process-send-string (tq-process tq) question)))
+ (condition-case nil
+ (process-send-string (tq-process tq) question)
+ (error nil)))
(null (car tq)))
(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 @@
+2007-05-28 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * message.el (message-pop-to-buffer): Add switch-function argument.
+ (message-mail): Pass switch-function argument to it.
+
2007-05-24 Katsumi Yamaoka <yamaoka@jpl.org>
* 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."
'car-less-than-car)))
new)))))
-(defun message-pop-to-buffer (name)
+(defun message-pop-to-buffer (name &optional switch-function)
"Pop to buffer NAME, and warn if it already exists and is modified."
(let ((buffer (get-buffer name)))
(if (and buffer
@@ -5587,14 +5587,16 @@ between beginning of field and beginning of line."
(progn
(gnus-select-frame-set-input-focus (window-frame window))
(select-window window))
- (set-buffer (pop-to-buffer buffer)))
+ (funcall (or switch-function 'pop-to-buffer) buffer)
+ (set-buffer buffer))
(when (and (buffer-modified-p)
(not (prog1
(y-or-n-p
"Message already being composed; erase? ")
(message nil))))
(error "Message being composed")))
- (set-buffer (pop-to-buffer name)))
+ (funcall (or switch-function 'pop-to-buffer) name)
+ (set-buffer name))
(erase-buffer)
(message-mode)))
@@ -5831,15 +5833,15 @@ is a function used to switch to and display the mail buffer."
(interactive)
(let ((message-this-is-mail t) replybuffer)
(unless (message-mail-user-agent)
- (funcall
- (or switch-function 'message-pop-to-buffer)
+ (message-pop-to-buffer
;; Search for the existing message buffer if `continue' is non-nil.
(let ((message-generate-new-buffers
(when (or (not continue)
(eq message-generate-new-buffers 'standard)
(functionp message-generate-new-buffers))
message-generate-new-buffers)))
- (message-buffer-name "mail" to))))
+ (message-buffer-name "mail" to))
+ switch-function))
;; FIXME: message-mail should do something if YANK-ACTION is not
;; insert-buffer.
(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."
(point))
(if (re-search-forward "^[ \t\n]*$" nil t)
(match-beginning 0)
- (point)))))
+ (point-max)))))
(defun log-edit-changelog-subparagraph ()
"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 @@
;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*-
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
@@ -31,12 +32,7 @@
(require 'tramp)
-(eval-when-compile
- (require 'cl)
- (require 'custom)
- ;; Emacs 19.34 compatibility hack -- is this needed?
- (or (>= emacs-major-version 20)
- (load "cl-seq")))
+(eval-when-compile (require 'custom))
;; Disable Ange-FTP from file-name-handler-alist.
;; 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 @@
(require 'tramp)
;; Pacify byte-compiler
-(eval-when-compile
- (require 'cl)
- (require 'custom)
- ;; Emacs 19.34 compatibility hack -- is this needed?
- (or (>= emacs-major-version 20)
- (load "cl-seq")))
+(eval-when-compile (require 'custom))
;; Avoid byte-compiler warnings if the byte-compiler supports this.
;; 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 @@
;;; Code:
-(eval-when-compile (require 'cl))
(require 'compile)
(require 'tramp)
(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 @@
;;; -*- coding: iso-2022-7bit; -*-
;;; tramp-uu.el --- uuencode in Lisp
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
;; 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 @@
;;; Code:
-(eval-when-compile
- (require 'cl))
(require 'vc)
;; Old VC defines vc-rcs-release in vc.el, new VC requires extra module.
(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.")
(when (featurep 'tramp-smb)
(unload-feature 'tramp-smb 'force)))))))
-(require 'cl)
(require 'custom)
-;; Emacs 19.34 compatibility hack -- is this needed?
-(or (>= emacs-major-version 20)
- (load "cl-seq"))
(unless (boundp 'custom-print-functions)
(defvar custom-print-functions nil)) ; not autoloaded before Emacs 20.4
@@ -175,6 +171,11 @@ Otherwise, use a separate filename syntax for Tramp.")
(when (boundp 'byte-compile-not-obsolete-var)
(setq byte-compile-not-obsolete-var 'directory-sep-char)))
+;; `set-buffer-multibyte' comes from Emacs Leim.
+(eval-and-compile
+ (unless (fboundp 'set-buffer-multibyte)
+ (defalias 'set-buffer-multibyte 'ignore)))
+
;;; User Customizable Internal Variables:
(defgroup tramp nil
@@ -2077,7 +2078,9 @@ If VAR is nil, then we bind `v' to the structure and `multi-method',
(put 'with-parsed-tramp-file-name 'lisp-indent-function 2)
;; Enable debugging.
-(def-edebug-spec with-parsed-tramp-file-name (form symbolp body))
+(eval-and-compile
+ (when (featurep 'edebug)
+ (def-edebug-spec with-parsed-tramp-file-name (form symbolp body))))
;; Highlight as keyword.
(when (functionp 'font-lock-add-keywords)
(funcall 'font-lock-add-keywords
@@ -2384,10 +2387,10 @@ target of the symlink differ."
"Integer constant overflow in reader")
(string-match
"^[0-9]+\\([0-9][0-9][0-9][0-9][0-9]\\)\\'"
- (caddr err)))
- (let* ((big (read (substring (caddr err) 0
+ (car (cddr err))))
+ (let* ((big (read (substring (car (cddr err)) 0
(match-beginning 1))))
- (small (read (match-string 1 (caddr err))))
+ (small (read (match-string 1 (car (cddr err)))))
(twiddle (/ small 65536)))
(cons (+ big twiddle)
(- small (* twiddle 65536))))))))
@@ -2807,7 +2810,7 @@ of."
object)))
(cell root))
(while (cdr cell)
- (if (and match (not (string-match match (caadr cell))))
+ (if (and match (not (string-match match (car (cadr cell)))))
;; Remove from list
(setcdr cell (cddr cell))
;; Include in list
@@ -3426,10 +3429,10 @@ This is like `dired-recursive-delete-directory' for tramp files."
(defun tramp-handle-insert-directory
(filename switches &optional wildcard full-directory-p)
"Like `insert-directory' for tramp files."
- (if (and (boundp 'ls-lisp-use-insert-directory-program)
+ (if (and (featurep 'ls-lisp)
(not (symbol-value 'ls-lisp-use-insert-directory-program)))
- (tramp-run-real-handler 'insert-directory
- (list filename switches wildcard full-directory-p))
+ (tramp-run-real-handler
+ 'insert-directory (list filename switches wildcard full-directory-p))
;; For the moment, we assume that the remote "ls" program does not
;; grok "--dired". In the future, we should detect this on
;; connection setup.
@@ -3869,12 +3872,7 @@ This will break if COMMAND prints a newline, followed by the value of
"Like `file-remote-p' for tramp files."
(when (tramp-tramp-file-p filename)
(with-parsed-tramp-file-name filename nil
- (make-tramp-file-name
- :multi-method multi-method
- :method method
- :user user
- :host host
- :localname ""))))
+ (vector multi-method method user host ""))))
(defun tramp-handle-insert-file-contents
(filename &optional visit beg end replace)
@@ -3919,7 +3917,7 @@ This will break if COMMAND prints a newline, followed by the value of
(when (boundp 'last-coding-system-used)
(set 'last-coding-system-used coding-system-used))
(list (expand-file-name filename)
- (second result))))))
+ (cadr result))))))
(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."
(when (and (string-match (car x) buffer-file-name)
(not (car (cddr x))))
(setq tramp-auto-save-directory
- (or tramp-auto-save-directory temporary-file-directory))))
+ (or tramp-auto-save-directory
+ (tramp-temporary-file-directory)))))
(symbol-value 'auto-save-file-name-transforms)))
;; Create directory.
(when tramp-auto-save-directory
@@ -4566,7 +4565,7 @@ Falls back to normal file name handler if no tramp file name handler exists."
(member (match-string 1 file) (mapcar 'car tramp-methods)))
((or (equal last-input-event 'tab)
;; Emacs
- (and (wholenump last-input-event)
+ (and (natnump last-input-event)
(or
;; ?\t has event-modifier 'control
(char-equal last-input-event ?\t)
@@ -4575,6 +4574,10 @@ Falls back to normal file name handler if no tramp file name handler exists."
(char-equal last-input-event ?\ )))))
;; XEmacs
(and (featurep 'xemacs)
+ ;; `last-input-event' might be nil.
+ (not (null last-input-event))
+ ;; `last-input-event' may have no character approximation.
+ (funcall (symbol-function 'event-to-character) last-input-event)
(or
;; ?\t has event-modifier 'control
(char-equal
@@ -4771,24 +4774,14 @@ remote host and localname (filename on remote host)."
(match-string (nth 1 structure) name)))
(if (and method (member method tramp-multi-methods))
;; Not handled (yet).
- (make-tramp-file-name
- :multi-method method
- :method nil
- :user nil
- :host nil
- :localname nil)
+ (vector method nil nil nil nil)
(let ((user (and (nth 2 structure)
(match-string (nth 2 structure) name)))
(host (and (nth 3 structure)
(match-string (nth 3 structure) name)))
(localname (and (nth 4 structure)
(match-string (nth 4 structure) name))))
- (make-tramp-file-name
- :multi-method nil
- :method method
- :user user
- :host host
- :localname localname)))))))
+ (vector nil method user host localname)))))))
;; This function returns all possible method completions, adding the
;; trailing method delimeter.
@@ -5191,7 +5184,7 @@ USER the array of user names, HOST the array of host names."
(aref user i) (aref host i))
(format "%s@%s:" (aref method i) (aref host i)))
string-list))
- (incf i))
+ (setq i (1+ i)))
(format "*%s/%s %s*"
prefix multi-method
(apply 'concat (reverse string-list)))))
@@ -5928,7 +5921,7 @@ log in as u2 to h2."
;; is done here.
(funcall multi-func p m u h command)
(erase-buffer)
- (incf i)))
+ (setq i (1+ i))))
(tramp-open-connection-setup-interactive-shell
p multi-method method user host)
(tramp-post-connection multi-method method user host)))))
@@ -6824,7 +6817,8 @@ If `tramp-discard-garbage' is nil, just erase buffer."
(defun tramp-mode-string-to-int (mode-string)
"Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits."
- (let* ((mode-chars (string-to-vector mode-string))
+ (let* (case-fold-search
+ (mode-chars (string-to-vector mode-string))
(owner-read (aref mode-chars 1))
(owner-write (aref mode-chars 2))
(owner-execute-or-setid (aref mode-chars 3))
@@ -6836,45 +6830,61 @@ If `tramp-discard-garbage' is nil, just erase buffer."
(other-execute-or-sticky (aref mode-chars 9)))
(save-match-data
(logior
- (case owner-read
- (?r (tramp-octal-to-decimal "00400")) (?- 0)
- (t (error "Second char `%c' must be one of `r-'" owner-read)))
- (case owner-write
- (?w (tramp-octal-to-decimal "00200")) (?- 0)
- (t (error "Third char `%c' must be one of `w-'" owner-write)))
- (case owner-execute-or-setid
- (?x (tramp-octal-to-decimal "00100"))
- (?S (tramp-octal-to-decimal "04000"))
- (?s (tramp-octal-to-decimal "04100"))
- (?- 0)
- (t (error "Fourth char `%c' must be one of `xsS-'"
- owner-execute-or-setid)))
- (case group-read
- (?r (tramp-octal-to-decimal "00040")) (?- 0)
- (t (error "Fifth char `%c' must be one of `r-'" group-read)))
- (case group-write
- (?w (tramp-octal-to-decimal "00020")) (?- 0)
- (t (error "Sixth char `%c' must be one of `w-'" group-write)))
- (case group-execute-or-setid
- (?x (tramp-octal-to-decimal "00010"))
- (?S (tramp-octal-to-decimal "02000"))
- (?s (tramp-octal-to-decimal "02010"))
- (?- 0)
- (t (error "Seventh char `%c' must be one of `xsS-'"
- group-execute-or-setid)))
- (case other-read
- (?r (tramp-octal-to-decimal "00004")) (?- 0)
- (t (error "Eighth char `%c' must be one of `r-'" other-read)))
- (case other-write
- (?w (tramp-octal-to-decimal "00002")) (?- 0)
+ (cond
+ ((char-equal owner-read ?r) (tramp-octal-to-decimal "00400"))
+ ((char-equal owner-read ?-) 0)
+ (t (error "Second char `%c' must be one of `r-'" owner-read)))
+ (cond
+ ((char-equal owner-write ?w) (tramp-octal-to-decimal "00200"))
+ ((char-equal owner-write ?-) 0)
+ (t (error "Third char `%c' must be one of `w-'" owner-write)))
+ (cond
+ ((char-equal owner-execute-or-setid ?x)
+ (tramp-octal-to-decimal "00100"))
+ ((char-equal owner-execute-or-setid ?S)
+ (tramp-octal-to-decimal "04000"))
+ ((char-equal owner-execute-or-setid ?s)
+ (tramp-octal-to-decimal "04100"))
+ ((char-equal owner-execute-or-setid ?-) 0)
+ (t (error "Fourth char `%c' must be one of `xsS-'"
+ owner-execute-or-setid)))
+ (cond
+ ((char-equal group-read ?r) (tramp-octal-to-decimal "00040"))
+ ((char-equal group-read ?-) 0)
+ (t (error "Fifth char `%c' must be one of `r-'" group-read)))
+ (cond
+ ((char-equal group-write ?w) (tramp-octal-to-decimal "00020"))
+ ((char-equal group-write ?-) 0)
+ (t (error "Sixth char `%c' must be one of `w-'" group-write)))
+ (cond
+ ((char-equal group-execute-or-setid ?x)
+ (tramp-octal-to-decimal "00010"))
+ ((char-equal group-execute-or-setid ?S)
+ (tramp-octal-to-decimal "02000"))
+ ((char-equal group-execute-or-setid ?s)
+ (tramp-octal-to-decimal "02010"))
+ ((char-equal group-execute-or-setid ?-) 0)
+ (t (error "Seventh char `%c' must be one of `xsS-'"
+ group-execute-or-setid)))
+ (cond
+ ((char-equal other-read ?r)
+ (tramp-octal-to-decimal "00004"))
+ ((char-equal other-read ?-) 0)
+ (t (error "Eighth char `%c' must be one of `r-'" other-read)))
+ (cond
+ ((char-equal other-write ?w) (tramp-octal-to-decimal "00002"))
+ ((char-equal other-write ?-) 0)
(t (error "Nineth char `%c' must be one of `w-'" other-write)))
- (case other-execute-or-sticky
- (?x (tramp-octal-to-decimal "00001"))
- (?T (tramp-octal-to-decimal "01000"))
- (?t (tramp-octal-to-decimal "01001"))
- (?- 0)
- (t (error "Tenth char `%c' must be one of `xtT-'"
- other-execute-or-sticky)))))))
+ (cond
+ ((char-equal other-execute-or-sticky ?x)
+ (tramp-octal-to-decimal "00001"))
+ ((char-equal other-execute-or-sticky ?T)
+ (tramp-octal-to-decimal "01000"))
+ ((char-equal other-execute-or-sticky ?t)
+ (tramp-octal-to-decimal "01001"))
+ ((char-equal other-execute-or-sticky ?-) 0)
+ (t (error "Tenth char `%c' must be one of `xtT-'"
+ other-execute-or-sticky)))))))
(defun tramp-convert-file-attributes (multi-method method user host attr)
"Convert file-attributes ATTR generated by perl script or ls.
@@ -6977,7 +6987,29 @@ Not actually used. Use `(format \"%o\" i)' instead?"
;; internal data structure. Convenience functions for internal
;; data structure.
-(defstruct tramp-file-name multi-method method user host localname)
+(defun tramp-file-name-p (obj)
+ "Check whether TRAMP-FILE-NAME is a Tramp object."
+ (and (vectorp obj) (= 5 (length obj))))
+
+(defun tramp-file-name-multi-method (obj)
+ "Return MULTI-METHOD component of TRAMP-FILE-NAME."
+ (and (tramp-file-name-p obj) (aref obj 0)))
+
+(defun tramp-file-name-method (obj)
+ "Return METHOD component of TRAMP-FILE-NAME."
+ (and (tramp-file-name-p obj) (aref obj 1)))
+
+(defun tramp-file-name-user (obj)
+ "Return USER component of TRAMP-FILE-NAME."
+ (and (tramp-file-name-p obj) (aref obj 2)))
+
+(defun tramp-file-name-host (obj)
+ "Return HOST component of TRAMP-FILE-NAME."
+ (and (tramp-file-name-p obj) (aref obj 3)))
+
+(defun tramp-file-name-localname (obj)
+ "Return LOCALNAME component of TRAMP-FILE-NAME."
+ (and (tramp-file-name-p obj) (aref obj 4)))
(defun tramp-tramp-file-p (name)
"Return t iff NAME is a tramp file."
@@ -7010,12 +7042,7 @@ localname (file name on remote host)."
(let ((user (match-string (nth 2 tramp-file-name-structure) name))
(host (match-string (nth 3 tramp-file-name-structure) name))
(localname (match-string (nth 4 tramp-file-name-structure) name)))
- (make-tramp-file-name
- :multi-method nil
- :method method
- :user (or user nil)
- :host host
- :localname localname))))))
+ (vector nil method (or user nil) host localname))))))
(defun tramp-find-default-method (user host)
"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
(setq method (match-string method-index name))
(setq hops (match-string hops-index name))
(setq len (/ (length (match-data t)) 2))
- (when (< localname-index 0) (incf localname-index len))
+ (when (< localname-index 0) (setq localname-index (+ localname-index len)))
(setq localname (match-string localname-index name))
(let ((index 0))
(while (string-match hop-regexp hops index)
@@ -7066,12 +7093,12 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
(cons (match-string hop-user-index hops) hop-users))
(setq hop-hosts
(cons (match-string hop-host-index hops) hop-hosts))))
- (make-tramp-file-name
- :multi-method method
- :method (apply 'vector (reverse hop-methods))
- :user (apply 'vector (reverse hop-users))
- :host (apply 'vector (reverse hop-hosts))
- :localname localname)))
+ (vector
+ method
+ (apply 'vector (reverse hop-methods))
+ (apply 'vector (reverse hop-users))
+ (apply 'vector (reverse hop-hosts))
+ localname)))
(defun tramp-make-tramp-file-name (multi-method method user host localname)
"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
(let ((m (aref method i)) (u (aref user i)) (h (aref host i)))
(setq hops (concat hops (format-spec hop-format
`((?m . ,m) (?u . ,u) (?h . ,h)))))
- (incf i)))
+ (setq i (1+ i))))
(concat prefix hops localname)))
(defun tramp-make-copy-program-file-name (user host localname)
@@ -7218,7 +7245,7 @@ as default."
(assoc (tramp-find-method multi-method method user host)
tramp-methods))))
(if entry
- (second entry)
+ (cadr entry)
(symbol-value param))))
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 @@
;; are auto-frobbed from configure.ac, so you should edit that file and run
;; "autoconf && ./configure" to change them.
-(defconst tramp-version "2.0.55"
+(defconst tramp-version "2.0.56"
"This version of Tramp.")
(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 @@
("Yahoo" .
[simple-query "www.yahoo.com" "search.yahoo.com/search?p=" ""])
("Yahoo: Reference" . "www.yahoo.com/Reference/")
+ ("Wikipedia" .
+ [simple-query "wikipedia.org" "wikipedia.org/wiki/" ""])
;; Misc. general interest.
("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).")
(defvar idlwave-true-path-alist nil
"Like `idlwave-path-alist', but with true filenames.")
(defvar idlwave-routines nil
- "Holds the combinded procedure/function/method routine-info.")
+ "Holds the combined procedure/function/method routine-info.")
(defvar idlwave-class-alist nil
"Holds the class names known to IDLWAVE.")
(defvar idlwave-class-history nil
@@ -4846,7 +4846,7 @@ Gets set in cached XML rinfo, or `idlw-rinfo.el'.")
;; Create a sysvar list entry from the xml parsed list.
(let* ((nameblock (nth 1 xml-entry))
(name (cdr (assq 'name nameblock)))
- (sysvar (substring name (progn (string-match "^ *!" name)
+ (sysvar (substring name (progn (string-match "^ *!" name)
(match-end 0))))
(link (cdr (assq 'link nameblock)))
(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."
;; Show preceding or following hidden tag, depending of cursor direction.
(let ((inhibit-point-motion-hooks t))
(save-excursion
- (message "Invisible tag: %s"
- ;; Strip properties, otherwise, the text is invisible.
- (buffer-substring-no-properties
- (point)
- (if (or (and (> x y)
- (not (eq (following-char) ?<)))
- (and (< x y)
- (eq (preceding-char) ?>)))
- (backward-list)
- (forward-list)))))))
+ (condition-case nil
+ (message "Invisible tag: %s"
+ ;; Strip properties, otherwise, the text is invisible.
+ (buffer-substring-no-properties
+ (point)
+ (if (or (and (> x y)
+ (not (eq (following-char) ?<)))
+ (and (< x y)
+ (eq (preceding-char) ?>)))
+ (backward-list)
+ (forward-list))))
+ (error nil)))))
+
(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."
(defun table--point-entered-cell-function (&optional old-point new-point)
"Point has entered a cell.
Refresh the menu bar."
- (unless table-cell-entered-state
- (setq table-cell-entered-state t)
- (setq table-mode-indicator t)
- (force-mode-line-update)
- (table--warn-incompatibility)
- (run-hooks 'table-point-entered-cell-hook)))
+ ;; Avoid calling point-motion-hooks recursively.
+ (let ((inhibit-point-motion-hooks t))
+ (unless table-cell-entered-state
+ (setq table-cell-entered-state t)
+ (setq table-mode-indicator t)
+ (force-mode-line-update)
+ (table--warn-incompatibility)
+ (run-hooks 'table-point-entered-cell-hook))))
(defun table--point-left-cell-function (&optional old-point new-point)
"Point has left a cell.
Refresh the menu bar."
- (when table-cell-entered-state
- (setq table-cell-entered-state nil)
- (setq table-mode-indicator nil)
- (force-mode-line-update)
- (run-hooks 'table-point-left-cell-hook)))
+ ;; Avoid calling point-motion-hooks recursively.
+ (let ((inhibit-point-motion-hooks t))
+ (when table-cell-entered-state
+ (setq table-cell-entered-state nil)
+ (setq table-mode-indicator nil)
+ (force-mode-line-update)
+ (run-hooks 'table-point-left-cell-hook))))
(defun table--warn-incompatibility ()
"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 @@
+2007-05-29 Chong Yidong <cyd@stupidchicken.com>
+
+ * url-mailto.el (url-mailto): Insert body after
+ mail-header-separator if present, so that it is before signature.
+ Suggested by Leo <sdl.web@gmail.com>.
+
2007-04-15 Chong Yidong <cyd@stupidchicken.com>
* 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 @@
(while args
(if (string= (caar args) "body")
(progn
- (goto-char (point-max))
+ (goto-char (point-min))
+ (or (search-forward (concat "\n" mail-header-separator "\n") nil t)
+ (goto-char (point-max)))
(insert (mapconcat
#'(lambda (string)
(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 @@
+2007-05-30 Nick Roberts <nickrob@snap.net.nz>
+
+ * commands.texi (Click Events): Layout more logically. Describe
+ width and height.
+ (Drag Events, Motion Events): Update to new format for position.
+
2007-05-12 Richard Stallman <rms@gnu.org>
* 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
@item @var{position}
This is the position where the mouse click occurred. The actual
format of @var{position} depends on what part of a window was clicked
-on. The various formats are described below.
-
-@item @var{click-count}
-This is the number of rapid repeated presses so far of the same mouse
-button. @xref{Repeat Events}.
-@end table
+on.
For mouse click events in the text area, mode line, header line, or in
the marginal areas, @var{position} has this form:
@@ -1223,6 +1218,12 @@ which the click occurred. It is one of the symbols @code{mode-line},
@code{header-line}, @code{vertical-line}, @code{left-margin},
@code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
+In one special case, @var{pos-or-area} is a list containing a symbol (one
+of the symbols listed above) instead of just the symbol. This happens
+after the imaginary prefix keys for the event are inserted into the
+input stream. @xref{Key Sequence Input}.
+
+
@item @var{x}, @var{y}
These are the pixel-denominated coordinates of the click, relative to
the 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
(@var{string} . @var{string-pos}) when there is a string-type text
property at the click position.
+@table @asis
@item @var{string}
This is the string on which the click occurred, including any
properties.
@@ -1245,6 +1247,7 @@ properties.
@item @var{string-pos}
This is the position in the string on which the click occurred,
relevant if properties at the click need to be looked up.
+@end table
@item @var{text-pos}
For 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
the top left corner of @var{object}, which is @code{(0 . 0)}. If
@var{object} is @code{nil}, the coordinates are relative to the top
left corner of the character glyph clicked on.
-@end table
+@item @var{width}, @var{height}
+These are the pixel-denominated width and height of @var{object}.
+@end table
+
+@sp 1
For mouse clicks on a scroll-bar, @var{position} has this form:
@example
@@ -1299,10 +1306,10 @@ of the symbols @code{above-handle}, @code{handle}, @code{below-handle},
@code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}.
@end table
-In one special case, @var{buffer-pos} is a list containing a symbol (one
-of the symbols listed above) instead of just the symbol. This happens
-after the imaginary prefix keys for the event are inserted into the
-input stream. @xref{Key Sequence Input}.
+@item @var{click-count}
+This is the number of rapid repeated presses so far of the same mouse
+button. @xref{Repeat Events}.
+@end table
@node Drag Events
@subsection Drag Events
@@ -1318,19 +1325,18 @@ position and the final position, like this:
@example
(@var{event-type}
- (@var{window1} @var{buffer-pos1} (@var{x1} . @var{y1}) @var{timestamp1})
- (@var{window2} @var{buffer-pos2} (@var{x2} . @var{y2}) @var{timestamp2})
- @var{click-count})
+ (@var{window1} START-POSITION)
+ (@var{window2} END-POSITION))
@end example
For a drag event, the name of the symbol @var{event-type} contains the
-prefix @samp{drag-}. For example, dragging the mouse with button 2 held
-down generates a @code{drag-mouse-2} event. The second and third
-elements of the event give the starting and ending position of the drag.
-Aside from that, the data have the same meanings as in a click event
-(@pxref{Click Events}). You can access the second element of any mouse
-event in the same way, with no need to distinguish drag events from
-others.
+prefix @samp{drag-}. For example, dragging the mouse with button 2
+held down generates a @code{drag-mouse-2} event. The second and third
+elements of the event give the starting and ending position of the
+drag. They have the same form as @var{position} in a click event
+(@pxref{Click Events}) that is not on the scroll bar part of the
+window. You can access the second element of any mouse event in the
+same way, with no need to distinguish drag events from others.
The @samp{drag-} prefix follows the modifier key prefixes such as
@samp{C-} and @samp{M-}.
@@ -1470,7 +1476,7 @@ of the mouse without any button activity. Mouse motion events are
represented by lists that look like this:
@example
-(mouse-movement (@var{window} @var{buffer-pos} (@var{x} . @var{y}) @var{timestamp}))
+(mouse-movement (POSITION))
@end example
The 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 @@
+2007-05-28 Michael Albinus <michael.albinus@gmx.de>
+
+ Sync with Tramp 2.0.56.
+
+ * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc
+ settings. Reported by Ted Zlatanov <tzz@lifelogs.com>.
+
+2007-05-26 Michael Olson <mwolson@gnu.org>
+
+ * erc.texi (Modules): Fix references to completion modules.
+
2007-05-09 Reiner Steib <Reiner.Steib@gmx.de>
* 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
Mark unidentified users on freenode and other servers supporting CAPAB.
@cindex modules, completion
-@item pcomplete
+@cindex modules, pcomplete
+@item completion (aka pcomplete)
Complete nicknames and commands (programmable)
@cindex modules, fill
@@ -572,7 +573,7 @@ Complete nicknames and commands (programmable)
Wrap long lines
@cindex modules, hecomplete
-@item completion
+@item hecomplete
Complete nicknames and commands (old). This is the old module---you
might prefer the ``completion'' module instead.
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.
A special problem is the zsh, which uses left-hand side and right-hand
side prompts in parallel. Therefore, it is necessary to disable the
zsh line editor on the remote host. You shall add to @file{~/.zshrc}
-the following command: @command{[ $TERM = "dumb" ] && unsetopt zle}.
+the following command:
+
+@example
+[ $TERM = "dumb" ] && unsetopt zle && PS1='$ '
+@end example
@item
@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 @@
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
-@set trampver 2.0.55
+@set trampver 2.0.56
@c Other flags from configuration
@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 @@
+2007-05-30 Ulrich Mueller <ulm@gentoo.org> (tiny change)
+
+ * XMakeAssoc.c (XMakeAssoc): Use malloc rather than xmalloc.
+
2007-02-27 Glenn Morris <rgm@gnu.org>
* 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)
/* If we are here then the new entry should be inserted just */
/* before the current value of "Entry". */
/* Create a new XAssoc and load it with new provided data. */
- new_entry = (XAssoc *) xmalloc(sizeof(XAssoc));
+ new_entry = (XAssoc *) malloc(sizeof(XAssoc));
new_entry->display = dpy;
new_entry->x_id = x_id;
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 @@
+2007-05-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
+ around current_column call.
+
+2007-05-26 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * xfaces.c (syms_of_xfaces): Delete stray semicolon.
+ * xdisp.c (next_element_from_buffer):
+ * window.c (delete_window):
+ * term.c (term_mouse_highlight):
+ * msdos.c (getdefdir):
+ * macterm.c (mac_create_bitmap_from_bitmap_data)
+ (init_font_name_table):
+ * fns.c (Fsxhash):
+ * data.c (Fmake_local_variable):
+ * ccl.c (ccl_driver): Likewise.
+
2007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* 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)
case CCL_MOD: reg[rrr] = i % j; break;
case CCL_AND: reg[rrr] = i & j; break;
case CCL_OR: reg[rrr] = i | j; break;
- case CCL_XOR: reg[rrr] = i ^ j;; break;
+ case CCL_XOR: reg[rrr] = i ^ j; break;
case CCL_LSH: reg[rrr] = i << j; break;
case CCL_RSH: reg[rrr] = i >> j; break;
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. */)
XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0;
XBUFFER_LOCAL_VALUE (newval)->check_frame = 0;
XBUFFER_LOCAL_VALUE (newval)->cdr = tem;
- SET_SYMBOL_VALUE (variable, newval);;
+ SET_SYMBOL_VALUE (variable, newval);
}
/* Make sure this buffer has its own value of symbol. */
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,
(obj)
Lisp_Object obj;
{
- unsigned hash = sxhash (obj, 0);;
+ unsigned hash = sxhash (obj, 0);
return make_number (hash);
}
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.
Fselect_frame (frame);
mouse_moveto (XINT (x), XINT (y));
}
+#else
+#ifdef HAVE_GPM
+ {
+ Fselect_frame (frame);
+ term_mouse_moveto (XINT (x), XINT (y));
+ }
+#endif
#endif
#endif
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)
/* Bitswap XBM bytes to match how Mac does things. */
unsigned char c = *bits++;
*p++ = (unsigned char)((swap_nibble[c & 0xf] << 4)
- | (swap_nibble[(c>>4) & 0xf]));;
+ | (swap_nibble[(c>>4) & 0xf]));
}
}
@@ -7577,7 +7577,7 @@ init_font_name_table ()
make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE),
make_float (DEFAULT_REHASH_SIZE),
make_float (DEFAULT_REHASH_THRESHOLD),
- Qnil, Qnil, Qnil);;
+ Qnil, Qnil, Qnil);
h = XHASH_TABLE (atsu_font_id_hash);
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)
{
extern Lisp_Object Qmouse_face;
Lisp_Object mouse_face, overlay, position, *overlay_vec;
- int noverlays, obegv, ozv;;
+ int noverlays, obegv, ozv;
struct buffer *obuf;
/* If we get an out-of-range value, return now; avoid an error. */
@@ -4071,7 +4071,7 @@ getdefdir (drive, dst)
int drive;
char *dst;
{
- char in_path[4], *p = in_path, e = errno;;
+ char in_path[4], *p = in_path, e = errno;
/* Generate "X:." (when drive is X) or "." (when drive is 0). */
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 ()
if (term_gpm)
{
fcntl (gpm_fd, F_SETOWN, getpid ());
- fcntl (gpm_fd, F_SETFL, O_NONBLOCK);
+ fcntl (gpm_fd, F_SETFL, fcntl (gpm_fd, F_GETFL, 0) | O_NONBLOCK);
init_sigio (gpm_fd);
}
#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;
static int mouse_face_beg_row, mouse_face_beg_col;
static int mouse_face_end_row, mouse_face_end_col;
static int mouse_face_past_end;
-static Lisp_Object mouse_face_window;
+static Lisp_Object Qmouse_face_window;
static int mouse_face_face_id;
/* FRAME and X, Y position of mouse when last checked for
@@ -2494,10 +2494,23 @@ set_tty_color_mode (f, val)
***********************************************************************/
#ifdef HAVE_GPM
+void term_mouse_moveto (int x, int y)
+{
+ const char *name;
+ int fd;
+ name = (const char *) ttyname (0);
+ fd = open (name, O_WRONLY);
+ /* TODO: how to set mouse position?
+ SOME_FUNCTION (x, y, fd); */
+ close (fd);
+ last_mouse_x = x;
+ last_mouse_y = y;
+}
+
static void
term_show_mouse_face (enum draw_glyphs_face draw)
{
- struct window *w = XWINDOW (mouse_face_window);
+ struct window *w = XWINDOW (Qmouse_face_window);
int save_x, save_y;
int i, j;
@@ -2573,12 +2586,12 @@ term_show_mouse_face (enum draw_glyphs_face draw)
static void
term_clear_mouse_face ()
{
- if (!NILP (mouse_face_window))
+ if (!NILP (Qmouse_face_window))
term_show_mouse_face (DRAW_NORMAL_TEXT);
mouse_face_beg_row = mouse_face_beg_col = -1;
mouse_face_end_row = mouse_face_end_col = -1;
- mouse_face_window = Qnil;
+ Qmouse_face_window = Qnil;
}
/* 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)
if (!WINDOWP (window))
return;
- if (!EQ (window, mouse_face_window))
+ if (!EQ (window, Qmouse_face_window))
term_clear_mouse_face ();
w = XWINDOW (window);
@@ -2737,7 +2750,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
{
extern Lisp_Object Qmouse_face;
Lisp_Object mouse_face, overlay, position, *overlay_vec;
- int noverlays, obegv, ozv;;
+ int noverlays, obegv, ozv;
struct buffer *obuf;
/* 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)
noverlays = sort_overlays (overlay_vec, noverlays, w);
/* Check mouse-face highlighting. */
- if (!(EQ (window, mouse_face_window)
+ if (!(EQ (window, Qmouse_face_window)
&& y >= mouse_face_beg_row
&& y <= mouse_face_end_row
&& (y > mouse_face_beg_row
@@ -2812,7 +2825,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
= !fast_find_position (w, XFASTINT (after),
&mouse_face_end_col,
&mouse_face_end_row);
- mouse_face_window = window;
+ Qmouse_face_window = window;
mouse_face_face_id
= face_at_buffer_position (w, pos, 0, 0,
@@ -2847,7 +2860,7 @@ term_mouse_highlight (struct frame *f, int x, int y)
= !fast_find_position (w, XFASTINT (after),
&mouse_face_end_col,
&mouse_face_end_row);
- mouse_face_window = window;
+ Qmouse_face_window = window;
mouse_face_face_id
= face_at_buffer_position (w, pos, 0, 0,
@@ -2934,33 +2947,31 @@ term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
Set *time to the time the mouse was at the returned position.
This should clear mouse_moved until the next motion
- event arrives.
-
- NOT CURRENTLY INVOKED: see mouse_position_hook below. */
+ event arrives. */
static void
term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
enum scroll_bar_part *part, Lisp_Object *x,
Lisp_Object *y, unsigned long *time)
{
- Gpm_Event event;
struct timeval now;
- int i;
-
- BLOCK_INPUT;
+ Lisp_Object frame, window;
+ struct window *w;
*fp = SELECTED_FRAME ();
+ (*fp)->mouse_moved = 0;
*bar_window = Qnil;
*part = 0;
- i = Gpm_GetSnapshot (&event);
+ XSETINT (*x, last_mouse_x);
+ XSETINT (*y, last_mouse_y);
+ XSETFRAME (frame, *fp);
+ window = Fwindow_at (*x, *y, frame);
- XSETINT (*x, event.x);
- XSETINT (*y, event.y);
+ XSETINT (*x, last_mouse_x - WINDOW_LEFT_EDGE_COL (XWINDOW (window)));
+ XSETINT (*y, last_mouse_y - WINDOW_TOP_EDGE_LINE (XWINDOW (window)));
gettimeofday(&now, 0);
*time = (now.tv_sec * 1000) + (now.tv_usec / 1000);
-
- UNBLOCK_INPUT;
}
/* 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)
name = (const char *) ttyname (0);
fd = open (name, O_WRONLY);
ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1);
- close(fd);
+ close (fd);
term_mouse_movement (f, event);
@@ -3074,7 +3085,6 @@ handle_one_term_event (Gpm_Event *event, struct input_event* hold_quit)
else {
f->mouse_moved = 0;
term_mouse_click (&ie, event, f);
- //kbd_buffer_store_event_hold (&ie, hold_quit);
}
done:
@@ -3159,11 +3169,8 @@ term_init (terminal_type)
encode_terminal_dst_size = 0;
#ifdef HAVE_GPM
- /* TODO: Can't get Gpm_Snapshot in term_mouse_position to work: test with
- (mouse-position). Also set-mouse-position won't work as is. */
- /* mouse_position_hook = term_mouse_position; */
-
- mouse_face_window = Qnil;
+ mouse_position_hook = term_mouse_position;
+ Qmouse_face_window = Qnil;
#endif
#ifdef WINDOWSNT
@@ -3616,6 +3623,8 @@ bigger, or it may make it blink, or it may do nothing at all. */);
#ifdef HAVE_GPM
defsubr (&Sterm_open_connection);
defsubr (&Sterm_close_connection);
+
+ staticpro (&Qmouse_face_window);
#endif /* HAVE_GPM */
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 {
#ifdef HAVE_GPM
#include <gpm.h>
extern int handle_one_term_event (Gpm_Event *, struct input_event *);
+extern void term_mouse_moveto (int, int);
/* Nonzero means mouse is enabled on Linux console */
extern 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)
if (!EQ (window, pwindow))
break;
/* Otherwise, try another window for SWINDOW. */
- swindow = Fnext_window (swindow, Qlambda, Qnil);;
+ swindow = Fnext_window (swindow, Qlambda, Qnil);
/* If we get back to the frame's selected window,
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)
it->c = *p, it->len = 1;
/* Record what we have and where it came from. */
- it->what = IT_CHARACTER;;
+ it->what = IT_CHARACTER;
it->object = it->w->buffer;
it->position = it->current.pos;
@@ -10996,7 +10996,7 @@ redisplay_internal (preserve_echo_area)
int must_finish = 0;
struct text_pos tlbufpos, tlendpos;
int number_of_visible_frames;
- int count;
+ int count, count1;
struct frame *sf;
int polling_stopped_here = 0;
@@ -11134,6 +11134,10 @@ redisplay_internal (preserve_echo_area)
update_mode_lines++;
}
+ /* Avoid invocation of point motion hooks by `current_column' below. */
+ count1 = SPECPDL_INDEX ();
+ specbind (Qinhibit_point_motion_hooks, Qt);
+
/* If %c is in the mode line, update it if needed. */
if (!NILP (w->column_number_displayed)
/* This alternative quickly identifies a common case
@@ -11145,6 +11149,8 @@ redisplay_internal (preserve_echo_area)
!= (int) current_column ())) /* iftc */
w->update_mode_line = Qt;
+ unbind_to (count1, Qnil);
+
FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1;
/* 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 ()
staticpro (&QCforeground);
QCbackground = intern (":background");
staticpro (&QCbackground);
- QCstipple = intern (":stipple");;
+ QCstipple = intern (":stipple");
staticpro (&QCstipple);
QCwidth = intern (":width");
staticpro (&QCwidth);