Merge from emacs-23 branch.

This commit is contained in:
Glenn Morris 2011-01-15 12:03:38 -08:00
commit 362b9d483c
17 changed files with 232 additions and 112 deletions

View file

@ -1,3 +1,14 @@
2011-01-15 Chong Yidong <cyd@stupidchicken.com>
* files.texi (File Aliases): Move directory-abbrev-alist doc from Lisp
manual. Explain why directory-abbrev-alist elements should be anchored
(Bug#7777).
2011-01-15 Eli Zaretskii <eliz@gnu.org>
* msdog.texi (Windows Startup): Correct inaccurate description of
differences between emacsclient.exe and emacsclientw.exe.
2011-01-02 Chong Yidong <cyd@stupidchicken.com>
* rmail.texi (Rmail Display): Edit for grammar and conciseness.

View file

@ -1160,7 +1160,6 @@ links point to directories.
@vindex find-file-existing-other-name
@vindex find-file-suppress-same-file-warnings
Normally, if you visit a file which Emacs is already visiting under
a different name, Emacs displays a message in the echo area and uses
the existing buffer visiting that file. This can happen on systems
@ -1182,6 +1181,31 @@ then the file name recorded for a buffer is the file's @dfn{truename}
than the name you specify. Setting @code{find-file-visit-truename} also
implies the effect of @code{find-file-existing-other-name}.
@cindex directory name abbreviation
@vindex directory-abbrev-alist
Sometimes, a directory is ordinarily accessed through a symbolic
link, and you may want Emacs to preferentially display its ``linked''
name instead of its truename. To do this, customize the variable
@code{directory-abbrev-alist}. Each element in this list should have
the form @code{(@var{from} . @var{to})}, which says to replace
@var{from} with @var{to} when it appears in a directory name. For
this feature to work properly, @var{from} and @var{to} should point to
the same file. The @var{from} string is actually a regular expression
(@pxref{Regexps}); it should always start with @samp{\`}, to avoid
matching to an incorrect part of the original directory name. The
@var{to} string should be an ordinary absolute directory name. Do not
use @samp{~} to stand for a home directory in the @var{to} string;
Emacs performs these substitutions separately.
Here's an example, from a system on which file system
@file{/home/fsf} and so on are normally accessed through symbolic
links named @file{/fsf} and so on.
@example
(("\\`/home/fsf" . "/fsf")
("\\`/home/gd" . "/gd"))
@end example
@node Directories
@section File Directories

View file

@ -90,20 +90,24 @@ Via the Emacs client program, @file{emacsclient.exe} or
programs, and to reuse a running Emacs process for serving editing
jobs required by other programs. @xref{Emacs Server}. The difference
between @file{emacsclient.exe} and @file{emacsclientw.exe} is that the
former waits for Emacs to signal that the editing job is finished,
while the latter does not wait. Which one of them to use in each case
depends on the expectations of the program that needs editing
services. If the program will use the edited files, it needs to wait
for Emacs, so you should use @file{emacsclient.exe}. By contrast, if
the results of editing are not needed by the invoking program, you
will be better off using @file{emacsclientw.exe}. A notable situation
where you would want @file{emacsclientw.exe} is when you right-click
on a file in the Windows Explorer and select ``Open With'' from the
pop-up menu. Use the @samp{--alternate-editor=} or @samp{-a} options
if Emacs might not be running (or not running as a server) when
@command{emacsclient} is invoked---that will always give you an
editor. When invoked via @command{emacsclient}, Emacs will start in
the current directory of the program that invoked
former is a console program, while the latter is a Windows GUI
program. Both programs wait for Emacs to signal that the editing job
is finished, before they exit and return control to the program that
invoked them. Which one of them to use in each case depends on the
expectations of the program that needs editing services. If that
program is itself a console (text-mode) program, you should use
@file{emacsclient.exe}, so that any of its messages and prompts appear
in the same command window as those of the invoking program. By
contrast, if the invoking program is a GUI program, you will be better
off using @file{emacsclientw.exe}, because @file{emacsclient.exe} will
pop up a command window if it is invoked from a GUI program. A
notable situation where you would want @file{emacsclientw.exe} is when
you right-click on a file in the Windows Explorer and select ``Open
With'' from the pop-up menu. Use the @samp{--alternate-editor=} or
@samp{-a} options if Emacs might not be running (or not running as a
server) when @command{emacsclient} is invoked---that will always give
you an editor. When invoked via @command{emacsclient}, Emacs will
start in the current directory of the program that invoked
@command{emacsclient}.
@end enumerate

View file

@ -1,3 +1,13 @@
2011-01-15 Chong Yidong <cyd@stupidchicken.com>
* files.texi (Directory Names): Move directory-abbrev-alist doc to
Emacs manual.
2011-01-15 Eli Zaretskii <eliz@gnu.org>
* files.texi (Directory Names): Explain why FROM in
directory-abbrev-alist should begin with \`. (Bug#7777)
2011-01-11 Stefan Monnier <monnier@iro.umontreal.ca>
* loading.texi (Hooks for Loading): Adjust doc of eval-after-load.

View file

@ -1906,51 +1906,22 @@ Don't try concatenating a slash by hand, as in
because this is not portable. Always use
@code{file-name-as-directory}.
@cindex directory name abbreviation
Directory name abbreviations are useful for directories that are
normally accessed through symbolic links. Sometimes the users recognize
primarily the link's name as ``the name'' of the directory, and find it
annoying to see the directory's ``real'' name. If you define the link
name as an abbreviation for the ``real'' name, Emacs shows users the
abbreviation instead.
@defopt directory-abbrev-alist
The variable @code{directory-abbrev-alist} contains an alist of
abbreviations to use for file directories. Each element has the form
@code{(@var{from} . @var{to})}, and says to replace @var{from} with
@var{to} when it appears in a directory name. The @var{from} string is
actually a regular expression; it ought to always start with @samp{\`}.
The @var{to} string should be an ordinary absolute directory name. Do
not use @samp{~} to stand for a home directory in that string. The
function @code{abbreviate-file-name} performs these substitutions.
You can set this variable in @file{site-init.el} to describe the
abbreviations appropriate for your site.
Here's an example, from a system on which file system @file{/home/fsf}
and so on are normally accessed through symbolic links named @file{/fsf}
and so on.
@example
(("\\`/home/fsf" . "/fsf")
("\\`/home/gp" . "/gp")
("\\`/home/gd" . "/gd"))
@end example
@end defopt
To convert a directory name to its abbreviation, use this
function:
@defun abbreviate-file-name filename
@anchor{Definition of abbreviate-file-name}
This function applies abbreviations from @code{directory-abbrev-alist}
to its argument, and also substitutes @samp{~} for the user's home
directory if the argument names a file in the home directory or one of
its subdirectories. (If the home directory is a root directory, it is
not replaced with @samp{~}, because this does not make the result
shorter on many systems.) You can use it for directory names and for
file names, because it recognizes abbreviations even as part of the
name.
This function returns an abbreviated form of @var{filename}. It
applies the abbreviations specified in @code{directory-abbrev-alist}
(@pxref{File Aliases,,File Aliases, emacs, The GNU Emacs Manual}),
then substitutes @samp{~} for the user's home directory if the
argument names a file in the home directory or one of its
subdirectories. If the home directory is a root directory, it is not
replaced with @samp{~}, because this does not make the result shorter
on many systems.
You can use this function for directory names and for file names,
because it recognizes abbreviations even as part of the name.
@end defun
@node File Name Expansion

