emacs-diffs
[Top][All Lists]
Advanced

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

feature/android df74188dba7: Merge remote-tracking branch 'origin/master


From: Po Lu
Subject: feature/android df74188dba7: Merge remote-tracking branch 'origin/master' into feature/android
Date: Sat, 4 Mar 2023 07:28:29 -0500 (EST)

branch: feature/android
commit df74188dba74d7c956f1a5f3828892b57496ffed
Merge: 46c8e7617a1 396f46d904a
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Merge remote-tracking branch 'origin/master' into feature/android
---
 doc/lispref/commands.texi    |   8 +--
 doc/lispref/elisp.texi       |   1 +
 doc/lispref/functions.texi   | 154 ++++++++++++++++++++++++++++---------------
 doc/misc/erc.texi            |   2 +-
 etc/ERC-NEWS                 | 119 ++++++++++++++++++++-------------
 etc/NEWS.29                  |   7 +-
 lisp/erc/erc-sasl.el         |   5 +-
 lisp/erc/erc.el              |   9 +--
 lisp/frame.el                |   5 ++
 lisp/progmodes/eglot.el      |   3 +-
 lisp/progmodes/go-ts-mode.el |   2 +-
 src/alloc.c                  |   2 +-
 src/intervals.c              |   3 +
 13 files changed, 204 insertions(+), 116 deletions(-)

diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index c2e694207ab..271a6d15aa1 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -325,10 +325,10 @@ function @code{oclosure-interactive-form}.
 @defun oclosure-interactive-form function
 Just like @code{interactive-form}, this function takes a command and
 returns its interactive form.  The difference is that it is a generic
-function and it is only called when @var{function} is an OClosure.
-The purpose is to make it possible for some OClosure types to compute
-their interactive forms dynamically instead of carrying it in one of
-their slots.
+function and it is only called when @var{function} is an OClosure
+(@pxref{OClosures}).  The purpose is to make it possible for some
+OClosure types to compute their interactive forms dynamically instead
+of carrying it in one of their slots.
 
 This is used for example for @code{kmacro} functions in order to
 reduce their memory size, since they all share the same interactive
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index c7dc330441f..a1d7b51b609 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -569,6 +569,7 @@ Functions
 * Function Cells::          Accessing or setting the function definition
                               of a symbol.
 * Closures::                Functions that enclose a lexical environment.
+* OClosures::               Function objects with meta-data.
 * Advising Functions::      Adding to the definition of a function.
 * Obsolete Functions::      Declaring functions obsolete.
 * Inline Functions::        Defining functions that the compiler
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index b6a4ee13308..e9841821431 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -22,7 +22,7 @@ define them.
 * Function Cells::              Accessing or setting the function definition
                             of a symbol.
 * Closures::                    Functions that enclose a lexical environment.
-* OClosures::                   Function objects
+* OClosures::                   Function objects with meta-data.
 * Advising Functions::          Adding to the definition of a function.
 * Obsolete Functions::          Declaring functions obsolete.
 * Inline Functions::            Functions that the compiler will expand inline.
@@ -1586,56 +1586,69 @@ examining or altering the structure of closure objects.
 
 @node OClosures
 @section Open Closures
+@cindex oclosures
+@cindex open closures
 
-Traditionally, functions are opaque objects which offer no other
-functionality but to call them.  Emacs Lisp functions aren't fully
+  Traditionally, functions are opaque objects which offer no other
+functionality but to call them.  (Emacs Lisp functions aren't fully
 opaque since you can extract some info out of them such as their
 docstring, their arglist, or their interactive spec, but they are
-mostly opaque.  This is usually what we want, but occasionally we need
-functions to expose a bit more information about themselves.
+still mostly opaque.)  This is usually what we want, but occasionally
+we need functions to expose a bit more information about themselves.
 
-OClosures are functions which carry additional type information,
-and expose some information in the form of slots which you can access
+  @dfn{Open closures}, or @dfn{OClosures} for short, are function
+objects which carry additional type information and expose some
+information about themselves in the form of slots which you can access
 via accessor functions.
 
-They are defined in two steps: first @code{oclosure-define} is used to
-define new OClosure types by specifying the slots carried by those
-OClosures, and then @code{oclosure-lambda} is used to create an
-OClosure object of a given type.
+ OClosures are defined in two steps: first you use
+@code{oclosure-define} to define a new OClosure type by specifying the
+slots carried by the OClosures of this type, and then you use
+@code{oclosure-lambda} to create an OClosure object of a given type.
+
+Let's say we want to define keyboard macros, i.e.@: interactive
+functions which re-execute a sequence of key events (@pxref{Keyboard
+Macros}).  You could do it with a plain function as follows:
 
