1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-21 06:55:39 +00:00

Merge branch 'master' into feature/package-autosuggest

This commit is contained in:
Philip Kaludercic 2024-11-08 11:36:49 -05:00
commit 8fa657f064
No known key found for this signature in database
14 changed files with 1151 additions and 58 deletions

View File

@ -177,6 +177,17 @@ characters.
*** New language-environment and input method for Tifinagh.
The Tifinagh script is used to write the Berber languages.
---
*** New input methods for Northern Iroquoian languages.
Input methods are now implemented for Haudenosaunee languages in the
Northern Iroquoian language family: 'mohawk-postfix' (Mohawk
[Kanienkéha / Onkwehonwehnéha]), 'oneida-postfix' (Oneida [Onʌyota:ká:
/ Ukwehuwehnéha]), 'cayuga-postfix' (Cayuga [Gayogo̱ho:nǫhnéha:ˀ]),
'onondaga-postfix (Onondaga [[Onųdaʔgegáʔ]), and `seneca-postfix'
[Onödowága:]). Additionally, there is a general-purpose
'haudenosaunee-postfix' input method to facilitate writing in the
orthographies of the five languages simultaneously.
---
** 'visual-wrap-prefix-mode' now supports variable-pitch fonts.
When using 'visual-wrap-prefix-mode' in buffers with variable-pitch
@ -706,6 +717,13 @@ Use 'if-let*', 'when-let*' and 'and-let*' instead.
This effectively obsoletes the old '(if-let (SYMBOL SOMETHING) ...)'
single binding syntax, which we'd kept only for backwards compatibility.
---
** The Eshell 'pwd' command now expands the directory name on all systems.
This ensures that user directories are properly expanded to their full
name. Previously, Eshell only did this for MS-Windows systems. To
restore the old behavior, you can set 'eshell-pwd-convert-function' to
'identity'.
* Lisp Changes in Emacs 31.1

View File

@ -19,6 +19,10 @@
;; https://github.com/larsbrinkhoff/emacs-history/tree/sources/decuslib.com/decus/vax85b/gnuemax
("24.4" fun set-transient-map)
("22.1" fun version=)
("22.1" fun version<)
("22.1" fun version<=)
("22.1" fun read-number)
("19.7" fun defsubst)
("19.34" fun make-directory)
("18.59" fun mark)

View File

