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
This commit is contained in:
commit
62390cbfc2
43 changed files with 409 additions and 238 deletions
|
@ -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.
|
||||
|
|
14
etc/NEWS.22
14
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
|
||||
|
|
21
etc/PROBLEMS
21
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl))
|
||||
(require 'compile)
|
||||
(require 'tramp)
|
||||
(add-hook 'tramp-util-unload-hook
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))))
|
||||
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
65
src/term.c
65
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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
10
src/xdisp.c
10
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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue