1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-31 04:41:23 -08:00
Commit graph

47750 commits

Author SHA1 Message Date
Eli Zaretskii
b7ad0b4014 ; Clarify doc strings of 'call-process' and 'call-process-region'
* src/callproc.c (Fcall_process, Fcall_process_region): Document
that the destination buffer can be specified by its name.
(Bug#60477)
2023-01-02 13:52:25 +02:00
Eli Zaretskii
cae528457c ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
Stefan Kangas
9292f595a7 ; Fix typos 2022-12-31 12:43:32 +01:00
Eli Zaretskii
bfdad6c4e5 ; Fix recent treesit-related changes
* lisp/treesit.el (treesit-language-source-alist)
(treesit--install-language-grammar-1): Doc fixes.

* src/treesit.c (Ftreesit_language_abi_version): Fix a typo in
function's Lisp name.  Doc fix.
(Ftreesit_language_available_p): Fix a typo in the function's C
name.

* doc/lispref/parsing.texi (Language Grammar): Fix wording.
2022-12-31 10:13:15 +02:00
Yuan Fu
ab1f245f1a
Show tree-sitter query source when signaling query error
* src/treesit.c (treesit_compose_query_signal_data): Add QUERY_SOURCE
parameter.
(treesit_ensure_query_compiled)
(Ftreesit_query_capture): Add query source.
2022-12-30 16:57:45 -08:00
Yuan Fu
0237c5927e
Add treesit-language-abi-version
Also rename treesit-language-version to treesit-library-abi-version,
because the old name is somewhat misleading.

* doc/lispref/parsing.texi (Language Grammar): Update.
* src/treesit.c (Ftreesit_library_abi_version): Rename.
(Ftreesit_language_abi_version): New function.
2022-12-30 02:54:13 -08:00
Juri Linkov
60418e6f09 * src/keyboard.c (echo_add_key): Use recently rebound C-h key C-q (bug#60249) 2022-12-29 19:41:41 +02:00
Eli Zaretskii
706ed85285 Avoid assertion violations in treesit.c with --enable-checking
* src/treesit.c (Ftreesit_node_first_child_for_pos)
(Ftreesit_node_descendant_for_range): Check validity of buffer
positions before converting them to byte-positions, to avoid
assertion violations in buf_charpos_to_bytepos.
2022-12-29 13:52:09 +02:00
Yuan Fu
f509246ba1
Call tree-sitter parser notifier on the first parse
* src/treesit.c (treesit_call_after_change_functions): Handle NULL
old_tree.
(treesit_ensure_parsed): Remove check for NULL tree.
2022-12-28 15:30:10 -08:00
Yuan Fu
ec6feeaa19
Fix tree-sitter parser notifier recursion
See the comment for detail.

* src/treesit.c (treesit_ensure_parsed): Move the need_reparse short
circuit to the very beginning.  Move the call to
treesit_call_after_change_functions to the very end.
2022-12-28 15:19:34 -08:00
Eli Zaretskii
b464e6c490 Make last change of w32 GUI dialogs conditional and reversible
* src/w32term.c (syms_of_w32term) <w32-yes-no-dialog-show-cancel>:
New boolean variable.
(w32_initialize): Fix query for visible system caret: 'bool' is a
single-byte data type, whereas SystemParametersInfo wants a BOOL,
which is a 32-bit int.
* src/w32menu.c (simple_dialog_show): Show "Cancel" button only if
'w32-yes-no-dialog-show-cancel' is non-nil.

* etc/NEWS: Announce the change.
2022-12-28 15:10:39 +02:00
Eli Zaretskii
2b55a48d3e * src/w32menu.c (simple_dialog_show): Use MB_YESNOCANCEL style. 2022-12-27 20:55:12 +02:00
Eli Zaretskii
8b8b791567 ; Improve documentation of TAB/SPC indentation
* lisp/indent.el (tab-to-tab-stop):
* src/indent.c (Findent_to): Mention 'indent-tabs-mode' in doc
strings.
2022-12-27 20:23:16 +02:00
Yuan Fu
a6d961ae2f
Add a new tree-sitter query predicate 'pred'
I realized that using an arbitrary function as the predicate in
queries is very helpful for some queries I'm writing for python and
javascript, and presumably most other languages[1].

Granted, we can already filter out unwanted nodes by using a function
instead of a face for the capture name, and (1) determine whether the
captured node is valid and (2) fontify that node if it's valid.

However, such approach is a bit more cumbersome and more importantly
gets in the way of another potential use of the fontification queries:
context extraction.

For example, I could use the query for the 'variable' feature to get
all the variables in a certain region.  In this use-case, we want the
filtering happen before returning the captured nodes.

Besides, the change is relatively small and straightforward: most code
are already there, I just need to add some boilerplate.

[1] For a code like aa.bb(cc), we want bb to be in function face,
because obviously its a function.  But for aa.bb, we want bb to be in
property face, because it's a property.  In the AST, bb is always a
property, the difference between the two cases is the enclosing node:
in the first case, aa.bb is in a "call_expression" node, indicating
that bb is used as a function (a method).  So we want a predicate
function that checks whether bb is used as a function or a property,
and determine whether it should be in function or property face.

* doc/lispref/parsing.texi (Pattern Matching): Update manual.
* src/treesit.c (Ftreesit_pattern_expand): Handle :pred.
(treesit_predicate_capture_name_to_node): A new function extracted
from treesit_predicate_capture_name_to_text.
(treesit_predicate_capture_name_to_text): Use the newly extracted
function.
(treesit_predicate_pred): New predicate function.
(treesit_eval_predicates): Add new predicate.  Also fix a bug: we want
to AND the results of each predicate.
* test/src/treesit-tests.el (treesit--ert-pred-last-sibling): New
helper function.
(treesit-query-api): Test #pred predicate.
2022-12-26 17:50:14 -08:00
Gregory Heytings
b14bbd108e Improve handling of tab-bar height.
* src/xdisp.c (redisplay_tab_bar): When 'auto-resize-tab-bar' is
not 'grow-only', also consider the case when the tab-bar height
needs to shrink.  Fixes bug#60210.
2022-12-26 18:39:41 +01:00
Eli Zaretskii
26b2ec7cb8 Simplify last change (bug#60311)
* src/json.c (json_available_p): Use original code.  Always return
true for !WINDOWSNT.
(ensure_json_available): Now defined only on WINDOWSNT.
(Fjson_serialize, Fjson_insert, Fjson_parse_string)
(Fjson_parse_buffer): Call ensure_json_available only on
WINDOWSNT.

* lisp/subr.el (json-available-p): Simplify.
2022-12-26 15:26:48 +02:00
Mattias Engdegård
082fc6e308 Fix 'json-available-p' on MS-Windows
* src/json.c (json_available_p, ensure_json_available)
(Fjson__available_p): New functions.
(Fjson_serialize, Fjson_insert, Fjson_parse_string)
(Fjson_parse_buffer): Use ensure_json_available.
(syms_of_json): Defsubr json--available-p.

* lisp/subr.el (json-available-p): Rewrite.
2022-12-26 15:12:04 +02:00
Yuan Fu
7c7950fe00
Add maintainer stub for tree-sitter files
* lisp/treesit.el:
* src/treesit.c: Add maintainer.
2022-12-26 01:47:55 -08:00
Stefan Kangas
2608e5edcc ; Fix typos
(cherry picked from commit a5d39e1144)
2022-12-26 10:42:02 +01:00
Eli Zaretskii
d62b634d8f ; * src/process.c (Fprocess_running_child_p): Doc fix. 2022-12-25 11:23:07 +02:00
Eli Zaretskii
38866510c7 ; * src/xdisp.c (redisplay_internal): Reinstate the FRAME_LIVE_P test. 2022-12-24 12:27:17 +02:00
Yuan Fu
e30621caa2
; Add treesit_recursion_limit
* src/treesit.c (treesit_recursion_limit): New constant.
(treesit_cursor_helper)
(Ftreesit_search_subtree)
(Ftreesit_induce_sparse_tree): Use the new constant.
2022-12-24 00:33:17 -08:00
Yuan Fu
e492c21e81
Fix treesit_cursor_helper (bug#60267)
The cause of that bug is that in a particular parse tree, the node
treesit_cursor_helper tries to go to is a missing node, not only is it
a missing node, it is the first node of a subtree.  So when
treesit_cursor_helper follows the algorithm and goes down the tree, it
goes down the previous subtree (because that subtree's end = end_pos,
because the target node has zero width).

    o
    |
 o--+-o
 |    |
 +-+  +-+-+
 | |  | | |
 o x  t o o

(We ended up in x when the target is t, because t has zero width.)

One way to solve it is to go back up the tree if we are at a leaf node
and still haven't matched the target node.  That's too ugly and
finicky so I resorted to recursion.  Now one more functions will
return give up (treesit_node_parent) if we are in a werid parse tree
that is super deep.  But since we already kind of give up on this kind
of parse trees (bug#59426), it doesn't really hurt.

* src/treesit.c (treesit_cursor_helper_1): New function.
(treesit_cursor_helper): Use the new function.  Change return type to
bool, and accept a cursor pointer.

(Ftreesit_node_parent)
(Ftreesit_search_subtree)
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Use the new signature.
2022-12-24 00:33:16 -08:00
Paul Eggert
4437dbedf7 Fix restart-emacs alarms (Bug#60220)
* src/emacs.c (Fkill_emacs): Turn timers off before execing,
so that the re-execed Emacs doesn’t get a timer alarm.
2022-12-24 00:23:02 -08:00
Po Lu
0e39ad6fa5 Fix crash after X error
* src/xdisp.c (redisplay_internal): Catch another crash if
gcscrollbars after an X error.
2022-12-24 14:15:04 +08:00
Eli Zaretskii
eccb813a94 Fix "C-h k" in recursive minibuffers
* lisp/subr.el (event--posn-at-point): Leave POSN alone if it
doesn't have at least 6 members.  This follows more faithfully
what 'event-start' and 'event-end' did before they started using
this function, see commit c1cead89f5.  Call posn-at-point with
the minibuffer-window when in the minibuffer.  (Bug#60252)
2022-12-23 16:41:08 +02:00
Eli Zaretskii
9bf13a3fb9 ; * src/alloc.c (Fmemory_info): Doc fix. 2022-12-22 13:02:45 +02:00
Eli Zaretskii
ec9fbad908 Fix write-region to null device on MS-Windows
* src/fileio.c (write_region) [WINDOWSNT]: Ignore EBADF errors
from fsync -- this means fsync is not supported for this file.
Happens, for example, with the null device.  (Bug#59545)
2022-12-21 21:23:51 +02:00
Philipp Stephani
8550a99378 ; * src/emacs-module.h.in (enum emacs_funcall_exit): Fix typo. 2022-12-20 13:29:49 +01:00
Po Lu
897f33bf31 Fix the MS-DOS build
* src/lread.c (syms_of_lread): Make the MS-DOS build work again.
2022-12-18 18:05:57 +08:00
Eli Zaretskii
660e941235 Avoid crashes in PGTK build due to signal in 'note_mouse_highlight'
* src/xdisp.c (string_buffer_position): Make sure the TO argument
of 'string_buffer_position_lim' is always inside [BEGV..ZV].
Otherwise 'string_buffer_position_lim' might call
'get-char-property' and friends with invalid position, which will
just signal an error and do nothing useful.  (Bug#60144)
2022-12-18 10:29:34 +02:00
Eli Zaretskii
0fc5fb2d05 Fix MS-Windows build broken by recent treesit.c changes
* src/treesit.c (init_treesit_functions, ts_tree_cursor_copy)
(ts_tree_cursor_delete): Add boilerplate for using new tree-sitter
functions.
(ts_node_parent): Delete boilerplate of unused function.
2022-12-18 07:57:34 +02:00
Yuan Fu
1fc7535546
Use cursor API in treesit-node-parent
This is the last part of the change that fixes bug#60054.  The
previous change fixes it for searching functions, this fixes for
treesit-node-parent.

* src/treesit.c (Ftreesit_node_parent): Use the new cursor API.
2022-12-17 15:33:54 -08:00
Yuan Fu
5f0286c0af
Switch to use cursor API in treesit.c
ts_node_parent has bugs (bug#60054), using cursor API avoids that.
Tree-sitter's author might remove ts_node_parent in the future, so
might as well switch to use cursors now.  We are basically
reimplementing some of the logic of ts_node_prev_sibling and
ts_node_parent in the sibling helper and cursor helper functions.

See also https://github.com/tree-sitter/tree-sitter/issues/1992

* src/treesit.c (treesit_traverse_sibling_helper)
(treesit_traverse_child_helper)
(treesit_traverse_match_predicate): Reimplemented to use the cursor API.
(treesit_search_dfs)
(treesit_search_forward): Use the new cursor helper functions.
(Ftreesit_search_subtree)
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Use cursors.

* test/src/treesit-tests.el (treesit-search-subtree): New test.
(treesit--ert-search-setup): New macro.
(treesit-search-forward)
(treesit-search-forward-named-only)
(treesit-search-backward)
(treesit-search-backward-named-only)
(treesit-cursor-helper-with-missing-node): New tests.
2022-12-17 15:33:54 -08:00
Yuan Fu
a275e436df
Add treesit_assume_true and treesit_cursor_helper
This is part 1 of the change to change node API to cursor API.  See
the second part for more detail.  (I splitted the change to make the
diff more sane.)

* src/treesit.c (treesit_assume_true)
(treesit_cursor_helper): New functions.
2022-12-17 15:33:54 -08:00
Paul Eggert
8a9579ca29 Use make-directory handlers uniformly
Formerly, the code supported both make-directory and
make-directory-internal handlers. This led to confusion and meant than
in a few cases (nnmaildir, ido) remote directories could not be used in
some cases.  Fix this by using only make-directory handlers.

Perhaps there used to be a reason for why there were both
make-directory and make-directory-internal handlers, but whatever that
reason was, it seems to have vanished even before now.

There is no longer any need for make-directory-internal handlers, as
the few remaining callers that use make-directory-internal do so only
when there are no handlers.  However, this change keeps the existing
make-directory-internal handlers for now, in case this code is ever
used in older Emacs versions that still call those handlers.

* lisp/gnus/nnmaildir.el (nnmaildir--mkdir):
* lisp/ido.el (ido-file-internal):
* lisp/net/tramp-smb.el (tramp-smb-handle-make-directory):
Use make-directory, not make-directory-internal.
* lisp/net/tramp-smb.el (tramp-smb-handle-make-directory-internal):
Now obsolete.
* src/fileio.c (Fmake_directory_internal): Do not look for or
use a make-directory-internal handler.
* test/lisp/files-tests.el:
(files-tests-file-name-non-special-make-directory-internal):
Remove, as this test incorrectly assumes that make-directory-internal
must support handlers.
2022-12-17 14:24:16 -08:00
Eli Zaretskii
c9015ef55f Fix resizing of mini-windows by 'set-minibuffer-message'
* src/xdisp.c (redisplay_window): Always resize mini-windows
displaying the active minibuffer.  (Bug#60015)
2022-12-17 20:43:56 +02:00
Eli Zaretskii
b9227c502d ; Improve wording of 'format' doc string
* src/editfns.c (Fformat): Use "produce" instead of "print".
(Bug#60125)
2022-12-16 20:46:00 +02:00
Manuel Giraud
dc78779c0c Fix SVG scaling (bug#59802)
Fix SVG scaling with librsvg>2.52 and SVG file with only one known
dimension.

* src/image.c (svg_load_image): Compute a percentage dimension with
the other known dimension.
2022-12-16 17:47:37 +02:00
Eli Zaretskii
80f410d281 ; Fix last changes in buffer.c
* src/buffer.c (other_buffer_safely): Ensure Lisp Interaction mode
in *scratch*.  (Bug#60096)
2022-12-16 16:46:37 +02:00
Eli Zaretskii
89f54e8157 A better fix for bug#60096
* lisp/startup.el (initial-scratch-message):
* lisp/simple.el (get-scratch-buffer-create): Revert last changes.

* src/window.c (Fset_window_configuration): Force recalculation of
Vwindow_list after restoring the windows.
* src/buffer.c (other_buffer_safely): Make sure we always return a
valid buffer, even if 'get-scratch-buffer-create' signals an
error.
2022-12-16 16:29:51 +02:00
Eli Zaretskii
1b9ca1e5e6 ; Fix printing Lisp types in .gdbinit
* src/alloc.c (valid_lisp_object_p): Support printing
stack-allocated strings and cons cells.
2022-12-16 14:14:42 +02:00
Stefan Kangas
033071692c ; Fix typos 2022-12-16 08:29:28 +01:00
Eli Zaretskii
f93a5180a6 Update the documentation of overlays (bug#59996)
* src/buffer.c (Foverlay_recenter, Foverlay_lists): Update the doc
strings.

* lisp/subr.el (copy-overlay): Update comment.

* doc/lispref/internals.texi (Buffer Internals): Remove buffer
fields relevant to the old implementation; add the new interval
tree field.
* doc/lispref/display.texi (Overlays, Managing Overlays): Update
text to be consistent with the new implementation of overlays.
(Managing Overlays): Remove documentation of 'overlay-recenter'.

* etc/NEWS: Mention incompatible aspects of overlay
reimplementation.
2022-12-14 20:13:47 +02:00
Stefan Kangas
def51dd645 ; Fix typos 2022-12-13 18:44:41 +01:00
Eli Zaretskii
4ef8b9f544 Improve resetting face attributes when looking for suitable fonts
* src/xfaces.c (syms_of_xfaces)<face-font-lax-matched-attributes>:
Change the default value to t.  Update doc string.
(realize_gui_face): When 'Vface_font_lax_matched_attributes' is t,
reset the 3 default font attributes efficiently.  Call
'font_maybe_unset_attribute' only if the value is neither nil nor
t.  (Bug#59347)
2022-12-13 17:35:17 +02:00
Eli Zaretskii
58b8ed8b55 ; Avoid compilation warning on MS-Windows
* src/timefns.c (sys_clock): Declare, to avoid compilation
warning.
2022-12-12 20:01:23 +02:00
Po Lu
f4ce6fa7d3 Revert "Revert "Improve last change to xfaces.c" (05ece1eb8b)"
This reverts commit b8d2ec920f.

Not only does it make debugging Emacs harder for users, that change is
unsafe for the Haiku port.
2022-12-12 10:41:38 +08:00
Gregory Heytings
b8d2ec920f Revert "Improve last change to xfaces.c" (05ece1eb8b)
* src/xfaces.c: Revert 05ece1eb8b.

See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#331.
2022-12-12 02:12:09 +01:00
Eli Zaretskii
78ad33bb05 ; Minor cleanup of last change in xfaces.c. 2022-12-11 11:59:04 +02:00