<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/test/src, branch scratch/jsonrpc-things</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>(update_search_regs): Install better fix for bug#67124</title>
<updated>2023-11-18T21:34:38+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2023-11-18T21:34:38+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=47b497b4dac91e5ea56102018223bdeb5e21a93b'/>
<id>47b497b4dac91e5ea56102018223bdeb5e21a93b</id>
<content type='text'>
The recent fix for the bug in `replace-match-maybe-edit`
was basically a refinement of a previously installed workaround,
whereas the bug was really in `update_search_regs`.

* src/search.c (update_search_regs): Improve handling of `start` positions.
* lisp/replace.el (replace-match-maybe-edit): Remove workaround.
* test/src/search-tests.el (search-test--replace-match-update-data): New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The recent fix for the bug in `replace-match-maybe-edit`
was basically a refinement of a previously installed workaround,
whereas the bug was really in `update_search_regs`.

* src/search.c (update_search_regs): Improve handling of `start` positions.
* lisp/replace.el (replace-match-maybe-edit): Remove workaround.
* test/src/search-tests.el (search-test--replace-match-update-data): New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add treesit-node-enclosed-p</title>
<updated>2023-11-10T04:49:30+00:00</updated>
<author>
<name>Yuan Fu</name>
</author>
<published>2023-11-10T04:49:30+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=0db75b80e1ce54f3597f7d19468157fd5ec2bd71'/>
<id>0db75b80e1ce54f3597f7d19468157fd5ec2bd71</id>
<content type='text'>
* doc/lispref/parsing.texi (Accessing Node Information):
Add manual entry.
* lisp/treesit.el (treesit-node-enclosed-p): New function.
(treesit): Add shortdoc entry.
* test/src/treesit-tests.el (treesit-node-api): Add tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* doc/lispref/parsing.texi (Accessing Node Information):
Add manual entry.
* lisp/treesit.el (treesit-node-enclosed-p): New function.
(treesit): Add shortdoc entry.
* test/src/treesit-tests.el (treesit-node-api): Add tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>With `native-compile', compile lambdas in a defun or lambda too</title>
<updated>2023-11-08T20:49:48+00:00</updated>
<author>
<name>Alan Mackenzie</name>
</author>
<published>2023-11-08T20:49:48+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=06e4ebc81a44c709b08ce72c746629c6c77e6f6e'/>
<id>06e4ebc81a44c709b08ce72c746629c6c77e6f6e</id>
<content type='text'>
This fixes bug#64646.  Also refactor two functions to reduce
code duplication.

* lisp/emacs-lisp/comp.el (comp-spill-lap-function/symbol)
(comp-spill-lap-function/list): Add all functions found by the
byte compiler (including lambdas) to the native compiler's
context, thus making them be native compiled.  Refactor to use
comp-intern-func-in-ctxt.  Make comp-spill-lap-function/list
also compile closures.

* test/src/comp-resources/comp-test-funcs.el
(comp-tests-lambda-return-f2): New function

* test/src/comp-tests.el (comp-test-lambda-return2)
(comp-tests-free-fun-f2): New functions to test that internal
lambdas get native compiled.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes bug#64646.  Also refactor two functions to reduce
code duplication.

* lisp/emacs-lisp/comp.el (comp-spill-lap-function/symbol)
(comp-spill-lap-function/list): Add all functions found by the
byte compiler (including lambdas) to the native compiler's
context, thus making them be native compiled.  Refactor to use
comp-intern-func-in-ctxt.  Make comp-spill-lap-function/list
also compile closures.

* test/src/comp-resources/comp-test-funcs.el
(comp-tests-lambda-return-f2): New function

* test/src/comp-tests.el (comp-test-lambda-return2)
(comp-tests-free-fun-f2): New functions to test that internal
lambdas get native compiled.
</pre>
</div>
</content>
</entry>
<entry>
<title>Require `cl-lib` rather than directly some of its subfiles</title>
<updated>2023-10-29T18:07:04+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2023-10-29T18:07:04+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=99d4d65cc2cd98537ef58afeace81a11ad2ff6c2'/>
<id>99d4d65cc2cd98537ef58afeace81a11ad2ff6c2</id>
<content type='text'>
* test/src/filelock-tests.el:
* lisp/net/tramp-sh.el: Require `cl-lib` rather than `cl-seq` or `cl-macs`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/src/filelock-tests.el:
* lisp/net/tramp-sh.el: Require `cl-lib` rather than `cl-seq` or `cl-macs`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add 'case-symbols-as-words' to configure symbol case behavior</title>
<updated>2023-10-29T11:32:43+00:00</updated>
<author>
<name>Spencer Baugh</name>
</author>
<published>2023-10-21T15:09:39+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=5c8fc0b0594b1e3af43d86c0bc96e10d03bc75a2'/>
<id>5c8fc0b0594b1e3af43d86c0bc96e10d03bc75a2</id>
<content type='text'>
In some programming languages and styles, a symbol (or every
symbol in a sequence of symbols) might be capitalized, but the
individual words making up the symbol should never be capitalized.

For example, in OCaml, type names Look_like_this and variable names
look_like_this, but it is basically never correct for something to
Look_Like_This.  And one might have "aa_bb cc_dd ee_ff" or "Aa_bb
Cc_dd Ee_ff", but never "Aa_Bb Cc_Dd Ee_Ff".

To support this, the new variable 'case-symbols-as-words' causes
symbol constituents to be treated as part of words only for case
operations.

* src/casefiddle.c (case_ch_is_word): New function.
(case_character_impl, case_character): Use 'case_ch_is_word'.
(syms_of_casefiddle): Define 'case-symbols-as-words'.
* src/search.c (Freplace_match): Use 'case-symbols-as-words'
when calculating case pattern.
* test/src/casefiddle-tests.el (casefiddle-tests--check-syms)
(casefiddle-case-symbols-as-words): Test 'case-symbols-as-words'.
* etc/NEWS: Announce 'case-symbols-as-words'.
* doc/lispref/strings.texi (Case Conversion): Document
'case-symbols-as-words'.
(Bug#66614)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some programming languages and styles, a symbol (or every
symbol in a sequence of symbols) might be capitalized, but the
individual words making up the symbol should never be capitalized.

For example, in OCaml, type names Look_like_this and variable names
look_like_this, but it is basically never correct for something to
Look_Like_This.  And one might have "aa_bb cc_dd ee_ff" or "Aa_bb
Cc_dd Ee_ff", but never "Aa_Bb Cc_Dd Ee_Ff".

To support this, the new variable 'case-symbols-as-words' causes
symbol constituents to be treated as part of words only for case
operations.

* src/casefiddle.c (case_ch_is_word): New function.
(case_character_impl, case_character): Use 'case_ch_is_word'.
(syms_of_casefiddle): Define 'case-symbols-as-words'.
* src/search.c (Freplace_match): Use 'case-symbols-as-words'
when calculating case pattern.
* test/src/casefiddle-tests.el (casefiddle-tests--check-syms)
(casefiddle-case-symbols-as-words): Test 'case-symbols-as-words'.
* etc/NEWS: Announce 'case-symbols-as-words'.
* doc/lispref/strings.texi (Case Conversion): Document
'case-symbols-as-words'.
(Bug#66614)
</pre>
</div>
</content>
</entry>
<entry>
<title>Add two missing 'number-or-marker' entries to the cl machinery (bug#66615)</title>
<updated>2023-10-19T11:59:57+00:00</updated>
<author>
<name>Andrea Corallo</name>
</author>
<published>2023-10-18T14:10:08+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=a567faf4c2bc497e50ce3c6ace32c1333cf3b706'/>
<id>a567faf4c2bc497e50ce3c6ace32c1333cf3b706</id>
<content type='text'>
Assuming 'number-or-marker' is a type (as present multiple times in
cl--typeof-types) adding some missing entries for coherency.

* lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Add
'number-or-marker' as supertype of 'number' in the 'float' branch.

* lisp/emacs-lisp/cl-macs.el (cl-deftype-satisfies): Add
'number-or-marker'.

* test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-typespec-tests-alist):
Update test.

* test/src/comp-tests.el (comp-tests-type-spec-tests): Update two testes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Assuming 'number-or-marker' is a type (as present multiple times in
cl--typeof-types) adding some missing entries for coherency.

* lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Add
'number-or-marker' as supertype of 'number' in the 'float' branch.

* lisp/emacs-lisp/cl-macs.el (cl-deftype-satisfies): Add
'number-or-marker'.

* test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-typespec-tests-alist):
Update test.

* test/src/comp-tests.el (comp-tests-type-spec-tests): Update two testes.
</pre>
</div>
</content>
</entry>
<entry>
<title>regex.c: Fix recent regression with mutually_exclusive_p</title>
<updated>2023-10-03T14:10:57+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2023-10-03T14:10:57+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=37130fd500fbf78ff0d0037aa6275f0f70a415dd'/>
<id>37130fd500fbf78ff0d0037aa6275f0f70a415dd</id>
<content type='text'>
The new analysis code ended up increasing the scope of an optimization
a bit too far.  Reign it in.

* src/regex-emacs.c (struct mutexcl_data): Add `unconstrained` field.
(mutually_exclusive_one): Use and set it.
(mutually_exclusive_p): Initialize it.

* test/src/regex-emacs-tests.el (regexp-tests-backtrack-optimization):
Add test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The new analysis code ended up increasing the scope of an optimization
a bit too far.  Reign it in.

* src/regex-emacs.c (struct mutexcl_data): Add `unconstrained` field.
(mutually_exclusive_one): Use and set it.
(mutually_exclusive_p): Initialize it.

* test/src/regex-emacs-tests.el (regexp-tests-backtrack-optimization):
Add test.
</pre>
</div>
</content>
</entry>
<entry>
<title>regex.c (mutually_exclusive_aux) &lt;wordbound&gt;: Remove optimization</title>
<updated>2023-09-28T16:37:44+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2023-09-28T16:37:44+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=7c26501175f7dc657c677c151d49d04291ea67e7'/>
<id>7c26501175f7dc657c677c151d49d04291ea67e7</id>
<content type='text'>
Another case that was too optimistic.  Better use \&gt; or \&lt; rather
than \b if you want your regexp to be handled efficiently.

* src/regex-emacs.c (mutually_exclusive_aux) &lt;wordbound&gt;: Cancel optimization.
* test/src/regex-emacs-tests.el (regexp-tests-backtrack-optimization):
New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Another case that was too optimistic.  Better use \&gt; or \&lt; rather
than \b if you want your regexp to be handled efficiently.

* src/regex-emacs.c (mutually_exclusive_aux) &lt;wordbound&gt;: Cancel optimization.
* test/src/regex-emacs-tests.el (regexp-tests-backtrack-optimization):
New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>* src/regex-emacs.c (analyze_first): Fix incorrect optimization</title>
<updated>2023-09-27T17:29:50+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2023-09-27T17:29:50+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=bc52fdd1d153b36a9da74d7aa7f1e6150ff6b2eb'/>
<id>bc52fdd1d153b36a9da74d7aa7f1e6150ff6b2eb</id>
<content type='text'>
The optimization was incorrect in a particular corner case.
In this fix I just disable it conservatively for more cases because
it's not obvious how to fix it while preserving the "good" cases.

We may find a better fix by using an approach like the one
in `mutually_exhaustive_aux`, but for now this is good enough,
especially since \{..\} repetitions are not used very frequently.

* test/src/regex-resources/PTESTS: New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The optimization was incorrect in a particular corner case.
In this fix I just disable it conservatively for more cases because
it's not obvious how to fix it while preserving the "good" cases.

We may find a better fix by using an approach like the one
in `mutually_exhaustive_aux`, but for now this is good enough,
especially since \{..\} repetitions are not used very frequently.

* test/src/regex-resources/PTESTS: New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>; * test/src/regex-emacs-tests.el: suppress relint complaints</title>
<updated>2023-09-27T10:45:43+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2023-09-27T10:41:15+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=9a67540e51edca00b17de639af18989f9ecc9be9'/>
<id>9a67540e51edca00b17de639af18989f9ecc9be9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