View file

@ -1,3 +1,54 @@
2011-01-15 Stefan Monnier <monnier@iro.umontreal.ca>
* tmm.el (tmm-get-keymap): Skip bindings without labels (bug#7721).
(tmm-prompt): Simplify.
(tmm-add-prompt): Remove unused var `win'.
* whitespace.el (global-whitespace-newline-mode): Fix call (bug#7810)
to minor mode which used nil accidentally to mean "turn off".
2011-01-15 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-find-inline-compress)
(tramp-get-inline-coding): Quote command after pipe symbol for
local calls under W32. (Bug#6784)
2011-01-15 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-default-method): Initialize with pscp/plink
only when running under W32.
2011-01-15 Eli Zaretskii <eliz@gnu.org>
* progmodes/grep.el (grep-compute-defaults): Quote the program
file name after the pipe symbol in Grep templates. (Bug#6784)
* jka-compr.el (jka-compr-partial-uncompress): Likewise.
2011-01-15 Lennart Borgman <lennart.borgman@gmail.com>
* buff-menu.el (Buffer-menu-buffer-list): New var.
(Buffer-menu-revert-function, list-buffers-noselect): Use it, so a
restricted buffer list is not lost on revert (Bug#7749).
2011-01-15 Eric Hanchrow <eric.hanchrow@gmail.com>
* net/ldap.el (ldap-search-internal): Discard stderr output.
2011-01-15 Eli Zaretskii <eliz@gnu.org>
* files.el (directory-abbrev-alist): Doc fix. (Bug#7777)
2011-01-15 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-bzr.el (vc-bzr-annotate-time): Tweak previous change.
2011-01-15 Kenichi Handa <handa@m17n.org>
* mail/rmailmm.el (rmail-mime-insert-bulk): Display an unknown
part as a plain text.
(rmail-mime-process-multipart): Set the default content-type to
nil for unknown multipart subtypes (bug#7651).
2011-01-14 Stefan Monnier <monnier@iro.umontreal.ca>
* hexl.el (hexl-mode-old-*): Remove.

View file

@ -112,9 +112,15 @@ A nil value means sort by visited order (the default).")
This variable determines whether reverting the buffer lists only
file buffers. It affects both manual reverting and reverting by
Auto Revert Mode.")
(make-variable-buffer-local 'Buffer-menu-files-only)
(defvar Buffer-menu--buffers nil
"If non-nil, list of buffers shown in the current buffer-menu.
This variable determines whether reverting the buffer lists only
this buffers. It affects both manual reverting and reverting by
Auto Revert Mode.")
(make-variable-buffer-local 'Buffer-menu--buffers)
(defvar Info-current-file) ;; from info.el
(defvar Info-current-node) ;; from info.el
@ -282,7 +288,7 @@ Letters do not insert themselves; instead, they are commands.
;; interactively current buffer is correctly identified with a `.'
;; by `list-buffers-noselect'.
(with-current-buffer (window-buffer)
(list-buffers-noselect Buffer-menu-files-only))
(list-buffers-noselect Buffer-menu-files-only Buffer-menu--buffers))
(if oline
(while (setq prop (next-single-property-change prop 'buffer))
(when (eq (get-text-property prop 'buffer) oline)
@ -919,6 +925,7 @@ For more information, see the function `buffer-menu'."
(and desired-point
(goto-char desired-point))
(setq Buffer-menu-files-only files-only)
(setq Buffer-menu--buffers buffer-list)
(set-buffer-modified-p nil)
(current-buffer))))