-Say we want to define keyboard macros, i.e. interactive functions
-which re-execute a sequence of key events.  You could do it with
-a plain function as follows:
 @example
 (defun kbd-macro (key-sequence)
   (lambda (&optional arg)
     (interactive "P")
     (execute-kbd-macro key-sequence arg)))
 @end example
+
+@noindent
 But with such a definition there is no easy way to extract the
 @var{key-sequence} from that function, for example to print it.
 
 We can solve this problem using OClosures as follows.  First we define
 the type of our keyboard macros (to which we decided to add
 a @code{counter} slot while at it):
+
 @example
 (oclosure-define kbd-macro
   "Keyboard macro."
   keys (counter :mutable t))
 @end example
+
+@noindent
 After which we can rewrite our @code{kbd-macro} function:
+
 @example
 (defun kbd-macro (key-sequence)
   (oclosure-lambda (kbd-macro (keys key-sequence) (counter 0))
       (&optional arg)
-    (interactive "p")
+    (interactive "P")
     (execute-kbd-macro keys arg)
     (setq counter (1+ counter))))
 @end example
+
+@noindent
 As you can see, the @code{keys} and @code{counter} slots of the
 OClosure can be accessed as local variables from within the body
 of the OClosure.  But we can now also access them from outside of the
 body of the OClosure, for example to describe a keyboard macro:
+
 @example
 (defun describe-kbd-macro (km)
   (if (not (eq 'kbd-macro (oclosure-type km)))
@@ -1644,55 +1657,90 @@ body of the OClosure, for example to describe a 
keyboard macro:
           (counter (kbd-macro--counter km)))
       (message "Keys=%S, called %d times" keys counter))))
 @end example
+
+@noindent
 Where @code{kbd-macro--keys} and @code{kbd-macro--counter} are
-accessor functions generated by the @code{oclosure-define} macro.
+accessor functions generated by the @code{oclosure-define} macro for
+oclosures whose type is @code{kbd-macro}.
 
-@defmac oclosure-define name &optional docstring &rest slots
+@defmac oclosure-define oname &optional docstring &rest slots
 This macro defines a new OClosure type along with accessor functions
-for its slots.  @var{name} can be a symbol (the name of
-the new type), or a list of the form @code{(@var{name} . @var{type-props})} in
-which case @var{type-props} is a list of additional properties.
-@var{slots} is a list of slot descriptions where each slot can be
-either a symbol (the name of the slot) or it can be of the form
-@code{(@var{slot-name} . @var{slot-props})} where @var{slot-props} is
-a property list.
-
-For each slot, the macro creates an accessor function named
-@code{@var{name}--@var{slot-name}}.  By default slots are immutable.
-If you need a slot to be mutable, you need to specify it with the
-@code{:mutable} slot property, after which it can be mutated for
-example with @code{setf}.
-
-Beside slot accessors, the macro can create a predicate and
-functional update functions according to @var{type-props}:
-a @code{(:predicate @var{pred-name})} in the @var{type-props} causes
-the definition of a predicate function under the name @var{pred-name},
-and @code{(:copier @var{copier-name} @var{copier-arglist})} causes the
-definition of a functional update function which takes an OClosure of
-type @var{name} as first argument and returns a copy of it with the
-slots named in @var{copier-arglist} modified to the value passed in the
-corresponding argument.
+for its @var{slots}.  @var{oname} can be a symbol (the name of the new
+type), or a list of the form
+@w{@code{(@var{oname} . @var{type-props})}}, in which case
+@var{type-props} is a list of additional properties of this oclosure
+type.  @var{slots} is a list of slot descriptions where each slot can
+be either a symbol (the name of the slot) or it can be of the form
+@w{@code{(@var{slot-name} . @var{slot-props})}}, where
+@var{slot-props} is a property list of the corresponding slot
+@var{slot-name}.
+The OClosure type's properties specified by @var{type-props} can
+include the following:
+
+@table @code
+@item (:predicate @var{pred-name})
+This requests creation of a predicate function named @var{pred-name}.
+This function will be used to recognize OClosures of the type
+@var{oname}.  If this type property is not specified,
+@code{oclosure-define} will generate a default name for the
+predicate.
+@item (:parent @var{otype})
+This makes type @var{otype} of OClosures be the parent of the type
+@var{oname}.  The OClosures of type @var{oname} inherit the
+@var{slots} defined by their parent type.
+@c FIXME: Is the above description of :parent correct?
+@item (:copier @var{copier-name} @var{copier-args})
+This causes the definition of a functional update function, knows as
+the @dfn{copier}, which takes an OClosure of type @var{oname} as its
+first argument and returns a copy of it with the slots named in
+@var{copier-args} modified to contain the value passed in the
+corresponding argument in the actual call to @var{copier-name}.
+@end table
+
+For each slot in @var{slots}, the @code{oclosure-define} macro creates
+an accessor function named @code{@var{oname}--@var{slot-name}}; these
+can be used to access the values of the slots.  The slot definitions
+in @var{slots} can specify the following properties of the slots:
+
+@table @code
+@item :mutable @var{val}
+By default, slots are immutable, but if you specify the
+@code{:mutable} property with a non-@code{nil} value, the slot can be
+mutated, for example with @code{setf} (@pxref{Setting Generalized
+Variables}).
+@c FIXME: Some rationale and meaning of immutable slot is probably in
+@c order here.
+@item :type @var{val-type}
+This specifies the type of the values expected to appear in the slot.
+@c FIXME: What will happen if the value is of a different type? error?
+@end table
 @end defmac
 
 @defmac oclosure-lambda (type . slots) arglist &rest body
