<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/test/src/lread-tests.el, branch feature/external-completion</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>Prefer pos-bol and pos-eol in tests</title>
<updated>2022-08-21T15:45:04+00:00</updated>
<author>
<name>Stefan Kangas</name>
</author>
<published>2022-08-21T15:33:55+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=85480527d571640a027343d3a145b1cbfcfe8c11'/>
<id>85480527d571640a027343d3a145b1cbfcfe8c11</id>
<content type='text'>
* test/lisp/calendar/todo-mode-tests.el
(todo-test-toggle-item-header02, todo-test-edit-item-date-month)
(todo-test-multiline-item-indentation-1)
(todo-test-multiline-item-indentation-2)
(todo-test-multiline-item-indentation-3):
* test/lisp/cedet/semantic-utest-ia.el (semantic-ia-utest-buffer)
(semantic-sr-utest-buffer-refs):
* test/lisp/cedet/semantic-utest.el (semantic-utest-kill-indicator)
(semantic-utest-unkill-indicator):
* test/lisp/dired-tests.el (dired-test-bug27968):
* test/lisp/emacs-lisp/backtrace-tests.el
(backtrace-tests--verify-single-and-multi-line):
* test/lisp/emacs-lisp/find-func-tests.el
(find-func-tests--find-library-verbose):
* test/lisp/erc/erc-tests.el (erc-ring-previous-command)
(erc-log-irc-protocol):
* test/lisp/gnus/message-tests.el (message-mode-propertize):
* test/lisp/info-xref-tests.el (info-xref-test-emacs-manuals):
* test/lisp/mail/footnote-tests.el (footnote-tests-same-place):
* test/lisp/progmodes/elisp-mode-tests.el
(elisp-shorthand-completion-at-point):
* test/lisp/progmodes/f90-tests.el (f90-test-bug38415):
* test/lisp/progmodes/python-tests.el
(python-indent-electric-comma-inside-multiline-string)
(python-indent-electric-comma-after-multiline-string)
(python-indent-electric-colon-1, python-indent-electric-colon-2)
(python-indent-electric-colon-3, python-indent-electric-colon-4)
(python-mark-defun-2, python-mark-defun-3, python-mark-defun-4)
(python-mark-defun-5, python-nav-end-of-defun-2)
(python-nav-end-of-statement-1, python-nav-end-of-block-1)
(python-indent-dedent-line-backspace-2)
(python-indent-dedent-line-backspace-3)
(python-eldoc--get-symbol-at-point-1)
(python-info-beginning-of-statement-p-1)
(python-info-beginning-of-statement-p-2):
* test/lisp/replace-tests.el (replace-occur-revert-bug32543)
(replace-occur-revert-bug32987):
* test/lisp/simple-tests.el (simple-delete-indentation-boundaries)
(simple-delete-indentation-region)
(line-number-at-pos-in-narrow-buffer)
(line-number-at-pos-keeps-restriction):
* test/lisp/textmodes/css-mode-tests.el (css-mode-test-selectors)
(scss-mode-test-selectors):
* test/lisp/textmodes/fill-tests.el (fill-test-unbreakable-paragraph)
(fill-test-breakable-paragraph):
* test/lisp/time-stamp-tests.el (time-stamp-custom-pattern):
* test/src/lread-tests.el (lread-tests--last-message):
* test/src/process-tests.el (set-process-filter-t):
* test/src/undo-tests.el (undo-test-skip-invalidated-markers): Prefer
pos-bol and pos-eol.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/lisp/calendar/todo-mode-tests.el
(todo-test-toggle-item-header02, todo-test-edit-item-date-month)
(todo-test-multiline-item-indentation-1)
(todo-test-multiline-item-indentation-2)
(todo-test-multiline-item-indentation-3):
* test/lisp/cedet/semantic-utest-ia.el (semantic-ia-utest-buffer)
(semantic-sr-utest-buffer-refs):
* test/lisp/cedet/semantic-utest.el (semantic-utest-kill-indicator)
(semantic-utest-unkill-indicator):
* test/lisp/dired-tests.el (dired-test-bug27968):
* test/lisp/emacs-lisp/backtrace-tests.el
(backtrace-tests--verify-single-and-multi-line):
* test/lisp/emacs-lisp/find-func-tests.el
(find-func-tests--find-library-verbose):
* test/lisp/erc/erc-tests.el (erc-ring-previous-command)
(erc-log-irc-protocol):
* test/lisp/gnus/message-tests.el (message-mode-propertize):
* test/lisp/info-xref-tests.el (info-xref-test-emacs-manuals):
* test/lisp/mail/footnote-tests.el (footnote-tests-same-place):
* test/lisp/progmodes/elisp-mode-tests.el
(elisp-shorthand-completion-at-point):
* test/lisp/progmodes/f90-tests.el (f90-test-bug38415):
* test/lisp/progmodes/python-tests.el
(python-indent-electric-comma-inside-multiline-string)
(python-indent-electric-comma-after-multiline-string)
(python-indent-electric-colon-1, python-indent-electric-colon-2)
(python-indent-electric-colon-3, python-indent-electric-colon-4)
(python-mark-defun-2, python-mark-defun-3, python-mark-defun-4)
(python-mark-defun-5, python-nav-end-of-defun-2)
(python-nav-end-of-statement-1, python-nav-end-of-block-1)
(python-indent-dedent-line-backspace-2)
(python-indent-dedent-line-backspace-3)
(python-eldoc--get-symbol-at-point-1)
(python-info-beginning-of-statement-p-1)
(python-info-beginning-of-statement-p-2):
* test/lisp/replace-tests.el (replace-occur-revert-bug32543)
(replace-occur-revert-bug32987):
* test/lisp/simple-tests.el (simple-delete-indentation-boundaries)
(simple-delete-indentation-region)
(line-number-at-pos-in-narrow-buffer)
(line-number-at-pos-keeps-restriction):
* test/lisp/textmodes/css-mode-tests.el (css-mode-test-selectors)
(scss-mode-test-selectors):
* test/lisp/textmodes/fill-tests.el (fill-test-unbreakable-paragraph)
(fill-test-breakable-paragraph):
* test/lisp/time-stamp-tests.el (time-stamp-custom-pattern):
* test/src/lread-tests.el (lread-tests--last-message):
* test/src/process-tests.el (set-process-filter-t):
* test/src/undo-tests.el (undo-test-skip-invalidated-markers): Prefer
pos-bol and pos-eol.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make force-load-doc-strings work again</title>
<updated>2022-08-07T08:25:03+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2022-08-06T11:38:12+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c46863d9bb8493d0d15030df863d78b8f1738b2e'/>
<id>c46863d9bb8493d0d15030df863d78b8f1738b2e</id>
<content type='text'>
When load-force-doc-strings is true, read (#$ . POS) as the (unibyte)
string referred to.  This feature was lost by mistake in the recent
nonrecursive reader rewrite.

Noticed by Stefan Monnier.

* src/lread.c (get_lazy_string): New function (code mostly recycled
from an old version).
(read0): Detect (#$ . FIXNUM) and retrieve the string if appropriate.
* test/src/lread-resources/lazydoc.el:
* test/src/lread-tests.el (lread-force-load-doc-strings):
New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When load-force-doc-strings is true, read (#$ . POS) as the (unibyte)
string referred to.  This feature was lost by mistake in the recent
nonrecursive reader rewrite.

Noticed by Stefan Monnier.

* src/lread.c (get_lazy_string): New function (code mostly recycled
from an old version).
(read0): Detect (#$ . FIXNUM) and retrieve the string if appropriate.
* test/src/lread-resources/lazydoc.el:
* test/src/lread-tests.el (lread-force-load-doc-strings):
New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>Let ?\LF signal an error (bug#55738)</title>
<updated>2022-06-03T09:23:30+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2022-06-03T08:12:24+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=28622d4dd0347227a28b7b25c674437239a00a06'/>
<id>28622d4dd0347227a28b7b25c674437239a00a06</id>
<content type='text'>
As suggested by Stefan Monnier.

* src/lread.c (read_escape):
Signal an error for ?\LF since it cannot reasonably be intended.
* test/src/lread-tests.el (lread-escaped-lf): Update test.
* etc/NEWS: Announce.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As suggested by Stefan Monnier.

* src/lread.c (read_escape):
Signal an error for ?\LF since it cannot reasonably be intended.
* test/src/lread-tests.el (lread-escaped-lf): Update test.
* etc/NEWS: Announce.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make ?\LF generate 10, not -1 (bug#55738)</title>
<updated>2022-06-02T14:57:02+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2022-06-02T09:46:18+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=52e527a02f40686f355d18ab2ba2d1d7c9fa0fbc'/>
<id>52e527a02f40686f355d18ab2ba2d1d7c9fa0fbc</id>
<content type='text'>
The old -1 value was an artefact of the reader implementation.

* src/lread.c (read_escape): Remove the `stringp` argument; assume
character literal syntax.  Never return -1.
(read_string_literal): Handle string-specific escape semantics here
and simplify.
* test/src/lread-tests.el (lread-escaped-lf): New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The old -1 value was an artefact of the reader implementation.

* src/lread.c (read_escape): Remove the `stringp` argument; assume
character literal syntax.  Never return -1.
(read_string_literal): Handle string-specific escape semantics here
and simplify.
* test/src/lread-tests.el (lread-escaped-lf): New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>Nonrecursive Lisp reader (bug#55676)</title>
<updated>2022-05-30T13:56:59+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2022-05-24T11:02:14+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b903507b36c438653a02d7b6291e9744d5221e28'/>
<id>b903507b36c438653a02d7b6291e9744d5221e28</id>
<content type='text'>
Restructure the reader to be nonrecursive so that it is not limited by
the C stack or crashes Emacs when reading deeply nested data.
This also improves performance.
A few minor bugs were fixed:

- (a .{NBSP}b) where {NBSP} is a non-breaking space (U+00A0) is now
  the dotted pair (a . b), not the 3-element list (a \. b), since U+00A0
  is treated as whitespace everywhere else.
- #_ with no symbol following is now equivalent to ## (empty interned
  symbol), not #: (empty uninterned symbol).

* src/alloc.c (garbage_collect): Call mark_lread.
* src/lread.c (readevalloop): Use read0 instead of read_list.
(stackbufsize): Increase to 1024, now that read0 isn't recursive.
(invalid_radix_integer): Buffer overflow check.
(read1, read_list, read_vector): Remove.
(read_char_literal, read_string_literal)
(hash_table_from_plist, record_from_list, vector_from_rev_list)
(bytecode_from_rev_list, char_table_from_rev_list)
(sub_char_table_from_rev_list, string_props_from_rev_list)
(read_bool_vector, skip_lazy_string, symbol_char_span)
(skip_space_and_comments)
(enum read_entry_type, struct read_stack_entry, struct read_stack)
(rdstack, mark_lread, read_stack_top, read_stack_pop)
(read_stack_empty_p, grow_read_stack, read_stack_push): New.
(read0): Rewrite to be nonrecursive.
* test/src/lread-tests.el (lread-deeply-nested, lread-misc): New tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Restructure the reader to be nonrecursive so that it is not limited by
the C stack or crashes Emacs when reading deeply nested data.
This also improves performance.
A few minor bugs were fixed:

- (a .{NBSP}b) where {NBSP} is a non-breaking space (U+00A0) is now
  the dotted pair (a . b), not the 3-element list (a \. b), since U+00A0
  is treated as whitespace everywhere else.
- #_ with no symbol following is now equivalent to ## (empty interned
  symbol), not #: (empty uninterned symbol).

* src/alloc.c (garbage_collect): Call mark_lread.
* src/lread.c (readevalloop): Use read0 instead of read_list.
(stackbufsize): Increase to 1024, now that read0 isn't recursive.
(invalid_radix_integer): Buffer overflow check.
(read1, read_list, read_vector): Remove.
(read_char_literal, read_string_literal)
(hash_table_from_plist, record_from_list, vector_from_rev_list)
(bytecode_from_rev_list, char_table_from_rev_list)
(sub_char_table_from_rev_list, string_props_from_rev_list)
(read_bool_vector, skip_lazy_string, symbol_char_span)
(skip_space_and_comments)
(enum read_entry_type, struct read_stack_entry, struct read_stack)
(rdstack, mark_lread, read_stack_top, read_stack_pop)
(read_stack_empty_p, grow_read_stack, read_stack_push): New.
(read0): Rewrite to be nonrecursive.
* test/src/lread-tests.el (lread-deeply-nested, lread-misc): New tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix reader infinite recursion for circular mixed-type values</title>
<updated>2022-03-26T16:11:40+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2022-03-26T15:44:18+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=2dfeea8962751718168494c0560d69e678794b39'/>
<id>2dfeea8962751718168494c0560d69e678794b39</id>
<content type='text'>
Make sure that the value added to the `read_objects_completed` set is
the one we actually return; previously this wasn't the case for conses
because of an optimisation (bug#54501).

Also add a check for vacuous self-references such as #1=#1# instead of
returning a nonsense value from thin air.

* src/lread.c (read1): Treat numbered conses correctly as described
above.  Detect vacuous self-references.
* test/src/lread-tests.el (lread-test-read-and-print)
(lread-test-circle-cases, lread-circle): Add tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make sure that the value added to the `read_objects_completed` set is
the one we actually return; previously this wasn't the case for conses
because of an optimisation (bug#54501).

Also add a check for vacuous self-references such as #1=#1# instead of
returning a nonsense value from thin air.

* src/lread.c (read1): Treat numbered conses correctly as described
above.  Detect vacuous self-references.
* test/src/lread-tests.el (lread-test-read-and-print)
(lread-test-circle-cases, lread-circle): Add tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge from origin/emacs-28</title>
<updated>2022-01-01T12:03:03+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2022-01-01T12:03:03+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=dcd76bd48df678d8234b904d7b13c997228519a3'/>
<id>dcd76bd48df678d8234b904d7b13c997228519a3</id>
<content type='text'>
836be7a112 ; * etc/refcards/ru-refcard.tex: Update Copyright year.
86cbc6ee4a * lisp/net/tramp-sh.el: Adapt copyright year
ebe8772f65 ; Minor fixes related to copyright years
23c1ee6989 ; * test/manual/etags/ETAGS.good_N: Adjust to copyright ye...
8d3fc7ec89 * src/xfaces.c (face_for_font): Make 'hash' be uintptr_t.
19dcb237b5 ; Add 2022 to copyright years.

# Conflicts:
#	etc/NEWS
#	etc/refcards/ru-refcard.tex
#	lib/cdefs.h
#	lisp/erc/erc-dcc.el
#	lisp/erc/erc-imenu.el
#	lisp/erc/erc-replace.el
#	lisp/image-dired.el
#	lisp/progmodes/xref.el
#	m4/alloca.m4
#	m4/byteswap.m4
#	m4/errno_h.m4
#	m4/getopt.m4
#	m4/gnulib-common.m4
#	m4/inttypes.m4
#	m4/stddef_h.m4
#	m4/stdint.m4
#	m4/sys_socket_h.m4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
836be7a112 ; * etc/refcards/ru-refcard.tex: Update Copyright year.
86cbc6ee4a * lisp/net/tramp-sh.el: Adapt copyright year
ebe8772f65 ; Minor fixes related to copyright years
23c1ee6989 ; * test/manual/etags/ETAGS.good_N: Adjust to copyright ye...
8d3fc7ec89 * src/xfaces.c (face_for_font): Make 'hash' be uintptr_t.
19dcb237b5 ; Add 2022 to copyright years.

# Conflicts:
#	etc/NEWS
#	etc/refcards/ru-refcard.tex
#	lib/cdefs.h
#	lisp/erc/erc-dcc.el
#	lisp/erc/erc-imenu.el
#	lisp/erc/erc-replace.el
#	lisp/image-dired.el
#	lisp/progmodes/xref.el
#	m4/alloca.m4
#	m4/byteswap.m4
#	m4/errno_h.m4
#	m4/getopt.m4
#	m4/gnulib-common.m4
#	m4/inttypes.m4
#	m4/stddef_h.m4
#	m4/stdint.m4
#	m4/sys_socket_h.m4
</pre>
</div>
</content>
</entry>
<entry>
<title>; Add 2022 to copyright years.</title>
<updated>2022-01-01T07:45:51+00:00</updated>
<author>
<name>Eli Zaretskii</name>
</author>
<published>2022-01-01T07:45:51+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=19dcb237b5b02b36580294ab309124f346a66024'/>
<id>19dcb237b5b02b36580294ab309124f346a66024</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>* src/lread.c (read_escape): Fix handling of ?\C-&lt;char&gt; for chars 128-255</title>
<updated>2021-11-14T17:56:11+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2021-11-14T17:56:11+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=572eed83fcce65c3f81cbbfd777f5020bed1d81a'/>
<id>572eed83fcce65c3f81cbbfd777f5020bed1d81a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace some macros with ert-with-temp-(file|directory)</title>
<updated>2021-11-06T18:16:05+00:00</updated>
<author>
<name>Stefan Kangas</name>
</author>
<published>2021-11-06T15:05:02+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=83422370c87000f3d6d89320d4947c24325c9ad2'/>
<id>83422370c87000f3d6d89320d4947c24325c9ad2</id>
<content type='text'>
* test/lisp/custom-tests.el (custom-tests--with-temp-dir):
* test/lisp/files-tests.el (files-tests--with-temp-file):
* test/lisp/progmodes/project-tests.el
(project-tests--with-temporary-directory):
* test/src/emacs-module-tests.el (module--with-temp-directory):
* test/src/emacs-tests.el (emacs-tests--with-temp-file):
* test/src/lread-tests.el (lread-tests--with-temp-file):
* test/src/process-tests.el (process-tests--with-temp-directory):
Replace macros with 'ert-with-temp-(file|directory)'.  Update callers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/lisp/custom-tests.el (custom-tests--with-temp-dir):
* test/lisp/files-tests.el (files-tests--with-temp-file):
* test/lisp/progmodes/project-tests.el
(project-tests--with-temporary-directory):
* test/src/emacs-module-tests.el (module--with-temp-directory):
* test/src/emacs-tests.el (emacs-tests--with-temp-file):
* test/src/lread-tests.el (lread-tests--with-temp-file):
* test/src/process-tests.el (process-tests--with-temp-directory):
Replace macros with 'ert-with-temp-(file|directory)'.  Update callers.
</pre>
</div>
</content>
</entry>
</feed>