View file

@ -57,7 +57,10 @@ when it has unsaved changes."
A list of elements of the form (FROM . TO), each meaning to replace
FROM with TO when it appears in a directory name. This replacement is
done when setting up the default directory of a newly visited file.
*Every* FROM string ought to start with \"\\\\`\".
FROM is matched against directory names anchored at the first
character, so it should start with a \"\\\\`\", or, if directory
names cannot have embedded newlines, with a \"^\".
FROM and TO should be equivalent names, which refer to the
same directory. Do not use `~' in the TO strings;

View file

@ -166,8 +166,11 @@ to keep: LEN chars starting BEG chars from the beginning."
(unwind-protect
(or (memq (call-process
jka-compr-shell infile t nil "-c"
;; Windows shells need the program file name
;; after the pipe symbol be quoted if they use
;; forward slashes as directory separators.
(format
"%s %s 2> %s | %s bs=%d skip=%d %s 2> %s"
"%s %s 2> %s | \"%s\" bs=%d skip=%d %s 2> %s"
prog
(mapconcat 'identity args " ")
err-file

View file

@ -742,7 +742,11 @@ directly."
(cond ((eq (cdr bulk-data) 'text)
(rmail-mime-insert-decoded-text entity))
((cdr bulk-data)
(rmail-mime-insert-image entity)))))
(rmail-mime-insert-image entity))
(t
;; As we don't know how to display the body, just
;; insert it as a text.
(rmail-mime-insert-decoded-text entity)))))
(put-text-property beg (point) 'rmail-mime-entity entity)))
(defun test-rmail-mime-bulk-handler ()
@ -820,7 +824,9 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
(cond ((string-match "mixed" subtype)
(setq content-type '("text/plain")))
((string-match "digest" subtype)
(setq content-type '("message/rfc822"))))
(setq content-type '("message/rfc822")))
(t
(setq content-type nil)))
;; Loop over all body parts, where beg points at the beginning of
;; the part and end points at the end of the part. next points at

View file

@ -557,7 +557,8 @@ an alist of attribute/value pairs."
(not (equal "" sizelimit)))
(setq arglist (nconc arglist (list (format "-z%s" sizelimit)))))
(apply #'call-process ldap-ldapsearch-prog
nil buf nil
;; Ignore stderr, which can corrupt results
nil (list buf nil) nil
(append arglist ldap-ldapsearch-args filter))
(insert "\n")
(goto-char (point-min))

View file

@ -803,7 +803,7 @@ This string is passed to `format', so percent characters need to be doubled.")
(defconst tramp-perl-decode
"%s -e '
# This script contributed by Juanma Barranquero <lektu@terra.es>.
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# Free Software Foundation, Inc.
use strict;
@ -4065,9 +4065,17 @@ Goes through the list `tramp-inline-compress-commands'."
vec 5
"Checking local compress command `%s', `%s' for sanity"
compress decompress)
(unless (zerop (tramp-call-local-coding-command
(format "echo %s | %s | %s"
magic compress decompress) nil nil))
(unless
(zerop
(tramp-call-local-coding-command
(format
;; Windows shells need the program file name after
;; the pipe symbol be quoted if they use forward
;; slashes as directory separators.
(if (memq system-type '(windows-nt))
"echo %s | \"%s\" | \"%s\""
"echo %s | %s | %s")
magic compress decompress) nil nil))
(throw 'next nil))
(tramp-message
vec 5
@ -4961,9 +4969,25 @@ function cell is returned to be applied on a buffer."
((symbolp coding)
coding)
((and compress (string-match "decoding" prop))
(format "(%s | %s >%%s)" coding compress))
(format
;; Windows shells need the program file name after
;; the pipe symbol be quoted if they use forward
;; slashes as directory separators.
(if (and (string-match "local" prop)
(memq system-type '(windows-nt)))
"(%s | \"%s\" >%%s)"
"(%s | %s >%%s)")
coding compress))
(compress
(format "(%s <%%s | %s)" compress coding))
(format
;; Windows shells need the program file name after
;; the pipe symbol be quoted if they use forward
;; slashes as directory separators.
(if (and (string-match "local" prop)
(memq system-type '(windows-nt)))
"(%s <%%s | \"%s\")"
"(%s <%%s | %s)")
compress coding))
((string-match "decoding" prop)
(format "%s >%%s" coding))
(t

View file

@ -1,7 +1,7 @@
;;; tramp.el --- Transparent Remote Access, Multiple Protocol
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
;; 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
;; Author: Kai Großjohann <kai.grossjohann@gmx.net>
;; Michael Albinus <michael.albinus@gmx.de>
@ -291,8 +291,11 @@ shouldn't return t when it isn't."
;; password caching. "scpc" is chosen if we detect that the user is
;; running OpenSSH 4.0 or newer.
(cond
;; PuTTY is installed.
((executable-find "pscp")
;; PuTTY is installed. We don't take it, if it is installed on a
;; non-windows system, or pscp from the pssh (parallel ssh) package
;; is found.
((and (eq system-type 'windows-nt)
(executable-find "pscp"))
(if (or (fboundp 'password-read)
(fboundp 'auth-source-user-or-password)
;; Pageant is running.

View file

@ -565,7 +565,10 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
(unless grep-find-command
(setq grep-find-command
(cond ((eq grep-find-use-xargs 'gnu)
(format "%s . -type f -print0 | %s -0 -e %s"
;; Windows shells need the program file name
;; after the pipe symbol be quoted if they use
;; forward slashes as directory separators.
(format "%s . -type f -print0 | \"%s\" -0 -e %s"
find-program xargs-program grep-command))
((eq grep-find-use-xargs 'exec)
(let ((cmd0 (format "%s . -type f -exec %s"
@ -576,21 +579,21 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
(shell-quote-argument ";"))
(1+ (length cmd0)))))
(t
(format "%s . -type f -print | %s %s"
(format "%s . -type f -print | \"%s\" %s"
find-program xargs-program grep-command)))))
(unless grep-find-template
(setq grep-find-template
(let ((gcmd (format "%s <C> %s <R>"
grep-program grep-options)))
(cond ((eq grep-find-use-xargs 'gnu)
(format "%s . <X> -type f <F> -print0 | %s -0 -e %s"
(format "%s . <X> -type f <F> -print0 | \"%s\" -0 -e %s"
find-program xargs-program gcmd))
((eq grep-find-use-xargs 'exec)
(format "%s . <X> -type f <F> -exec %s {} %s %s"
find-program gcmd null-device
(shell-quote-argument ";")))
(t
(format "%s . <X> -type f <F> -print | %s %s"
(format "%s . <X> -type f <F> -print | \"%s\" %s"
find-program xargs-program gcmd))))))))
(when (eq grep-highlight-matches 'auto-detect)
(setq grep-highlight-matches

View file

@ -168,14 +168,13 @@ Its value should be an event that has a binding in MENU."
;; It has no other elements.
;; The order of elements in tmm-km-list is the order of the menu bar.
(mapc (lambda (elt)
(if (stringp elt)
(setq gl-str elt)
(cond
((listp elt) (tmm-get-keymap elt not-menu))
((vectorp elt)
(dotimes (i (length elt))
(tmm-get-keymap (cons i (aref elt i)) not-menu))))))
menu)
(cond
((stringp elt) (setq gl-str elt))
((listp elt) (tmm-get-keymap elt not-menu))
((vectorp elt)
(dotimes (i (length elt))
(tmm-get-keymap (cons i (aref elt i)) not-menu)))))
menu)
;; Choose an element of tmm-km-list; put it in choice.
(if (and not-menu (= 1 (length tmm-km-list)))
;; If this is the top-level of an x-popup-menu menu,
@ -368,32 +367,31 @@ Stores a list of all the shortcuts in the free variable `tmm-short-cuts'."
(add-hook 'minibuffer-exit-hook 'tmm-delete-map nil t)
(unless tmm-c-prompt
(error "No active menu entries"))
(let ((win (selected-window)))
(setq tmm-old-mb-map (tmm-define-keys t))
;; Get window and hide it for electric mode to get correct size
(save-window-excursion
(let ((completions
(mapcar 'car minibuffer-completion-table)))
(or tmm-completion-prompt
(add-hook 'completion-setup-hook
'tmm-completion-delete-prompt 'append))
(unwind-protect
(with-output-to-temp-buffer "*Completions*"
(display-completion-list completions))
(remove-hook 'completion-setup-hook 'tmm-completion-delete-prompt)))
(set-buffer "*Completions*")
(tmm-remove-inactive-mouse-face)
(when tmm-completion-prompt
(let ((buffer-read-only nil))
(goto-char (point-min))
(insert tmm-completion-prompt))))
(save-selected-window
(other-window 1) ; Electric-pop-up-window does
(setq tmm-old-mb-map (tmm-define-keys t))
;; Get window and hide it for electric mode to get correct size
(save-window-excursion
(let ((completions
(mapcar 'car minibuffer-completion-table)))
(or tmm-completion-prompt
(add-hook 'completion-setup-hook
'tmm-completion-delete-prompt 'append))
(unwind-protect
(with-output-to-temp-buffer "*Completions*"
(display-completion-list completions))
(remove-hook 'completion-setup-hook 'tmm-completion-delete-prompt)))
(set-buffer "*Completions*")
(tmm-remove-inactive-mouse-face)
(when tmm-completion-prompt
(let ((buffer-read-only nil))
(goto-char (point-min))
(insert tmm-completion-prompt))))
(save-selected-window
(other-window 1) ; Electric-pop-up-window does
; not work in minibuffer
(Electric-pop-up-window "*Completions*")
(with-current-buffer "*Completions*"
(setq tmm-old-comp-map (tmm-define-keys nil))))
(insert tmm-c-prompt)))
(Electric-pop-up-window "*Completions*")
(with-current-buffer "*Completions*"
(setq tmm-old-comp-map (tmm-define-keys nil))))
(insert tmm-c-prompt))
(defun tmm-delete-map ()
(remove-hook 'minibuffer-exit-hook 'tmm-delete-map t)
@ -497,7 +495,7 @@ It uses the free variable `tmm-table-undef' to keep undefined keys."
(if (or in-x-menu (stringp (car-safe elt)))
(setq str event event nil km elt)
(setq str event event nil km (cons 'keymap elt)))))
(unless (eq km 'ignore)
(unless (or (eq km 'ignore) (null str))
(let ((binding (where-is-internal km nil t)))
(when binding
(setq binding (key-description binding))

View file

@ -750,7 +750,7 @@ property containing author and date information."
(declare-function vc-annotate-convert-time "vc-annotate" (time))
(defun vc-bzr-annotate-time ()
(when (re-search-forward "^ *[0-9.]+ +.* +|" nil t)
(when (re-search-forward "^ *[0-9.]+ +.+? +|" nil t)
(let ((prop (get-text-property (line-beginning-position) 'help-echo)))
(string-match "[0-9]+\\'" prop)
(let ((str (match-string-no-properties 0 prop)))

View file

@ -1188,7 +1188,8 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
:global t
:group 'whitespace
(let ((whitespace-style '(newline-mark newline)))
(global-whitespace-mode global-whitespace-newline-mode)
(global-whitespace-mode (if global-whitespace-newline-mode
1 -1))
;; sync states (running a batch job)
(setq global-whitespace-newline-mode global-whitespace-mode)))