Mercurial > emacs
changeset 90863:648e6c714c7d
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
author | Miles Bader <miles@gnu.org> |
---|---|
date | Wed, 30 May 2007 14:40:46 +0000 |
parents | e4b8d2bccfb0 (current diff) f4d5f1a40875 (diff) |
children | 834a5e8f248c |
files | etc/ChangeLog etc/NEWS.22 etc/PROBLEMS lisp/ChangeLog lisp/emacs-lisp/rx.el lisp/emacs-lisp/tq.el lisp/gnus/ChangeLog lisp/gnus/message.el lisp/log-edit.el lisp/net/tramp-ftp.el lisp/net/tramp-smb.el lisp/net/tramp-util.el lisp/net/tramp-uu.el lisp/net/tramp-vc.el lisp/net/tramp.el lisp/net/trampver.el lisp/net/webjump.el lisp/progmodes/idlwave.el lisp/textmodes/sgml-mode.el lisp/textmodes/table.el lispref/ChangeLog lispref/commands.texi man/ChangeLog man/tramp.texi man/trampver.texi oldXMenu/ChangeLog oldXMenu/XMakeAssoc.c src/ChangeLog src/ccl.c src/data.c src/fns.c src/frame.c src/macterm.c src/msdos.c src/sysdep.c src/term.c src/termhooks.h src/window.c src/xdisp.c src/xfaces.c |
diffstat | 43 files changed, 410 insertions(+), 239 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/etc/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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.
--- a/etc/NEWS.22 Tue May 29 00:15:26 2007 +0000 +++ b/etc/NEWS.22 Wed May 30 14:40:46 2007 +0000 @@ -442,7 +442,7 @@ `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 @@ 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 @@ *** 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
--- a/etc/PROBLEMS Tue May 29 00:15:26 2007 +0000 +++ b/etc/PROBLEMS Wed May 30 14:40:46 2007 +0000 @@ -2456,27 +2456,6 @@ 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
--- a/lisp/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/lisp/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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
--- a/lisp/emacs-lisp/rx.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/emacs-lisp/rx.el Wed May 30 14:40:46 2007 +0000 @@ -725,8 +725,7 @@ 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 @@ 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.
--- a/lisp/emacs-lisp/tq.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/emacs-lisp/tq.el Wed May 30 14:40:46 2007 +0000 @@ -100,8 +100,9 @@ (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)
--- a/lisp/gnus/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/lisp/gnus/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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
--- a/lisp/gnus/message.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/gnus/message.el Wed May 30 14:40:46 2007 +0000 @@ -5576,7 +5576,7 @@ '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 @@ (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 @@ (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)
--- a/lisp/log-edit.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/log-edit.el Wed May 30 14:40:46 2007 +0000 @@ -538,7 +538,7 @@ (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.
--- a/lisp/net/tramp-ftp.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/tramp-ftp.el Wed May 30 14:40:46 2007 +0000 @@ -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:
--- a/lisp/net/tramp-smb.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/tramp-smb.el Wed May 30 14:40:46 2007 +0000 @@ -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.
--- a/lisp/net/tramp-util.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/tramp-util.el Wed May 30 14:40:46 2007 +0000 @@ -29,7 +29,6 @@ ;;; Code: -(eval-when-compile (require 'cl)) (require 'compile) (require 'tramp) (add-hook 'tramp-util-unload-hook
--- a/lisp/net/tramp-uu.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/tramp-uu.el Wed May 30 14:40:46 2007 +0000 @@ -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
--- a/lisp/net/tramp-vc.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/tramp-vc.el Wed May 30 14:40:46 2007 +0000 @@ -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)
--- a/lisp/net/tramp.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/tramp.el Wed May 30 14:40:46 2007 +0000 @@ -151,11 +151,7 @@ (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 @@ (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 @@ (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 @@ "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 @@ 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 @@ (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 @@ "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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (assoc (tramp-find-method multi-method method user host) tramp-methods)))) (if entry - (second entry) + (cadr entry) (symbol-value param))))
--- a/lisp/net/trampver.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/trampver.el Wed May 30 14:40:46 2007 +0000 @@ -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"
--- a/lisp/net/webjump.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/net/webjump.el Wed May 30 14:40:46 2007 +0000 @@ -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)
--- a/lisp/progmodes/idlwave.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/progmodes/idlwave.el Wed May 30 14:40:46 2007 +0000 @@ -4342,7 +4342,7 @@ (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 @@ ;; 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))
--- a/lisp/textmodes/sgml-mode.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/textmodes/sgml-mode.el Wed May 30 14:40:46 2007 +0000 @@ -894,16 +894,19 @@ ;; 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)
--- a/lisp/textmodes/table.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/textmodes/table.el Wed May 30 14:40:46 2007 +0000 @@ -5333,21 +5333,25 @@ (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.
--- a/lisp/url/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/lisp/url/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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.
--- a/lisp/url/url-mailto.el Tue May 29 00:15:26 2007 +0000 +++ b/lisp/url/url-mailto.el Wed May 30 14:40:46 2007 +0000 @@ -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))
--- a/lispref/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/lispref/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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.
--- a/lispref/commands.texi Tue May 29 00:15:26 2007 +0000 +++ b/lispref/commands.texi Wed May 30 14:40:46 2007 +0000 @@ -1196,12 +1196,7 @@ @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 @@ @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 @@ (@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 @@ @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 @@ 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. + +@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 @@ @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 @@ @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 @@ 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
--- a/man/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/man/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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.
--- a/man/erc.texi Tue May 29 00:15:26 2007 +0000 +++ b/man/erc.texi Wed May 30 14:40:46 2007 +0000 @@ -564,7 +564,8 @@ 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 @@ 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.
--- a/man/tramp.texi Tue May 29 00:15:26 2007 +0000 +++ b/man/tramp.texi Wed May 30 14:40:46 2007 +0000 @@ -2051,7 +2051,11 @@ 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
--- a/man/trampver.texi Tue May 29 00:15:26 2007 +0000 +++ b/man/trampver.texi Wed May 30 14:40:46 2007 +0000 @@ -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
--- a/oldXMenu/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/oldXMenu/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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.
--- a/oldXMenu/XMakeAssoc.c Tue May 29 00:15:26 2007 +0000 +++ b/oldXMenu/XMakeAssoc.c Wed May 30 14:40:46 2007 +0000 @@ -81,7 +81,7 @@ /* 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;
--- a/src/ChangeLog Tue May 29 00:15:26 2007 +0000 +++ b/src/ChangeLog Wed May 30 14:40:46 2007 +0000 @@ -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):
--- a/src/ccl.c Tue May 29 00:15:26 2007 +0000 +++ b/src/ccl.c Wed May 30 14:40:46 2007 +0000 @@ -1222,7 +1222,7 @@ 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;
--- a/src/data.c Tue May 29 00:15:26 2007 +0000 +++ b/src/data.c Wed May 30 14:40:46 2007 +0000 @@ -1575,7 +1575,7 @@ 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);
--- a/src/fns.c Tue May 29 00:15:26 2007 +0000 +++ b/src/fns.c Wed May 30 14:40:46 2007 +0000 @@ -4585,7 +4585,7 @@ (obj) Lisp_Object obj; { - unsigned hash = sxhash (obj, 0);; + unsigned hash = sxhash (obj, 0); return make_number (hash); }
--- a/src/frame.c Tue May 29 00:15:26 2007 +0000 +++ b/src/frame.c Wed May 30 14:40:46 2007 +0000 @@ -1549,6 +1549,13 @@ 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
--- a/src/macterm.c Tue May 29 00:15:26 2007 +0000 +++ b/src/macterm.c Wed May 30 14:40:46 2007 +0000 @@ -736,7 +736,7 @@ /* 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 @@ 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);
--- a/src/msdos.c Tue May 29 00:15:26 2007 +0000 +++ b/src/msdos.c Wed May 30 14:40:46 2007 +0000 @@ -1584,7 +1584,7 @@ { 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 @@ 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)
--- a/src/sysdep.c Tue May 29 00:15:26 2007 +0000 +++ b/src/sysdep.c Wed May 30 14:40:46 2007 +0000 @@ -1679,7 +1679,7 @@ 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 */
--- a/src/term.c Tue May 29 00:15:26 2007 +0000 +++ b/src/term.c Wed May 30 14:40:46 2007 +0000 @@ -427,7 +427,7 @@ 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 @@ ***********************************************************************/ #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 @@ 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 @@ 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 @@ { 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 @@ 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 @@ = !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 @@ = !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 @@ 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, event.x); - XSETINT (*y, event.y); + XSETINT (*x, last_mouse_x); + XSETINT (*y, last_mouse_y); + XSETFRAME (frame, *fp); + window = Fwindow_at (*x, *y, frame); + + 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 @@ 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 @@ else { f->mouse_moved = 0; term_mouse_click (&ie, event, f); - //kbd_buffer_store_event_hold (&ie, hold_quit); } done: @@ -3159,11 +3169,8 @@ 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 @@ #ifdef HAVE_GPM defsubr (&Sterm_open_connection); defsubr (&Sterm_close_connection); + + staticpro (&Qmouse_face_window); #endif /* HAVE_GPM */ fullscreen_hook = NULL;
--- a/src/termhooks.h Tue May 29 00:15:26 2007 +0000 +++ b/src/termhooks.h Wed May 30 14:40:46 2007 +0000 @@ -453,6 +453,7 @@ #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;
--- a/src/window.c Tue May 29 00:15:26 2007 +0000 +++ b/src/window.c Wed May 30 14:40:46 2007 +0000 @@ -1532,7 +1532,7 @@ 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,
--- a/src/xdisp.c Tue May 29 00:15:26 2007 +0000 +++ b/src/xdisp.c Wed May 30 14:40:46 2007 +0000 @@ -6417,7 +6417,7 @@ 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 @@ 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 @@ 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 @@ != (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
--- a/src/xfaces.c Tue May 29 00:15:26 2007 +0000 +++ b/src/xfaces.c Wed May 30 14:40:46 2007 +0000 @@ -8477,7 +8477,7 @@ staticpro (&QCforeground); QCbackground = intern (":background"); staticpro (&QCbackground); - QCstipple = intern (":stipple");; + QCstipple = intern (":stipple"); staticpro (&QCstipple); QCwidth = intern (":width"); staticpro (&QCwidth);