Merge from origin/emacs-29
bd5115e134
Remove Eglot activation check from find-file-hookadc04ad524
* src/intervals.c (set_intervals_multibyte_1): Fix bug#61887b3e930d328
Revert inadvertent change to lisp/icomplete.el in previou...da8e4b6fe4
Revert previous change in go-ts-mode.el7548446194
Release ERC 5.5585faf4c17
; More doc improvements for OClosures2840895c1a
Don't create GUI frames in batch sessions452b5ed103
; Fix wrong error name in erc-server-908 doc string.1e9484f2fd
; * etc/ERC-NEWS: Mention more deprecations.119b3a4dba
Minor copyedits of documentation of OClosures3a651773d2
Eglot: pay better attention to hints' paddingLeft/Right (... # Conflicts: # etc/NEWS
This commit is contained in:
commit
49e021e5be
12 changed files with 198 additions and 110 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 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:
|
||||
|
||||
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}.
|
||||
@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
|
||||
|
||||
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 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.
|
||||
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, 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.
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
115
etc/ERC-NEWS
115
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.
|
||||
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'.
|
||||
|
||||
A bug has been fixed affecting users of the Soju bouncer: outgoing
|
||||
messages during periods of heavy traffic no longer disappear.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
** 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'.
|
||||
|
||||
Some groundwork has been laid for what may become a new breed of ERC
|
||||
module, namely, "connection-local" (or simply "local") modules.
|
||||
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.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
|
|
|
@ -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'.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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)))))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue