[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master d672ad6: Merge from origin/emacs-27
From: |
Glenn Morris |
Subject: |
master d672ad6: Merge from origin/emacs-27 |
Date: |
Wed, 15 Jan 2020 10:55:14 -0500 (EST) |
branch: master
commit d672ad60e34b4e1dcb28f91d15f1e286acf2f94f
Merge: e31287e 0e936f1
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>
Merge from origin/emacs-27
0e936f18f8 (origin/emacs-27) Fix build failure with --with-cairo --wi...
c34f7e884b Add new node "Package Statuses" to manual
fdee034ac8 * lisp/isearch.el: Fix corner cases of isearch-lazy-count.
7b14329d86 ; * lisp/simple.el (messages-buffer): Doc fix. (Bug#39124)
7ec66a59e3 Document spacing issues with Xft for some fonts
08cd247fbd ; * etc/NEWS: Fix typo.
d645628e3c Always use lexical-binding in lisp-interaction-mode (bug#3...
c42198f78c ; *etc/NEWS: Fix typo.
0ed9cfa7dc vc-dir: ensure we don't use a pager with git
37e0d00c14 Improve ERC's matching of nicks and URLs (bug#38257)
d47b157969 Handle tab-bar clicks on a GPM-capable console.
e4791f3f8e ;* etc/TODO: Update.
# Conflicts:
# etc/NEWS
---
doc/emacs/emacs.texi | 1 +
doc/emacs/package.texi | 76 ++++++++++++++++++++++++++++++++++++--------
doc/lispref/variables.texi | 3 ++
etc/NEWS.27 | 21 +++++++++---
etc/PROBLEMS | 12 +++++++
etc/TODO | 43 +++++++------------------
lisp/erc/erc-button.el | 11 ++-----
lisp/erc/erc-match.el | 3 --
lisp/isearch.el | 7 ++--
lisp/progmodes/elisp-mode.el | 3 +-
lisp/simple.el | 2 +-
lisp/startup.el | 4 +--
lisp/tab-line.el | 4 +--
lisp/vc/vc-git.el | 3 +-
src/image.c | 8 ++---
src/term.c | 8 +++++
src/xdisp.c | 4 +++
17 files changed, 137 insertions(+), 76 deletions(-)
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 0400ed0..c3cb37e 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -1099,6 +1099,7 @@ Hyperlinking and Navigation Features
Emacs Lisp Packages
* Package Menu:: Buffer for viewing and managing packages.
+* Package Statuses:: Which statuses a package can have.
* Package Installation:: Options for package installation.
* Package Files:: Where packages are installed.
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index cca602e..1cac7f9 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -32,6 +32,7 @@ Manual}.
@menu
* Package Menu:: Buffer for viewing and managing packages.
+* Package Statuses:: Which statuses a package can have.
* Package Installation:: Options for package installation.
* Package Files:: Where packages are installed.
@end menu
@@ -57,19 +58,12 @@ The package's version number (e.g., @samp{11.86}).
The package's status---normally one of @samp{available} (can be
downloaded from the package archive), @samp{installed},
@c @samp{unsigned} (installed, but not signed; @pxref{Package Signing}),
-or @samp{built-in} (included in Emacs by default). The status
-@samp{external} means the package is not built-in and not from the
-directory specified by @code{package-user-dir} (@pxref{Package
-Files}). External packages are treated much like built-in: they
-cannot be deleted through the package menu, and are not considered for
-upgrading.
-
-The status can also be @samp{new}. This is equivalent to
-@samp{available}, except that it means the package became newly
-available on the package archive after your last invocation of
-@kbd{M-x list-packages}. In other instances, a package may have the
-status @samp{held}, @samp{disabled}, or @samp{obsolete}.
-@xref{Package Installation}.
+or @samp{built-in} (included in Emacs by default).
+@xref{Package Statuses}.
+
+@item
+Which package archive this package is from, if you have more than one
+package archive enabled.
@item
A short description of the package.
@@ -139,7 +133,7 @@ current line by an @kbd{i} or @kbd{d} command
Mark all package with a newer available version for upgrading
(@code{package-menu-mark-upgrades}). This places an installation mark
on the new available versions, and a deletion mark on the old
-installed versions.
+installed versions (marked with status @samp{obsolete}).
@item x
@kindex x @r{(Package Menu)}
@@ -195,6 +189,60 @@ from lower-priority archives
(@code{package-menu-toggle-hiding}).
For example, you can install a package by typing @kbd{i} on the line
listing that package, followed by @kbd{x}.
+@node Package Statuses
+@section Package Statuses
+@cindex package status
+
+A package can have one of the following statuses:
+
+@table @samp
+@item available
+The package is not installed, but can be downloaded and installed from
+the package archive.
+
+@item avail-obso
+The package is available for installation, but a newer version is also
+available. Packages with this status are hidden by default.
+
+@item built-in
+The package is included in Emacs by default. It cannot be deleted
+through the package menu, and is not considered for upgrading.
+
+@item dependency
+The package was installed automatically to satisfy a dependency of
+another package.
+
+@item disabled
+The package has been disabled using the @code{package-load-list}
+variable.
+
+@item external
+The package is not built-in and not from the directory specified by
+@code{package-user-dir} (@pxref{Package Files}). External packages
+are treated much like @samp{built-in} packages and cannot be deleted.
+
+@item held
+The package is held, @xref{Package Installation}.
+
+@item incompat
+The package cannot be installed for some reason, for example because
+it depends on uninstallable packages.
+
+@item installed
+The package is installed.
+
+@item new
+Equivalent to @samp{available}, except that the package became newly
+available on the package archive after your last invocation of
+@kbd{M-x list-packages}.
+
+@item obsolete
+The package is an outdated installed version; in addition to this
+version of the package, a newer version is also installed.
+
+@c @samp{unsigned} (installed, but not signed; @pxref{Package Signing}),
+@end table
+
@node Package Installation
@section Package Installation
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 1ec97e2..1e35775 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1187,6 +1187,9 @@ When evaluating Emacs Lisp code directly using an
@code{eval} call,
lexical binding is enabled if the @var{lexical} argument to
@code{eval} is non-@code{nil}. @xref{Eval}.
+Lexical binding is also enabled in Lisp Interaction and IELM
+mode, used in the @file{*scratch*} and @file{*ielm*} buffers.
+
@cindex special variables
Even when lexical binding is enabled, certain variables will
continue to be dynamically bound. These are called @dfn{special
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index 43805bb..cea5d50 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -337,8 +337,9 @@ answers, but also function keys like 'F1', character events
such as
'C-M-h', and control characters like 'C-h'.
** Lexical binding is now used when evaluating interactive Elisp forms.
-More specifically, lexical-binding is now used for 'M-:', '--eval', as
-well as in the "*scratch*" and "*ielm*" buffers.
+More specifically, 'lexical-binding' is now used for 'M-:', '--eval',
+as well as in 'lisp-interaction-mode' and 'ielm-mode', used in the
+"*scratch*" and "*ielm*" buffers.
---
** The new user option 'tooltip-resize-echo-area' avoids truncating
@@ -781,8 +782,8 @@ cases that have plagued it for years, and on the other
experiments indicated
that it doesn't bring any measurable benefit.
---
-*** The 'g' keystroke in *Compile-Log* buffers has been bound to a new
-command that will recompile the file previously compiled with 'M-x
+*** The 'g' keystroke in "*Compile-Log*" buffers has been bound to a
+new command that will recompile the file previously compiled with 'M-x
byte-compile-file' and the like.
** compile.el
@@ -1569,6 +1570,18 @@ and its value has been changed to Duck Duck Go.
The user option to use instead to alter text to be sent is now
'erc-pre-send-functions'.
+---
+*** Improve matching/highlighting of nicknames.
+Open and close parenthesis and apostrophe are not considered valid
+nick characters anymore, matching the given grammar in RFC 2812
+section 2.3.1. This enables correct matching and highlighting of
+nicks when they are surrounded by parentheses, like "(nick)", and when
+adjacent to an apostrophe, like "nick's".
+
+---
+*** Set 'erc-button-url-regexp' to 'browse-url-button-regexp'
+which better handles surrounding pair of parentheses.
+
** EUDC
---
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 5067b53..9e4a631 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -728,6 +728,18 @@ and ps-mule to print Unicode characters.
You may have bad fonts.
+** Under X, some characters are unexpectedly wide.
+
+e.g. recent versions of Inconsolata show this issue for almost all of
+its characters. Due to what is probably an Xft bug, the determination
+of the width of some characters is incorrect. One workaround is to
+build emacs with Cairo enabled ("configure --with-cairo" and have the
+appropriate Cairo development packages installed) as this
+configuration does not suffer from this problem. See
+<https://github.com/googlefonts/Inconsolata/issues/42> and
+<https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-01/msg00456.html>
+for more discussion.
+
** Under X, an unexpected monospace font is used as the default font.
When compiled with XFT, Emacs tries to use a default font named
diff --git a/etc/TODO b/etc/TODO
index e87fd85..0a06484 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -384,6 +384,12 @@ specified filters, specified timers, and specified hooks.
** Install address@hidden's no-flicker change.
+ https://lists.gnu.org/archive/html/emacs-devel/2005-12/msg00699.html
+
+ I don't know if this is still relevant. I can't reach the URLs in
+ the above message thread and double-buffering may have solved some
+ of the problems.
+
** Add a "current vertical pixel level" value that goes with point,
so that motion commands can also move through tall images.
This value would be to point as window-vscroll is to window-start.
@@ -537,11 +543,6 @@ from the emacsclient process.
** Provide an optional feature which computes a scroll bar slider's
size and its position from lines instead of characters.
-** Allow unknown image types to be rendered via an external program
- converting them to, say, PBM (in the same way as PostScript?). [does
- doc-view.el do this, or could it be extended to do this?
- Does ImageMagick obsolete this idea?]
-
** Allow displaying an X window from an external program in a buffer,
e.g. to render graphics from Java applets. [gerd and/or wmperry
thought this was feasible.]
@@ -555,6 +556,8 @@ from the emacsclient process.
** Use the XIE X extension, if available, for image display.
+(Obsolete as XIE is now considered obsolete itself.)
+
** Make monochrome images display using the foreground and background
colors of the applicable faces.
@@ -679,6 +682,10 @@ simple buttons to webkit (effectively, a web browser).
Currently, xwidgets works only for the gtk+ framework but it is
designed to be compatible with multiple Emacs ports.
+(See the scratch/nsxwidget branch, and the discussion around
+Objective-C code and GCC at
+https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00072.html)
+
**** Respect 'frame-inhibit-implied-resize'
When the variable 'frame-inhibit-implied-resize' is non-nil, frames
@@ -855,32 +862,6 @@ all build versions.
*** Bugs
-**** Incorrect translation of Super modifier with Ctrl or Meta on macOS
-
-When pressing 'M-s-a', Emacs replies "M-s-å is undefined". What
-happened is a mix of Emacs view that Meta and Super has been pressed,
-and macOS view that ALT-a should yield "å" (U+00E5 LATIN SMALL LETTER
-A WITH RING ABOVE).
-
-The bug reports suggest two different patches; unfortunately, neither
-works properly. For example:
-
- Use a Swedish keyboard layout
-
- (setq ns-alternate-modifier nil)
-
- "CMD-ALT-9"
-
-Today, this correctly yields that s-] is undefined. With either
-of the two patches, Emacs responds that s-9 was pressed.
-
-More investigation is needed to fix this problem.
-
-Links:
-- https://debbugs.gnu.org/19977
-- https://debbugs.gnu.org/21330
-- https://debbugs.gnu.org/21551
-
**** Toggling the toolbar in fullheight or maximized modes
The toolbar, in the NS interface, is not considered part of the text
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 6e30b3a..e4f5a19 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -41,6 +41,7 @@
(require 'erc)
(require 'wid-edit)
(require 'erc-fill)
+(require 'browse-url)
;;; Minor Mode
@@ -87,12 +88,9 @@ above them."
:type 'face
:group 'erc-faces)
-(defcustom erc-button-url-regexp
- (concat "\\(www\\.\\|\\(s?https?\\|"
- "ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\)"
- "\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?"
- "[-a-zA-Z0-9_=!?#$@~`%&*+\\/:;.,()]+[-a-zA-Z0-9_=#$@~`%&*+\\/()]")
+(defcustom erc-button-url-regexp browse-url-button-regexp
"Regular expression that matches URLs."
+ :version "27.1"
:group 'erc-button
:type 'regexp)
@@ -223,14 +221,11 @@ PAR is a number of a regexp grouping whose text will be
passed to
(defvar erc-button-syntax-table
(let ((table (make-syntax-table)))
- (modify-syntax-entry ?\( "w" table)
- (modify-syntax-entry ?\) "w" table)
(modify-syntax-entry ?\[ "w" table)
(modify-syntax-entry ?\] "w" table)
(modify-syntax-entry ?\{ "w" table)
(modify-syntax-entry ?\} "w" table)
(modify-syntax-entry ?` "w" table)
- (modify-syntax-entry ?' "w" table)
(modify-syntax-entry ?^ "w" table)
(modify-syntax-entry ?- "w" table)
(modify-syntax-entry ?_ "w" table)
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 7a824cc..8b9ab33 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -246,14 +246,11 @@ and other miscellaneous functions."
;; just put it in erc.el
(defvar erc-match-syntax-table
(let ((table (make-syntax-table)))
- (modify-syntax-entry ?\( "w" table)
- (modify-syntax-entry ?\) "w" table)
(modify-syntax-entry ?\[ "w" table)
(modify-syntax-entry ?\] "w" table)
(modify-syntax-entry ?\{ "w" table)
(modify-syntax-entry ?\} "w" table)
(modify-syntax-entry ?` "w" table)
- (modify-syntax-entry ?' "w" table)
(modify-syntax-entry ?^ "w" table)
(modify-syntax-entry ?- "w" table)
(modify-syntax-entry ?_ "w" table)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index c987393..ddf9190 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1225,6 +1225,9 @@ used to set the value of `isearch-regexp-function'."
isearch-pre-scroll-point nil
isearch-pre-move-point nil
+ isearch-lazy-count-current nil
+ isearch-lazy-count-total nil
+
;; Save the original value of `minibuffer-message-timeout', and
;; set it to nil so that isearch's messages don't get timed out.
isearch-original-minibuffer-message-timeout minibuffer-message-timeout
@@ -3776,7 +3779,7 @@ by other Emacs features."
isearch-lazy-highlight-window-end))))))
;; something important did indeed change
(lazy-highlight-cleanup t (not (equal isearch-string ""))) ;stop old timer
- (when isearch-lazy-count
+ (when (and isearch-lazy-count isearch-mode (null isearch-message-function))
(when (or (equal isearch-string "")
;; Check if this place was reached by a condition above
;; other than changed window boundaries (that shouldn't
@@ -3794,7 +3797,7 @@ by other Emacs features."
(clrhash isearch-lazy-count-hash)
(setq isearch-lazy-count-current nil
isearch-lazy-count-total nil)
- (funcall (or isearch-message-function #'isearch-message))))
+ (isearch-message)))
(setq isearch-lazy-highlight-window-start-changed nil)
(setq isearch-lazy-highlight-window-end-changed nil)
(setq isearch-lazy-highlight-error isearch-error)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 774e332..2617a6e 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -933,7 +933,8 @@ Paragraphs are separated only by blank lines.
Semicolons start comments.
\\{lisp-interaction-mode-map}"
- :abbrev-table nil)
+ :abbrev-table nil
+ (setq-local lexical-binding t))
;;; Emacs Lisp Byte-Code mode
diff --git a/lisp/simple.el b/lisp/simple.el
index f9f1efc..f28198c 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -8953,7 +8953,7 @@ and setting it to nil."
(defun messages-buffer ()
"Return the \"*Messages*\" buffer.
-If it does not exist, create and it switch it to `messages-buffer-mode'."
+If it does not exist, create it and switch it to `messages-buffer-mode'."
(or (get-buffer "*Messages*")
(with-current-buffer (get-buffer-create "*Messages*")
(messages-buffer-mode)
diff --git a/lisp/startup.el b/lisp/startup.el
index c27af72..2a85c00 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1435,8 +1435,7 @@ please check its value")
(if (get-buffer "*scratch*")
(with-current-buffer "*scratch*"
(if (eq major-mode 'fundamental-mode)
- (funcall initial-major-mode))
- (setq-local lexical-binding t)))
+ (funcall initial-major-mode))))
;; Load library for our terminal type.
;; User init file can set term-file-prefix to nil to prevent this.
@@ -2317,7 +2316,6 @@ A fancy display is used on graphic displays, normal
otherwise."
(or (get-buffer "*scratch*")
(with-current-buffer (get-buffer-create "*scratch*")
(set-buffer-major-mode (current-buffer))
- (setq-local lexical-binding t)
(current-buffer))))
(defun command-line-1 (args-left)
diff --git a/lisp/tab-line.el b/lisp/tab-line.el
index 8e561c7..ef530d4 100644
--- a/lisp/tab-line.el
+++ b/lisp/tab-line.el
@@ -81,9 +81,7 @@
'((default
:inherit tab-line-tab)
(((class color) (min-colors 88))
- :background "grey85")
- (t
- :inverse-video t))
+ :background "grey85"))
"Tab line face for tab with current buffer in selected window."
:version "27.1"
:group 'tab-line-faces)
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 37bc53b..2caa287 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1785,13 +1785,12 @@ The difference to vc-do-command is that this function
always invokes
(process-environment
(append
`("GIT_DIR"
- "PAGER="
;; Avoid repository locking during background operations
;; (bug#21559).
,@(when revert-buffer-in-progress-p
'("GIT_OPTIONAL_LOCKS=0")))
process-environment)))
- (apply 'process-file vc-git-program nil buffer nil command args)))
+ (apply 'process-file vc-git-program nil buffer nil "--no-pager" command
args)))
(defun vc-git--out-ok (command &rest args)
(zerop (apply 'vc-git--call '(t nil) command args)))
diff --git a/src/image.c b/src/image.c
index d3fec37..65d5925 100644
--- a/src/image.c
+++ b/src/image.c
@@ -6235,7 +6235,7 @@ pbm_load (struct frame *f, struct image *img)
PNG
***********************************************************************/
-#if defined (HAVE_PNG) || defined (HAVE_NS) || defined (USE_CAIRO)
+#if defined (HAVE_PNG) || defined (HAVE_NS)
/* Indices of image specification fields in png_format, below. */
@@ -6286,10 +6286,10 @@ png_image_p (Lisp_Object object)
return fmt[PNG_FILE].count + fmt[PNG_DATA].count == 1;
}
-#endif /* HAVE_PNG || HAVE_NS || USE_CAIRO */
+#endif /* HAVE_PNG || HAVE_NS */
-#if (defined HAVE_PNG && !defined HAVE_NS) || defined USE_CAIRO
+#if defined HAVE_PNG && !defined HAVE_NS
# ifdef WINDOWSNT
/* PNG library details. */
@@ -10164,7 +10164,7 @@ static struct image_type const image_types[] =
{ SYMBOL_INDEX (Qsvg), svg_image_p, svg_load, image_clear_image,
IMAGE_TYPE_INIT (init_svg_functions) },
#endif
-#if defined HAVE_PNG || defined HAVE_NS || defined USE_CAIRO
+#if defined HAVE_PNG || defined HAVE_NS
{ SYMBOL_INDEX (Qpng), png_image_p, png_load, image_clear_image,
IMAGE_TYPE_INIT (init_png_functions) },
#endif
diff --git a/src/term.c b/src/term.c
index 8717343..a3aef31 100644
--- a/src/term.c
+++ b/src/term.c
@@ -2568,6 +2568,14 @@ handle_one_term_event (struct tty_display_info *tty,
Gpm_Event *event,
else {
f->mouse_moved = 0;
term_mouse_click (&ie, event, f);
+ if (tty_handle_tab_bar_click (f, event->x, event->y,
+ (ie.modifiers & down_modifier) != 0, &ie))
+ {
+ /* tty_handle_tab_bar_click stores 2 events in the event
+ queue, so we are done here. */
+ count += 2;
+ return count;
+ }
}
done:
diff --git a/src/xdisp.c b/src/xdisp.c
index 5330092..516013c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13516,6 +13516,10 @@ tty_handle_tab_bar_click (struct frame *f, int x, int
y, bool down_p,
f->last_tab_bar_item = prop_idx;
else
{
+ /* Force reset of up_modifier bit from the event modifiers. */
+ if (event->modifiers & up_modifier)
+ event->modifiers &= ~up_modifier;
+
/* Generate a TAB_BAR_EVENT event. */
Lisp_Object frame;
Lisp_Object key = AREF (f->tab_bar_items,