emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master b9bc86e 1/5: Merge from origin/emacs-27


From: Glenn Morris
Subject: master b9bc86e 1/5: Merge from origin/emacs-27
Date: Thu, 13 Aug 2020 11:28:47 -0400 (EDT)

branch: master
commit b9bc86e068407ba67bac7503b2beae1bfa17b3bc
Merge: 1bed252 86d8d76
Author: Glenn Morris <rgm@gnu.org>
Commit: Glenn Morris <rgm@gnu.org>

    Merge from origin/emacs-27
    
    86d8d76aa3 (tag: emacs-27.1-rc2, tag: emacs-27.1) ; lisp/ldefs-boot.e...
    a6634197da * etc/HISTORY: Update the Emacs 27.1 release date.
    a68b3f761a ; Update ChangeLog.3
    7cc85e7b51 ; Update etc/AUTHORS
    1ca4da054b ; * etc/NEWS: fix some quoting
    5578febcd4 ; * lisp/so-long.el: Documentation
    fa20e443c8 lisp/so-long.el: Improve support for major mode hooks
    
    # Conflicts:
    #   etc/AUTHORS
    #   etc/NEWS
---
 ChangeLog.3        | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 etc/HISTORY        |  2 +-
 etc/NEWS.27        |  2 +-
 lisp/ldefs-boot.el |  6 ++--
 lisp/so-long.el    | 64 ++++++++++++++++++++++++++++++-----
 5 files changed, 157 insertions(+), 15 deletions(-)

