Commit d672ad60 authored by Glenn Morris's avatar Glenn Morris

Merge from origin/emacs-27

0e936f18 (origin/emacs-27) Fix build failure with --with-cairo --wi...
c34f7e88 Add new node "Package Statuses" to manual
fdee034a * lisp/isearch.el: Fix corner cases of isearch-lazy-count.
7b14329d ; * lisp/simple.el (messages-buffer): Doc fix.  (Bug#39124)
7ec66a59 Document spacing issues with Xft for some fonts
08cd247f ; * etc/NEWS: Fix typo.
d645628e Always use lexical-binding in lisp-interaction-mode (bug#3...
c42198f7 ; *etc/NEWS: Fix typo.
0ed9cfa7 vc-dir: ensure we don't use a pager with git
37e0d00c Improve ERC's matching of nicks and URLs (bug#38257)
d47b1579 Handle tab-bar clicks on a GPM-capable console.
e4791f3f ;* etc/TODO: Update.

# Conflicts:
#	etc/NEWS
parents e31287e7 0e936f18
Pipeline #4557 passed with stage
in 57 minutes and 10 seconds
......@@ -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.
......
......@@ -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
......
......@@ -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
......
......@@ -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
---
......
......@@ -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
......
......@@ -384,6 +384,12 @@ specified filters, specified timers, and specified hooks.
** Install mmc@maruska.dyndns.org'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
......
......@@ -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)
......
......@@ -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)
......
......@@ -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)
......
......@@ -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
......
......@@ -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)
......
......@@ -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)
......
......@@ -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)
......
......@@ -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)))
......
......@@ -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
......
......@@ -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:
......
......@@ -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,
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment