Merge from origin/emacs-25
9ba51ed
Document buffer-swap-text+save-excursion interaction452aa94
Fix eieio vs cl-generic incompatibilities found in Rudel (bug...248d5dd
Include cl-generic in package--builtin-versions (bug#22817)8f5a8b6
Improve timing in `tramp-test29-environment-variables'05ba7a0
Add test for handling environment variables in Trampe393d4f
* lisp/emacs-lisp/package.el (describe-package-1) (package-st...5e38887
; * lisp/net/tramp.el: Fix 2010-10-04 comment typo. (Bug#23913)90f2169
; Spelling fixes069fc05
Improve documentation of search functions0a0144a
Delete environment variables in Tramp when neededf624671
Add "New in Emacs 25" section to the FAQ658daf9
Fix 'vertical-motion' in non-interactive sessions686b520
Fix memory leak in imagemagick-types4069b71
Update ELisp manual to match 'string-collate-equalp' doc string1b2d6a6
Clarify docstring of find-feature-regexpaac62a6
Add details to cl-lib defining macros' docstringsd6aa4da
Clarify doc string of 'save-buffer'03bcf11
Un-confuse doc string of 'string-collate-equalp'c53135b
Clarify documentation of 'mouse-on-link-p' # Conflicts: # lisp/emacs-lisp/eieio-core.el
This commit is contained in:
commit
6b780a2e97
22 changed files with 467 additions and 119 deletions
|
@ -1211,6 +1211,12 @@ swapped as well: the positions of point and mark, all the markers, the
|
|||
overlays, the text properties, the undo list, the value of the
|
||||
@code{enable-multibyte-characters} flag (@pxref{Text Representations,
|
||||
enable-multibyte-characters}), etc.
|
||||
|
||||
@strong{Warning:} If this function is called from within a
|
||||
@code{save-excursion} form, the current buffer will be set to
|
||||
@var{buffer} upon leaving the form, since the marker used by
|
||||
@code{save-excursion} to save the position and buffer will be swapped
|
||||
as well.
|
||||
@end defun
|
||||
|
||||
If you use @code{buffer-swap-text} on a file-visiting buffer, you
|
||||
|
|
|
@ -44,7 +44,7 @@ Searching and Replacement, emacs, The GNU Emacs Manual}.
|
|||
buffer is multibyte; they convert the search string to unibyte if the
|
||||
buffer is unibyte. @xref{Text Representations}.
|
||||
|
||||
@deffn Command search-forward string &optional limit noerror repeat
|
||||
@deffn Command search-forward string &optional limit noerror count
|
||||
This function searches forward from point for an exact match for
|
||||
@var{string}. If successful, it sets point to the end of the occurrence
|
||||
found, and returns the new value of point. If no match is found, the
|
||||
|
@ -95,24 +95,24 @@ The argument @var{noerror} only affects valid searches which fail to
|
|||
find a match. Invalid arguments cause errors regardless of
|
||||
@var{noerror}.
|
||||
|
||||
If @var{repeat} is a positive number @var{n}, it serves as a repeat
|
||||
count: the search is repeated @var{n} times, each time starting at the
|
||||
end of the previous time's match. If these successive searches
|
||||
succeed, the function succeeds, moving point and returning its new
|
||||
value. Otherwise the search fails, with results depending on the
|
||||
value of @var{noerror}, as described above. If @var{repeat} is a
|
||||
negative number -@var{n}, it serves as a repeat count of @var{n} for a
|
||||
search in the opposite (backward) direction.
|
||||
If @var{count} is a positive number @var{n}, the search is done
|
||||
@var{n} times; each successive search starts at the end of the
|
||||
previous match. If all these successive searches succeed, the
|
||||
function call succeeds, moving point and returning its new value.
|
||||
Otherwise the function call fails, with results depending on the value
|
||||
of @var{noerror}, as described above. If @var{count} is a negative
|
||||
number -@var{n}, the search is done @var{n} times in the opposite
|
||||
(backward) direction.
|
||||
@end deffn
|
||||
|
||||
@deffn Command search-backward string &optional limit noerror repeat
|
||||
@deffn Command search-backward string &optional limit noerror count
|
||||
This function searches backward from point for @var{string}. It is
|
||||
like @code{search-forward}, except that it searches backwards rather
|
||||
than forwards. Backward searches leave point at the beginning of the
|
||||
match.
|
||||
@end deffn
|
||||
|
||||
@deffn Command word-search-forward string &optional limit noerror repeat
|
||||
@deffn Command word-search-forward string &optional limit noerror count
|
||||
This function searches forward from point for a word match for
|
||||
@var{string}. If it finds a match, it sets point to the end of the
|
||||
match found, and returns the new value of point.
|
||||
|
@ -156,8 +156,10 @@ returns @code{nil} instead of signaling an error. If @var{noerror} is
|
|||
neither @code{nil} nor @code{t}, it moves point to @var{limit} (or the
|
||||
end of the accessible portion of the buffer) and returns @code{nil}.
|
||||
|
||||
If @var{repeat} is non-@code{nil}, then the search is repeated that many
|
||||
times. Point is positioned at the end of the last match.
|
||||
If @var{count} is a positive number, it specifies how many successive
|
||||
occurrences to search for. Point is positioned at the end of the last
|
||||
match. If @var{count} is a negative number, the search is backward
|
||||
and point is positioned at the beginning of the last match.
|
||||
|
||||
@findex word-search-regexp
|
||||
Internally, @code{word-search-forward} and related functions use the
|
||||
|
@ -165,7 +167,7 @@ function @code{word-search-regexp} to convert @var{string} to a
|
|||
regular expression that ignores punctuation.
|
||||
@end deffn
|
||||
|
||||
@deffn Command word-search-forward-lax string &optional limit noerror repeat
|
||||
@deffn Command word-search-forward-lax string &optional limit noerror count
|
||||
This command is identical to @code{word-search-forward}, except that
|
||||
the beginning or the end of @var{string} need not match a word
|
||||
boundary, unless @var{string} begins or ends in whitespace.
|
||||
|
@ -173,14 +175,14 @@ For instance, searching for @samp{ball boy} matches @samp{ball boyee},
|
|||
but does not match @samp{balls boy}.
|
||||
@end deffn
|
||||
|
||||
@deffn Command word-search-backward string &optional limit noerror repeat
|
||||
@deffn Command word-search-backward string &optional limit noerror count
|
||||
This function searches backward from point for a word match to
|
||||
@var{string}. This function is just like @code{word-search-forward}
|
||||
except that it searches backward and normally leaves point at the
|
||||
beginning of the match.
|
||||
@end deffn
|
||||
|
||||
@deffn Command word-search-backward-lax string &optional limit noerror repeat
|
||||
@deffn Command word-search-backward-lax string &optional limit noerror count
|
||||
This command is identical to @code{word-search-backward}, except that
|
||||
the beginning or the end of @var{string} need not match a word
|
||||
boundary, unless @var{string} begins or ends in whitespace.
|
||||
|
@ -1005,7 +1007,7 @@ only the search functions useful in programs. The principal one is
|
|||
the buffer is multibyte; they convert the regular expression to unibyte
|
||||
if the buffer is unibyte. @xref{Text Representations}.
|
||||
|
||||
@deffn Command re-search-forward regexp &optional limit noerror repeat
|
||||
@deffn Command re-search-forward regexp &optional limit noerror count
|
||||
This function searches forward in the current buffer for a string of
|
||||
text that is matched by the regular expression @var{regexp}. The
|
||||
function skips over any amount of text that is not matched by
|
||||
|
@ -1014,14 +1016,12 @@ It returns the new value of point.
|
|||
|
||||
If @var{limit} is non-@code{nil}, it must be a position in the current
|
||||
buffer. It specifies the upper bound to the search. No match
|
||||
extending after that position is accepted.
|
||||
extending after that position is accepted. If @var{limit} is omitted
|
||||
or @code{nil}, it defaults to the end of the accessible portion of the
|
||||
buffer.
|
||||
|
||||
If @var{repeat} is supplied, it must be a positive number; the search
|
||||
is repeated that many times; each repetition starts at the end of the
|
||||
previous match. If all these successive searches succeed, the search
|
||||
succeeds, moving point and returning its new value. Otherwise the
|
||||
search fails. What @code{re-search-forward} does when the search
|
||||
fails depends on the value of @var{noerror}:
|
||||
What @code{re-search-forward} does when the search fails depends on
|
||||
the value of @var{noerror}:
|
||||
|
||||
@table @asis
|
||||
@item @code{nil}
|
||||
|
@ -1033,6 +1033,19 @@ Move point to @var{limit} (or the end of the accessible portion of the
|
|||
buffer) and return @code{nil}.
|
||||
@end table
|
||||
|
||||
The argument @var{noerror} only affects valid searches which fail to
|
||||
find a match. Invalid arguments cause errors regardless of
|
||||
@var{noerror}.
|
||||
|
||||
If @var{count} is a positive number @var{n}, the search is done
|
||||
@var{n} times; each successive search starts at the end of the
|
||||
previous match. If all these successive searches succeed, the
|
||||
function call succeeds, moving point and returning its new value.
|
||||
Otherwise the function call fails, with results depending on the value
|
||||
of @var{noerror}, as described above. If @var{count} is a negative
|
||||
number -@var{n}, the search is done @var{n} times in the opposite
|
||||
(backward) direction.
|
||||
|
||||
In the following example, point is initially before the @samp{T}.
|
||||
Evaluating the search call moves point to the end of that line (between
|
||||
the @samp{t} of @samp{hat} and the newline).
|
||||
|
@ -1057,7 +1070,7 @@ comes back" twice.
|
|||
@end example
|
||||
@end deffn
|
||||
|
||||
@deffn Command re-search-backward regexp &optional limit noerror repeat
|
||||
@deffn Command re-search-backward regexp &optional limit noerror count
|
||||
This function searches backward in the current buffer for a string of
|
||||
text that is matched by the regular expression @var{regexp}, leaving
|
||||
point at the beginning of the first text found.
|
||||
|
@ -1228,13 +1241,13 @@ non-greedy repetition operators (@pxref{Regexp Special, non-greedy}).
|
|||
This is because POSIX backtracking conflicts with the semantics of
|
||||
non-greedy repetition.
|
||||
|
||||
@deffn Command posix-search-forward regexp &optional limit noerror repeat
|
||||
@deffn Command posix-search-forward regexp &optional limit noerror count
|
||||
This is like @code{re-search-forward} except that it performs the full
|
||||
backtracking specified by the POSIX standard for regular expression
|
||||
matching.
|
||||
@end deffn
|
||||
|
||||
@deffn Command posix-search-backward regexp &optional limit noerror repeat
|
||||
@deffn Command posix-search-backward regexp &optional limit noerror count
|
||||
This is like @code{re-search-backward} except that it performs the full
|
||||
backtracking specified by the POSIX standard for regular expression
|
||||
matching.
|
||||
|
|
|
@ -503,8 +503,9 @@ the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
|
|||
If your system does not support a locale environment, this function
|
||||
behaves like @code{string-equal}.
|
||||
|
||||
Do @emph{not} use this function to compare file names for equality, only
|
||||
for sorting them.
|
||||
Do @emph{not} use this function to compare file names for equality, as
|
||||
filesystems generally don't honor linguistic equivalence of strings
|
||||
that collation implements.
|
||||
@end defun
|
||||
|
||||
@defun string-prefix-p string1 string2 &optional ignore-case
|
||||
|
|
|
@ -931,6 +931,7 @@ status of its latest version.
|
|||
@menu
|
||||
* Origin of the term Emacs::
|
||||
* Latest version of Emacs::
|
||||
* New in Emacs 25::
|
||||
* New in Emacs 24::
|
||||
* New in Emacs 23::
|
||||
* New in Emacs 22::
|
||||
|
@ -977,9 +978,9 @@ conventions}).
|
|||
@cindex Bazaar repository, Emacs
|
||||
|
||||
Emacs @value{EMACSVER} is the current version as of this writing. A version
|
||||
number with two components (e.g., @samp{22.1}) indicates a released
|
||||
number with two components (e.g., @samp{24.5}) indicates a released
|
||||
version; three components indicate a development
|
||||
version (e.g., @samp{23.0.50} is what will eventually become @samp{23.1}).
|
||||
version (e.g., @samp{26.0.50} is what will eventually become @samp{26.1}).
|
||||
|
||||
Emacs is under active development, hosted at
|
||||
@uref{http://savannah.gnu.org/projects/emacs/, Savannah}.
|
||||
|
@ -998,6 +999,106 @@ Emacs, type @kbd{C-h C-n} (@kbd{M-x view-emacs-news}). As of Emacs 22,
|
|||
you can give this command a prefix argument to read about which features
|
||||
were new in older versions.
|
||||
|
||||
@node New in Emacs 25
|
||||
@section What is different about Emacs 25?
|
||||
@cindex Differences between Emacs 24 and Emacs 25
|
||||
@cindex Emacs 25, new features in
|
||||
|
||||
@itemize
|
||||
@cindex xwidgets
|
||||
@item
|
||||
Emacs can now embed native widgets inside Emacs buffers, if you have
|
||||
gtk3 and webkitgtk3 installed. E.g., to access the embedded webkit
|
||||
browser widget, type @kbd{M-x xwidget-webkit-browse-url}.
|
||||
|
||||
@cindex loadable modules
|
||||
@item
|
||||
Emacs can now dynamically load external modules compiled as shared
|
||||
libraries.
|
||||
|
||||
@cindex Unicode characters, typing easily
|
||||
@item
|
||||
@kbd{C-x 8} has new shorthands for several popular characters, type
|
||||
@kbd{C-x 8 C-h} to list shorthands.
|
||||
|
||||
@cindex automatic display of Lisp APIs
|
||||
@item
|
||||
A new minor mode @code{global-eldoc-mode} is enabled by default, and
|
||||
shows in the echo area or in the mode line the argument list of the
|
||||
Emacs Lisp form at point.
|
||||
|
||||
@cindex pasting text on text terminals
|
||||
@cindex bracketed paste mode
|
||||
@item
|
||||
On text terminals that support the ``bracketed paste mode'' EMacs now
|
||||
uses that mode by default. This mode allows Emacs to distinguish
|
||||
between pasted text and text typed by the user.
|
||||
|
||||
@cindex Unicode 9.0.0
|
||||
@item
|
||||
Emacs 25 comes with data files imported from the latest Unicode
|
||||
Standard version 9.0.0.
|
||||
|
||||
@cindex bidirectional editing
|
||||
@item
|
||||
The support for bidirectional editing was updated to include all the
|
||||
features mandated by the latest Unicode Standard version 9.0.0.
|
||||
|
||||
@cindex character folding in searches
|
||||
@item
|
||||
Search command can now perform character folding in matches. This is
|
||||
analogous to case folding, but instead of disregarding case variants,
|
||||
it disregards wider classes of distinctions between similar
|
||||
characters, such as matching different variants of double quote
|
||||
characters, ignoring diacritics, etc.
|
||||
|
||||
@cindex eww
|
||||
@item
|
||||
The Emacs Web Browser EWW was extended to render text using
|
||||
variable-pitch fonts, and got other new features.
|
||||
|
||||
@cindex rmail, and HTML mails
|
||||
@item
|
||||
Rmail can now render HTML mail messages, if Emacs is built with
|
||||
libxml2 or if you have the Lynx browser installed.
|
||||
|
||||
@cindex support for push commands in VC
|
||||
@item
|
||||
VC now has basic support for @code{push} commands, implemented for
|
||||
Bzr, Git, and Hg.
|
||||
|
||||
@cindex hide-ifdef, C/C@t{++} expressions in macros
|
||||
@item
|
||||
Hide-IfDef mode now support full C/C@t{++} expressions in macros,
|
||||
macro argument expansion, interactive macro evaluation and automatic
|
||||
scanning of @code{#define}d symbols.
|
||||
|
||||
@cindex xref
|
||||
@item
|
||||
New package Xref replaces Etags's front-end and UI. Xref provides a
|
||||
generic framework and new commands to find and move to definitions of
|
||||
functions, macros, data structures etc., as well as go back to the
|
||||
location where you were before moving to a definition. It supersedes
|
||||
and obsoletes many Etags commands, while still using the etags.el code
|
||||
that reads the TAGS tables as one of its back-ends. As result, the
|
||||
popular key bindings @kbd{M-.} and @kbd{M-,} have been changed to
|
||||
invoke Xref commands.
|
||||
|
||||
@cindex project
|
||||
@item
|
||||
The new package Project provides generic infrastructure for dealing
|
||||
with projects.
|
||||
|
||||
@cindex horizontal scroll bars
|
||||
@item
|
||||
Emacs can now draw horizontal scroll bars on some platforms that
|
||||
provide toolkit scroll bars, namely Gtk+, Lucid, Motif and Windows.
|
||||
|
||||
@end itemize
|
||||
|
||||
Consult the Emacs @file{NEWS} file (@kbd{C-h n}) for the full list of
|
||||
changes in Emacs 25.
|
||||
|
||||
@node New in Emacs 24
|
||||
@section What is different about Emacs 24?
|
||||
@cindex Differences between Emacs 23 and Emacs 24
|
||||
|
|
|
@ -958,13 +958,13 @@ occurrence of the failure. So far, the failure has been observed with
|
|||
GTK+ versions 3.4.2, 3.14.5 and 3.18.7. However, another 3.4.2 build
|
||||
does not exhibit the bug.
|
||||
|
||||
Some window managers (xfce) apparently work around this failure by
|
||||
Some window managers (Xfce) apparently work around this failure by
|
||||
cropping the menu bar. With other windows managers, it's possible to
|
||||
shrink the frame manually after the problem occurs, e.g. by dragging the
|
||||
frame's border with the mouse. However, some window managers have been
|
||||
reported to refuse such attempts and snap back to the width needed to
|
||||
show the full menu bar (wmii) or at least cause the screen to flicker
|
||||
during such resizing attempts (i3, icewm).
|
||||
during such resizing attempts (i3, IceWM).
|
||||
|
||||
See also http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15700,
|
||||
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22000,
|
||||
|
|
|
@ -86,6 +86,11 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
;; The autoloads.el mechanism which adds package--builtin-versions
|
||||
;; maintenance to loaddefs.el doesn't work for preloaded packages (such
|
||||
;; as this one), so we have to do it by hand!
|
||||
(push (purecopy '(cl-generic 1 0)) package--builtin-versions)
|
||||
|
||||
;; Note: For generic functions that dispatch on several arguments (i.e. those
|
||||
;; which use the multiple-dispatch feature), we always use the same "tagcodes"
|
||||
;; and the same set of arguments on which to dispatch. This works, but is
|
||||
|
@ -697,6 +702,15 @@ FUN is the function that should be called when METHOD calls
|
|||
(setq fun (cl-generic-call-method generic method fun)))
|
||||
fun)))))
|
||||
|
||||
(defun cl-generic-apply (generic args)
|
||||
"Like `apply' but takes a cl-generic object rather than a function."
|
||||
;; Handy in cl-no-applicable-method, for example.
|
||||
;; In Common Lisp, generic-function objects are funcallable. Ideally
|
||||
;; we'd want the same in Elisp, but it would either require using a very
|
||||
;; different (and less efficient) representation of cl--generic objects,
|
||||
;; or non-trivial changes in the general infrastructure (compiler and such).
|
||||
(apply (cl--generic-name generic) args))
|
||||
|
||||
(defun cl--generic-arg-specializer (method dispatch-arg)
|
||||
(or (if (integerp dispatch-arg)
|
||||
(nth dispatch-arg
|
||||
|
|
|
@ -327,6 +327,20 @@ FORM is of the form (ARGS . BODY)."
|
|||
Like normal `defun', except ARGLIST allows full Common Lisp conventions,
|
||||
and BODY is implicitly surrounded by (cl-block NAME ...).
|
||||
|
||||
The full form of a Common Lisp function argument list is
|
||||
|
||||
(VAR...
|
||||
[&optional (VAR [INITFORM [SVAR]])...]
|
||||
[&rest|&body VAR]
|
||||
[&key (([KEYWORD] VAR) [INITFORM [SVAR]])... [&allow-other-keys]]
|
||||
[&aux (VAR [INITFORM])...])
|
||||
|
||||
VAR maybe be replaced recursively with an argument list for
|
||||
destructing, `&whole' is supported within these sublists. If
|
||||
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
|
||||
written simply `VAR'. See the Info node `(cl)Argument Lists' for
|
||||
more details.
|
||||
|
||||
\(fn NAME ARGLIST [DOCSTRING] BODY...)"
|
||||
(declare (debug
|
||||
;; Same as defun but use cl-lambda-list.
|
||||
|
@ -406,6 +420,21 @@ and BODY is implicitly surrounded by (cl-block NAME ...).
|
|||
Like normal `defmacro', except ARGLIST allows full Common Lisp conventions,
|
||||
and BODY is implicitly surrounded by (cl-block NAME ...).
|
||||
|
||||
The full form of a Common Lisp macro argument list is
|
||||
|
||||
(VAR...
|
||||
[&optional (VAR [INITFORM [SVAR]])...]
|
||||
[&rest|&body VAR]
|
||||
[&key (([KEYWORD] VAR) [INITFORM [SVAR]])... [&allow-other-keys]]
|
||||
[&aux (VAR [INITFORM])...]
|
||||
[&environment VAR])
|
||||
|
||||
VAR maybe be replaced recursively with an argument list for
|
||||
destructing, `&whole' is supported within these sublists. If
|
||||
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
|
||||
written simply `VAR'. See the Info node `(cl)Argument Lists' for
|
||||
more details.
|
||||
|
||||
\(fn NAME ARGLIST [DOCSTRING] BODY...)"
|
||||
(declare (debug
|
||||
(&define name cl-macro-list cl-declarations-or-string def-body))
|
||||
|
|
|
@ -188,7 +188,8 @@ Summary:
|
|||
(`no-applicable-method
|
||||
(setq method 'cl-no-applicable-method)
|
||||
(setq specializers `(generic ,@specializers))
|
||||
(lambda (generic arg &rest args) (apply code arg generic args)))
|
||||
(lambda (generic arg &rest args)
|
||||
(apply code arg (cl--generic-name generic) (cons arg args))))
|
||||
(_ code))))
|
||||
(cl-generic-define-method
|
||||
method (unless (memq kind '(nil :primary)) (list kind))
|
||||
|
|
|
@ -971,7 +971,7 @@ If a consistent order does not exist, signal an error."
|
|||
|
||||
(defun eieio--class-precedence-c3 (class)
|
||||
"Return all parents of CLASS in c3 order."
|
||||
(let ((parents (eieio--class-parents (cl--find-class class))))
|
||||
(let ((parents (eieio--class-parents class)))
|
||||
(eieio--c3-merge-lists
|
||||
(list class)
|
||||
(append
|
||||
|
|
|
@ -105,7 +105,7 @@ Please send improvements and fixes to the maintainer."
|
|||
(defcustom find-feature-regexp
|
||||
(concat ";;; Code:")
|
||||
"The regexp used by `xref-find-definitions' when searching for a feature definition.
|
||||
Note it must contain a `%s' at the place where `format'
|
||||
Note it may contain up to one `%s' at the place where `format'
|
||||
should insert the feature name."
|
||||
;; We search for ";;; Code" rather than (feature '%s) because the
|
||||
;; former is near the start of the code, and the latter is very
|
||||
|
|
|
@ -2259,13 +2259,13 @@ Otherwise no newline is inserted."
|
|||
(package--print-help-section "Status")
|
||||
(cond (built-in
|
||||
(insert (propertize (capitalize status)
|
||||
'font-lock-face 'package-status-builtin-face)
|
||||
'font-lock-face 'package-status-built-in)
|
||||
"."))
|
||||
(pkg-dir
|
||||
(insert (propertize (if (member status '("unsigned" "dependency"))
|
||||
"Installed"
|
||||
(capitalize status))
|
||||
'font-lock-face 'package-status-builtin-face))
|
||||
'font-lock-face 'package-status-built-in))
|
||||
(insert (substitute-command-keys " in `"))
|
||||
(let ((dir (abbreviate-file-name
|
||||
(file-name-as-directory
|
||||
|
@ -2278,7 +2278,7 @@ Otherwise no newline is inserted."
|
|||
(insert (substitute-command-keys
|
||||
"',\n shadowing a ")
|
||||
(propertize "built-in package"
|
||||
'font-lock-face 'package-status-builtin-face))
|
||||
'font-lock-face 'package-status-built-in))
|
||||
(insert (substitute-command-keys "'")))
|
||||
(if signed
|
||||
(insert ".")
|
||||
|
@ -2830,13 +2830,14 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])."
|
|||
"Face used on package description summaries in the package menu."
|
||||
:version "25.1")
|
||||
|
||||
;; Shame this hyphenates "built-in", when "font-lock-builtin-face" doesn't.
|
||||
(defface package-status-built-in
|
||||
'((t :inherit font-lock-builtin-face))
|
||||
"Face used on the status and version of built-in packages."
|
||||
:version "25.1")
|
||||
|
||||
(defface package-status-external
|
||||
'((t :inherit package-status-builtin-face))
|
||||
'((t :inherit package-status-built-in))
|
||||
"Face used on the status and version of external packages."
|
||||
:version "25.1")
|
||||
|
||||
|
|
|
@ -4700,14 +4700,20 @@ By default, makes the previous version into a backup file
|
|||
Prefixed with one \\[universal-argument], marks this version
|
||||
to become a backup when the next save is done.
|
||||
Prefixed with two \\[universal-argument]'s,
|
||||
unconditionally makes the previous version into a backup file.
|
||||
makes the previous version into a backup file.
|
||||
Prefixed with three \\[universal-argument]'s, marks this version
|
||||
to become a backup when the next save is done,
|
||||
and unconditionally makes the previous version into a backup file.
|
||||
and makes the previous version into a backup file.
|
||||
|
||||
With a numeric prefix argument of 0, never make the previous version
|
||||
into a backup file.
|
||||
|
||||
Note that the various variables that control backups, such
|
||||
as `version-control', `backup-enable-predicate', `vc-make-backup-files',
|
||||
and `backup-inhibited', to name just the more popular ones, still
|
||||
control whether a backup will actually be produced, even when you
|
||||
invoke this command prefixed with two or three \\[universal-argument]'s.
|
||||
|
||||
If a file's name is FOO, the names of its numbered backup versions are
|
||||
FOO.~i~ for various integers i. A non-numbered backup file is called FOO~.
|
||||
Numeric backups (rather than FOO~) will be made if value of
|
||||
|
|
|
@ -1628,10 +1628,17 @@ Used in `word-search-forward', `word-search-backward',
|
|||
"Search backward from point for STRING, ignoring differences in punctuation.
|
||||
Set point to the beginning of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend before that position.
|
||||
The match found must not begin before that position. A value of nil
|
||||
means search to the beginning of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
If not nil and not t, position at limit of search and return nil.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
forward, instead of backward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth to last one (or
|
||||
last, if COUNT is 1 or nil) in the buffer located entirely before
|
||||
the origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Relies on the function `word-search-regexp' to convert a sequence
|
||||
of words in STRING to a regexp used to search words without regard
|
||||
|
@ -1645,10 +1652,17 @@ has no effect on it."
|
|||
"Search forward from point for STRING, ignoring differences in punctuation.
|
||||
Set point to the end of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend after that position.
|
||||
The match found must not end after that position. A value of nil
|
||||
means search to the end of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
backward, instead of forward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth one (or first,
|
||||
if COUNT is 1 or nil) in the buffer located entirely after the
|
||||
origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Relies on the function `word-search-regexp' to convert a sequence
|
||||
of words in STRING to a regexp used to search words without regard
|
||||
|
@ -1666,10 +1680,17 @@ Unlike `word-search-backward', the end of STRING need not match a word
|
|||
boundary, unless STRING ends in whitespace.
|
||||
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend before that position.
|
||||
The match found must not begin before that position. A value of nil
|
||||
means search to the beginning of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
If not nil and not t, position at limit of search and return nil.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
forward, instead of backward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth to last one (or
|
||||
last, if COUNT is 1 or nil) in the buffer located entirely before
|
||||
the origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Relies on the function `word-search-regexp' to convert a sequence
|
||||
of words in STRING to a regexp used to search words without regard
|
||||
|
@ -1687,10 +1708,17 @@ Unlike `word-search-forward', the end of STRING need not match a word
|
|||
boundary, unless STRING ends in whitespace.
|
||||
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend after that position.
|
||||
The match found must not end after that position. A value of nil
|
||||
means search to the end of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
backward, instead of forward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth one (or first,
|
||||
if COUNT is 1 or nil) in the buffer located entirely after the
|
||||
origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Relies on the function `word-search-regexp' to convert a sequence
|
||||
of words in STRING to a regexp used to search words without regard
|
||||
|
|
|
@ -744,8 +744,9 @@ its value is returned."
|
|||
|
||||
(defun mouse-on-link-p (pos)
|
||||
"Return non-nil if POS is on a link in the current buffer.
|
||||
POS must be a buffer position in the current buffer or a mouse
|
||||
event location in the selected window (see `event-start').
|
||||
POS must specify a buffer position in the current buffer, as a list
|
||||
of the form returned by the `event-start' and `event-end' functions,
|
||||
or a mouse event location in the selected window (see `event-start').
|
||||
However, if `mouse-1-click-in-non-selected-windows' is non-nil,
|
||||
POS may be a mouse event location in any window.
|
||||
|
||||
|
|
|
@ -2877,18 +2877,23 @@ the result will be a local, non-Tramp, file name."
|
|||
tramp-initial-end-of-output))
|
||||
;; We use as environment the difference to toplevel
|
||||
;; `process-environment'.
|
||||
env
|
||||
(env
|
||||
(dolist
|
||||
(elt
|
||||
(cons prompt (nreverse (copy-sequence process-environment)))
|
||||
env)
|
||||
(or (member elt (default-toplevel-value 'process-environment))
|
||||
(setq env (cons elt env)))))
|
||||
env uenv
|
||||
(env (dolist (elt (cons prompt process-environment) env)
|
||||
(or (member elt (default-toplevel-value 'process-environment))
|
||||
(if (string-match "=" elt)
|
||||
(setq env (append env `(,elt)))
|
||||
(if (tramp-get-env-with-u-option v)
|
||||
(setq env (append `("-u" ,elt) env))
|
||||
(setq uenv (cons elt uenv)))))))
|
||||
(command
|
||||
(when (stringp program)
|
||||
(format "cd %s && exec %s env %s %s"
|
||||
(format "cd %s && %s exec %s env %s %s"
|
||||
(tramp-shell-quote-argument localname)
|
||||
(if uenv
|
||||
(format
|
||||
"unset %s &&"
|
||||
(mapconcat 'tramp-shell-quote-argument uenv " "))
|
||||
"")
|
||||
(if heredoc (format "<<'%s'" tramp-end-of-heredoc) "")
|
||||
(mapconcat 'tramp-shell-quote-argument env " ")
|
||||
(if heredoc
|
||||
|
@ -2974,20 +2979,28 @@ the result will be a local, non-Tramp, file name."
|
|||
(error "Implementation does not handle immediate return"))
|
||||
|
||||
(with-parsed-tramp-file-name default-directory nil
|
||||
(let (command env input tmpinput stderr tmpstderr outbuf ret)
|
||||
(let (command env uenv input tmpinput stderr tmpstderr outbuf ret)
|
||||
;; Compute command.
|
||||
(setq command (mapconcat 'tramp-shell-quote-argument
|
||||
(cons program args) " "))
|
||||
;; We use as environment the difference to toplevel `process-environment'.
|
||||
(setq env
|
||||
(dolist (elt (nreverse (copy-sequence process-environment)) env)
|
||||
(or (member elt (default-toplevel-value 'process-environment))
|
||||
(setq env (cons elt env)))))
|
||||
(dolist (elt process-environment)
|
||||
(or (member elt (default-toplevel-value 'process-environment))
|
||||
(if (string-match "=" elt)
|
||||
(setq env (append env `(,elt)))
|
||||
(if (tramp-get-env-with-u-option v)
|
||||
(setq env (append `("-u" ,elt) env))
|
||||
(setq uenv (cons elt uenv))))))
|
||||
(when env
|
||||
(setq command
|
||||
(format
|
||||
"env %s %s"
|
||||
(mapconcat 'tramp-shell-quote-argument env " ") command)))
|
||||
(when uenv
|
||||
(setq command
|
||||
(format
|
||||
"unset %s && %s"
|
||||
(mapconcat 'tramp-shell-quote-argument uenv " ") command)))
|
||||
;; Determine input.
|
||||
(if (null infile)
|
||||
(setq input "/dev/null")
|
||||
|
@ -5528,6 +5541,13 @@ Return ATTR."
|
|||
tramp-unknown-id-string)
|
||||
(t res)))))
|
||||
|
||||
(defun tramp-get-env-with-u-option (vec)
|
||||
(with-tramp-connection-property vec "env-u-option"
|
||||
(tramp-message vec 5 "Checking, whether `env -u' works")
|
||||
;; Option "-u" is a GNU extension.
|
||||
(tramp-send-command-and-check
|
||||
vec "env FOO=foo env -u FOO 2>/dev/null | grep -qv FOO" t)))
|
||||
|
||||
;; Some predefined connection properties.
|
||||
(defun tramp-get-inline-compress (vec prop size)
|
||||
"Return the compress command related to PROP.
|
||||
|
|
|
@ -3524,7 +3524,7 @@ connection buffer."
|
|||
(with-current-buffer (tramp-get-connection-buffer vec)
|
||||
(let (buffer-read-only) (delete-region pos (point))))))))
|
||||
|
||||
:;; Utility functions:
|
||||
;;; Utility functions:
|
||||
|
||||
(defun tramp-accept-process-output (&optional proc timeout timeout-msecs)
|
||||
"Like `accept-process-output' for Tramp processes.
|
||||
|
|
|
@ -2224,7 +2224,9 @@ advance_to_char_boundary (ptrdiff_t byte_pos)
|
|||
|
||||
DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text,
|
||||
1, 1, 0,
|
||||
doc: /* Swap the text between current buffer and BUFFER. */)
|
||||
doc: /* Swap the text between current buffer and BUFFER.
|
||||
Using this function from `save-excursion' might produce surprising
|
||||
results, see Info node `(elisp)Swapping Text'. */)
|
||||
(Lisp_Object buffer)
|
||||
{
|
||||
struct buffer *other_buffer;
|
||||
|
|
|
@ -449,8 +449,7 @@ the codeset part of the locale cannot be \"UTF-8\" on MS-Windows.
|
|||
If your system does not support a locale environment, this function
|
||||
behaves like `string-equal'.
|
||||
|
||||
Do NOT use this function to compare file names for equality, only
|
||||
for sorting them. */)
|
||||
Do NOT use this function to compare file names for equality. */)
|
||||
(Lisp_Object s1, Lisp_Object s2, Lisp_Object locale, Lisp_Object ignore_case)
|
||||
{
|
||||
#if defined __STDC_ISO_10646__ || defined WINDOWSNT
|
||||
|
|
|
@ -8910,13 +8910,13 @@ and `imagemagick-types-inhibit'. */)
|
|||
{
|
||||
Lisp_Object typelist = Qnil;
|
||||
size_t numf = 0;
|
||||
ExceptionInfo ex;
|
||||
ExceptionInfo *ex;
|
||||
char **imtypes;
|
||||
size_t i;
|
||||
|
||||
GetExceptionInfo(&ex);
|
||||
imtypes = GetMagickList ("*", &numf, &ex);
|
||||
DestroyExceptionInfo(&ex);
|
||||
ex = AcquireExceptionInfo ();
|
||||
imtypes = GetMagickList ("*", &numf, ex);
|
||||
DestroyExceptionInfo (ex);
|
||||
|
||||
for (i = 0; i < numf; i++)
|
||||
{
|
||||
|
|
|
@ -2030,6 +2030,7 @@ whether or not it is currently displayed in some window. */)
|
|||
struct position pos;
|
||||
pos = *vmotion (PT, PT_BYTE, XINT (lines), w);
|
||||
SET_PT_BOTH (pos.bufpos, pos.bytepos);
|
||||
it.vpos = pos.vpos;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
85
src/search.c
85
src/search.c
|
@ -2157,12 +2157,17 @@ DEFUN ("search-backward", Fsearch_backward, Ssearch_backward, 1, 4,
|
|||
doc: /* Search backward from point for STRING.
|
||||
Set point to the beginning of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend before that position.
|
||||
The match found must not begin before that position. A value of nil
|
||||
means search to the beginning of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, position at limit of search and return nil.
|
||||
Optional fourth argument COUNT, if non-nil, means to search for COUNT
|
||||
successive occurrences. If COUNT is negative, search forward,
|
||||
instead of backward, for -COUNT occurrences.
|
||||
If not nil and not t, position at limit of search and return nil.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
forward, instead of backward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth to last one (or
|
||||
last, if COUNT is 1 or nil) in the buffer located entirely before
|
||||
the origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Search case-sensitivity is determined by the value of the variable
|
||||
`case-fold-search', which see.
|
||||
|
@ -2177,13 +2182,17 @@ DEFUN ("search-forward", Fsearch_forward, Ssearch_forward, 1, 4, "MSearch: ",
|
|||
doc: /* Search forward from point for STRING.
|
||||
Set point to the end of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend after that position. A value of nil is
|
||||
equivalent to (point-max).
|
||||
The match found must not end after that position. A value of nil
|
||||
means search to the end of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument COUNT, if non-nil, means to search for COUNT
|
||||
successive occurrences. If COUNT is negative, search backward,
|
||||
instead of forward, for -COUNT occurrences.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
backward, instead of forward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth one (or first,
|
||||
if COUNT is 1 or nil) in the buffer located entirely after the
|
||||
origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Search case-sensitivity is determined by the value of the variable
|
||||
`case-fold-search', which see.
|
||||
|
@ -2197,14 +2206,19 @@ See also the functions `match-beginning', `match-end' and `replace-match'. */)
|
|||
DEFUN ("re-search-backward", Fre_search_backward, Sre_search_backward, 1, 4,
|
||||
"sRE search backward: ",
|
||||
doc: /* Search backward from point for match for regular expression REGEXP.
|
||||
Set point to the beginning of the match, and return point.
|
||||
The match found is the one starting last in the buffer
|
||||
and yet ending before the origin of the search.
|
||||
Set point to the beginning of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must start at or after that position.
|
||||
The match found must not begin before that position. A value of nil
|
||||
means search to the beginning of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
If not nil and not t, position at limit of search and return nil.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
forward, instead of backward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth to last one (or
|
||||
last, if COUNT is 1 or nil) in the buffer located entirely before
|
||||
the origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Search case-sensitivity is determined by the value of the variable
|
||||
`case-fold-search', which see.
|
||||
|
@ -2221,10 +2235,17 @@ DEFUN ("re-search-forward", Fre_search_forward, Sre_search_forward, 1, 4,
|
|||
doc: /* Search forward from point for regular expression REGEXP.
|
||||
Set point to the end of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend after that position.
|
||||
The match found must not end after that position. A value of nil
|
||||
means search to the end of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
backward, instead of forward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth one (or first,
|
||||
if COUNT is 1 or nil) in the buffer located entirely after the
|
||||
origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Search case-sensitivity is determined by the value of the variable
|
||||
`case-fold-search', which see.
|
||||
|
@ -2240,14 +2261,19 @@ DEFUN ("posix-search-backward", Fposix_search_backward, Sposix_search_backward,
|
|||
"sPosix search backward: ",
|
||||
doc: /* Search backward from point for match for regular expression REGEXP.
|
||||
Find the longest match in accord with Posix regular expression rules.
|
||||
Set point to the beginning of the match, and return point.
|
||||
The match found is the one starting last in the buffer
|
||||
and yet ending before the origin of the search.
|
||||
Set point to the beginning of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must start at or after that position.
|
||||
The match found must not begin before that position. A value of nil
|
||||
means search to the beginning of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
If not nil and not t, position at limit of search and return nil.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
forward, instead of backward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth to last one (or
|
||||
last, if COUNT is 1 or nil) in the buffer located entirely before
|
||||
the origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Search case-sensitivity is determined by the value of the variable
|
||||
`case-fold-search', which see.
|
||||
|
@ -2265,10 +2291,17 @@ DEFUN ("posix-search-forward", Fposix_search_forward, Sposix_search_forward, 1,
|
|||
Find the longest match in accord with Posix regular expression rules.
|
||||
Set point to the end of the occurrence found, and return point.
|
||||
An optional second argument bounds the search; it is a buffer position.
|
||||
The match found must not extend after that position.
|
||||
The match found must not end after that position. A value of nil
|
||||
means search to the end of the accessible portion of the buffer.
|
||||
Optional third argument, if t, means if fail just return nil (no error).
|
||||
If not nil and not t, move to limit of search and return nil.
|
||||
Optional fourth argument is repeat count--search for successive occurrences.
|
||||
Optional fourth argument COUNT, if a positive number, means to search
|
||||
for COUNT successive occurrences. If COUNT is negative, search
|
||||
backward, instead of forward, for -COUNT occurrences. A value of
|
||||
nil means the same as 1.
|
||||
With COUNT positive, the match found is the COUNTth one (or first,
|
||||
if COUNT is 1 or nil) in the buffer located entirely after the
|
||||
origin of the search; correspondingly with COUNT negative.
|
||||
|
||||
Search case-sensitivity is determined by the value of the variable
|
||||
`case-fold-search', which see.
|
||||
|
|
|
@ -1702,7 +1702,99 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
|
|||
;; Cleanup.
|
||||
(ignore-errors (delete-file tmp-name)))))
|
||||
|
||||
(ert-deftest tramp-test29-vc-registered ()
|
||||
(defun tramp-test--shell-command-to-string-asynchronously (command)
|
||||
"Like `shell-command-to-string', but for asynchronous processes."
|
||||
(with-temp-buffer
|
||||
(async-shell-command command (current-buffer))
|
||||
;; Suppress nasty messages.
|
||||
(set-process-sentinel (get-buffer-process (current-buffer)) nil)
|
||||
(while (get-buffer-process (current-buffer))
|
||||
(accept-process-output (get-buffer-process (current-buffer)) 0.1))
|
||||
(accept-process-output)
|
||||
(buffer-substring-no-properties (point-min) (point-max))))
|
||||
|
||||
;; This test is inspired by Bug#23952.
|
||||
(ert-deftest tramp-test29-environment-variables ()
|
||||
"Check that remote processes set / unset environment variables properly."
|
||||
:tags '(:expensive-test)
|
||||
(skip-unless (tramp--test-enabled))
|
||||
(skip-unless
|
||||
(eq
|
||||
(tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
|
||||
'tramp-sh-file-name-handler))
|
||||
|
||||
(dolist (this-shell-command-to-string
|
||||
'(;; Synchronously.
|
||||
shell-command-to-string
|
||||
;; Asynchronously.
|
||||
tramp-test--shell-command-to-string-asynchronously))
|
||||
|
||||
(let ((default-directory tramp-test-temporary-file-directory)
|
||||
(shell-file-name "/bin/sh")
|
||||
(envvar (concat "VAR_" (upcase (md5 (current-time-string)))))
|
||||
kill-buffer-query-functions)
|
||||
|
||||
(unwind-protect
|
||||
;; Set a value.
|
||||
(let ((process-environment
|
||||
(cons (concat envvar "=foo") process-environment)))
|
||||
;; Default value.
|
||||
(should
|
||||
(string-match
|
||||
"foo"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}" envvar))))))
|
||||
|
||||
(unwind-protect
|
||||
;; Set the empty value.
|
||||
(let ((process-environment
|
||||
(cons (concat envvar "=") process-environment)))
|
||||
;; Value is null.
|
||||
(should
|
||||
(string-match
|
||||
"bla"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}" envvar))))
|
||||
;; Variable is set.
|
||||
(should
|
||||
(string-match
|
||||
(regexp-quote envvar)
|
||||
(funcall this-shell-command-to-string "set")))))
|
||||
|
||||
;; We force a reconnect, in order to have a clean environment.
|
||||
(tramp-cleanup-connection
|
||||
(tramp-dissect-file-name tramp-test-temporary-file-directory)
|
||||
'keep-debug 'keep-password)
|
||||
(unwind-protect
|
||||
;; Unset the variable.
|
||||
(let ((tramp-remote-process-environment
|
||||
(cons (concat envvar "=foo")
|
||||
tramp-remote-process-environment)))
|
||||
;; Set the initial value, we want to unset below.
|
||||
(should
|
||||
(string-match
|
||||
"foo"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}" envvar))))
|
||||
(let ((process-environment
|
||||
(cons envvar process-environment)))
|
||||
;; Variable is unset.
|
||||
(should
|
||||
(string-match
|
||||
"bla"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}" envvar))))
|
||||
;; Variable is unset.
|
||||
(should-not
|
||||
(string-match
|
||||
(regexp-quote envvar)
|
||||
(funcall this-shell-command-to-string "set")))))))))
|
||||
|
||||
(ert-deftest tramp-test30-vc-registered ()
|
||||
"Check `vc-registered'."
|
||||
:tags '(:expensive-test)
|
||||
(skip-unless (tramp--test-enabled))
|
||||
|
@ -1771,7 +1863,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
|
|||
;; Cleanup.
|
||||
(ignore-errors (delete-directory tmp-name1 'recursive)))))
|
||||
|
||||
(ert-deftest tramp-test30-make-auto-save-file-name ()
|
||||
(ert-deftest tramp-test31-make-auto-save-file-name ()
|
||||
"Check `make-auto-save-file-name'."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
|
||||
|
@ -2031,7 +2123,7 @@ Several special characters do not work properly there."
|
|||
(ignore-errors (delete-directory tmp-name2 'recursive)))))
|
||||
|
||||
(defun tramp--test-special-characters ()
|
||||
"Perform the test in `tramp-test31-special-characters*'."
|
||||
"Perform the test in `tramp-test32-special-characters*'."
|
||||
;; Newlines, slashes and backslashes in file names are not
|
||||
;; supported. So we don't test. And we don't test the tab
|
||||
;; character on Windows or Cygwin, because the backslash is
|
||||
|
@ -2072,14 +2164,14 @@ Several special characters do not work properly there."
|
|||
"{foo}bar{baz}"))
|
||||
|
||||
;; These tests are inspired by Bug#17238.
|
||||
(ert-deftest tramp-test31-special-characters ()
|
||||
(ert-deftest tramp-test32-special-characters ()
|
||||
"Check special characters in file names."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
(skip-unless (not (tramp--test-rsync-p)))
|
||||
|
||||
(tramp--test-special-characters))
|
||||
|
||||
(ert-deftest tramp-test31-special-characters-with-stat ()
|
||||
(ert-deftest tramp-test32-special-characters-with-stat ()
|
||||
"Check special characters in file names.
|
||||
Use the `stat' command."
|
||||
:tags '(:expensive-test)
|
||||
|
@ -2099,7 +2191,7 @@ Use the `stat' command."
|
|||
tramp-connection-properties)))
|
||||
(tramp--test-special-characters)))
|
||||
|
||||
(ert-deftest tramp-test31-special-characters-with-perl ()
|
||||
(ert-deftest tramp-test32-special-characters-with-perl ()
|
||||
"Check special characters in file names.
|
||||
Use the `perl' command."
|
||||
:tags '(:expensive-test)
|
||||
|
@ -2122,7 +2214,7 @@ Use the `perl' command."
|
|||
tramp-connection-properties)))
|
||||
(tramp--test-special-characters)))
|
||||
|
||||
(ert-deftest tramp-test31-special-characters-with-ls ()
|
||||
(ert-deftest tramp-test32-special-characters-with-ls ()
|
||||
"Check special characters in file names.
|
||||
Use the `ls' command."
|
||||
:tags '(:expensive-test)
|
||||
|
@ -2146,7 +2238,7 @@ Use the `ls' command."
|
|||
(tramp--test-special-characters)))
|
||||
|
||||
(defun tramp--test-utf8 ()
|
||||
"Perform the test in `tramp-test32-utf8*'."
|
||||
"Perform the test in `tramp-test33-utf8*'."
|
||||
(let* ((utf8 (if (and (eq system-type 'darwin)
|
||||
(memq 'utf-8-hfs (coding-system-list)))
|
||||
'utf-8-hfs 'utf-8))
|
||||
|
@ -2160,14 +2252,14 @@ Use the `ls' command."
|
|||
"银河系漫游指南系列"
|
||||
"Автостопом по гала́ктике")))
|
||||
|
||||
(ert-deftest tramp-test32-utf8 ()
|
||||
(ert-deftest tramp-test33-utf8 ()
|
||||
"Check UTF8 encoding in file names and file contents."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
(skip-unless (not (tramp--test-rsync-p)))
|
||||
|
||||
(tramp--test-utf8))
|
||||
|
||||
(ert-deftest tramp-test32-utf8-with-stat ()
|
||||
(ert-deftest tramp-test33-utf8-with-stat ()
|
||||
"Check UTF8 encoding in file names and file contents.
|
||||
Use the `stat' command."
|
||||
:tags '(:expensive-test)
|
||||
|
@ -2187,7 +2279,7 @@ Use the `stat' command."
|
|||
tramp-connection-properties)))
|
||||
(tramp--test-utf8)))
|
||||
|
||||
(ert-deftest tramp-test32-utf8-with-perl ()
|
||||
(ert-deftest tramp-test33-utf8-with-perl ()
|
||||
"Check UTF8 encoding in file names and file contents.
|
||||
Use the `perl' command."
|
||||
:tags '(:expensive-test)
|
||||
|
@ -2210,7 +2302,7 @@ Use the `perl' command."
|
|||
tramp-connection-properties)))
|
||||
(tramp--test-utf8)))
|
||||
|
||||
(ert-deftest tramp-test32-utf8-with-ls ()
|
||||
(ert-deftest tramp-test33-utf8-with-ls ()
|
||||
"Check UTF8 encoding in file names and file contents.
|
||||
Use the `ls' command."
|
||||
:tags '(:expensive-test)
|
||||
|
@ -2234,7 +2326,7 @@ Use the `ls' command."
|
|||
(tramp--test-utf8)))
|
||||
|
||||
;; This test is inspired by Bug#16928.
|
||||
(ert-deftest tramp-test33-asynchronous-requests ()
|
||||
(ert-deftest tramp-test34-asynchronous-requests ()
|
||||
"Check parallel asynchronous requests.
|
||||
Such requests could arrive from timers, process filters and
|
||||
process sentinels. They shall not disturb each other."
|
||||
|
@ -2324,7 +2416,7 @@ process sentinels. They shall not disturb each other."
|
|||
(dolist (buf buffers)
|
||||
(ignore-errors (kill-buffer buf)))))))
|
||||
|
||||
(ert-deftest tramp-test34-recursive-load ()
|
||||
(ert-deftest tramp-test35-recursive-load ()
|
||||
"Check that Tramp does not fail due to recursive load."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
|
||||
|
@ -2347,7 +2439,7 @@ process sentinels. They shall not disturb each other."
|
|||
(mapconcat 'shell-quote-argument load-path " -L ")
|
||||
(shell-quote-argument code)))))))
|
||||
|
||||
(ert-deftest tramp-test35-unload ()
|
||||
(ert-deftest tramp-test36-unload ()
|
||||
"Check that Tramp and its subpackages unload completely.
|
||||
Since it unloads Tramp, it shall be the last test to run."
|
||||
;; Mark as failed until all symbols are unbound.
|
||||
|
@ -2395,8 +2487,8 @@ Since it unloads Tramp, it shall be the last test to run."
|
|||
;; * Fix `tramp-test06-directory-file-name' for `ftp'.
|
||||
;; * Fix `tramp-test15-copy-directory' for `rsync'.
|
||||
;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?).
|
||||
;; * Fix Bug#16928. Set expected error of `tramp-test33-asynchronous-requests'.
|
||||
;; * Fix `tramp-test35-unload' (Not all symbols are unbound). Set
|
||||
;; * Fix Bug#16928. Set expected error of `tramp-test34-asynchronous-requests'.
|
||||
;; * Fix `tramp-test36-unload' (Not all symbols are unbound). Set
|
||||
;; expected error.
|
||||
|
||||
(defun tramp-test-all (&optional interactive)
|
||||
|
|
Loading…
Add table
Reference in a new issue