diff --git a/ChangeLog.3 b/ChangeLog.3
index c8dd40b..6418f9c 100644
--- a/ChangeLog.3
+++ b/ChangeLog.3
@@ -1,3 +1,99 @@
+2020-08-03  Phil Sainty  <psainty@orcon.net.nz>
+
+       lisp/so-long.el: Improve support for major mode hooks
+
+       * lisp/so-long.el (so-long-remember-all, so-long-disable-minor-modes)
+       (so-long-override-variables): Store and use the `so-long-minor-modes'
+       and `so-long-variable-overrides' values seen by the original major
+       mode, so that buffer-local changes made in the major mode hook will be
+       respected.
+
+       Add documentation of this and other major mode hook usage.
+
+2020-08-02  Grégory Mounié  <Gregory.Mounie@imag.fr>  (tiny change)
+
+       Avoid segfaults if XIM is set but not xim_styles
+
+       Emacs segfaults at the X11 initialization if XIM is set
+       and xim_styles is NULL.  This patch avoids the crash.
+       * src/xfns.c: Check also if FRAME_X_XIM_STYLES(f) is NULL.
+       (Bug#42676)  (Bug#42673)  (Bug#42677)
+
+2020-07-31  Philipp Stephani  <phst@google.com>
+
+       Backport: Make checking for liveness of global values more precise.
+
+       We can't just use a hash lookup because a global and a local reference
+       might refer to the same Lisp object.
+
+       * src/emacs-module.c (module_free_global_ref): More precise check for
+       global liveness.
+
+       (cherry picked from commit 9f01ce6327af886f26399924a9aadf16cdd4fd9f)
+
+2020-07-31  Philipp Stephani  <phst@google.com>
+
+       Backport: Fix subtle bug when checking liveness of module values.
+
+       We can't simply look up the Lisp object in the global reference table
+       because an invalid local and a valid global reference might refer to
+       the same object.  Instead, we have to test the address of the global
+       reference against the stored references.
+
+       * src/emacs-module.c (module_global_reference_p): New helper function.
+       (value_to_lisp): Use it.
+
+       (cherry picked from commit 6355a3ec62f43c9b99d483982ff851d32dd78891)
+
+2020-07-31  Philipp Stephani  <phst@google.com>
+
+       Backport: Fix memory leak for global module objects (Bug#42482).
+
+       Instead of storing the global values in a global 'emacs_value_storage'
+       object, store them as hash values alongside the reference counts.
+       That way the garbage collector takes care of cleaning them up.
+
+       * src/emacs-module.c (global_storage): Remove.
+       (struct module_global_reference): New pseudovector type.
+       (XMODULE_GLOBAL_REFERENCE): New helper function.
+       (module_make_global_ref, module_free_global_ref): Use
+       'module_global_reference' struct for global reference values.
+       (value_to_lisp, module_handle_nonlocal_exit): Adapt to deletion of
+       'global_storage'.
+
+       (cherry picked from commit 5c5eb9790898e4ab10bcbbdb6871947ed3018569)
+
+2020-07-30  Nicolas Petton  <nicolas@petton.fr>
+
+       * admin/authors.el (authors-aliases): Remove a faulty regexp.
+
+2020-07-29  Stefan Kangas  <stefankangas@gmail.com>
+
+       * doc/lispref/symbols.texi (Definitions): Fix typo.
+
+2020-07-28  Nicolas Petton  <nicolas@petton.fr>
+
+       * etc/HISTORY: Add Emacs 27.1 release date.
+
+2020-07-28  Nicolas Petton  <nicolas@petton.fr>
+
+       Bump Emacs version to 27.1
+
+       * README:
+       * configure.ac:
+       * msdos/sed2v2.inp:
+       * nt/README.W32: Bump Emacs version.
+
+2020-07-28  Nicolas Petton  <nicolas@petton.fr>
+
+       * etc/AUTHORS: Update.
+
+2020-07-28  Nicolas Petton  <nicolas@petton.fr>
+
+       Update authors.el
+
+       * admin/authors.el (authors-aliases): Add author aliases.
+
 2020-07-28  Nicolas Petton  <nicolas@petton.fr>
 
        * etc/NEWS: Remove temporary markup.
@@ -142382,7 +142478,7 @@
 
 This file records repository revisions from
 commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
-commit 56f958807c0b8ea8f45e3c088157ca144a1b1fac (inclusive).
+commit 1ca4da054be7eb340c511d817f3ec89c8b819db7 (inclusive).
 See ChangeLog.2 for earlier changes.
 
 ;; Local Variables:
diff --git a/etc/HISTORY b/etc/HISTORY
index f0fd7d6..a6b9f57 100644
--- a/etc/HISTORY
+++ b/etc/HISTORY
@@ -220,7 +220,7 @@ GNU Emacs 26.2 (2019-04-12) emacs-26.2
 
 GNU Emacs 26.3 (2019-08-28) emacs-26.3
 
-GNU Emacs 27.1 (2020-08-06) emacs-27.1
+GNU Emacs 27.1 (2020-08-10) emacs-27.1
 
 
 ----------------------------------------------------------------------
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index a056f5c..d0a24c2 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -595,7 +595,7 @@ the node "(emacs) Directory Variables" of the user manual.
 
 ** Network connections using 'local' can now use IPv6.
 'make-network-process' now uses the correct loopback address when
-asked to use ':host 'local' and ':family 'ipv6'.
+asked to use ":host 'local" and ":family 'ipv6".
 
 ** The new function 'replace-region-contents' replaces the current
 region using a given replacement-function in a non-destructive manner
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index ae58bfc..7077925 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -31062,7 +31062,7 @@ values), despite potential performance issues, type 
\\[so-long-revert].
 
 Use \\[so-long-commentary] for more information.
 
-Use \\[so-long-customize] to configure the behavior.
+Use \\[so-long-customize] to configure the behaviour.
 
 \(fn)" t nil)
 
@@ -31099,7 +31099,7 @@ or call the function `global-so-long-mode'.")
 (custom-autoload 'global-so-long-mode "so-long" nil)
 
 (autoload 'global-so-long-mode "so-long" "\
-Toggle automated performance mitigation for files with long lines.
+Toggle automated performance mitigations for files with long lines.
 
 If called interactively, enable Global So-Long mode if ARG is
 positive, and disable it if ARG is zero or negative.  If called from
@@ -31118,7 +31118,7 @@ When such files are detected by `so-long-predicate', we 
invoke the selected
 
 Use \\[so-long-commentary] for more information.
 
-Use \\[so-long-customize] to configure the behavior.
+Use \\[so-long-customize] to configure the behaviour.
 
 \(fn &optional ARG)" t nil)
 
diff --git a/lisp/so-long.el b/lisp/so-long.el
index f2c078b..f8a5cc9 100644
--- a/lisp/so-long.el
+++ b/lisp/so-long.el
@@ -255,8 +255,7 @@
 ;; `so-long-mode', completely bypassing the automated decision process.
 ;; Refer to M-: (info "(emacs) Specifying File Variables") RET
 ;;
-;; If so-long itself is causing problems, it can be inhibited by setting the
-;; `so-long-enabled' variable to nil, or by disabling the global mode with
+;; If so-long itself causes problems, disable the automated behaviour with
 ;; M-- M-x global-so-long-mode, or M-: (global-so-long-mode 0)
 
 ;; * Example configuration
@@ -282,6 +281,43 @@
 ;;           '((show-trailing-whitespace . nil)
 ;;             (truncate-lines . nil))))
 
