mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-01 08:17:38 +00:00
Merge from origin/emacs-29
cd477bf07d
Fix behavior of 'split-root-window-*' with 'C-u'2e5d47f578
; * doc/lispintro/emacs-lisp-intro.texi (copy-to-buffer):...c46700deb0
Add more text to clarify the behavior of 'with-current-bu...687c416ce9
Fix example in Emacs user manual835902179c
; Fix recent change in 'c-ts-mode'169a5ff752
; Fix typo in Gnus manual (bug#67469).30841c71a5
Mention Titankey in Tramp, which has passed the testsdab7cc241f
Fix c-ts-mode indentation after if/else (bug#67417)f8d9dc26c7
Fix indentation for else clause in c-ts-mode (bug#67417)bf0b0c9c73
Ensure that directory is expanded in package-vc-checkoute551dd72f7
* etc/PROBLEMS: Add entry about pinentry with gpgsm. (Bu...
This commit is contained in:
commit
14b62b1ae0
@ -2007,8 +2007,8 @@ the one for @kbd{C-c C-x x} in Texinfo mode:
|
|||||||
(keymap-set texinfo-mode-map "C-c p"
|
(keymap-set texinfo-mode-map "C-c p"
|
||||||
'backward-paragraph)
|
'backward-paragraph)
|
||||||
(keymap-set texinfo-mode-map "C-c n"
|
(keymap-set texinfo-mode-map "C-c n"
|
||||||
'forward-paragraph)))
|
'forward-paragraph)
|
||||||
(keymap-set texinfo-mode-map "C-c C-x x" nil)
|
(keymap-set texinfo-mode-map "C-c C-x x" nil)))
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Modifier Keys
|
@node Modifier Keys
|
||||||
|
@ -5445,7 +5445,11 @@ That expression starts with @code{get-buffer-create buffer}. The
|
|||||||
function tells the computer to use the buffer with the name specified
|
function tells the computer to use the buffer with the name specified
|
||||||
as the one to which you are copying, or if such a buffer does not
|
as the one to which you are copying, or if such a buffer does not
|
||||||
exist, to create it. Then, the @code{with-current-buffer} function
|
exist, to create it. Then, the @code{with-current-buffer} function
|
||||||
evaluates its body with that buffer temporarily current.
|
evaluates its body with that buffer temporarily current, after which
|
||||||
|
it will switch back to the buffer we are at now@footnote{It is like
|
||||||
|
calling @w{@code{(save-excursion (set-buffer @dots{}) @dots{})}} in
|
||||||
|
one go, though it is defined slightly differently which interested
|
||||||
|
reader can find out using @code{describe-function}.}.
|
||||||
|
|
||||||
(This demonstrates another way to shift the computer's attention but
|
(This demonstrates another way to shift the computer's attention but
|
||||||
not the user's. The @code{append-to-buffer} function showed how to do
|
not the user's. The @code{append-to-buffer} function showed how to do
|
||||||
|
@ -21596,7 +21596,7 @@ Search Groups}).
|
|||||||
Search queries can be specified one of two ways: either using the
|
Search queries can be specified one of two ways: either using the
|
||||||
syntax of the engine responsible for the group you're searching, or
|
syntax of the engine responsible for the group you're searching, or
|
||||||
using Gnus' generalized search syntax. Set the option
|
using Gnus' generalized search syntax. Set the option
|
||||||
@code{gnus-search-use-parsed-queries} to a non-@code{nil} value to used the
|
@code{gnus-search-use-parsed-queries} to a non-@code{nil} value to use the
|
||||||
generalized syntax. The advantage of this syntax is that, if you have
|
generalized syntax. The advantage of this syntax is that, if you have
|
||||||
multiple backends indexed by different engines, you don't need to
|
multiple backends indexed by different engines, you don't need to
|
||||||
remember which one you're searching---it's also possible to issue the
|
remember which one you're searching---it's also possible to issue the
|
||||||
|
@ -5240,7 +5240,7 @@ Yes. @command{OpenSSH} has added support for @acronym{FIDO} hardware
|
|||||||
devices via special key types @option{*-sk}. @value{tramp} supports
|
devices via special key types @option{*-sk}. @value{tramp} supports
|
||||||
the additional handshaking messages for them. This requires at least
|
the additional handshaking messages for them. This requires at least
|
||||||
@command{OpenSSH} 8.2, and a @acronym{FIDO} @acronym{U2F} compatible
|
@command{OpenSSH} 8.2, and a @acronym{FIDO} @acronym{U2F} compatible
|
||||||
security key, like yubikey, solokey, or nitrokey.
|
security key, like yubikey, solokey, nitrokey, or titankey.
|
||||||
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
|
10
etc/PROBLEMS
10
etc/PROBLEMS
@ -534,6 +534,16 @@ is to downgrade to a version of GnuPG older than 2.4.1 (or, in the
|
|||||||
future, upgrade to a newer version which solves the problem, when such
|
future, upgrade to a newer version which solves the problem, when such
|
||||||
a fixed version becomes available).
|
a fixed version becomes available).
|
||||||
|
|
||||||
|
*** EasyPG loopback pinentry does not work with gpgsm.
|
||||||
|
|
||||||
|
This happens with the 'gpgsm' command from all versions of GnuPG.
|
||||||
|
EasyPG relies on the machine-parseable interface that is provided by
|
||||||
|
'gpg2' with option '--status-fd', but gpgsm does not support this.
|
||||||
|
|
||||||
|
As a workaround, input the passphrase with a GUI-capable pinentry
|
||||||
|
program like 'pinentry-gnome' or 'pinentry-qt5'. Alternatively, you
|
||||||
|
can use the 'pinentry' package from Emacs 25.
|
||||||
|
|
||||||
*** Emacs running on WSL receives stray characters as input.
|
*** Emacs running on WSL receives stray characters as input.
|
||||||
|
|
||||||
For example, you could see Emacs inserting 'z' characters even though
|
For example, you could see Emacs inserting 'z' characters even though
|
||||||
|
@ -941,6 +941,7 @@ for the last released version of the package."
|
|||||||
(lambda (dir) (or (not (file-exists-p dir))
|
(lambda (dir) (or (not (file-exists-p dir))
|
||||||
(directory-empty-p dir))))
|
(directory-empty-p dir))))
|
||||||
(and current-prefix-arg :last-release))))
|
(and current-prefix-arg :last-release))))
|
||||||
|
(setf directory (expand-file-name directory))
|
||||||
(package-vc--archives-initialize)
|
(package-vc--archives-initialize)
|
||||||
(let ((pkg-spec (or (package-vc--desc->spec pkg-desc)
|
(let ((pkg-spec (or (package-vc--desc->spec pkg-desc)
|
||||||
(and-let* ((extras (package-desc-extras pkg-desc))
|
(and-let* ((extras (package-desc-extras pkg-desc))
|
||||||
|
@ -750,8 +750,9 @@ The regexp should match at end of buffer."
|
|||||||
|
|
||||||
;; A security key requires the user physically to touch the device
|
;; A security key requires the user physically to touch the device
|
||||||
;; with their finger. We must tell it to the user.
|
;; with their finger. We must tell it to the user.
|
||||||
;; Added in OpenSSH 8.2. I've tested it with yubikey. Nitrokey,
|
;; Added in OpenSSH 8.2. I've tested it with yubikey. Nitrokey and
|
||||||
;; which has also passed the tests, does not show such a message.
|
;; Titankey, which have also passed the tests, do not show such a
|
||||||
|
;; message.
|
||||||
(defcustom tramp-security-key-confirm-regexp
|
(defcustom tramp-security-key-confirm-regexp
|
||||||
(rx bol (* "\r") "Confirm user presence for key " (* nonl) (* (any "\r\n")))
|
(rx bol (* "\r") "Confirm user presence for key " (* nonl) (* (any "\r\n")))
|
||||||
"Regular expression matching security key confirmation message.
|
"Regular expression matching security key confirmation message.
|
||||||
|
@ -356,11 +356,27 @@ PARENT, BOL, ARGS are the same as other anchor functions."
|
|||||||
(apply (alist-get 'standalone-parent treesit-simple-indent-presets)
|
(apply (alist-get 'standalone-parent treesit-simple-indent-presets)
|
||||||
parent (treesit-node-parent parent) bol args))
|
parent (treesit-node-parent parent) bol args))
|
||||||
|
|
||||||
|
(defun c-ts-mode--prev-line-match (regexp)
|
||||||
|
"An indentation matcher that matches if previous line matches REGEXP."
|
||||||
|
(lambda (_n _p bol &rest _)
|
||||||
|
(save-excursion
|
||||||
|
(goto-char bol)
|
||||||
|
(forward-line -1)
|
||||||
|
(back-to-indentation)
|
||||||
|
(looking-at-p regexp))))
|
||||||
|
|
||||||
(defun c-ts-mode--indent-styles (mode)
|
(defun c-ts-mode--indent-styles (mode)
|
||||||
"Indent rules supported by `c-ts-mode'.
|
"Indent rules supported by `c-ts-mode'.
|
||||||
MODE is either `c' or `cpp'."
|
MODE is either `c' or `cpp'."
|
||||||
(let ((common
|
(let ((common
|
||||||
`((c-ts-mode--for-each-tail-body-matcher prev-line c-ts-mode-indent-offset)
|
`((c-ts-mode--for-each-tail-body-matcher prev-line c-ts-mode-indent-offset)
|
||||||
|
;; If the user types "if (...)" and hits RET, they expect
|
||||||
|
;; point on the empty line to be indented; this rule
|
||||||
|
;; does that.
|
||||||
|
((and no-node
|
||||||
|
(c-ts-mode--prev-line-match
|
||||||
|
,(rx (or "if" "else" "while" "do" "for"))))
|
||||||
|
prev-line c-ts-mode-indent-offset)
|
||||||
|
|
||||||
((parent-is "translation_unit") column-0 0)
|
((parent-is "translation_unit") column-0 0)
|
||||||
((query "(ERROR (ERROR)) @indent") column-0 0)
|
((query "(ERROR (ERROR)) @indent") column-0 0)
|
||||||
@ -453,6 +469,7 @@ MODE is either `c' or `cpp'."
|
|||||||
;; These rules are for cases where the body is bracketless.
|
;; These rules are for cases where the body is bracketless.
|
||||||
;; Tested by the "Bracketless Simple Statement" test.
|
;; Tested by the "Bracketless Simple Statement" test.
|
||||||
((parent-is "if_statement") standalone-parent c-ts-mode-indent-offset)
|
((parent-is "if_statement") standalone-parent c-ts-mode-indent-offset)
|
||||||
|
((parent-is "else_clause") standalone-parent c-ts-mode-indent-offset)
|
||||||
((parent-is "for_statement") standalone-parent c-ts-mode-indent-offset)
|
((parent-is "for_statement") standalone-parent c-ts-mode-indent-offset)
|
||||||
((parent-is "while_statement") standalone-parent c-ts-mode-indent-offset)
|
((parent-is "while_statement") standalone-parent c-ts-mode-indent-offset)
|
||||||
((parent-is "do_statement") standalone-parent c-ts-mode-indent-offset)
|
((parent-is "do_statement") standalone-parent c-ts-mode-indent-offset)
|
||||||
|
@ -5682,7 +5682,8 @@ Return the new window.
|
|||||||
If optional argument SIZE is omitted or nil, both windows get the
|
If optional argument SIZE is omitted or nil, both windows get the
|
||||||
same height, or close to it. If SIZE is positive, the upper
|
same height, or close to it. If SIZE is positive, the upper
|
||||||
\(selected) window gets SIZE lines. If SIZE is negative, the
|
\(selected) window gets SIZE lines. If SIZE is negative, the
|
||||||
lower (new) window gets -SIZE lines.
|
lower (new) window gets -SIZE lines. Interactively, SIZE is
|
||||||
|
the prefix numeric argument.
|
||||||
|
|
||||||
If the variable `split-window-keep-point' is non-nil, both
|
If the variable `split-window-keep-point' is non-nil, both
|
||||||
windows get the same value of point as the WINDOW-TO-SPLIT.
|
windows get the same value of point as the WINDOW-TO-SPLIT.
|
||||||
@ -5734,8 +5735,9 @@ amount of redisplay; this is convenient on slow terminals."
|
|||||||
"Split root window of current frame in two.
|
"Split root window of current frame in two.
|
||||||
The current window configuration is retained in the top window,
|
The current window configuration is retained in the top window,
|
||||||
the lower window takes up the whole width of the frame. SIZE is
|
the lower window takes up the whole width of the frame. SIZE is
|
||||||
handled as in `split-window-below'."
|
handled as in `split-window-below', and interactively is the
|
||||||
(interactive "P")
|
prefix numeric argument."
|
||||||
|
(interactive "p")
|
||||||
(split-window-below size (frame-root-window)))
|
(split-window-below size (frame-root-window)))
|
||||||
|
|
||||||
(defun split-window-right (&optional size window-to-split)
|
(defun split-window-right (&optional size window-to-split)
|
||||||
@ -5752,7 +5754,7 @@ same width, or close to it. If SIZE is positive, the left-hand
|
|||||||
right-hand (new) window gets -SIZE columns. Here, SIZE includes
|
right-hand (new) window gets -SIZE columns. Here, SIZE includes
|
||||||
the width of the window's scroll bar; if there are no scroll
|
the width of the window's scroll bar; if there are no scroll
|
||||||
bars, it includes the width of the divider column to the window's
|
bars, it includes the width of the divider column to the window's
|
||||||
right, if any."
|
right, if any. Interactively, SIZE is the prefix numeric argument."
|
||||||
(interactive `(,(when current-prefix-arg
|
(interactive `(,(when current-prefix-arg
|
||||||
(prefix-numeric-value current-prefix-arg))
|
(prefix-numeric-value current-prefix-arg))
|
||||||
,(selected-window)))
|
,(selected-window)))
|
||||||
@ -5774,8 +5776,8 @@ right, if any."
|
|||||||
The current window configuration is retained within the left
|
The current window configuration is retained within the left
|
||||||
window, and a new window is created on the right, taking up the
|
window, and a new window is created on the right, taking up the
|
||||||
whole height of the frame. SIZE is treated as by
|
whole height of the frame. SIZE is treated as by
|
||||||
`split-window-right'."
|
`split-window-right' and interactively, is the prefix numeric argument."
|
||||||
(interactive "P")
|
(interactive "p")
|
||||||
(split-window-right size (frame-root-window)))
|
(split-window-right size (frame-root-window)))
|
||||||
|
|
||||||
;;; Balancing windows.
|
;;; Balancing windows.
|
||||||
|
@ -149,6 +149,21 @@ for (int i = 0;
|
|||||||
|
|
||||||
Name: Bracketless Simple Statement
|
Name: Bracketless Simple Statement
|
||||||
|
|
||||||
|
=-=
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
do
|
||||||
|
i++;
|
||||||
|
while (true)
|
||||||
|
|
||||||
|
if (true)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
break;
|
||||||
=-=
|
=-=
|
||||||
for (int i = 0; i < 5; i++)
|
for (int i = 0; i < 5; i++)
|
||||||
continue;
|
continue;
|
||||||
@ -159,6 +174,11 @@ while (true)
|
|||||||
do
|
do
|
||||||
i++;
|
i++;
|
||||||
while (true)
|
while (true)
|
||||||
|
|
||||||
|
if (true)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
break;
|
||||||
=-=-=
|
=-=-=
|
||||||
|
|
||||||
Name: Nested If-Else
|
Name: Nested If-Else
|
||||||
|
Loading…
Reference in New Issue
Block a user