Commit graph

754 commits

Author SHA1 Message Date
Stefan Monnier
d79cdcd4ff cconv.el: Fix regression in cconv-tests-interactive-closure-bug51695
The new code to make interpreted closures safe-for-space introduced
a regression in `cconv-tests-interactive-closure-bug51695`, only seen
when using TEST_LOAD_EL.
A few other issues were found and fixed along the way.

* lisp/emacs-lisp/cconv.el (cconv-fv): Change calling convention and
focus on finding the free variables.
(cconv-make-interpreted-closure): New function.

* lisp/loadup.el: Use `compiled-function-p` rather than
`byte-code-function-p` so we also use safe-for-space interpreted
closures when we build with native compilation.
(internal-make-interpreted-closure-function):
Use `cconv-make-interpreted-closure`.

* src/eval.c (syms_of_eval): Rename `internal-filter-closure-env-function`
to `internal-make-interpreted-closure-function`.
(Ffunction): Let that new var build the actual closure.

* test/lisp/emacs-lisp/cconv-tests.el
(cconv-tests-interactive-closure-bug51695): Test specifically the
interpreted case.
2022-10-28 11:33:24 -04:00
Wamm K. D
e893fd1073 Fix failing test for package Hierarchy
This fixes a typo in one of the tests of Hierarchy which was causing
the test to fail.
* test/lisp/emacs-lisp/hierarchy-tests.el (hierarchy-delayed-add-trees):
Fix typo.
2022-10-28 10:33:18 +03:00
Wamm K. D
c6ec08e49a Allow Hierarchy to delay computation of children
This adds an option to allow callers to specify that computing
the children of the hierarchy should be delayed to when the
user calls for them, by utilizing the tree-widget :expander
property.
* lisp/emacs-lisp/hierarchy.el (hierarchy-add-tree)
(hierarchy-add-trees): Add parameter 'delay-children-p'.
* lisp/emacs-lisp/hierarchy.el
(hierarchy--create-delayed-tree-widget): Add function.
* lisp/emacs-lisp/hierarchy.el (hierarchy-convert-to-tree-widget):
Utilize ':expander' if delaying children.  (Bug#55900)

* test/lisp/emacs-lisp/hierarchy-tests.el: Add tests for
delayed-children functionality.
2022-10-27 20:12:24 +03:00
Basil L. Contovounesios
9da2efb670 Audit some plist uses with new predicate argument
* doc/lispref/lists.texi (Plist Access): Improve description of
default predicate.
* lisp/emacs-lisp/cl-extra.el (cl-getf, cl--set-getf): Assume
plist-member always returns a cons.
* lisp/emacs-lisp/gv.el (plist-get): Support new optional predicate
argument (bug#47425#91).
* lisp/emacs-lisp/map.el: Bump minor version.
(map--dispatch): Remove now that bug#58563 is fixed.  Break two
remaining uses out into corresponding cl-defmethods.
(map--plist-p): Add docstring.
(map--plist-has-predicate, map--plist-member-1, map--plist-member)
(map--plist-put-1, map--plist-put): New definitions for supporting
predicate argument backward compatibly.
(map-elt): Fix generalized variable getter under a
predicate (bug#58531).  Use predicate when given a plist.
(map-put): Avoid gratuitous warnings when called without the hidden
predicate argument.  Improve obsoletion message.
(map-put!): Use predicate when given a plist.
(map-contains-key): Ditto.  Declare forgotten
advertised-calling-convention (bug#58531#19).
(map--put): Group definition in file together with that of map-put!.
* lisp/files-x.el (connection-local-normalize-criteria): Simplify
using mapcan + plist-get.
* lisp/net/eudc.el (eudc--plist-member): New convenience function.
(eudc-plist-member, eudc-plist-get, eudc-lax-plist-get): Use it
instead of open-coding plist-member.
* src/fns.c (Fplist_get, plist_get, Fplist_put, plist_put): Pass the
plist element as the first argument to the predicate, for
consistency with assoc + alist-get.
(Fplist_member, plist_member): Move from widget to plist section.
Open-code the EQ case in plist_member, and call it from
Fplist_member in that case, rather than the other way around.

* test/lisp/apropos-tests.el (apropos-tests-format-plist): Avoid
polluting obarray.
* test/lisp/emacs-lisp/cl-extra-tests.el (cl-getf): Extend test with
generalized variables, degenerate plists, and improper lists.
* test/lisp/emacs-lisp/gv-tests.el: Byte-compile file; in the
meantime bug#24402 seems to have been fixed or worked around.
(gv-setter-edebug): Inhibit printing messages.
(gv-plist-get): Avoid modifying constant literals.  Also test with a
predicate argument.
* test/lisp/emacs-lisp/map-tests.el (with-maps-do): Simplify
docstring.
(test-map-elt-testfn): Rename...
(test-map-elt-testfn-alist): ...to this.  Also test with a predicate
argument.
(test-map-elt-testfn-plist, test-map-elt-gv, test-map-elt-signature)
(test-map-put!-plist, test-map-put!-signature)
(test-map-contains-key-signature, test-map-plist-member)
(test-map-plist-put): New tests.
(test-map-contains-key-testfn): Also test with a predicate argument.
(test-map-setf-alist-overwrite-key, test-map-setf-plist-insert-key)
(test-map-setf-plist-overwrite-key): Avoid modifying constant
literals.
(test-hash-table-setf-insert-key)
(test-hash-table-setf-overwrite-key): Fix indentation.
(test-setf-map-with-function): Make test more precise.
* test/lisp/net/eudc-tests.el: New file.
* test/lisp/subr-tests.el (test-plistp): Extend test with circular
list.
* test/src/fns-tests.el (test-cycle-equal, test-cycle-nconc): Move
from plist section to circular list section.
(plist-put/odd-number-of-elements): Avoid modifying constant
literals.
(plist-member/improper-list): Simplify.
(test-plist): Move to plist section.  Also test with a predicate
argument.
2022-10-22 19:33:12 +03:00
Nacho Barrientos
40a361fbd6 Bindat (src, strz): Operate on vectors too
Copyright-paperwork-exempt: yes

* lisp/emacs-lisp/bindat.el (bindat--unpack-str, bindat--unpack-strz):
Fix the non-string case.
* test/lisp/emacs-lisp/bindat-tests.el (bindat-test--strz-array-unpack)
(bindat-test--str-simple-array-unpack,bindat-test--str-combined-array-unpack):
New tests.
2022-10-21 11:26:36 -04:00
Basil L. Contovounesios
dd7f1bb3a1 Silence recent comp-tests.el lexvar warnings
* test/lisp/emacs-lisp/comp-tests.el: Mark used native-compile
variables as special to pacify unknown lexvar warnings in the
default build.
(with-test-native-compile-prune-cache): Instrument macro arguments
for debugging and indent conventionally.  Reindent all callers.
(test-native-compile-prune-cache/dont-delete-in-parent-of-cache):
Simplify file name expansion.
2022-10-17 21:02:26 +03:00
Stefan Kangas
40b734c500 Don't prune *.eln files in parent of eln-load-path
* lisp/emacs-lisp/comp.el (native-compile-prune-cache): Don't
prune *.eln files in parent directory of `native-comp-eln-load-path'.
* test/lisp/emacs-lisp/comp-tests.el
(test-native-compile-prune-cache/dont-delete-in-parent-of-cache):
New test.
2022-10-17 15:26:34 +02:00
Stefan Kangas
24b85b10e3 Add tests for native-compile-prune-cache
* test/lisp/comp-tests.el: New file.
2022-10-17 15:26:34 +02:00
Stefan Monnier
13d6e8fa54 cl-generic: Fix advertised-calling-convention declarations
* lisp/emacs-lisp/cl-generic.el (cl-generic-define-method):
Preserve the `advertised-calling-convention`, if any (bug#58563).

* lisp/subr.el (declare): Warn when we hit this.

* lisp/emacs-lisp/byte-run.el (get-advertised-calling-convention): New fun.
* lisp/progmodes/elisp-mode.el (elisp-get-fnsym-args-string):
* lisp/help-fns.el (help-fns--signature):
* lisp/emacs-lisp/bytecomp.el (byte-compile-fdefinition): Use it.

* test/lisp/emacs-lisp/cl-generic-tests.el (cl-generic-tests--acc): New fun.
(cl-generic-tests--advertised-calling-convention-bug58563): New test.
2022-10-16 12:01:47 -04:00
Stefan Monnier
8de7995ae6 package.el: Understand a few more variations in tarball formats
* lisp/emacs-lisp/package.el (package-untar-buffer): Fix thinko.
(package-tar-file-info): Handle the case where the first file is in
a subdirectory.

* test/lisp/emacs-lisp/package-tests.el (package-test-bug58367): New test.
* test/lisp/emacs-lisp/package-resources/ustar-withsub-0.1.tar:
* test/lisp/emacs-lisp/package-resources/v7-withsub-0.1.tar: New files.
2022-10-08 12:19:40 -04:00
Justus Winter
8352cf53bd Replace aging OpenPGP artifacts in the package-resources tests.
This replaces the old OpenPGPv4 key that is used in the test suite
with a more modern OpenPGPv4 key.  The key is the Alice key from
https://datatracker.ietf.org/doc/draft-bre-openpgp-samples/.  All
cryptographic artifacts in the test suite are updated accordingly.

Having old cryptographic artifacts in the test suite presents a
problem once the old algorithms are rejected by contemporary
implementations.
2022-10-06 14:53:41 +02:00
Lars Ingebrigtsen
92df7cd923 Add 'seq-keep'
* doc/lispref/sequences.texi (Sequence Functions): Document it.
* lisp/emacs-lisp/seq.el (seq-keep): New function (bug#58278).
2022-10-04 21:44:52 +02:00
Stefan Monnier
c244d4af57 cconv.el: Fix interactive closure bug#51695
Make cconv.el detect when a closure's interactive form needs to
capture variables from the context and tweak the code accordingly
if so.

* lisp/emacs-lisp/cconv.el (cconv--interactive-form-funs): New var.
(cconv-convert): Handle the case where the interactive form captures
vars from the surrounding context.  Remove left over handling of
`declare` which was already removed from the cconv-analyze` phase.
(cconv-analyze-form): Adjust analysis of interactive forms accordingly.

* lisp/emacs-lisp/oclosure.el (cconv--interactive-helper): New type and
function.
* lisp/simple.el (function-documentation, oclosure-interactive-form):
Add methods for it.

* test/lisp/emacs-lisp/cconv-tests.el
(cconv-tests-interactive-closure-bug51695): New test.
2022-09-23 16:36:16 -04:00
Mattias Engdegård
e4964de952 Don't rewrite set to setq of lexical variables
Only perform the rewrite

   (set 'VAR X) -> (setq VAR X)

for dynamic variables, as `set` isn't supposed to affect
lexical vars (and never does so when interpreted).

* lisp/emacs-lisp/byte-opt.el (byte-optimize-set):
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--xx): New.
(bytecomp-tests--test-cases): Add test cases.
* test/lisp/emacs-lisp/bytecomp-resources/warn-variable-set-nonvariable.el:
Remove obsolete test.
2022-09-22 14:54:15 +02:00
Philipp Stephani
a71de4b52d Improve check for misleading 'cl-case' cases (Bug#57915).
* lisp/emacs-lisp/cl-macs.el (cl-case): Check that the case is of the
form (quote FOO), not just (quote).
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-no-warning): New unit test.
2022-09-19 13:34:51 +02:00
Stefan Kangas
6938a2ddd2 Accept more wide function signatures in docstrings
* test/lisp/emacs-lisp/bytecomp-tests.el
("warn-wide-docstring-ignore-function-signature.el"): New test.
* lisp/emacs-lisp/bytecomp.el (byte-compile--wide-docstring-p):
Make regexp more allowing to silence warning.
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore-function-signature.el:
New file.
2022-09-16 22:28:46 +02:00
Lars Ingebrigtsen
10e9ec6da4 Fix recently-added cl-macs tests
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-error)
(cl-case-warning): Fix warning matches.
2022-09-14 02:30:54 +02:00
Philipp Stephani
fffa53ff1a Have 'cl-case' warn about suspicious cases
* lisp/emacs-lisp/cl-macs.el (cl-case): Warn if the user passes a nil
key list (which would never match).  Warn about quoted symbols that
should probably be unquoted.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-warning): New unit
test (bug#51368).
2022-09-13 17:12:57 +02:00
Philipp Stephani
6d8f5161ea Signal an error if a fallback cl-case is misplaced
* lisp/emacs-lisp/cl-macs.el (cl-case): Warn if the user passes a nil
key list (which would never match).  Warn about quoted symbols that
should probably be unquoted.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-warning): New unit
test (bug#51368).
2022-09-13 17:11:53 +02:00
Richard Hansen
10573e0db7 ert-x: New `ert-with-test-buffer-selected' convenience macro
* lisp/emacs-lisp/ert-x.el (ert-with-test-buffer-selected): New
convenience macro that extends `ert-with-test-buffer' by displaying
the test buffer in a temporary selected window.  This makes it easier
to simulate user input in the body via `execute-kbd-macro'.
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-test-test-buffer-selected/*): Add tests.
2022-09-11 13:46:30 +02:00
Lars Ingebrigtsen
06e4d9cb96 Fix "warn-lambda-malformed-interactive-spec.el" even more
* test/lisp/emacs-lisp/bytecomp-tests.el
("warn-lambda-malformed-interactive-spec.el"): Adjust test further.
2022-09-09 19:43:28 +02:00
Lars Ingebrigtsen
04a6fd378f Don't bind `s' in the normal backtrace map
* lisp/emacs-lisp/backtrace.el (backtrace-mode-map): Don't bind
the "s" command, because it's meaningless outside modes that have
set the backtrace-goto-source-functions variable (and only edebug
does that) (bug#57674).
* lisp/emacs-lisp/edebug.el (edebug-pop-to-backtrace): Use it.
(edebug-backtrace-mode-map, edebug-backtrace-mode): New mode.
2022-09-09 19:29:21 +02:00
Lars Ingebrigtsen
4cc78bcfd1 Update a bytecomp test
* test/lisp/emacs-lisp/bytecomp-tests.el
("warn-lambda-malformed-interactive-spec.el"): Update test to code
change.
2022-09-09 19:18:02 +02:00
Stefan Monnier
112cb75141 test: Remove redundant "" arg to mapconcat
* test/src/process-tests.el (process-test-stderr-filter):
* test/src/print-tests.el (print-tests-continuous-numbering):
* test/src/fns-tests.el (fns-tests-mapconcat):
* test/src/data-tests.el (test-bool-vector-to-hex-string):
* test/src/casefiddle-tests.el (casefiddle-tests-char-properties)
(casefiddle-tests-case-table, casefiddle-tests-casing-character):
* test/lisp/tabify-tests.el (tabify-tests--test-changes):
* test/lisp/subr-tests.el (subr-tests-bug22027):
* test/lisp/sort-tests.el (sort-tests-random-word):
* test/lisp/net/hmac-md5-tests.el (hmac-md5-test-encode-string):
* test/lisp/md4-tests.el (md4-tests-digest->hex):
* test/lisp/emacs-lisp/cl-extra-tests.el (cl-extra-test-map):
* test/lisp/dired-tests.el (dired-test-directory-files):
* test/lisp/char-fold-tests.el (char-fold--random-word):
* test/lisp/ansi-color-tests.el (ansi-color-incomplete-sequences-test):
Remove redundant "" arg to `mapconcat`.
2022-09-08 16:08:42 -04:00
Stefan Monnier
2a78f06ef4 cl-symbol-macrolet: Fix recent regression
The recent fix for bug#57397 introduced a regression, breaking
the `cl-lib-symbol-macrolet-hide` test.  It turned out that the
origin of the problem was that `gv.el` uses `macroexpand-1` which
does not (can't) use `macroexpand` but `cl-symbol-macrolet` failed
to advise `macroexpand-1` the way it advised `macroexpand`.

To fix this, we change `cl-symbol-macrolet` so it advises both, and we
do that with a new `macroexpand` advice which delegates the bulk of
the work to `macroexpand-1`.

Along the way, I bumped into another bug in the interaction between
`cl-letf` and `cl-symbol-macrolet`, which I tried to fix in `cl-letf`.

I hear the war on `cl-symbol-macrolet` was a failure.
Maybe ... just say no?

* lisp/emacs-lisp/cl-macs.el (cl--sm-macroexpand-1): New function,
extracted from `cl--sm-macroexpand`.
(cl--sm-macroexpand): Rewrite completely.
(cl-symbol-macrolet): Advise both `macroexpand` and `macroexpand-1`.
(cl--letf): Don't use the "simple variable" code for symbol macros.

* test/lisp/emacs-lisp/cl-lib-tests.el (cl-lib-symbol-macrolet-hide):
Revert last change because the test was right.

* test/lisp/emacs-lisp/cl-macs-tests.el
(cl-macs-test--symbol-macrolet): Add a test case.
2022-09-06 00:08:35 -04:00
Lars Ingebrigtsen
361d3dbc4e Disable failing cl-lib-symbol-macrolet-hide test for now
* test/lisp/emacs-lisp/cl-lib-tests.el
(cl-lib-symbol-macrolet-hide): Disable until code is fixed.
2022-09-06 00:06:34 +02:00
Damien Cassou
4751b51d5e Add new function `seq-positions'
* doc/lispref/sequences.texi (Sequence Functions): Document it.

* lisp/emacs-lisp/seq.el (seq-positions): New function.

* lisp/emacs-lisp/shortdoc.el (sequence): Mention it.

* test/lisp/emacs-lisp/seq-tests.el (test-seq-positions): Test it
(bug#57548).
2022-09-04 13:21:59 +02:00
Damien Cassou
2db8b0e12f Add new function `seq-remove-at-position'
* doc/lispref/sequences.texi (Sequence Functions): Document it.

* lisp/emacs-lisp/seq.el (seq-remove-at-position): New function.

* lisp/emacs-lisp/shortdoc.el (sequence): Mention it.

* test/lisp/emacs-lisp/seq-tests.el (test-seq-remove-at-position):
Test it.
2022-09-04 13:07:18 +02:00
Stefan Monnier
2dd1c2ab19 gv.el and cl-macs.el: Fix bug#57397
* lisp/emacs-lisp/gv.el (gv-get): Obey symbol macros.
* lisp/emacs-lisp/cl-macs.el (cl--letf): Remove workaround placed to
try and handle symbol macros.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-test--symbol-macrolet):
Add new testcase.
2022-09-03 22:38:28 -04:00
Lars Ingebrigtsen
b448fbec4b Disable a lisp-mode test that now fails
* test/lisp/emacs-lisp/lisp-mode-tests.el
(test-lisp-current-defun-name): Comment-out now-failing tests.
2022-08-23 12:49:13 +02:00
Stefan Kangas
85480527d5 Prefer pos-bol and pos-eol in tests
* 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.
2022-08-21 17:45:04 +02:00
Lars Ingebrigtsen
c0d761bf7f Further seq-uniq speed-ups for lists
* lisp/emacs-lisp/seq.el (seq-uniq): Speed up more for long lists
(bug#57079).
2022-08-12 15:16:39 +02:00
Lars Ingebrigtsen
5269842833 Add a faster seq-uniq for lists
* lisp/emacs-lisp/seq.el (seq-uniq): Add a faster method for lists
(bug#57079).
2022-08-09 19:21:36 +02:00
Lars Ingebrigtsen
55cc8b040b Make which-func-mode output less junk
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Use
edebug specs to find the name (if they exist), and default to
returning the top-level symbol if there isn't a define-like form
(bug#49592).
2022-08-08 14:32:33 +02:00
Stefan Kangas
cf30432a14 * test/lisp/emacs-lisp/nadvice-tests.el: Re-add no-byte-compile. 2022-08-08 13:47:15 +02:00
Stefan Kangas
60738e569d Remove no-byte-compile cookie from some libraries
This gives us back byte-compiler warnings for these files.
* lisp/mh-e/mh-acros.el:
* test/lisp/comint-tests.el:
* test/lisp/emacs-lisp/nadvice-tests.el:
* test/lisp/emacs-lisp/syntax-tests.el:
* test/lisp/xml-tests.el:
* test/src/font-tests.el: Remove no-byte-compile cookie.
* test/src/font-tests.el (font-parse-explain): Fix warning.
2022-08-08 11:50:33 +02:00
Matt Armstrong
50a192795a Consider built-in packages to be installed
* lisp/emacs-lisp/package.el (package-installed-p): Check for built-in
packages before initialization. (bug#56877).
2022-08-02 12:14:09 +02:00
Lars Ingebrigtsen
601737d750 Add support for user-customizable icons
* doc/emacs/custom.texi (Specific Customization): Mention it.

* doc/emacs/display.texi (Icons): New node.

* doc/lispref/display.texi (Icons): New node.

* lisp/button.el (buttonize):
(button--properties, buttonize-region): Allow not overriding faces.

* lisp/cus-edit.el (custom-save-all): Save icons.
(custom-icon): New widget.
(custom-icon-value-create, custom-toggle-hide-icon)
(custom--icons-widget-value, custom-icon-set): Helper functions
for the widget.
(customize-icon): Main command.
(custom-icon-state-set, custom-icon-state): Helper functions.
(custom-theme-set-icons): Function to be used by theme writers.
(custom-set-icons): Function to be used in .emacs.
(custom-save-icons): New function.

* lisp/custom.el (custom-push-theme): Add icons.

* lisp/emacs-lisp/icons.el: New file.

* test/lisp/emacs-lisp/icons-tests.el: Add some tests.
2022-07-28 14:39:38 +02:00
Lars Ingebrigtsen
51f5c4b773 Fix off-by-one error in string-truncate-left
* lisp/emacs-lisp/subr-x.el (string-truncate-left): Fix off-by-one
error (bug#56685).
2022-07-23 08:58:53 +02:00
Mattias Engdegård
6f7941272b Speed up seq-subseq for lists (bug#56521)
* lisp/emacs-lisp/seq.el (seq-subseq):
Make faster by using `take` instead of a lisp loop,
and more importantly by not front-loading the error text formatting.
* test/lisp/emacs-lisp/seq-tests.el (seq-tests--list-subseq-ref)
(test-seq-subseq): Test `seq-subseq` for lists more thoroughly.
2022-07-18 12:49:29 +02:00
Stefan Kangas
4e79f77635 Merge from origin/emacs-28
5e47ec9511 ; * lisp/url/url-http.el (url-http-parse-headers): Fix typo.
ba0871bef1 ; Fix typos: prefer American spelling
e3e7f31faa Adapt Tramp doc

# Conflicts:
#	etc/NEWS
#	etc/themes/modus-themes.el
#	lisp/emacs-lisp/byte-opt.el
#	test/lisp/so-long-tests/spelling-tests.el
2022-07-14 11:37:42 +02:00
Stefan Kangas
ba0871bef1 ; Fix typos: prefer American spelling 2022-07-13 13:04:22 +02:00
Lars Ingebrigtsen
b72e4b1493 Make string-limit with encoding return complete glyphs
* lisp/emacs-lisp/subr-x.el (string-limit): Return more correct
results in the CODING-SYSTEM case for coding systems with BOM and
charset designations (bug#48324).  Also amend the algorithm to
return complete glyphs, not just complete code points.
2022-07-03 14:08:14 +02:00
Lars Ingebrigtsen
b31680ef04 Add new function `seq-split'
* doc/lispref/sequences.texi (Sequence Functions): Document it.

* lisp/emacs-lisp/seq.el (seq-split): New function.

* lisp/emacs-lisp/shortdoc.el (sequence): Mention it.
2022-07-03 12:55:00 +02:00
Stefan Kangas
3c0b18facd Make two text-property-search tests easier to read
* test/lisp/emacs-lisp/text-property-search-tests.el
(text-property-search-forward/point-at-beginning)
(text-property-search-backward/point-at-end): Rewrite to make tests
easier to read.
2022-06-29 13:54:51 +02:00
Stefan Monnier
d3893d7e8e (oclosure-test-limits): Fix test failure when interpreted
* test/lisp/emacs-lisp/oclosure-tests.el (oclosure-test-limits):
Make sure we bind `byte-compile-debug` dynamically.
2022-06-26 13:15:15 -04:00
Lars Ingebrigtsen
49910adf87 Fix cl-generic bootstrap problems
* lisp/sqlite-mode.el (require):
* lisp/net/eudc.el (require):
* lisp/arc-mode.el (require): Require subr-x, since these files
are using macros from there.
* lisp/emacs-lisp/subr-x.el (with-memoization): Move from here...
* lisp/subr.el (with-memoization): ... to here, as it's used from
the preloaded cl-generic.el file.

* lisp/emacs-lisp/cl-generic.el (cl--generic-compiler): Don't use
the autoloaded `byte-compile' function during bootstrap.
(cl--generic-get-dispatcher): Don't require subr-x, either.

cl-generic has been preloaded since 2015, and most usages of it (in
preloaded files) work fine.  In particular, using `cl-defgeneric' is
unproblematic.  However, `cl-defmethod' would end up pulling in the
byte compiler (at load time), which would make it impossible to use
`cl-defmethod' in pre-loaded files, and this change fixes that (but
possibly not in the most self-evidently correct way).
2022-06-24 11:04:51 +02:00
Richard Hansen
55c2102560 bindat (strz): Null terminate fixed-length strings if there is room
* lisp/emacs-lisp/bindat.el (bindat--pack-strz): For fixed-length strz
fields, explicitly write a null terminator after the packed string if
there is room (bug#56048).
* doc/lispref/processes.texi (Bindat Types): Update documentation.
* test/lisp/emacs-lisp/bindat-tests.el (bindat-test--str-strz-prealloc):
Update tests.
2022-06-22 16:55:40 +03:00
Philipp Stephani
dbbf38d43f Document and test 'no-byte-compile' behavior.
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Document behavior
if 'no-byte-compile' is set.
* test/lisp/emacs-lisp/bytecomp-tests.el
(byte-compile-file/no-byte-compile): New unit test.
* test/lisp/emacs-lisp/bytecomp-resources/no-byte-compile.el: New test
file.
2022-06-21 19:11:05 +02:00
Lars Ingebrigtsen
d181e410fc Fix edebug parsing of .,
* lisp/emacs-lisp/edebug.el (edebug-next-token-class): Parse .,
correctly (bug#37653).
2022-06-19 14:25:44 +02:00