1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-08 07:20:28 -08:00
Commit graph

130 commits

Author SHA1 Message Date
Stefan Kangas
ea3e51732d Expand internal--format-docstring-line test
* test/lisp/subr-tests.el (subr-test-internal--format-docstring-line):
Check for error on newline.
2021-10-02 16:20:06 +02:00
Stefan Kangas
3d2d7e8ea2 Fix automatic filling of docstring in cl-defstruct
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Fix bug where a paragraph
was filled as if it were a single line, which led to garbled
output in the docstring.  (Bug#50839)

* test/lisp/subr-tests.el
(subr-test-internal--format-docstring-line): New test.
2021-09-27 11:47:55 +02:00
Lars Ingebrigtsen
85e9e5f616 Don't quote nil and t in doc strings and comments
* test/src/minibuf-tests.el (test-try-completion-ignore-case):
* test/lisp/url/url-auth-tests.el
(url-auth-test-digest-auth-retrieve-cache):
* test/lisp/subr-tests.el (subr-tests-add-hook-depth):
* test/lisp/so-long-tests/so-long-tests.el
(so-long-tests-invisible-buffer-function):
* test/lisp/emacs-lisp/tabulated-list-test.el (tabulated-list-sort):
* src/xfaces.c:
* src/process.c (Finterrupt_process):
(syms_of_process):
* src/minibuf.c (Fread_from_minibuffer):
(Fcompleting_read):
(syms_of_minibuf):
* src/dispnew.c (syms_of_display):
* src/data.c:
* lisp/so-long.el (so-long--hack-local-variables):
* lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions):
(elisp--xref-find-definitions):
* lisp/org/ox-html.el (org-html-htmlize-output-type):
* lisp/org/org-agenda.el (org-agenda-do-in-region):
* lisp/net/tramp.el:
* lisp/minibuffer.el (set-minibuffer-message):
* lisp/isearch.el (isearch-wrap-pause):
(isearch-repeat-on-direction-change):
* lisp/emacs-lisp/timer.el (timer):
* lisp/emacs-lisp/package.el (package-read-archive-contents):
* lisp/emacs-lisp/faceup.el (faceup-next-property-change):
* lisp/emacs-lisp/comp.el (comp-func):
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-empty-p):
* lisp/emacs-lisp/cl-macs.el (cl-do):
(cl-do*):
(cl--self-tco):
* lisp/emacs-lisp/bytecomp.el (byte-compile-unresolved-functions):
(byte-compile-cond-jump-table): Don't quote t and nil.
2021-09-21 22:11:43 +02:00
Lars Ingebrigtsen
be4f858498 Add new function `ensure-list'
* doc/lispref/lists.texi (Building Lists): Document it.

* lisp/subr.el (ensure-list): New function.

* lisp/emacs-lisp/shortdoc.el (list): Mention it.
2021-09-21 20:31:05 +02:00
Stefan Kangas
07e8ff7f0f Move cl-lib tests for caaXr to subr-tests.el
* test/lisp/emacs-lisp/cl-lib-tests.el (cl-test-caaar)
(cl-test-caadr): Move tests using a cl-lib alias from here...
* test/lisp/subr-tests.el (subr-test-caaar, subr-test-caadr): ...to
here.  The functions under test are in subr.el.
2021-09-03 10:18:54 +02:00
Lars Ingebrigtsen
6a6de68daf Add new macro `with-existing-directory'
* doc/lispref/files.texi (Testing Accessibility): Document it.
* lisp/subr.el (with-existing-directory): New macro (bug#32004).
2021-09-01 15:56:04 +02:00
Lars Ingebrigtsen
751f1707f0 Add new functions to replace strings/regexp in a region
* doc/lispref/searching.texi (Search and Replace): Document them.
* lisp/subr.el (replace-string-in-region)
(replace-regexp-in-region): New functions.

* lisp/emacs-lisp/shortdoc.el (regexp, buffer): Mention them.
2021-08-16 13:20:35 +02:00
Philipp Stephani
f2896fdb6a ; * test/lisp/subr-tests.el (subr-tests-add-hook-depth): Fix a typo. 2021-07-05 20:34:55 +02:00
Lars Ingebrigtsen
77f67d12f6 Add new convenience function `buffer-local-boundp'
* doc/lispref/variables.texi (Creating Buffer-Local): Document it.
* lisp/subr.el (buffer-local-boundp): New function.

* src/data.c (Flocal_variable_p): Mention it.
2021-05-31 07:21:09 +02:00
Lars Ingebrigtsen
bd5aebce03 Fix failing subr test
* test/lisp/subr-tests.el (subr-tests-bug22027): Fix mocked
signature of `read-string' (bug#48022).
2021-04-27 01:31:52 +02:00
Andrea Corallo
82bd6d57d5 Merge remote-tracking branch 'savannah/master' into native-comp 2021-03-12 16:42:51 +01:00
Basil L. Contovounesios
8558ecd65f Fix string-replace error data
* lisp/subr.el (string-replace): Signal an error with data that is a
list, and whose contents are consistent with other uses of
wrong-length-argument.
* test/lisp/subr-tests.el (string-replace): Test for this.
(subr-test-define-prefix-command): Pacify byte-compiler warnings.
2021-03-07 14:55:15 +00:00
Andrea Corallo
0a7ac0b550 Merge remote-tracking branch 'savannah/master' into native-comp 2021-01-16 13:26:10 +01:00
Stefan Kangas
a9658cd5b0 Lift {global,local}-key-binding to Lisp
* lisp/subr.el (local-key-binding, global-key-binding): New defuns.
* src/keymap.c (Flocal_key_binding, Fglobal_key_binding): Remove DEFUNs.
(syms_of_keymap): Remove defsubrs for above DEFUNs.
* test/lisp/subr-tests.el (subr-test-local-key-binding)
(subr-test-global-key-binding): New tests.
2021-01-13 18:54:09 +01:00
Stefan Monnier
3b9dad88e0 * lisp/subr.el (letrec): Optimize some non-recursive bindings
* lisp/emacs-lisp/macroexp.el (macroexp--fgrep): Look inside bytecode
objects as well.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--labels):
* test/lisp/subr-tests.el (subr--tests-letrec): New tests.
2021-01-08 18:44:13 -05:00
Andrea Corallo
400f620f24 Merge remote-tracking branch 'savannah/master' into HEAD 2021-01-08 21:40:45 +01:00
Stefan Kangas
a31bfd5945 Merge recently added kbd tests
* test/lisp/subr-tests.el (subr--kbd): Merge test...
(subr-test-kbd): ...with this one.  Fix thinko in my previous commit.
Thanks to Mattias Engdegård <mattiase@acm.org>.
2021-01-08 15:26:11 +01:00
Stefan Kangas
5ac7b48075 Lift define-prefix-command to Lisp
* lisp/subr.el (define-prefix-command): New defun.
* src/keymap.c (Fdefine_prefix_command): Remove DEFUN.
(syms_of_keymap): Remove defsubr for Fdefine_prefix_command.
* test/lisp/subr-tests.el (subr-test-define-prefix-command): New
test.
2021-01-08 15:16:02 +01:00
Stefan Kangas
f5cfe5a0a9 * test/lisp/subr-tests.el (subr-test-kbd): New test. 2021-01-08 14:00:42 +01:00
Mattias Engdegård
7f16f17727 Pretty-print keys without <> around modifiers (bug#45536)
Be consistent when pretty-printing keys: put modifiers outside <>,
thus the more logical C-M-<return> instead of <C-M-return>.

* src/keymap.c (Fsingle_key_description):
Skip modifier prefix before adding <>.
* doc/lispref/help.texi (Describing Characters): Update example.
* doc/lispref/debugging.texi (Backtraces):
* doc/lispref/minibuf.texi (Text from Minibuffer):
Use @kbd instead of @key.
* etc/NEWS: Announce the change.
* test/src/keymap-tests.el (keymap--key-description):
* test/lisp/subr-tests.el (subr--kbd): New tests.
2021-01-05 11:28:58 +01:00
Andrea Corallo
5db5064395 Merge remote-tracking branch 'savannah/master' into HEAD 2021-01-02 10:11:15 +01:00
Paul Eggert
ba05d005e5 Update copyright year to 2021
Run "TZ=UTC0 admin/update-copyright".
2021-01-01 01:13:56 -08:00
Lars Ingebrigtsen
d22e74795d Revert recent add-to-ordered-list changes
* doc/lispref/lists.texi (List Variables): Revert.

* lisp/subr.el (add-to-ordered-list): Revert recent changes
because the semantics are too muddled.
2021-01-01 05:48:02 +01:00
Lars Ingebrigtsen
b1ac23ebef Allow add-to-ordered-list to use a test predicate
* doc/lispref/lists.texi (List Variables): Update manual.

* lisp/subr.el (add-to-ordered-list): Allow using a test
predicate, and make slightly more efficient (bug#45539).
2020-12-31 05:28:47 +01:00
Lars Ingebrigtsen
3d9f20cfcf Add test for add-to-ordered-list 2020-12-31 05:00:45 +01:00
Andrea Corallo
f244c21902 Merge remote-tracking branch 'savannah/master' into HEAD 2020-12-20 22:08:42 +01:00
Stefan Kangas
7c3d3b8335 Convert apropos-internal from C to Lisp (Bug#44529)
This runs insignificantly faster in C, and is already fast enough on
reasonably modern hardware.  We might as well lift it to Lisp.
This benchmark can be used to verify:

  (benchmark-run 10 (apropos-command "test"))
  => (0.12032415399999999 2 0.014772391999999995) ; C
  => (0.13513192100000002 2 0.017216643000000004) ; Lisp

* lisp/subr.el (apropos-internal): New defun, converted from C.
* src/keymap.c (Fapropos_internal): Remove defun.
(apropos_accum): Remove function.
(apropos_predicate, apropos_accumulate): Remove variables.
(syms_of_keymap): Remove defsubr for Fapropos_internal, and
definitions of the above variables.
* test/src/keymap-tests.el (keymap-apropos-internal)
(keymap-apropos-internal/predicate): Move tests from here...
* test/lisp/subr-tests.el (apropos-apropos-internal)
(apropos-apropos-internal/predicate): ...to here.
2020-12-19 19:54:46 +01:00
Andrea Corallo
715a1ca174 Merge remote-tracking branch 'savannah/master' into HEAD 2020-12-06 18:07:27 +01:00
Mattias Engdegård
7bdc40e8d1 Speed up match-substitute-replacement
* lisp/subr.el (match-substitute-replacement): Use match-data--translate.
* src/search.c (Fmatch_data__translate): Remove string restriction.
* test/lisp/subr-tests.el (subr-match-substitute-replacement): New test.
2020-12-04 18:39:13 +01:00
Andrea Corallo
6523b84015 Merge remote-tracking branch 'savannah/master' into HEAD 2020-11-29 15:11:38 +01:00
Stefan Monnier
1f633311c1 * lisp/subr.el (activate-change-group): Refine fix for bug#33341 2020-11-27 10:19:21 -05:00
Stefan Monnier
66eeaaa488 * lisp/subr.el (activate-change-group): Fix bug#33341 2020-11-27 09:43:56 -05:00
Mattias Engdegård
558b6dbca7 Fix replace-regexp-in-string substring match data translation
For certain patterns, re-matching the same regexp on the matched
substring does not produce correctly translated match data
(bug#15107 and bug#44861).

Using a new builtin function also improves performance since the
number of calls to string-match is halved.

Reported by Kevin Ryde and Shigeru Fukaya.

* lisp/subr.el (replace-regexp-in-string): Translate the match data
using match-data--translate instead of trusting a call to string-match
on the matched string to do the job.
* test/lisp/subr-tests.el (subr-replace-regexp-in-string):
Add test cases.
* src/search.c (Fmatch_data__translate): New internal function.
(syms_of_search): Register it as a subroutine.
2020-11-26 14:20:13 +01:00
Mattias Engdegård
d148d0259a Add tests for replace-regexp-in-string
* test/lisp/subr-tests.el (subr-replace-regexp-in-string): New.
2020-11-25 13:57:16 +01:00
Andrea Corallo
29f7024b6c * Fix a test in test/lisp/subr-tests.el
* test/lisp/subr-tests.el (subr-tests-bug22027): Redefine
	`read-string' with a lambda with the same number of arguments.
2020-10-05 21:33:04 +02:00
Andrea Corallo
b3ade4de17 Revert "Use advice-flet' in place of cl-letf' to avoid primitive...
This reverts commit 825e85b393.
2020-10-05 21:32:35 +02:00
Andrea Corallo
825e85b393 Use advice-flet' in place of cl-letf' to avoid primitive redefinition
* test/lisp/time-stamp-tests.el (with-time-stamp-system-name): Use
	`advice-flet' to advice primitive avoiding redefinition.

	* test/lisp/tempo-tests.el (tempo-p-element-test)
	(tempo-P-element-test, tempo-r-element-test)
	(tempo-s-element-test, tempo-r>-element-test): Likewise.

	* test/lisp/subr-tests.el (subr-tests-bug22027): Likewise.

	* test/lisp/shadowfile-tests.el (shadow-test00-clusters)
	(shadow-test01-sites, shadow-test06-literal-groups)
	(shadow-test07-regexp-groups): Likewise.

	* test/lisp/replace-tests.el (replace-tests-with-undo): Likewise.

	* test/lisp/play/dissociate-tests.el
	(dissociate-tests-dissociated-press): Likewise.

	* test/lisp/net/tramp-tests.el (tramp-test10-write-region)
	(tramp-test21-file-links): Likewise.

	* test/lisp/kmacro-tests.el (kmacro-tests-call-macro-hint-and-repeat)
	(kmacro-tests-repeat-on-last-key)
	(kmacro-tests-repeat-view-and-run)
	(kmacro-tests-bind-to-key-with-key-sequence-in-use): Likewise.

	* test/lisp/files-tests.el (files-tests-read-file-in-~): Likewise.

	* test/lisp/emacs-lisp/rmc-tests.el (test-read-multiple-choice):
	Likewise.

	* test/lisp/bookmark-tests.el (bookmark-test-bmenu-locate):
	Likewise.

	* test/lisp/abbrev-tests.el
	(inverse-add-abbrev-skips-trailing-nonword)
	(inverse-add-abbrev-skips-trailing-nonword/positive-arg)
	(inverse-add-abbrev-skips-trailing-nonword/negative-arg): Likewise.
2020-10-02 21:20:53 +02:00
Mattias Engdegård
72e9ec96d0 ; * test/lisp/subr-tests.el (string-replace): Add more test cases 2020-09-27 13:32:27 +02:00
Lars Ingebrigtsen
104688feb4 Add tiny optimization for string-search
* src/fns.c (Fstring_search): Add tiny optimization for needles
that are longer than the haystack (bug#43598).
2020-09-27 00:35:11 +02:00
Lars Ingebrigtsen
baf331e40c Rename replace-in-string to string-replace
* doc/lispref/searching.texi (Search and Replace): Update.
* lisp/bindings.el (mode-line-position): Update callers.

* lisp/subr.el (string-replace): Rename from replace-in-string
since that clashes with XEmacs' replace-in-string which is
equivalent to the Emacs replace-regexp-in-string (bug#43598).
2020-09-27 00:24:50 +02:00
Mattias Engdegård
8a253a96a0 Fix replace-in-string infloop with empty pattern string (bug#43598)
* lisp/subr.el (replace-in-string): Raise an error if FROMSTRING is
empty.
* test/lisp/subr-tests.el (replace-in-string): Add test case.
2020-09-25 13:15:42 +02:00
Lars Ingebrigtsen
09adf92644 Fix previous replace-in-string rewrite
* lisp/subr.el (replace-in-string): Fix logic errors in previous
patch.
2020-09-25 02:07:05 +02:00
Lars Ingebrigtsen
7f9ad5980c Fix replace-in-string multibyteness problems with string-search
* lisp/subr.el (replace-in-string): Simplify by using the new
string-search function (bug#43598).
2020-09-25 01:53:16 +02:00
Lars Ingebrigtsen
0a7152e095 Fix up previous replace-in-string commit
* lisp/subr.el (replace-in-string): Fix thinko in implementation.
2020-09-15 17:36:36 +02:00
Lars Ingebrigtsen
caf64ae08b Add new, simple `replace-in-string' function
* lisp/subr.el (replace-in-string): New, side-effect-free function.

* doc/lispref/searching.texi (Search and Replace): Document it.
2020-09-15 17:15:59 +02:00
Glenn Morris
3e073520b3 Adapt some tests for Emacs's excitingly variable quoting format
* test/lisp/subr-tests.el (subr-test-version-parsing):
* test/lisp/emacs-lisp/gv-tests.el (gv-dont-define-expander-other-file):
* test/src/callint-tests.el (call-interactively/incomplete-multibyte-sequence):
* test/src/emacs-module-tests.el (module/describe-function-1):
Don't fail if curly quotes are in use, as they can be if LC_ALL != C.
2020-09-12 11:57:42 -07:00
Stefan Kangas
7fa3e754cb Use lexical-binding in most remaining tests
* test/lisp/comint-tests.el:
* test/lisp/custom-resources/custom--test-theme.el:
* test/lisp/dabbrev-tests.el:
* test/lisp/emulation/viper-tests.el:
* test/lisp/erc/erc-track-tests.el:
* test/lisp/gnus/gnus-tests.el:
* test/lisp/imenu-tests.el:
* test/lisp/info-xref-tests.el:
* test/lisp/jit-lock-tests.el:
* test/lisp/json-tests.el:
* test/lisp/man-tests.el:
* test/lisp/replace-tests.el:
* test/lisp/shadowfile-tests.el:
* test/lisp/subr-tests.el:
* test/lisp/thingatpt-tests.el:
* test/lisp/xml-tests.el: Use lexical-binding.

* test/lisp/man-tests.el (man-tests-filter-strings):
* test/lisp/shadowfile-tests.el (shadow-test00-clusters)
(shadow-test01-sites, shadow-test06-literal-groups)
(shadow-test07-regexp-groups, shadow-test09-shadow-copy-files):
Silence byte-compiler.
2020-05-01 13:05:26 +02:00
Stefan Kangas
fcad41c14d Add tests for version comparison predicates
* test/lisp/subr-tests.el (subr-test-version-list-<)
(subr-test-version-list-=, subr-test-version-list-<=): New tests.
2020-01-24 18:28:53 +01:00
Paul Eggert
365e01cc9f Update copyright year to 2020
Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
2020-01-01 00:59:52 +00:00
Mattias Engdegård
c676444a43 Add conditional operator xor to subr.el
Suggested by Oleh Krehel and implemented by Basil Contovounesios in
the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00547.html

* lisp/array.el (xor): Move unused function from here...
* lisp/subr.el: ...to here, and improve.
* lisp/gnus/spam.el (spam-xor):
* lisp/play/5x5.el (5x5-xor):
* lisp/proced.el (proced-xor):
* lisp/progmodes/idlwave.el (idlwave-xor):
* lisp/vc/diff-mode.el (diff-xor): Define as obsolete aliases of,
and replace all uses with, xor.
* lisp/jsonrpc.el: Remove unused dependency on array.el.
* lisp/org/org.el (org-xor): Move from here...
* lisp/org/org-compat.el (org-xor): ...to here, as a compatibility
shim for xor.
* lisp/progmodes/idlw-shell.el (idlwave-shell-enable-all-bp):
* lisp/simple.el (exchange-point-and-mark):
* lisp/windmove.el (windmove-display-in-direction): Use xor.
* lisp/strokes.el (strokes-xor): Remove commented-out xor
implementation.

* doc/lispref/control.texi (Control Structures): Extend menu entry
for new combining condition.
(Combining Conditions):
* etc/NEWS (Lisp Changes): Document xor.

* test/lisp/subr-tests.el (subr-test-xor): New test.
2019-08-06 13:38:47 +02:00