@ -65,9 +65,7 @@ they lack somewhat in feel from the typical shell equivalents."
:version "24.1" ; removed eshell-dirs-initialize
:type 'hook)
(defcustom eshell-pwd-convert-function (if (eshell-under-windows-p)
#'expand-file-name
#'identity)
(defcustom eshell-pwd-convert-function #'expand-file-name
"The function used to normalize the value of Eshell's `pwd'.
The value returned by `pwd' is also used when recording the
last-visited directory in the last-dir-ring, so it will affect the
@ -75,7 +73,8 @@ form of the list used by `cd ='."
:type '(radio (function-item file-truename)
(function-item expand-file-name)
(function-item identity)
(function :tag "Other")))
(function :tag "Other"))
:version "31.1")
(defcustom eshell-ask-to-save-last-dir 'always
"Determine if the last-dir-ring should be automatically saved.

1051
lisp/leim/quail/iroquoian.el Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2076,7 +2076,12 @@ Interactively, EVENT is the value of `last-nonmenu-event'."
(insert-file-contents file)
(buffer-string)))
(cons "name" name)
(cons "filename" file))
;; RFC 2183 declares that recipients should
;; only respect the basename of the filename
;; parameter, and the leading directories
;; might divulge private information, so we
;; only send the basename in our request.
(cons "filename" (file-name-nondirectory file)))
values)))
((equal (plist-get input :type) "submit")
;; We want the values from buttons if we hit a button if

View File

@ -805,6 +805,7 @@ not get changed."
(widen)
(put-text-property (point) pos 'nt-age 'old)
(newsticker--buffer-set-faces (point) pos)))
(newsticker--cache-save-feed (newsticker--cache-get-feed feed))
(set-buffer-modified-p nil)))))))
(defun newsticker-mark-item-at-point-as-immortal ()
@ -1279,7 +1280,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs."
(let ((img (newsticker--image-read feed-name-symbol
disabled)))
(when img
(newsticker--insert-image img (car item)))))
(newsticker--insert-image img (format "[logo: %s]" (car item))))))
(setq format (substring format 2)))
((string= "%L" prefix)
;; logo or title
@ -1292,7 +1293,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs."
(let ((img (newsticker--image-read feed-name-symbol
disabled)))
(if img
(newsticker--insert-image img (car item))
(newsticker--insert-image img (format "[logo: %s]" (car item)))
(when (car item)
(setq pos-text-start (point-marker))
(if (eq (newsticker--age item) 'feed)

View File

@ -718,10 +718,11 @@ class declarations.")
"aiter" "anext" "ascii" "breakpoint" "bytearray" "bytes" "exec"
;; Special attributes:
;; https://docs.python.org/3/reference/datamodel.html
"__annotations__" "__closure__" "__code__"
"__defaults__" "__dict__" "__doc__" "__globals__"
"__kwdefaults__" "__name__" "__module__" "__package__"
"__qualname__"
"__annotations__" "__bases__" "__closure__" "__code__"
"__defaults__" "__dict__" "__doc__" "__firstlineno__"
"__globals__" "__kwdefaults__" "__name__" "__module__"
"__mro__" "__package__" "__qualname__"
"__static_attributes__" "__type_params__"
;; Extras:
"__all__")
symbol-end) . font-lock-builtin-face))
@ -1034,10 +1035,12 @@ It makes underscores and dots word constituent chars.")
">>" ">>=" "|" "|=" "~" "@" "@="))
(defvar python--treesit-special-attributes
'("__annotations__" "__closure__" "__code__"
"__defaults__" "__dict__" "__doc__" "__globals__"
"__kwdefaults__" "__name__" "__module__" "__package__"
"__qualname__" "__all__"))
'("__annotations__" "__bases__" "__closure__" "__code__"
"__defaults__" "__dict__" "__doc__" "__firstlineno__"
"__globals__" "__kwdefaults__" "__name__" "__module__"
"__mro__" "__package__" "__qualname__"
"__static_attributes__" "__type_params__"
"__all__"))
(defvar python--treesit-exceptions
'(;; Python 2 and 3:

View File

@ -299,7 +299,7 @@ value of last one, or nil if there are none."
(if body
(list 'if cond (cons 'progn body))
(macroexp-warn-and-return (format-message "`when' with empty body")
cond '(empty-body when) t)))
(list 'progn cond nil) '(empty-body when) t)))
(defmacro unless (cond &rest body)
"If COND yields nil, do BODY, else return nil.
@ -309,7 +309,7 @@ value of last one, or nil if there are none."
(if body
(cons 'if (cons cond (cons nil body)))
(macroexp-warn-and-return (format-message "`unless' with empty body")
cond '(empty-body unless) t)))
(list 'progn cond nil) '(empty-body unless) t)))
(defsubst subr-primitive-p (object)
"Return t if OBJECT is a built-in primitive written in C.

View File

@ -469,10 +469,10 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
"application/yaml"
"application/json-seq"
"\\`text/"
"+xml\\'"
"+json\\'"
"+yaml\\'"
"+json-seq\\'"))
"\\+xml\\'"
"\\+json\\'"
"\\+yaml\\'"
"\\+json-seq\\'"))
(defun w32--mime-type-textual-p (mime-type)
"Returns t if MIME-TYPE, a symbol, names a textual MIME type.

View File

@ -1738,6 +1738,8 @@ Type \\[vc-next-action] to check in changes.")
(format "%d files" (length files))
"this file"))))
(declare-function mail-text "sendmail" ())
(declare-function message-goto-body "message" (&optional interactive))
(defun vc-steal-lock (file rev owner)
"Steal the lock on FILE."
(let (file-description)
@ -1758,7 +1760,10 @@ Type \\[vc-next-action] to check in changes.")
;; goes wrong, we don't want to send any mail.
(compose-mail owner (format "Stolen lock on %s" file-description))
(setq default-directory (expand-file-name "~/"))
(goto-char (point-max))
(cond
((eq mail-user-agent 'sendmail-user-agent)
(mail-text))
((message-goto-body)))
(insert
(format "I stole the lock on %s, " file-description)
(current-time-string)

View File

@ -378,9 +378,9 @@ itree_inherit_offset (uintmax_t otick, struct itree_node *node)
node->right->offset += node->offset;
node->offset = 0;
}
/* The only thing that matters about `otick` is whether it's equal to
/* The only thing that matters about 'otick' is whether it's equal to
that of the tree. We could also "blindly" inherit from parent->otick,
but we need to tree's `otick` anyway for when there's no parent. */
but we need to tree's 'otick' anyway for when there's no parent. */
if (node->parent == NULL || node->parent->otick == otick)
node->otick = otick;
}
@ -683,7 +683,7 @@ itree_insert_node (struct itree_tree *tree, struct itree_node *node)
struct itree_node *parent = NULL;
struct itree_node *child = tree->root;
uintmax_t otick = tree->otick;
/* It's the responsibility of the caller to set `otick` on the node,
/* It's the responsibility of the caller to set 'otick' on the node,
to "confirm" that the begin/end fields are up to date. */
eassert (node->otick == otick);
@ -913,8 +913,8 @@ itree_total_offset (struct itree_node *node)
link the tree root.
Warning: DEST is left unmodified. SOURCE's child links are
unchanged. Caller is responsible for recalculation of `limit`.
Requires both nodes to be using the same effective `offset`. */
unchanged. Caller is responsible for recalculation of 'limit'.
Requires both nodes to be using the same effective 'offset'. */
static void
itree_replace_child (struct itree_tree *tree,
struct itree_node *source,
@ -939,8 +939,8 @@ itree_replace_child (struct itree_tree *tree,
parent, left and right in surrounding nodes to point to SOURCE.
Warning: DEST is left unmodified. Caller is responsible for
recalculation of `limit`. Requires both nodes to be using the same
effective `offset`. */
recalculation of 'limit'. Requires both nodes to be using the same
effective 'offset'. */
static void
itree_transplant (struct itree_tree *tree,
struct itree_node *source,
@ -964,38 +964,38 @@ itree_remove (struct itree_tree *tree, struct itree_node *node)
eassert (itree_contains (tree, node));
eassert (check_tree (tree, true)); /* FIXME: Too expensive. */
/* Find `splice`, the leaf node to splice out of the tree. When
`node` has at most one child this is `node` itself. Otherwise,
it is the in order successor of `node`. */
/* Find 'splice', the leaf node to splice out of the tree. When
'node' has at most one child this is 'node' itself. Otherwise,
it is the in order successor of 'node'. */
itree_inherit_offset (tree->otick, node);
struct itree_node *splice
= (node->left == NULL || node->right == NULL)
? node
: itree_subtree_min (tree->otick, node->right);
/* Find `subtree`, the only child of `splice` (may be NULL). Note:
`subtree` will not be modified other than changing its parent to
`splice`. */
/* Find 'subtree', the only child of 'splice' (may be NULL). Note:
'subtree' will not be modified other than changing its parent to
'splice'. */
eassert (splice->left == NULL || splice->right == NULL);
struct itree_node *subtree
= (splice->left != NULL) ? splice->left : splice->right;
/* Save a pointer to the parent of where `subtree` will eventually
be in `subtree_parent`. */
/* Save a pointer to the parent of where 'subtree' will eventually
be in 'subtree_parent'. */
struct itree_node *subtree_parent
= (splice->parent != node) ? splice->parent : splice;
/* If `splice` is black removing it may violate Red-Black
/* If 'splice' is black removing it may violate Red-Black
invariants, so note this for later. */
/* Replace `splice` with `subtree` under subtree's parent. If
`splice` is black, this creates a red-red violation, so remember
/* Replace 'splice' with 'subtree' under subtree's parent. If
'splice' is black, this creates a red-red violation, so remember
this now as the field can be overwritten when splice is
transplanted below. */
itree_replace_child (tree, subtree, splice);
bool removed_black = !splice->red;
/* Replace `node` with `splice` in the tree and propagate limit
/* Replace 'node' with 'splice' in the tree and propagate limit
upwards, if necessary. Note: Limit propagation can stabilize at
any point, so we must call from bottom to top for every node that
has a new child. */
@ -1054,8 +1054,8 @@ itree_insert_gap (struct itree_tree *tree,
/* Nodes with front_advance starting at pos may mess up the tree
order, so we need to remove them first. This doesn't apply for
`before_markers` since in that case, all positions move identically
regardless of `front_advance` or `rear_advance`. */
'before_markers' since in that case, all positions move identically
regardless of 'front_advance' or 'rear_advance'. */
struct itree_stack *saved = itree_stack_create (0);
struct itree_node *node = NULL;
if (!before_markers)
@ -1208,7 +1208,7 @@ itree_node_intersects (const struct itree_node *node,
Note that this should return all the nodes that we need to traverse
in order to traverse the nodes selected by the current narrowing (i.e.
`ITER->begin..ITER->end`) so it will also return some nodes which aren't in
'ITER->begin..ITER->end') so it will also return some nodes which aren't in
that narrowing simply because they may have children which are.
The code itself is very unsatisfactory because the code of each one
@ -1221,8 +1221,8 @@ itree_iter_next_in_subtree (struct itree_node *node,
struct itree_iterator *iter)
{
/* FIXME: Like in the previous version of the iterator, we
prune based on `limit` only when moving to a left child,
but `limit` can also get smaller when moving to a right child
prune based on 'limit' only when moving to a left child,
but 'limit' can also get smaller when moving to a right child
It's actually fairly common, so maybe it would be worthwhile
to prune a bit more aggressively here. */
struct itree_node *next;
@ -1387,10 +1387,10 @@ itree_iterator_start (struct itree_iterator *iter,
iter->end = end;
iter->otick = tree->otick;
iter->order = order;
/* Beware: the `node` field always holds "the next" node to consider.
/* Beware: the 'node' field always holds "the next" node to consider.
so it's always "one node ahead" of what the iterator loop sees.
In most respects this makes no difference, but we depend on this
detail in `delete_all_overlays` where this allows us to modify
detail in 'delete_all_overlays' where this allows us to modify
the current node knowing that the iterator will not need it to
find the next. */
iter->node = itree_iterator_first_node (tree, iter);

View File

@ -41,7 +41,7 @@ INLINE_HEADER_BEGIN
struct itree_node
{
/* The normal parent, left and right links found in binary trees.
See also `red`, below, which completes the Red-Black tree
See also 'red', below, which completes the Red-Black tree
representation. */
struct itree_node *parent;
struct itree_node *left;
@ -147,13 +147,13 @@ struct itree_iterator
struct itree_node *node;
ptrdiff_t begin;
ptrdiff_t end;
uintmax_t otick; /* A copy of the tree's `otick`. */
uintmax_t otick; /* A copy of the tree's 'otick'. */
enum itree_order order;
};
/* Iterate over the intervals between BEG and END in the tree T.
N will hold successive nodes. ORDER can be one of : `ASCENDING`,
`DESCENDING`, `POST_ORDER`, or `PRE_ORDER`.
N will hold successive nodes. ORDER can be one of : 'ASCENDING',
'DESCENDING', 'POST_ORDER', or 'PRE_ORDER'.
It should be used as:
ITREE_FOREACH (n, t, beg, end, order)
@ -167,12 +167,12 @@ struct itree_iterator
- Don't modify the tree during the iteration.
*/
#define ITREE_FOREACH(n, t, beg, end, order) \
/* FIXME: We'd want to declare `n` right here, but I can't figure out
how to make that work here: the `for` syntax only allows a single
/* FIXME: We'd want to declare 'n' right here, but I can't figure out
how to make that work here: the 'for' syntax only allows a single
clause for the var declarations where we need 2 different types.
We could use the `struct {foo x; bar y; } p;` trick to declare two
vars `p.x` and `p.y` of unrelated types, but then none of the names
of the vars matches the `n` we receive :-(. */ \
We could use the 'struct {foo x; bar y; } p;' trick to declare two
vars 'p.x' and 'p.y' of unrelated types, but then none of the names
of the vars matches the 'n' we receive :-(. */ \
if (!t) \
{ } \
else \

View File

@ -7899,6 +7899,9 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize
NSTRACE_RETURN_SIZE (frameSize);
/* Trigger `move-frame-functions' (Bug#74074). */
[self windowDidMove:(NSNotification *)sender];
return frameSize;
}

View File

@ -454,7 +454,11 @@
x)))
(should (= x 2)))
(should (equal (macroexpand-all '(when a b c d))
'(if a (progn b c d)))))
'(if a (progn b c d))))
(with-suppressed-warnings ((empty-body when unless))
(should (equal (when t) nil))
(should (equal (unless t) nil))
(should (equal (unless nil) nil))))
(ert-deftest subr-test-xor ()
"Test `xor'."