emacs-diffs
[Top][All Lists]
Advanced

[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,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]