[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 788c248: Merge from origin/emacs-27
From: |
Glenn Morris |
Subject: |
master 788c248: Merge from origin/emacs-27 |
Date: |
Sat, 16 May 2020 13:29:25 -0400 (EDT) |
branch: master
commit 788c2480f448e97773172f3e840976dbcdc3e6c8
Merge: a67415a b4937f6
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>
Merge from origin/emacs-27
b4937f64cd (origin/emacs-27) Improve documentation of manually instal...
efd4e973a4 Reflect the emacs-devel ELPA/MELPA dispute in FAQ
28541674cd Consider face inheritance when checking region face backgr...
e75f6be6cc Fix dired default file operation (bug#41261)
406fb0746c Fix documentation related to 'command-switch-alist'.
747e0a2523 Improve ediff readability in misterioso theme (Bug#41221)
48830c73e7 Fix a crash in handle_display_spec
a37290a6f9 In x_hide_tip reset tip_last_frame for GTK+ tooltips only ...
3d81995692 Fix docstring of flymake-make-diagnostic (bug#40351)
632aa9d57a Go back to “Bahá’í”
e2406ff60f * lisp/dired.el (dired-toggle-marks): Doc fix. (Bug#41097)
# Conflicts:
# doc/emacs/building.texi
---
doc/emacs/building.texi | 32 ++++++++++++++++++++++++++++
doc/emacs/calendar.texi | 2 +-
doc/emacs/package.texi | 32 ++++++++++++++++++++--------
doc/lispref/os.texi | 10 ++++++++-
doc/misc/efaq.texi | 5 ++++-
etc/themes/misterioso-theme.el | 7 +++++++
lisp/dired-aux.el | 7 +++----
lisp/dired.el | 4 ++--
lisp/progmodes/flymake.el | 7 ++++---
lisp/simple.el | 2 +-
src/xdisp.c | 2 +-
src/xfns.c | 8 ++++---
test/lisp/startup-tests.el | 47 ++++++++++++++++++++++++++++++++++++++++++
13 files changed, 139 insertions(+), 26 deletions(-)
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index 77a0e80..7074bd4 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1541,6 +1541,11 @@ putting a line like this in your init file (@pxref{Init
File}):
(add-to-list 'load-path "/path/to/my/lisp/library")
@end example
+It is customary to put locally installed libraries in the
+@file{site-lisp} directory that is already in the default value of
+@code{load-path}, or in some subdirectory of @file{site-lisp}. This
+way, you don't need to modify the default value of @code{load-path}.
+
@cindex autoload
Some commands are @dfn{autoloaded}; when you run them, Emacs
automatically loads the associated library first. For instance, the
@@ -1563,6 +1568,33 @@ Automatic loading also occurs when completing names for
prefix being completed. To disable this feature, change the variable
@code{help-enable-completion-autoload} to @code{nil}.
+ Once you put your library in a directory where Emacs can find and
+load it, you may wish to make it available at startup. This is useful
+when the library defines features that should be available
+automatically on demand, and manually loading the library is thus
+inconvenient. In these cases, make sure the library will be loaded by
+adding suitable forms to your init file: either @code{load} or
+@code{require} (if you always need to load the library at startup), or
+@code{autoload} if you need Emacs to load the library when some
+command or function is invoked. For example:
+
+@smalllisp
+@group
+ ;; Loads @file{my-shining-package.elc} unconditionally.
+ (require 'my-shining-package)
+@end group
+@group
+ ;; Will load @file{my-shining-package.elc} when @code{my-func} is invoked.
+ (autoload 'my-func "my-shining-package")
+@end group
+@end smalllisp
+
+ Note that installing a package using @code{package-install}
+(@pxref{Package Installation}) takes care of placing the package's
+Lisp files in a directory where Emacs will find it, and also writes
+the necessary initialization code into your init files, making the
+above manual customizations unnecessary.
+
@node Lisp Eval
@section Evaluating Emacs Lisp Expressions
@cindex Emacs Lisp mode
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 8dc1a0b..fe51ad3 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -532,7 +532,7 @@ holidays centered around a different month, use @kbd{C-u M-x
holidays}, which prompts for the month and year.
The holidays known to Emacs include United States holidays and the
-major Bah@'{a}@t{'}@'{i}, Chinese, Christian, Islamic, and Jewish
+major Bahá'í, Chinese, Christian, Islamic, and Jewish
holidays; also the solstices and equinoxes.
@findex list-holidays
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index 91e44b8..453d9eb 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -5,23 +5,37 @@
@node Packages
@chapter Emacs Lisp Packages
@cindex Package
-@cindex Emacs Lisp package archive
@cindex Package archive
-Emacs includes a facility that lets you easily download and install
-@dfn{packages} that implement additional features. Each package is a
-separate Emacs Lisp program, sometimes including other components such
-as an Info manual.
+ Emacs is extended by implementing additional features in
+@dfn{packages}, which are Emacs Lisp libraries. These could be
+written by you or provided by someone else. If you want to install
+such a package so it is available in your future Emacs session, you
+need to compile it and put it in a directory where Emacs looks for
+Lisp libraries. @xref{Lisp Libraries}, for more details about this
+manual installation method. Many packages provide installation and
+usage instructions in the large commentary near the beginning of the
+Lisp file; you can use those instructions for installing and
+fine-tuning your use of the package.
- @kbd{M-x list-packages} brings up a buffer named @file{*Packages*}
-with a list of all packages. You can install or uninstall packages
-via this buffer. @xref{Package Menu}.
+@cindex Emacs Lisp package archive
+ Packages can also be provided by @dfn{package archives}, which are
+large collections of Emacs Lisp packages. Each package is a separate
+Emacs Lisp program, sometimes including other components such as an
+Info manual. Emacs includes a facility that lets you easily download
+and install packages from such archives. The rest of this chapter
+describes this facility.
+
+ To list the packages available for installation from package
+archives, type @w{@kbd{M-x list-packages @key{RET}}}. It brings up a
+buffer named @file{*Packages*} with a list of all packages. You can
+install or uninstall packages via this buffer. @xref{Package Menu}.
The command @kbd{C-h P} (@code{describe-package}) prompts for the
name of a package, and displays a help buffer describing the
attributes of the package and the features that it implements.
- By default, Emacs downloads packages from a @dfn{package archive}
+ By default, Emacs downloads packages from a package archive
maintained by the Emacs developers and hosted by the GNU project.
Optionally, you can also download packages from archives maintained by
third parties. @xref{Package Installation}.
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 8bf48b1..8f2c743 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -613,7 +613,7 @@ The elements of the @code{command-switch-alist} look like
this:
@end example
The @sc{car}, @var{option}, is a string, the name of a command-line
-option (not including the initial hyphen). The @var{handler-function}
+option (including the initial hyphen). The @var{handler-function}
is called to handle @var{option}, and receives the option name as its
sole argument.
@@ -623,6 +623,14 @@ remaining command-line arguments in the variable
@code{command-line-args-left} (see below). (The entire list of
command-line arguments is in @code{command-line-args}.)
+Note that the handling of @code{command-switch-alist} doesn't treat
+equals signs in @var{option} specially. That is, if there's an option
+like @code{--name=value} on the command line, then only a
+@code{command-switch-alist} member whose @code{car} is literally
+@code{--name=value} will match this option. If you want to parse such
+options, you need to use @code{command-line-functions} instead (see
+below).
+
The command-line arguments are parsed by the @code{command-line-1}
function in the @file{startup.el} file. See also @ref{Emacs
Invocation, , Command Line Arguments for Emacs Invocation, emacs, The
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index 50a208d..d3a2f07 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -3478,7 +3478,10 @@ There are other, non-GNU, Emacs Lisp package servers,
including:
@uref{https://marmalade-repo.org, Marmalade}. To use additional
package servers, customize the @code{package-archives} variable. Be
aware that installing a package can run arbitrary code, so only add
-sources that you trust.
+sources that you trust. Also, packages hosted on non-GNU package
+servers may encourage or require you to install and use non-free
+software; for example, MELPA is known to host some packages that do
+this.
The @uref{https://lists.gnu.org/mailman/listinfo/gnu-emacs-sources,
GNU Emacs sources mailing list}, which is gatewayed to the
diff --git a/etc/themes/misterioso-theme.el b/etc/themes/misterioso-theme.el
index 8161dbd..ff9af0c 100644
--- a/etc/themes/misterioso-theme.el
+++ b/etc/themes/misterioso-theme.el
@@ -63,6 +63,13 @@
`(button ((,class (:underline t))))
`(link ((,class (:foreground "#59e9ff" :underline t))))
`(link-visited ((,class (:foreground "#ed74cd" :underline t))))
+ ;; Ediff
+ `(ediff-even-diff-A ((,class (:background "#1d2430"))))
+ `(ediff-even-diff-B ((,class (:background "#1d2430"))))
+ `(ediff-even-diff-C ((,class (:background "#1d2430"))))
+ `(ediff-odd-diff-A ((,class (:background "#415160"))))
+ `(ediff-odd-diff-B ((,class (:background "#415160"))))
+ `(ediff-odd-diff-C ((,class (:background "#415160"))))
;; Gnus faces
`(gnus-group-news-1 ((,class (:foreground "#ff4242" :weight bold))))
`(gnus-group-news-1-low ((,class (:foreground "#ff4242"))))
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 60a352d..24ebfa4 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -2006,10 +2006,9 @@ Optional arg HOW-TO determines how to treat the target.
(format prompt (dired-mark-prompt arg files)) dir default))
(defun dired-dwim-target-directories ()
- (cond ((functionp dired-dwim-target)
- (funcall dired-dwim-target))
- (dired-dwim-target
- (dired-dwim-target-next))))
+ (if (functionp dired-dwim-target)
+ (funcall dired-dwim-target)
+ (dired-dwim-target-next)))
(defun dired-dwim-target-next (&optional all-frames)
;; Return directories from all next windows with dired-mode buffers.
diff --git a/lisp/dired.el b/lisp/dired.el
index 14bbb28..aad44a6 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3717,8 +3717,8 @@ in the active region."
(defun dired-toggle-marks ()
"Toggle marks: marked files become unmarked, and vice versa.
-Files marked with other flags (such as `D') are not affected.
-`.' and `..' are never toggled.
+Flagged files (indicated with flags such as `C' and `D', not
+with `*') are not affected, and `.' and `..' are never toggled.
As always, hidden subdirs are not affected."
(interactive)
(save-excursion
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 93a09d1..4ca5c65 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -316,9 +316,10 @@ generated it."
&optional data
overlay-properties)
"Make a Flymake diagnostic for BUFFER's region from BEG to END.
-TYPE is a key to symbol and TEXT is a description of the problem
-detected in this region. DATA is any object that the caller
-wishes to attach to the created diagnostic for later retrieval.
+TYPE is a diagnostic symbol and TEXT is string describing the
+problem detected in this region. DATA is any object that the
+caller wishes to attach to the created diagnostic for later
+retrieval.
OVERLAY-PROPERTIES is an alist of properties attached to the
created diagnostic, overriding the default properties and any
diff --git a/lisp/simple.el b/lisp/simple.el
index d151d6c..111afa6 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4903,7 +4903,7 @@ of this sample text; it defaults to 40."
;; Swap point-and-mark quickly so as to show the region that
;; was selected. Don't do it if the region is highlighted.
(unless (and (region-active-p)
- (face-background 'region))
+ (face-background 'region nil t))
;; Swap point and mark.
(set-marker (mark-marker) (point) (current-buffer))
(goto-char mark)
diff --git a/src/xdisp.c b/src/xdisp.c
index d65bb38..cf15f57 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5120,7 +5120,7 @@ handle_display_spec (struct it *it, Lisp_Object spec,
Lisp_Object object,
if (CONSP (spec) && EQ (XCAR (spec), Qdisable_eval))
{
enable_eval = false;
- spec = XCAR (XCDR (spec));
+ spec = CONSP (XCDR (spec)) ? XCAR (XCDR (spec)) : Qnil;
}
if (CONSP (spec)
diff --git a/src/xfns.c b/src/xfns.c
index 1f381e2..2ab5080 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -6738,9 +6738,11 @@ x_hide_tip (bool delete)
}
}
- /* Reset tip_last_frame, it will be reassigned when showing the
- next GTK+ system tooltip. */
- tip_last_frame = Qnil;
+ /* When using GTK+ system tooltips (compare Bug#41200) reset
+ tip_last_frame. It will be reassigned when showing the next
+ GTK+ system tooltip. */
+ if (x_gtk_use_system_tooltips)
+ tip_last_frame = Qnil;
/* Now look whether there's an Emacs tip around. */
if (FRAMEP (tip_frame))
diff --git a/test/lisp/startup-tests.el b/test/lisp/startup-tests.el
new file mode 100644
index 0000000..314ffc9
--- /dev/null
+++ b/test/lisp/startup-tests.el
@@ -0,0 +1,47 @@
+;;; startup-tests.el --- unit tests for startup.el -*- lexical-binding: t;
-*-
+
+;; Copyright (C) 2020 Free Software Foundation, Inc.
+
+;; Author: Philipp Stephani <address@hidden>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Unit tests for startup.el.
+
+;;; Code:
+
+(ert-deftest startup-tests/command-switch-alist ()
+ (let* ((foo-args ()) (bar-args ())
+ (command-switch-alist
+ (list (cons "--foo"
+ (lambda (arg)
+ (ert-info ("Processing argument --foo")
+ (push arg foo-args)
+ (should (equal command-line-args-left
+ '("value" "--bar=value")))
+ (pop command-line-args-left))))
+ (cons "--bar=value"
+ (lambda (arg)
+ (ert-info ("Processing argument --bar")
+ (push arg bar-args)
+ (should-not command-line-args-left)))))))
+ (command-line-1 '("--foo" "value" "--bar=value"))
+ (should (equal foo-args '("--foo")))
+ (should (equal bar-args '("--bar=value")))))
+
+;;; startup-tests.el ends here