-This macro creates an anonymous OClosure of type @var{type}.
-@var{slots} should be a list of elements of the form @code{(@var{slot-name}
-@var{exp})}.
-At run time, each @var{exp} is evaluated, in order, after which
-the OClosure is created with its slots initialized with the
-resulting values.
-
-When called as a function, the OClosure will accept arguments
-according to @var{arglist} and will execute the code in @var{body}.
-@var{body} can refer to the value of any of its slot directly as if it
-were a local variable that had been captured by static scoping.
+This macro creates an anonymous OClosure of type @var{type}, which
+should have been defined with @code{oclosure-define}.  @var{slots}
+should be a list of elements of the form
+@w{@code{(@var{slot-name} @var{expr})}}.  At run time, each @var{expr}
+is evaluated, in order, after which the OClosure is created with its
+slots initialized with the resulting values.
+
+When called as a function (@pxref{Calling Functions}), the OClosure
+created by this macro will accept arguments according to @var{arglist}
+and will execute the code in @var{body}.  @var{body} can refer to the
+value of any of its slot directly as if it were a local variable that
+had been captured by static scoping.
 @end defmac
 
 @defun oclosure-type object
-This function returns the OClosure type (a symbol) of @var{object} if it is an
-OClosure, and @code{nil} otherwise.
+This function returns the OClosure type (a symbol) of @var{object} if
+it is an OClosure, and @code{nil} otherwise.
 @end defun
 
+One other function related to OClosures is
+@code{oclosure-interactive-form}, which allows some types of OClosures
+to compute their interactive forms dynamically.  @xref{Using
+Interactive, oclosure-interactive-form}.
+
 
 @node Advising Functions
 @section Advising Emacs Lisp Functions
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index d5ec0f48e1c..b80affbc954 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -2,7 +2,7 @@
 @c %**start of header
 @setfilename ../../info/erc.info
 @settitle ERC Manual
-@set ERCVER 5.4.1
+@set ERCVER 5.5
 @set ERCDIST as distributed with Emacs @value{EMACSVER}
 @include docstyle.texi
 @syncodeindex fn cp
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index d5e256d9d33..434bfab94e9 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -44,8 +44,13 @@ The 'networks' module is now all but required for everyday 
interactive
 use.  A default member of 'erc-modules' since ERC 5.3, 'networks' has
 grown increasingly integral to core client operations over the years.
 From now on, only the most essential operations will be officially
-supported in its absence, and users will see a warning upon
-entry-point invocation when it's not present.
+supported in its absence, and users will see a warning upon invoking
+an entry point, like 'erc-tls', when that's the case.
+
+On a related note, the function 'erc-network' now always returns
+non-nil in buffers created by a successfully established IRC
+connection, even after that connection has been closed.  This was done
+to aid the overall effort to improve buffer association.
 
 ** Tighter auth-source integration.
 The days of hit-and-miss auth-source queries are hopefully behind us.
