diff options
author | Glenn Morris <rgm@gnu.org> | 2020-01-15 07:50:22 -0800 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2020-01-15 07:50:22 -0800 |
commit | d672ad60e34b4e1dcb28f91d15f1e286acf2f94f (patch) | |
tree | 5d17911717db0469bed838cbda7c0adf9638e31b | |
parent | e31287e704a539ebef777d92e4d06d4b1d912b2a (diff) | |
parent | 0e936f18f8738fbe3809784f5ec6feb27c6bb24e (diff) | |
download | emacs-d672ad60e34b4e1dcb28f91d15f1e286acf2f94f.tar.gz |
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
-rw-r--r-- | doc/emacs/emacs.texi | 1 | ||||
-rw-r--r-- | doc/emacs/package.texi | 76 | ||||
-rw-r--r-- | doc/lispref/variables.texi | 3 | ||||
-rw-r--r-- | etc/NEWS.27 | 21 | ||||
-rw-r--r-- | etc/PROBLEMS | 12 | ||||
-rw-r--r-- | etc/TODO | 43 | ||||
-rw-r--r-- | lisp/erc/erc-button.el | 11 | ||||
-rw-r--r-- | lisp/erc/erc-match.el | 3 | ||||
-rw-r--r-- | lisp/isearch.el | 7 | ||||
-rw-r--r-- | lisp/progmodes/elisp-mode.el | 3 | ||||
-rw-r--r-- | lisp/simple.el | 2 | ||||
-rw-r--r-- | lisp/startup.el | 4 | ||||
-rw-r--r-- | lisp/tab-line.el | 4 | ||||
-rw-r--r-- | lisp/vc/vc-git.el | 3 | ||||
-rw-r--r-- | src/image.c | 8 | ||||
-rw-r--r-- | src/term.c | 8 | ||||
-rw-r--r-- | src/xdisp.c | 4 |
17 files changed, 137 insertions, 76 deletions
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 0400ed0b736..c3cb37e6a6d 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 cca602e7a05..1cac7f9b4b6 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 1ec97e2f3de..1e357754abe 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 43805bb0ac6..cea5d500c7c 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 5067b53817b..9e4a631c729 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 @@ -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 diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el index 6e30b3a7935..e4f5a190913 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 7a824cce9f8..8b9ab331288 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 c9873937252..ddf9190dc6d 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 774e3324c2e..2617a6e4cce 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 f9f1efcc98c..f28198cd81f 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 c27af726f9c..2a85c004da1 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 8e561c71f5b..ef530d43dec 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 37bc53b3850..2caa287bce2 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 d3fec37186c..65d59254f02 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 871734318c0..a3aef31ec25 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 53300928d7b..516013ce4ba 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, |