+;; * Mode-specific configuration
+;; -----------------------------
+;; The `so-long-predicate' function is called in the context of the buffer's
+;; original major mode, and therefore major mode hooks can be used to control
+;; the criteria for calling `so-long' in any given mode (plus its derivatives)
+;; by setting buffer-local values for the variables in question.  This includes
+;; `so-long-predicate' itself, as well as any variables used by the predicate
+;; when determining the result.  By default this means `so-long-max-lines',
+;; `so-long-skip-leading-comments', and `so-long-threshold'.  E.g.:
+;;
+;;   (add-hook 'js-mode-hook 'my-js-mode-hook)
+;;
+;;   (defun my-js-mode-hook ()
+;;     "Custom `js-mode' behaviours."
+;;     (setq-local so-long-max-lines 100)
+;;     (setq-local so-long-threshold 1000))
+;;
+;; `so-long-variable-overrides' and `so-long-minor-modes' may also be given
+;; buffer-local values in order to apply different settings to different types
+;; of file.  For example, the Bidirectional Parentheses Algorithm does not 
apply
+;; to `<' and `>' characters by default, and therefore one might prefer to not
+;; set `bidi-inhibit-bpa' in XML files, on the basis that XML files with long
+;; lines are less likely to trigger BPA-related performance problems:
+;;
+;;   (add-hook 'nxml-mode-hook 'my-nxml-mode-hook)
+;;
+;;   (defun my-nxml-mode-hook ()
+;;     "Custom `nxml-mode' behaviours."
+;;     (require 'so-long)
+;;     (setq-local so-long-variable-overrides
+;;                 (remove '(bidi-inhibit-bpa . t) 
so-long-variable-overrides)))
+;;
+;; Finally, note that setting `so-long-target-modes' to nil buffer-locally in
+;; a major mode hook would prevent that mode from ever being targeted.  With
+;; `prog-mode' being targeted by default, specific derivatives of `prog-mode'
+;; could therefore be un-targeted if desired.
+
 ;; * Other ways of using so-long
 ;; -----------------------------
 ;; It may prove useful to automatically invoke major mode `so-long-mode' for
@@ -376,7 +412,6 @@
 ;;       - Added mode-line indicator, user option `so-long-mode-line-label',
 ;;         and faces `so-long-mode-line-active', `so-long-mode-line-inactive'.
 ;;       - New help commands `so-long-commentary' and `so-long-customize'.
-;;       - Renamed `so-long-mode-enabled' to `so-long-enabled'.
 ;;       - Refactored the default hook values using variable overrides
 ;;         (and returning all the hooks to nil default values).
 ;;       - Performance improvements for `so-long-detected-long-line-p'.
@@ -416,9 +451,14 @@
 (declare-function longlines-mode "longlines")
 (defvar longlines-mode)
 (defvar so-long-enabled nil
-  "Set to nil to prevent `so-long' from being triggered automatically.
-
-Has no effect if `global-so-long-mode' is not enabled.")
+  ;; This was initially a renaming of the old `so-long-mode-enabled' and
+  ;; documented as "Set to nil to prevent `so-long' from being triggered
+  ;; automatically."; however `so-long--ensure-enabled' may forcibly re-enable
+  ;; it contrary to the user's expectations, so for the present this should be
+  ;; considered internal-use only (with `global-so-long-mode' the interface
+  ;; for enabling or disabling the automated behaviour).  FIXME: Establish a
+  ;; way to support the original use-case, or rename to `so-long--enabled'.
+  "Internal use.  Non-nil when any so-long functionality has been used.")
 
 (defvar-local so-long--active nil ; internal use
   "Non-nil when `so-long' mitigations are in effect.")
@@ -886,9 +926,15 @@ buffer-local."
 Stores the existing value for each entry in `so-long-variable-overrides'.
 Stores the name of each enabled mode from the list `so-long-minor-modes'.
 
+The lists themselves are also remembered, so that major mode hooks can
+provide buffer-local modifications which are still accessible after changing
+to `so-long-mode'.
+
 If RESET is non-nil, remove any existing values before storing the new ones."
   (when reset
     (setq so-long-original-values nil))
+  (so-long-remember 'so-long-variable-overrides)
+  (so-long-remember 'so-long-minor-modes)
   (dolist (ovar so-long-variable-overrides)
     (so-long-remember (car ovar)))
   (dolist (mode so-long-minor-modes)
@@ -1288,7 +1334,7 @@ Calls `so-long-disable-minor-modes' and 
`so-long-override-variables'."
 
 (defun so-long-disable-minor-modes ()
   "Disable any active minor modes listed in `so-long-minor-modes'."
-  (dolist (mode so-long-minor-modes)
+  (dolist (mode (so-long-original 'so-long-minor-modes))
     (when (and (boundp mode) mode)
       (funcall mode 0))))
 
@@ -1304,7 +1350,7 @@ The modes are enabled in accordance with what was 
remembered in `so-long'."
 
 (defun so-long-override-variables ()
   "Set the buffer-local values defined by `so-long-variable-overrides'."
-  (dolist (ovar so-long-variable-overrides)
+  (dolist (ovar (so-long-original 'so-long-variable-overrides))
     (set (make-local-variable (car ovar)) (cdr ovar))))
 
 (defun so-long-restore-variables ()
@@ -1879,7 +1925,7 @@ If it appears in `%s', you should remove it."
 ; LocalWords:  defadvice nadvice whitespace ie bos eos eobp origmode un Un setq
 ; LocalWords:  docstring auf Wiedersehen longlines alist autoload Refactored 
Inc
 ; LocalWords:  MERCHANTABILITY RET REGEXP VAR ELPA WS mitigations EmacsWiki 
eval
-; LocalWords:  rx filename filenames bidi bpa
+; LocalWords:  rx filename filenames js defun bidi bpa prog FIXME
 
 ;; So long, farewell, auf Wiedersehen, goodbye
 ;; You have to go, this code is minified



reply via email to

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