Merge from origin/emacs-29

f8c95d1a76 Fix xt-mouse on terminals that report UTF-8 encoded coord...
4bf7cb71ed Fix go-ts-mode indentation and set indent offset to 8 (Bu...
ff9498624f ; * src/insdel.c (insert_from_buffer): Fix assertions.
41f497c8be Fix doc strings of window-splitting commands
cdf74254ff Fix indentation for c-ts-mode (bug#61026)
4bd06ce2a9 Fix call to treesit_record_change in insdel.c
00675aa724 Add support for building tree-sitter modules with MinGW
af28191b04 * lisp/net/tramp.el (tramp-wrong-passwd-regexp): Fix regexp.
42e02480c2 * doc/emacs/text.texi (Outline Minor Mode): New node spli...
37c1c92466 ; * etc/NEWS: Minor reordering.
cfb180329b ruby-ts-mode: Don't reindent when "class" or "def" is und...
abb3becb9f treesit-install-language-grammar: Provide default repo url
c6613403e5 Fix Dired face for directory symlinks
37454de0c8 Pacify --without-x unused function warning
9a21cb1075 ; * etc/NEWS: Fix typos.
f30a4f51fe Announce outline.el keymaps
8198803f66 ; Don't mention in the Gnus manual user options that were...
8a1498c01f Fix fontification of function-valued variables (bug#61053)
cfe26f3189 Add new java indent rules
987e53f3e2 ; * doc/misc/erc.texi: Improve Local Modules section.
3846e79c93 ; Fix filename mismatches in prop lines of ERC tests
ecf500b5e3 Handle relative file names in vc-resynch-window and vc-re...
695e9f71c3 Use named keymaps for outline buttons
e31a562396 * lisp/vc/vc-bzr.el (vc-bzr--pushpull): Return buffer's p...
deee3a9262 ; Fix last change in etc/NEWS
bc78285e68 ; * etc/NEWS: Fix typos.
c15c0f7f01 CC Mode: Change the default value of objc-font-lock-extra...
7f438ff543 Don't try to make a pipe process for remote processes in ...
cb9628373a * lisp/startup.el (command-line): Fix warning message.  (...
e6c5f32e77 * lisp/find-dired.el (find-dired): Fix bug where M-p skip...

# Conflicts:
#	etc/NEWS
This commit is contained in:
Stefan Kangas 2023-01-27 11:30:38 +01:00
commit 12e419ad11
33 changed files with 338 additions and 163 deletions

View file

@ -3,12 +3,17 @@
lang=$1
topdir="$PWD"
if [ $(uname) == "Darwin" ]
then
soext="dylib"
else
soext="so"
fi
case $(uname) in
"Darwin")
soext="dylib"
;;
*"MINGW"*)
soext="dll"
;;
*)
soext="so"
;;
esac
echo "Building ${lang}"

View file

@ -962,8 +962,6 @@ hooks.
@cindex invisible lines
@findex outline-mode
@findex outline-minor-mode
@vindex outline-minor-mode-prefix
@vindex outline-mode-hook
Outline mode is a major mode derived from Text mode, which is
specialized for editing outlines. It provides commands to navigate
@ -986,6 +984,19 @@ previous visible line. Killing the ellipsis at the end of a visible
line really kills all the following invisible text associated with the
ellipsis.
@menu
* Outline Minor Mode:: Outline mode to use with other major modes.
* Outline Format:: What the text of an outline looks like.
* Outline Motion:: Special commands for moving through outlines.
* Outline Visibility:: Commands to control what is visible.
* Outline Views:: Outlines and multiple views.
* Foldout:: Folding means zooming in on outlines.
@end menu
@node Outline Minor Mode
@subsection Outline Minor Mode
@findex outline-minor-mode
Outline minor mode is a buffer-local minor mode which provides the
same commands as the major mode, Outline mode, but can be used in
conjunction with other major modes. You can type @kbd{M-x
@ -994,6 +1005,7 @@ buffer, or use a file-local variable setting to enable it in a
specific file (@pxref{File Variables}).
@kindex C-c @@ @r{(Outline minor mode)}
@vindex outline-minor-mode-prefix
The major mode, Outline mode, provides special key bindings on the
@kbd{C-c} prefix. Outline minor mode provides similar bindings with
@kbd{C-c @@} as the prefix; this is to reduce the conflicts with the
@ -1018,14 +1030,6 @@ outline heading lines. @kbd{TAB} cycles hiding, showing the
sub-heading, and showing all for the current section. @kbd{S-@key{TAB}}
does the same for the entire buffer.
@menu
* Outline Format:: What the text of an outline looks like.
* Outline Motion:: Special commands for moving through outlines.
* Outline Visibility:: Commands to control what is visible.
* Outline Views:: Outlines and multiple views.
* Foldout:: Folding means zooming in on outlines.
@end menu
@node Outline Format
@subsection Format of Outlines

View file

@ -539,36 +539,55 @@ so demands special precautions to avoid degrading the user experience.
At present, the only such module is @code{networks}, whose library ERC
always loads anyway.
@anchor{Local Modules}
@subheading Local Modules
@cindex local modules
All modules operate as minor modes under the hood, and some newer ones
may be defined as buffer-local. These so-called ``local modules'' are
a work in progress and their behavior and interface are subject to
change. As of ERC 5.5, the only practical differences are
change. As of ERC 5.5, the only practical differences are as follows:
@enumerate
@item
``Control variables,'' like @code{erc-sasl-mode}, are stateful across
IRC sessions and override @code{erc-module} membership when influencing
module activation in new sessions.
``Control variables,'' like @code{erc-sasl-mode}, retain their values
across IRC sessions and override @code{erc-module} membership when
influencing module activation.
@item
Removing a local module from @code{erc-modules} via Customize not only
disables its mode but also kills its control variable in all ERC
buffers.
@item
``Mode toggles,'' like @code{erc-sasl-mode} and
@code{erc-sasl-enable}, behave differently relative to each other and
to their global counterparts. (More on this just below.)
``Mode toggles,'' like @code{erc-sasl-mode} and the complementary
@code{erc-sasl-enable}/@code{erc-sasl-disable} pairing, behave
differently than their global counterparts.
@end enumerate
By default, all local-mode toggles, like @code{erc-sasl-mode}, only
affect the current buffer, but their ``non-mode'' variants, such as
@code{erc-sasl-enable}, operate on all buffers belonging to a
connection when called interactively. Keep in mind that whether
enabled or not, a module may effectively be ``inert'' in certain types
of buffers, such as queries and channels. Whatever the case, a local
toggle never mutates @code{erc-modules}.
In target buffers, a local module's activation state survives
``reassociation'' by default, but modules themselves always have the
final say. For example, a module may reset all instances of itself in
its network context upon reconnecting. Moreover, the value of a mode
variable may be meaningless in buffers that its module has no interest
in. For example, the value of @code{erc-sasl-mode} doesn't matter in
target buffers and may even remain non-@code{nil} after SASL has been
disabled for the current connection (and vice versa).
When it comes to server buffers, a module's activation state only
persists for sessions revived via the automatic reconnection mechanism
or a manual @samp{/reconnect} issued at the prompt. In other words,
this doesn't apply to sessions revived by an entry-point command, such
as @code{erc-tls}, because such commands always ensure a clean slate
by looking only to @code{erc-modules}. Although a session revived in
this manner may indeed harvest other information from a previous
server buffer, it simply doesn't care which modules might have been
active during that connection.
Lastly, a local mode's toggle command, like @code{erc-sasl-mode}, only
affects the current buffer, but its ``non-mode'' cousins, like
@code{erc-sasl-enable} and @code{erc-sasl-disable}, operate on all
buffers belonging to their connection (when called interactively).
And unlike global toggles, none of these ever mutates
@code{erc-modules}.
@c PRE5_4: Document every option of every module in its own subnode

View file

@ -12106,17 +12106,6 @@ if they were public groups, you can add the name of that group to the
Also @pxref{Misc Article} for @code{gnus-inhibit-images}.
@item gnus-html-cache-directory
@vindex gnus-html-cache-directory
Gnus will download and cache images according to how
@code{gnus-blocked-images} is set. These images will be stored in
this directory.
@item gnus-html-cache-size
@vindex gnus-html-cache-size
When @code{gnus-html-cache-size} bytes have been used in that
directory, the oldest files will be deleted. The default is 500MB.
@item gnus-html-frame-width
@vindex gnus-html-frame-width
The width to use when rendering HTML@. The default is 70.

View file

@ -1126,6 +1126,12 @@ buffer, and you can use 'RET' to cycle outline visibility. When
the value is 'in-margins', Outline Minor Mode uses the window margins
for buttons that hide/show outlines.
+++
*** Buttons and headings now have their own keymaps.
'outline-button-icon-map', 'outline-overlay-button-map', and
'outline-inserted-button-map' are now available as defined keymaps
instead of being anonymous keymaps.
** Windows
+++
@ -1680,6 +1686,14 @@ command is installed.
---
*** C++ Mode now supports most of the new features in the C++20 Standard.
---
*** In Objective-C Mode, no extra types are recognized by default.
The default value of 'objc-font-lock-extra-types' has been changed to
nil, since too many identifiers were getting misfontified as types.
This may cause some actual types not to get fontified. To get the old
behavior back, customize the user option to the value suggested in its
doc string.
** Cperl Mode
---
@ -2072,7 +2086,7 @@ This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'.
---
*** New command 'vc-pull-and-push'.
This commands first does a "pull" command, and if that is successful,
does a "push" command afterwards.
does a "push" command afterwards. Currently supported in Git and Bzr.
+++
*** 'C-x v b' prefix key is used now for branch commands.
@ -2716,6 +2730,13 @@ some commands and user options are no longer needed and are now obsolete:
'image-dired-display-window-width-correction',
'image-dired-temp-image-file'.
** Exif
---
*** New function 'exif-field'.
This is a convenience function to extract the field data from
'exif-parse-file' and 'exif-parse-buffer'.
** Bookmarks
---
@ -2737,13 +2758,6 @@ It is bound to the new command 'bookmark-edit-annotation-cancel'.
This option controls the bitmap used to indicate bookmarks in the
fringe (or nil to disable showing this marker).
** Exif
---
*** New function 'exif-field'.
This is a convenience function to extract the field data from
'exif-parse-file' and 'exif-parse-buffer'.
** Xwidget
---
@ -4261,6 +4275,24 @@ vectors and strings.
The new 'key' type can be used for options that should be a valid key
according to 'key-valid-p'. The type 'key-sequence' is now obsolete.
+++
** New function 'define-keymap'.
This function allows defining a number of keystrokes with one form.
+++
** New macro 'defvar-keymap'.
This macro allows defining keymap variables more conveniently.
** 'defvar-keymap' can specify 'repeat-mode' behavior for the keymap.
Use ':repeat t' to have all bindings be repeatable or for more
advanced usage:
:repeat (:enter (commands ...) :exit (commands ...))
---
** 'kbd' can now be used in built-in, preloaded libraries.
It no longer depends on edmacro.el and cl-lib.el.
+++
** New substitution in docstrings and 'substitute-command-keys'.
Use \\`KEYSEQ' to insert a literal key sequence "KEYSEQ" (for example
@ -4270,6 +4302,18 @@ be used only when a key sequence has no corresponding command, for
example when it is read directly with 'read-key-sequence'. It must be
a valid key sequence according to 'key-valid-p'.
---
** 'lookup-key' is more permissive when searching for extended menu items.
In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking
for a menu item '[menu-bar Foo-Bar]', first try to find an exact
match, then look for the lowercased '[menu-bar foo-bar]'.
This has been extended, so that when looking for a menu item with a
symbol containing spaces, as in '[menu-bar Foo\ Bar]', first look for
an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
'[menu-bar foo-bar]'. This further improves backwards-compatibility
when converting menus to use 'easy-menu-define'.
+++
** New function 'file-name-split'.
This returns a list of all the components of a file name.
@ -4469,24 +4513,6 @@ permanent local variables.
** Third 'mapconcat' argument SEPARATOR is now optional.
An explicit nil always meant the empty string, now it can be left out.
+++
** New function 'define-keymap'.
This function allows defining a number of keystrokes with one form.
+++
** New macro 'defvar-keymap'.
This macro allows defining keymap variables more conveniently.
** 'defvar-keymap' can specify 'repeat-mode' behavior for the keymap.
Use ':repeat t' to have all bindings be repeatable or for more
advanced usage:
:repeat (:enter (commands ...) :exit (commands ...))
---
** 'kbd' can now be used in built-in, preloaded libraries.
It no longer depends on edmacro.el and cl-lib.el.
+++
** New function 'image-at-point-p'.
This function returns t if point is on a valid image, and nil
@ -4510,18 +4536,6 @@ separate glyphs. This takes into account combining characters and
grapheme clusters, by treating each sequence of characters composed on
display as a single unit.
---
** 'lookup-key' is more permissive when searching for extended menu items.
In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking
for a menu item '[menu-bar Foo-Bar]', first try to find an exact
match, then look for the lowercased '[menu-bar foo-bar]'.
This has been extended, so that when looking for a menu item with a
symbol containing spaces, as in '[menu-bar Foo\ Bar]', first look for
an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
'[menu-bar foo-bar]'. This further improves backwards-compatibility
when converting menus to use 'easy-menu-define'.
** Xwidget
+++

View file

@ -789,7 +789,7 @@ Subexpression 2 must end right before the \\n.")
'(dired-move-to-filename)
nil
'(1 dired-symlink-face)
'(2 '(face dired-directory-face dired-symlink-filename t))))
'(2 `(face ,dired-directory-face dired-symlink-filename t))))
;;
;; Symbolic link to a non-directory.
(list dired-re-sym

View file

@ -296,8 +296,13 @@ Used only on systems which do not support async subprocesses.")
'unix))))
(cond
((fboundp 'make-process)
(unless (equal (car (aref eshell-current-handles eshell-output-handle))
(car (aref eshell-current-handles eshell-error-handle)))
(unless (or ;; FIXME: It's not currently possible to use a
;; stderr process for remote files.
(file-remote-p default-directory)
(equal (car (aref eshell-current-handles
eshell-output-handle))
(car (aref eshell-current-handles
eshell-error-handle))))
(eshell-protect-handles eshell-current-handles)
(setq stderr-proc
(make-pipe-process

View file

@ -177,7 +177,9 @@ using GNU findutils (on macOS and *BSD systems), see instead the
man page for \"find\"."
(interactive (list (read-directory-name "Run find in directory: " nil "" t)
(read-string "Run find (with args): " find-args
'(find-args-history . 1))))
(if find-args
'(find-args-history . 1)
'find-args-history))))
(setq find-args args ; save for next interactive call
args (concat find-program " . "
(if (string= args "")

View file

@ -657,7 +657,7 @@ The `sudo' program appears to insert a `^@' character into the prompt."
(defcustom tramp-wrong-passwd-regexp
(rx bol (* nonl)
(| "Permission denied"
"Login [Ii]ncorrect"
(: "Login " (| "Incorrect" "incorrect"))
"Connection refused"
"Connection closed"
"Timeout, server not responding."

View file

@ -1776,6 +1776,20 @@ With a prefix argument, show headings up to that LEVEL."
;;; Button/margin indicators
(defvar-keymap outline-button-icon-map
"<mouse-2>" #'outline-cycle
;; Need to override the global binding
;; `mouse-appearance-menu' with <down->:
"S-<down-mouse-1>" #'ignore
"S-<mouse-1>" #'outline-cycle-buffer)
(defvar-keymap outline-overlay-button-map
"RET" #'outline-cycle)
(defvar-keymap outline-inserted-button-map
:parent (make-composed-keymap outline-button-icon-map
outline-overlay-button-map))
(defun outline--create-button-icons ()
(pcase outline-minor-mode-use-buttons
('in-margins
@ -1808,12 +1822,7 @@ With a prefix argument, show headings up to that LEVEL."
(propertize (icon-string icon-name)
'mouse-face 'default
'follow-link 'mouse-face
'keymap (define-keymap
"<mouse-2>" #'outline-cycle
;; Need to override the global binding
;; `mouse-appearance-menu' with <down->:
"S-<down-mouse-1>" #'ignore
"S-<mouse-1>" #'outline-cycle-buffer)))
'keymap outline-button-icon-map))
(list 'outline-open
(if outline--use-rtl 'outline-close-rtl 'outline-close))))))
@ -1839,19 +1848,13 @@ With a prefix argument, show headings up to that LEVEL."
(overlay-put o 'face (plist-get icon 'face))
(overlay-put o 'follow-link 'mouse-face)
(overlay-put o 'mouse-face 'highlight)
(overlay-put o 'keymap (define-keymap
"RET" #'outline-cycle
"<mouse-2>" #'outline-cycle
;; Need to override the global binding
;; `mouse-appearance-menu' with <down->:
"S-<down-mouse-1>" #'ignore
"S-<mouse-1>" #'outline-cycle-buffer)))
(overlay-put o 'keymap outline-inserted-button-map))
('in-margins
(overlay-put o 'before-string icon)
(overlay-put o 'keymap (define-keymap "RET" #'outline-cycle)))
(overlay-put o 'keymap outline-overlay-button-map))
(_
(overlay-put o 'before-string icon)
(overlay-put o 'keymap (define-keymap "RET" #'outline-cycle))))))))
(overlay-put o 'keymap outline-overlay-button-map)))))))
(defun outline--fix-up-all-buttons (&optional from to)
(when outline-minor-mode-use-buttons

View file

@ -279,6 +279,19 @@ NODE should be a labeled_statement."
"enumerator_list"))
"Regexp matching types of block nodes (i.e., {} blocks).")
(defvar c-ts-mode--statement-offset-post-processr nil
"A functions that makes adjustments to `c-ts-mode--statement-offset'.
This is a function that takes two arguments, the current indent
level and the current node, and returns a new level.
When `c-ts-mode--statement-offset' runs and go up the parse tree,
it increments the indent level when some condition are met in
each level. At each level, after (possibly) incrementing the
offset, it calls this function, passing it the current indent
level and the current node, and use the return value as the new
indent level.")
(defun c-ts-mode--statement-offset (node parent &rest _)
"This anchor is used for children of a statement inside a block.
@ -319,9 +332,24 @@ PARENT is NODE's parent."
;; Add a level.
((looking-back (rx bol (* whitespace))
(line-beginning-position))
(cl-incf level))))))
(cl-incf level)))))
(when c-ts-mode--statement-offset-post-processr
(setq level (funcall c-ts-mode--statement-offset-post-processr
level node))))
(* level c-ts-mode-indent-offset)))
(defun c-ts-mode--fix-bracketless-indent (level node)
"Takes LEVEL and NODE and returns adjusted LEVEL.
This fixes indentation for cases shown in bug#61026. Basically
in C/C++, constructs like if, for, while sometimes don't have
bracket."
(if (and (not (equal (treesit-node-type node) "compound_statement"))
(member (treesit-node-type (treesit-node-parent node))
'("if_statement" "while_statement" "do_statement"
"for_statement")))
(1+ level)
level))
(defun c-ts-mode--close-bracket-offset (node parent &rest _)
"Offset for the closing bracket, NODE.
It's basically one level less that the statements in the block.
@ -789,6 +817,8 @@ the semicolon. This function skips the semicolon."
;; Indent.
(when (eq c-ts-mode-indent-style 'linux)
(setq-local indent-tabs-mode t))
(setq-local c-ts-mode--statement-offset-post-processr
#'c-ts-mode--fix-bracketless-indent)
;; Comment
(c-ts-common-comment-setup)

View file

@ -1609,8 +1609,7 @@ as a type name.")
:type 'c-extra-types-widget
:group 'c)
(defcustom objc-font-lock-extra-types
(list (concat "[" c-upper "]\\sw*[" c-lower "]\\sw*"))
(defcustom objc-font-lock-extra-types nil
(c-make-font-lock-extra-types-blurb "ObjC" "objc-mode" (concat
"For example, a value of (\"[" c-upper "]\\\\sw*[" c-lower "]\\\\sw*\") means
capitalized words are treated as type names (the requirement for a

View file

@ -38,7 +38,7 @@
(declare-function treesit-node-type "treesit.c")
(declare-function treesit-search-subtree "treesit.c")
(defcustom go-ts-mode-indent-offset 4
(defcustom go-ts-mode-indent-offset 8
"Number of spaces for each indentation step in `go-ts-mode'."
:version "29.1"
:type 'integer
@ -78,8 +78,10 @@
((parent-is "expression_switch_statement") parent-bol 0)
((parent-is "field_declaration_list") parent-bol go-ts-mode-indent-offset)
((parent-is "import_spec_list") parent-bol go-ts-mode-indent-offset)
((parent-is "interface_type") parent-bol go-ts-mode-indent-offset)
((parent-is "labeled_statement") parent-bol go-ts-mode-indent-offset)
((parent-is "literal_value") parent-bol go-ts-mode-indent-offset)
((parent-is "parameter_list") parent-bol go-ts-mode-indent-offset)
((parent-is "type_spec") parent-bol go-ts-mode-indent-offset)
((parent-is "var_declaration") parent-bol go-ts-mode-indent-offset)
(no-node parent-bol 0)))

View file

@ -81,6 +81,7 @@
((parent-is "annotation_type_body") parent-bol java-ts-mode-indent-offset)
((parent-is "interface_body") parent-bol java-ts-mode-indent-offset)
((parent-is "constructor_body") parent-bol java-ts-mode-indent-offset)
((parent-is "enum_body_declarations") parent-bol 0)
((parent-is "enum_body") parent-bol java-ts-mode-indent-offset)
((parent-is "switch_block") parent-bol java-ts-mode-indent-offset)
((parent-is "record_declaration_body") parent-bol java-ts-mode-indent-offset)
@ -93,6 +94,7 @@
((parent-is "variable_declarator") parent-bol java-ts-mode-indent-offset)
((parent-is "method_invocation") parent-bol java-ts-mode-indent-offset)
((parent-is "switch_rule") parent-bol java-ts-mode-indent-offset)
((parent-is "switch_label") parent-bol java-ts-mode-indent-offset)
((parent-is "ternary_expression") parent-bol java-ts-mode-indent-offset)
((parent-is "lambda_expression") parent-bol java-ts-mode-indent-offset)
((parent-is "element_value_array_initializer") parent-bol java-ts-mode-indent-offset)

View file

@ -566,6 +566,12 @@ a statement container is a node that matches
((n-p-gp nil nil "regex") no-indent 0)
((parent-is "regex") no-indent 0)
;; Incomplete buffer state, better not reindent (bug#61017).
((and (parent-is "ERROR")
(or (node-is ,ruby-ts--class-or-module-regex)
(node-is "\\`def\\'")))
no-indent 0)
;; if then else elseif notes:
;;
;; 1. The "then" starts at the end of the line that ends

View file

@ -132,26 +132,21 @@ Argument LANGUAGE is either `typescript' or `tsx'."
Argument LANGUAGE is either `typescript' or `tsx'."
(treesit-font-lock-rules
:language language
:override t
:feature 'comment
`((comment) @font-lock-comment-face)
:language language
:override t
:feature 'constant
`(((identifier) @font-lock-constant-face
(:match "^[A-Z_][A-Z_\\d]*$" @font-lock-constant-face))
[(true) (false) (null)] @font-lock-constant-face)
:language language
:override t
:feature 'keyword
`([,@typescript-ts-mode--keywords] @font-lock-keyword-face
[(this) (super)] @font-lock-keyword-face)
:language language
:override t
:feature 'string
`((regex pattern: (regex_pattern)) @font-lock-regexp-face
(string) @font-lock-string-face
@ -159,7 +154,7 @@ Argument LANGUAGE is either `typescript' or `tsx'."
(template_substitution ["${" "}"] @font-lock-misc-punctuation-face))
:language language
:override t
:override t ;; for functions assigned to variables
:feature 'declaration
`((function
name: (identifier) @font-lock-function-name-face)
@ -174,6 +169,10 @@ Argument LANGUAGE is either `typescript' or `tsx'."
(required_parameter (identifier) @font-lock-variable-name-face)
(optional_parameter (identifier) @font-lock-variable-name-face)
(variable_declarator
name: (identifier) @font-lock-function-name-face
value: [(function) (arrow_function)])
(variable_declarator
name: (identifier) @font-lock-variable-name-face)
@ -188,10 +187,6 @@ Argument LANGUAGE is either `typescript' or `tsx'."
(arrow_function
parameter: (identifier) @font-lock-variable-name-face)
(variable_declarator
name: (identifier) @font-lock-function-name-face
value: [(function) (arrow_function)])
(variable_declarator
name: (array_pattern
(identifier)
@ -205,7 +200,6 @@ Argument LANGUAGE is either `typescript' or `tsx'."
(import_clause (named_imports (import_specifier (identifier)) @font-lock-variable-name-face)))
:language language
:override t
:feature 'identifier
`((nested_type_identifier
module: (identifier) @font-lock-type-face)
@ -234,7 +228,6 @@ Argument LANGUAGE is either `typescript' or `tsx'."
(_ (_ (_ (identifier) @font-lock-variable-name-face)))]))
:language language
:override t
:feature 'property
`((property_signature
name: (property_identifier) @font-lock-property-face)
@ -249,7 +242,6 @@ Argument LANGUAGE is either `typescript' or `tsx'."
@font-lock-property-face))
:language language
:override t
:feature 'expression
'((assignment_expression
left: [(identifier) @font-lock-function-name-face
@ -266,7 +258,6 @@ Argument LANGUAGE is either `typescript' or `tsx'."
property: (property_identifier) @font-lock-function-name-face)]))
:language language
:override t
:feature 'pattern
`((pair_pattern
key: (property_identifier) @font-lock-property-face)
@ -274,7 +265,6 @@ Argument LANGUAGE is either `typescript' or `tsx'."
(array_pattern (identifier) @font-lock-variable-name-face))
:language language
:override t
:feature 'jsx
`((jsx_opening_element
[(nested_identifier (identifier)) (identifier)]

View file

@ -1604,7 +1604,7 @@ please check its value")
(display-warning 'initialization
(format-message "\
Your `load-path' seems to contain\n\
your `.emacs.d' directory: %s\n\
your `user-emacs-directory': %s\n\
This is likely to cause problems...\n\
Consider using a subdirectory instead, e.g.: %s"
dir (expand-file-name

View file

@ -2789,8 +2789,10 @@ See `treesit-language-source-alist' for details."
(if (equal string "") nil string)))
(list
lang
(read-string
"Enter the URL of the Git repository of the language grammar: ")
(let ((repo-default (format "https://github.com/tree-sitter/tree-sitter-%s" lang)))
(read-string
"Enter the URL of the Git repository of the language grammar: "
(and (treesit--check-repo-url repo-default) repo-default)))
(empty-string-to-nil
(read-string
"Enter the tag or branch (default: default branch): "))
@ -2804,6 +2806,16 @@ See `treesit-language-source-alist' for details."
(read-string
"Enter the C++ compiler to use (default: auto-detect): "))))))
(defun treesit--check-repo-url (url)
(defvar url-request-method)
(let ((url-request-method "HEAD"))
(let ((buffer (condition-case nil (url-retrieve-synchronously url t t)
(file-error nil))))
(and buffer
(eql
(buffer-local-value 'url-http-response-status buffer)
200)))))
;;;###autoload
(defun treesit-install-language-grammar (lang)
"Build and install the tree-sitter language grammar library for LANG.

View file

@ -381,7 +381,9 @@ If PROMPT is non-nil, prompt for the Bzr command to run."
(setq-local compile-command
(concat vc-bzr-program " " command " "
(if args (mapconcat #'identity args " ") "")))))
(vc-set-async-update buf))))
(vc-set-async-update buf)
;; Return the process for `vc-pull-and-push'
(get-buffer-process buf))))
(defun vc-bzr-pull (prompt)
"Pull changes into the current Bzr branch.

View file

@ -608,7 +608,10 @@ reverting. NOQUERY should be t *only* if it is known the only
difference between the buffer and the file is due to
modifications by the dispatcher client code, rather than user
editing!"
(and (string= buffer-file-name file)
(and (string= buffer-file-name
(if (file-name-absolute-p file)
file
(expand-file-name file (vc-root-dir))))
(if keep
(when (file-exists-p file)
(when reset-vc-info
@ -643,7 +646,10 @@ editing!"
(defun vc-resynch-buffer (file &optional keep noquery reset-vc-info)
"If FILE is currently visited, resynch its buffer."
(if (string= buffer-file-name file)
(if (string= buffer-file-name
(if (file-name-absolute-p file)
file
(expand-file-name file (vc-root-dir))))
(vc-resynch-window file keep noquery reset-vc-info)
(if (file-directory-p file)
(vc-resynch-buffers-in-directory file keep noquery reset-vc-info)

View file

@ -1289,6 +1289,7 @@ If PROMPT is non-nil, prompt for the Git command to run."
(lambda (_name-of-mode) buffer)
nil))))
(vc-set-async-update buffer)
;; Return the process for `vc-pull-and-push'
proc))
(defun vc-git-pull (prompt)

View file

@ -3064,7 +3064,8 @@ On a distributed version control system, this runs a \"pull\"
operation on the current branch, prompting for the precise
command if required. Optional prefix ARG non-nil forces a prompt
for the VCS command to run. If this is successful, a \"push\"
operation will then be done.
operation will then be done. This is supported only in backends
where the pull operation returns a process.
On a non-distributed version control system, this signals an error.
It also signals an error in a Bazaar bound branch."

View file

@ -5670,9 +5670,11 @@ the original point in both windows."
(defun split-window-below (&optional size window-to-split)
"Split WINDOW-TO-SPLIT into two windows, one above the other.
WINDOW-TO-SPLIT defaults to the selected window and and will be above
the other window after splitting. The newly split-off window is
below and displays the same buffer. Return the new window.
WINDOW-TO-SPLIT defaults to the selected window if omitted or nil.
The newly created window will be below WINDOW-TO-SPLIT and will show
the same buffer as WINDOW-TO-SPLIT, if it is a live window, else the
buffer shown in the WINDOW-TO-SPLIT's frame's selected window.
Return the new window.
If optional argument SIZE is omitted or nil, both windows get the
same height, or close to it. If SIZE is positive, the upper
@ -5735,9 +5737,11 @@ handled as in `split-window-below'."
(defun split-window-right (&optional size window-to-split)
"Split WINDOW-TO-SPLIT into two side-by-side windows.
WINDOW-TO-SPLIT defaults to the selected window and and will be on the
left after splitting. The newly split-off window is on the right and
displays the same buffer. Return the new window.
WINDOW-TO-SPLIT defaults to the selected window if omitted or nil.
The newly created window will be to the right of WINDOW-TO-SPLIT and
will show the same buffer as WINDOW-TO-SPLIT, if it is a live window,
else the buffer shown in the WINDOW-TO-SPLIT's frame's selected window.
Return the new window.
If optional argument SIZE is omitted or nil, both windows get the
same width, or close to it. If SIZE is positive, the left-hand

View file

@ -151,16 +151,22 @@ If `xterm-mouse-utf-8' was non-nil when
`turn-on-xterm-mouse-tracking-on-terminal' was called, reads the
coordinate as an UTF-8 code unit sequence; otherwise, reads a
single byte."
(let ((previous-keyboard-coding-system (keyboard-coding-system)))
(let ((previous-keyboard-coding-system (keyboard-coding-system))
(utf-8-p (terminal-parameter nil 'xterm-mouse-utf-8))
;; Prevent conversions inside 'read-char' due to input method,
;; when we call 'read-char' below with 2nd argument non-nil.
(input-method-function nil))
(unwind-protect
(progn
(set-keyboard-coding-system
(if (terminal-parameter nil 'xterm-mouse-utf-8)
'utf-8-unix
'no-conversion))
;; Wait only a little; we assume that the entire escape sequence
;; has already been sent when this function is called.
(read-char nil nil 0.1))
(set-keyboard-coding-system (if utf-8-p 'utf-8-unix 'no-conversion))
(read-char nil
;; Force 'read-char' to decode UTF-8 sequences if
;; 'xterm-mouse-utf-8' is non-nil.
utf-8-p
;; Wait only a little; we assume that the entire
;; escape sequence has already been sent when
;; this function is called.
0.1))
(set-keyboard-coding-system previous-keyboard-coding-system))))
;; In default mode, each numeric parameter of XTerm's mouse report is

View file

@ -1175,9 +1175,20 @@ insert_from_buffer (struct buffer *buf,
{
ptrdiff_t opoint = PT;
#ifdef HAVE_TREE_SITTER
ptrdiff_t obyte = PT_BYTE;
#endif
insert_from_buffer_1 (buf, charpos, nchars, inherit);
signal_after_change (opoint, 0, PT - opoint);
update_compositions (opoint, PT, CHECK_BORDER);
#ifdef HAVE_TREE_SITTER
eassert (PT_BYTE >= BEG_BYTE);
eassert (obyte >= BEG_BYTE);
eassert (PT_BYTE >= obyte);
treesit_record_change (obyte, obyte, PT_BYTE);
#endif
}
static void
@ -1305,12 +1316,6 @@ insert_from_buffer_1 (struct buffer *buf,
/* Insert those intervals. */
graft_intervals_into_buffer (intervals, PT, nchars, current_buffer, inherit);
#ifdef HAVE_TREE_SITTER
eassert (outgoing_nbytes >= 0);
eassert (PT_BYTE >= 0);
treesit_record_change (PT_BYTE, PT_BYTE, PT_BYTE + outgoing_nbytes);
#endif
adjust_point (nchars, outgoing_nbytes);
}

View file

@ -6012,7 +6012,6 @@ realize_non_ascii_face (struct frame *f, Lisp_Object font_object,
return face;
}
#endif /* HAVE_WINDOW_SYSTEM */
/* Remove the attribute at INDEX from the font object if SYMBOL
appears in `font-fallback-ignored-attributes'. */
@ -6031,6 +6030,7 @@ font_maybe_unset_attribute (Lisp_Object font_object,
ASET (font_object, index, Qnil);
}
}
#endif /* HAVE_WINDOW_SYSTEM */
/* Realize the fully-specified face with attributes ATTRS in face
cache CACHE for ASCII characters. Do it for GUI frame CACHE->f.

View file

@ -1,4 +1,4 @@
;;; erc-scenarios-compat-rename-bouncer.el --- compat-rename scenarios -*- lexical-binding: t -*-
;;; erc-scenarios-base-compat-rename-bouncer.el --- Compat-rename scenarios -*- lexical-binding: t -*-
;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
@ -169,4 +169,4 @@
(erc-scenarios-common--base-compat-no-rename-bouncer dialogs
'auto after)))))
;;; erc-scenarios-compat-rename-bouncer.el ends here
;;; erc-scenarios-base-compat-rename-bouncer.el ends here

View file

@ -1,4 +1,4 @@
;;; erc-scenarios-local-modules.el --- Local modules tests for ERC -*- lexical-binding: t -*-
;;; erc-scenarios-base-local-modules.el --- Local-module tests for ERC -*- lexical-binding: t -*-
;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
@ -22,14 +22,15 @@
;; A local module doubles as a minor mode whose mode variable and
;; associated local data can withstand service disruptions.
;; Unfortunately, the current implementation is too unwieldy to be
;; made public because it doesn't perform any of the boiler plate
;; needed to save and restore buffer-local and "network-local" copies
;; of user options. Ultimately, a user-friendly framework must fill
;; this void if third-party local modules are ever to become
;; promoted publicly because it doesn't perform any of the boiler
;; plate needed to save and restore buffer-local and "network-local"
;; copies of user options. Ultimately, a user-friendly framework must
;; fill this void if third-party local modules are ever to become
;; practical.
;;
;; The following tests all use `sasl' because, as of ERC 5.5, it's the
;; only local module.
;; only connection-oriented local module. A fictitious
;; target-oriented module is defined below for testing purposes.
;;; Code:
@ -325,4 +326,4 @@
(funcall expect 10 "User modes for tester")
(should (eql erc-scenarios-base-local-modules--local-var 1))))))
;;; erc-scenarios-local-modules.el ends here
;;; erc-scenarios-base-local-modules.el ends here

View file

@ -1,4 +1,4 @@
;;; erc-scenarios-base-network-id-samenet.el --- netid-id samenet scenarios -*- lexical-binding: t -*-
;;; erc-scenarios-base-netid-samenet.el --- One-network net-ID scenarios -*- lexical-binding: t -*-
;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
@ -148,4 +148,4 @@
:server "foonet/chester"
:chan "#chan@foonet/chester")))
;;; erc-scenarios-base-network-id-samenet.el ends here
;;; erc-scenarios-base-netid-samenet.el ends here

View file

@ -1,4 +1,4 @@
;;; erc-scenarios-upstream-recon-soju.el --- Upstream soju -*- lexical-binding: t -*-
;;; erc-scenarios-base-upstream-recon-soju.el --- Bouncer recon scenario -*- lexical-binding: t -*-
;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
@ -19,7 +19,8 @@
;; Commentary:
;; These concern the loss and recovery of a proxy's IRC-side connection.
;; These concern the loss and recovery of a proxy's IRC-side
;; connection (hence "upstream").
;;; Code:
@ -41,4 +42,4 @@
'soju-foonet
'soju-barnet))
;;; erc-scenarios-upstream-recon-soju.el ends here
;;; erc-scenarios-base-upstream-recon-soju.el ends here

View file

@ -1,4 +1,4 @@
;;; erc-scenarios-upstream-recon-znc.el --- Upstream znc -*- lexical-binding: t -*-
;;; erc-scenarios-base-upstream-recon-znc.el --- Bouncer recon scenario -*- lexical-binding: t -*-
;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
@ -19,7 +19,8 @@
;; Commentary:
;; These concern the loss and recovery of a proxy's IRC-side connection.
;; These concern the loss and recovery of a proxy's IRC-side
;; connection (hence "upstream").
;;; Code:
@ -41,4 +42,4 @@
'znc-foonet
'znc-barnet))
;;; erc-scenarios-upstream-recon-znc.el ends here
;;; erc-scenarios-base-upstream-recon-znc.el ends here

View file

@ -19,6 +19,7 @@
;;; Code:
(require 'tramp)
(require 'ert)
(require 'esh-mode)
(require 'eshell)
@ -85,6 +86,18 @@
"\\`\\'"))
(should (equal (buffer-string) "stdout\nstderr\n"))))
(ert-deftest esh-var-test/output/remote-redirect ()
"Check that redirecting stdout for a remote process works."
(skip-unless (and (eshell-tests-remote-accessible-p)
(executable-find "echo")))
(let ((default-directory ert-remote-temporary-file-directory))
(eshell-with-temp-buffer bufname "old"
(with-temp-eshell
(eshell-match-command-output
(format "*echo hello > #<%s>" bufname)
"\\`\\'"))
(should (equal (buffer-string) "hello\n")))))
;; Exit status

View file

@ -105,6 +105,58 @@ main (int argc,
}
=-=-=
Name: Bracket-less Block-Statement (GNU Style) (bug#61026)
=-=
int main() {
while (true)
if (true)
{
puts ("Hello");
}
for (int i=0; i<5; i++)
if (true)
{
puts ("Hello");
}
do
if (true)
{
puts ("Hello");
}
while (true);
if (true)
if (true)
{
puts ("Hello");
}
}
=-=-=
Name: Bracket-less Block-Statement (Linux Style) (bug#61026)
=-=-=
int main() {
while (true)
if (true) {
puts ("Hello");
}
for (int i=0; i<5; i++)
if (true) {
puts ("Hello");
}
do
if (true) {
puts ("Hello");
}
while (true);
if (true)
if (true) {
puts ("Hello");
}
}
=-=-=
Name: Multiline Parameter List (bug#60398)
=-=