@@ -77,12 +82,14 @@ now avoids any hijacking of the active window as well.
 
 Beyond this, additional flexibility is now available for controlling
 the behavior of newly created target buffers during reconnection.
+See the option 'erc-reconnect-display' for more.
 
 ** Improved handling of multiline prompt input.
 This means better detection and handling of intervening and trailing
 blanks when 'erc-send-whitespace-lines' is active.  New options have
 also been added for warning when input spans multiple lines.  Although
-off by default, new users are encouraged to enable them.
+off by default, new users are encouraged to enable them.  See options
+'erc-inhibit-multiline-input' and 'erc-ask-about-multiline-input'.
 
 ** URL handling has improved.
 Clicking on 'irc://' and 'ircs://' links elsewhere in Emacs now does
@@ -91,6 +98,21 @@ users are now prompted to confirm connection parameters 
prior to lift
 off.  See the new '(erc) Integrations' section in the Info manual for
 details.
 
+** ERC's major-mode hook now runs slightly later.
+The function 'erc-open' now delays running 'erc-mode-hook' until ERC's
+prompt and its bounding markers and many essential local variables
+have been initialized.  Those essentials include the familiar
+'erc-default-recipients', 'erc-server-users', and 'erc-network', as
+well as the various "session" variables, like 'erc-session-connector'.
+ERC activates "local modules" immediately afterward, just before
+running 'erc-connect-pre-hook', which is still useful for gaining a
+full accounting of what's been set.
+
+In similar news, 'erc-open' no longer calls 'erc-update-modules'.
+However, it still activates modules in a similar fashion, meaning,
+among other things, global-module setup still occurs before major-mode
+activation (something that's here to stay for compatibility reasons).
+
 ** Miscellaneous behavioral changes impacting the user experience.
 A bug has been fixed that saw prompts being mangled, doubled, or
 erased in server buffers upon disconnection.  Instead, input prompts
@@ -99,58 +121,61 @@ now collapse into an alternate form designated by the 
option
 but can be fine-tuned via the repurposed, formerly abandoned option
 'erc-hide-prompt'.
 
-Certain commands provided by the 'erc-match' module, such as
-'erc-add-keyword', 'erc-add-pal', and others, now optionally ask
-whether to 'regexp-quote' the current input.  A new option,
-'erc-match-quote-when-adding', has been added to allow for retaining
-the old behavior, if desired.
-
-A bug has been fixed affecting users of the Soju bouncer: outgoing
-messages during periods of heavy traffic no longer disappear.
+Another fix-turned-feature involves certain commands provided by the
+'erc-match' module, such as 'erc-add-keyword', 'erc-add-pal', and
+others, which now optionally offer to 'regexp-quote' the current
+input.  The old behavior, if desired, can still be had via the new
+option 'erc-match-quote-when-adding'.
 
-Although rare, server passwords containing white space are now handled
-correctly.
-
-** Miscellaneous behavioral changes in the library API.
-A number of core macros and other definitions have been moved to a new
-file called erc-common.el.  This was done to further lessen the
-various complications arising from the mutual dependency between 'erc'
-and 'erc-backend'.
-
-ERC now relies on the Compat library from GNU ELPA to supply forward
-compatibility shims for users running older versions of Emacs.  The
-required Compat version resides atop ERC's main library file, in the
-'Package-Requires' header.  Third-party ERC modules will benefit
-automatically from this adoption.
-
-The function 'erc-network' always returns non-nil in server and target
-buffers belonging to a successfully established IRC connection, even
-after that connection has been closed.  (Also see the note in the
-section above about the 'networks' module basically being mandatory.)
-
-In 5.4, support for network symbols as keys was added for
+In 5.4, support for using network symbols as keys was added for
 'erc-autojoin-channels-alist'.  This has been extended to include
 explicit symbols passed to 'erc-tls' and 'erc' as so-called
 network-context identifiers via a new ':id' keyword.  The latter
 carries wider significance beyond autojoin and can be used for
 unequivocally identifying a connection in a human-readable way.
 
-The function 'erc-auto-query' was deemed too difficult to reason
-through and has thus been deprecated with no public replacement; it
-has also been removed from the client code path.
-
-The function 'erc-open' now delays running 'erc-mode-hook' members
-until most local session variables have been initialized (minus those
-connection-related ones in erc-backend).  'erc-open' also no longer
-calls 'erc-update-modules', although modules are still activated
-in an identical fashion.
-
-Some groundwork has been laid for what may become a new breed of ERC
-module, namely, "connection-local" (or simply "local") modules.
+A number of UX-centric bug fixes accompany this release.  For example,
+spaces are now possible in server passwords, and users of the Soju
+bouncer should no longer see outgoing messages pile up during periods
+of heavy traffic.  See the Emacs change log for the full complement.
 
-A few internal variables have been introduced that could just as well
-have been made public, possibly as user options.  Likewise for some
-internal functions.  As always, users needing such functionality
+** Miscellaneous behavioral changes in the library API.
+A number of core macros and other definitions have been moved to a new
+file called erc-common.el.  This was done to help mitigate various
+complications arising from the mutual dependency between 'erc' and
+'erc-backend'.
+
+Also on the maintainability front, ERC now relies on the Compat
+library from GNU ELPA to supply forward compatibility shims for users
+running older versions of Emacs.  The required Compat version resides
+atop ERC's main library file, in the 'Package-Requires' header.
+Third-party modules should benefit automatically from its adoption.
+
+In an effort to help further tame ERC's complexity, the variable
+'erc-default-recipients' is now expected to hold but a single target.
+As a consequence, functions like 'erc-add-default-channel' that
+imagine an alternate, aspirational model of buffer-target relations
+have been deprecated.  See Emacs change-log entries from around July
+of 2022 for specifics.
+
+A number of less consequential deprecations also debut in this
+release.  For example, the function 'erc-auto-query' was deemed too
+difficult to understand, behavior wise, and has thus been stricken
+from the client code path with no public replacement.  Although likely
+uncontroversial, such changes may still spell disruption for some.  If
+you find yourself among them and in need of explanations, please see
+related entries in the change log and discussions on the bug tracker.
+
+Although this release is light on API features, some groundwork has
+been laid for what may become a new breed of ERC module, namely,
+"connection-local" (or simply "local") modules.  This marks a small
+but crucial step forward toward a more flexible and granular revamping
+of ERC's long touted extensibility.  See the Info node "(erc) Local
+Modules" for details.
+
+Lastly, a few internal variables have been introduced that could just
+as well have been made public, possibly as user options.  Likewise for
+some internal functions.  As always, users needing such functionality
 officially exposed are encouraged to write to emacs-erc@gnu.org.
 
 
diff --git a/etc/NEWS.29 b/etc/NEWS.29
index b5e67d47037..189ca590e3f 100644
--- a/etc/NEWS.29
+++ b/etc/NEWS.29
@@ -3231,8 +3231,11 @@ manually if needed, using the new user options 
'wallpaper-command' and
 
 +++
 ** New package 'oclosure'.
-This allows the creation of "functions with slots" or "function
-objects" via the macros 'oclosure-define' and 'oclosure-lambda'.
+This allows the creation of OClosures, which are "functions with
+slots" or "function objects" that expose additional information about
+themselves.  Use the new macros 'oclosure-define' and
+'oclosure-lambda' to create OClosures.  See the "(elisp) OClosures"
+node for more information.
 
 +++
 *** New generic function 'oclosure-interactive-form'.
diff --git a/lisp/erc/erc-sasl.el b/lisp/erc/erc-sasl.el
index ed91f412255..9265691c2d7 100644
--- a/lisp/erc/erc-sasl.el
+++ b/lisp/erc/erc-sasl.el
@@ -405,7 +405,7 @@ This doesn't solicit or validate a suite of supported 
mechanisms."
   (erc-sasl--destroy proc))
 
 (define-erc-response-handler (908)
-  "Handle a RPL_SASLALREADY response." nil
+  "Handle a RPL_SASLMECHS response." nil
   (erc-display-message parsed '(notice error) 'active 's908
                        ?m (alist-get 'mechanism erc-sasl--options)
                        ?s (string-join (cdr (erc-response.command-args parsed))
@@ -426,7 +426,8 @@ Otherwise, expect it to disappear in subsequent versions.")
         (erc-server-send (if erc-sasl--send-cap-ls "CAP LS" "CAP REQ :sasl"))
         (let ((erc-session-password
                (and erc-session-password
-                    (not (eq :password (alist-get 'password 
erc-sasl--options)))
+                    (not (eq :password
+                             (alist-get 'password erc-sasl--options)))
                     erc-session-password))
               (erc-session-username
                ;; The username may contain a colon or a space
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index d35907a1677..69bdb5d71b1 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -12,8 +12,8 @@
 ;;               David Edmondson (dme@dme.org)
 ;;               Michael Olson (mwolson@gnu.org)
 ;;               Kelvin White (kwhite@gnu.org)
-;; Version: 5.4.1
-;; Package-Requires: ((emacs "27.1") (compat "28.1.2.0"))
+;; Version: 5.5
+;; Package-Requires: ((emacs "27.1") (compat "29.1.3.4"))
 ;; Keywords: IRC, chat, client, Internet
 ;; URL: https://www.gnu.org/software/emacs/erc.html
 
@@ -71,7 +71,7 @@
 (require 'iso8601)
 (eval-when-compile (require 'subr-x) (require 'url-parse))
 
-(defconst erc-version "5.4.1"
+(defconst erc-version "5.5"
   "This version of ERC.")
 
 (defvar erc-official-location
@@ -86,7 +86,8 @@
  '(ERC ("5.2" . "22.1")
        ("5.3" . "23.1")
        ("5.4" . "28.1")
-       ("5.4.1" . "29.1")))
+       ("5.4.1" . "29.1")
+       ("5.5" . "29.1")))
 
 (defgroup erc nil
   "Emacs Internet Relay Chat client."
diff --git a/lisp/frame.el b/lisp/frame.el
index 3e28a22d469..a614d600fd0 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -873,6 +873,11 @@ the new frame according to its own rules."
   (interactive)
   (let* ((display (cdr (assq 'display parameters)))
          (w (cond
+             ;; When running in a batch session, don't create a GUI
+             ;; frame.  (Batch sessions don't set a SIGIO handler on
+             ;; relevant platforms, so attempting this would terminate
+             ;; Emacs.)
+             (noninteractive nil)
              ((assq 'terminal parameters)
               (let ((type (terminal-live-p
                            (cdr (assq 'terminal parameters)))))
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index e6f38792645..13d30a67083 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -1924,7 +1924,6 @@ If it is activated, also signal textDocument/didOpen."
       ;; about the buffer.
       (run-hooks 'eglot-managed-mode-hook))))
 
-(add-hook 'find-file-hook 'eglot--maybe-activate-editing-mode)
 (add-hook 'after-change-major-mode-hook 'eglot--maybe-activate-editing-mode)
 
 (defun eglot-clear-status (server)
@@ -3603,8 +3602,10 @@ If NOERROR, return predicate, else erroring function."
             (goto-char (eglot--lsp-position-to-point position))
             (when (or (> (point) to) (< (point) from)) (cl-return))
             (let ((left-pad (and paddingLeft
+                                 (not (eq paddingLeft :json-false))
                                  (not (memq (char-before) '(32 9))) " "))
                   (right-pad (and paddingRight
+                                  (not (eq paddingRight :json-false))
                                   (not (memq (char-after) '(32 9))) " ")))
               (cl-flet
                   ((do-it (text lpad rpad)
diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el
index 9a02c15aa00..ce77cc3973d 100644
--- a/lisp/progmodes/go-ts-mode.el
+++ b/lisp/progmodes/go-ts-mode.el
@@ -427,7 +427,7 @@ what the parent of the node would be if it were a node."
 
     (treesit-major-mode-setup)))
 
-(if (treesit-language-available-p 'gomod)
+(if (treesit-ready-p 'gomod)
     (add-to-list 'auto-mode-alist '("/go\\.mod\\'" . go-mod-ts-mode)))
 
 (provide 'go-ts-mode)
diff --git a/src/alloc.c b/src/alloc.c
index 3e7d5c2d15f..be80410176d 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1087,7 +1087,7 @@ lisp_free (void *block)
    BLOCK_BYTES and guarantees they are aligned on a BLOCK_ALIGN boundary.  */
 
 /* Byte alignment of storage blocks.  */
-#define BLOCK_ALIGN (1 << 10)
+#define BLOCK_ALIGN (1 << 15)
 verify (POWER_OF_2 (BLOCK_ALIGN));
 
 /* Use aligned_alloc if it or a simple substitute is available.
diff --git a/src/intervals.c b/src/intervals.c
index 75e37a8c90c..ee976fb1035 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -2333,6 +2333,9 @@ set_intervals_multibyte_1 (INTERVAL i, bool multi_flag,
 
   if (TOTAL_LENGTH (i) == 0)
     {
+      /* Delete the whole subtree.  */
+      i->left = NULL;
+      i->right = NULL;
       delete_interval (i);
       return;
     }



reply via email to

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