1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-12 14:30:42 -08:00
Commit graph

153 commits

Author SHA1 Message Date
Eli Zaretskii
dcd76bd48d Merge from origin/emacs-28
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
2022-01-01 07:03:03 -05:00
Eli Zaretskii
19dcb237b5 ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
Stefan Kangas
cf6dc1838a ; Fix spelling; be consistent with "key binding" (Bug#52674) 2021-12-21 11:19:04 +01:00
Eli Zaretskii
f78c819d95 Merge from origin/emacs-28
3e4eb54 ; * etc/PROBLEMS: Minor copyedits of the last change.  (Bug#5...
35bc211 Document a macOS error message when opening Emacs
4df9998 Fix header-line and tab-line when mode-line-compact is set
81915a9 Add manual section about how to avoid regexp problems
a16e66c Clarify build environment
6ab6b2f Clarify build directory structure
9d61620 * src/pdumper.c (dump_do_dump_relocation): Add sanity check.
2021-11-03 20:26:29 +02:00
Mattias Engdegård
81915a95af Add manual section about how to avoid regexp problems
Help users affected by our NFA engine's stack overflows and occasional
poor performance, replacing old text that was more limited in scope.

* doc/lispref/elisp.texi (Top):
* doc/lispref/searching.texi (Regular Expressions): Add menu entries.
(Regexp Problems): New node.
(Regexp Special):
* etc/PROBLEMS: Remove superseded text.
2021-11-03 13:50:12 +01:00
Lars Ingebrigtsen
a26824e5cb Make 'inhibit-changing-match-data' obsolete and adjust callers
* doc/lispref/searching.texi (Regexp Search):
(POSIX Regexps): Document this.
* lisp/subr.el (inhibit-changing-match-data): Make obsolete.
(looking-at-p): Adjust call.

* lisp/vc/vc-hg.el (vc-hg--raw-dirstate-search):
(vc-hg--ignore-patterns-ignored-p):
(vc-hg--cached-dirstate-search): Don't use
`inhibit-changing-match-data'.

* src/minibuf.c (Ftry_completion):
(Fall_completions):
(Ftest_completion): Adjust Fstring_match calls.

* src/search.c (looking_at_1): Pass in modify_data.
(Flooking_at): Add optional inhibit-modify parameter.
(string_match_1): Pass in modify_data.
(Fstring_match):
(Fposix_looking_at, Fposix_string_match): Add optional
inhibit-modify parameter.
2021-10-07 20:46:50 +02:00
Mattias Engdegård
6e1de14e51 Rx documentation touch-ups (bug#46910)
* doc/lispref/searching.texi (Rx Constructs, Rx Functions):
Add clarifications and improve naming of arguments.  Add examples
illustrating the differences between `rx` and `rx-to-string`.
2021-09-26 14:44:06 +02:00
Mattias Engdegård
32de11d8de ; Remove various duplicated words
* doc/lispref/searching.texi (Extending Rx):
* doc/lispref/strings.texi (Creating Strings):
* doc/misc/modus-themes.org (Measure color contrast (DIY)):
* etc/NEWS:
* lisp/find-file.el (ff-find-other-file):
* lisp/gnus/gnus-group.el (gnus-group-suspend):
* lisp/progmodes/cc-langs.el (c-ml-string-any-closer-re):
* lisp/progmodes/flymake.el (flymake-list-only-diagnostics):
* lisp/progmodes/xref.el (xref--group-name-for-display):
* lisp/transient.el (transient-child, transient-files)
(transient-infix-value):
* src/alloc.c:
* src/regex-emacs.c (regex_compile):

Remove duplicate words in comments, documentation etc.
2021-09-25 20:25:01 +02:00
Juri Linkov
4b3dc7a139 * lisp/subr.el (string-replace): Add dashes to arg names (bug#50644)
* lisp/net/tramp-compat.el (tramp-compat-string-replace): Idem.
* doc/lispref/searching.texi (Search and Replace): Idem.
2021-09-18 21:43:18 +03:00
Mattias Engdegård
4281e5b34d Add example of advanced user-defined Rx form to manual
* doc/lispref/searching.texi (Extending Rx): Add example illustrating
how to define a user-defined Rx form that performs computation,
from a discussion with Michael Herdeegen (bug#50136).
* lisp/emacs-lisp/rx.el (rx): Clarify evaluation time for `eval`.
2021-08-23 19:57:17 +02:00
Eli Zaretskii
f0ef1e971d Fix recent documentation additions
* doc/lispref/searching.texi (Search and Replace): Document the
new functions by @defun.
2021-08-16 20:11:33 +03: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
Glenn Morris
b7c1b81ffb Merge from origin/emacs-27
5dfa5e26dd (origin/emacs-27) Improve documentation of regexp ranges
2021-05-31 07:50:34 -07:00
Eli Zaretskii
5dfa5e26dd Improve documentation of regexp ranges
* doc/lispref/searching.texi (Regexp Special): Document the effect
of using octal escapes in regexp ranges.  (Bug#17758)
2021-05-30 13:20:02 +03:00
Basil L. Contovounesios
d3344e0a7f ; Fix recent re-builder doc changes. 2021-05-08 15:07:38 +01:00
dalanicolai
fdeb1a3dc7 Mention that Emacs is usually case-insensitive in a couple of places
* doc/lispref/searching.texi (Regular Expressions): Mention
`case-fold-search'.

* lisp/emacs-lisp/re-builder.el (re-builder): Mention case
sensitivity toggles (bug#47534).

Copyright-paperwork-exempt: yes
2021-05-08 13:59:03 +02:00
Paul Eggert
ba05d005e5 Update copyright year to 2021
Run "TZ=UTC0 admin/update-copyright".
2021-01-01 01:13:56 -08:00
Paul Eggert
8c1fe1e5ef Update copyright year to 2021
Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
2021-01-01 00:32:32 -08:00
Mattias Engdegård
be53fe0263 * doc/lispref/searching.texi (Rx Constructs): Group numbering fix 2020-11-25 13:57:16 +01:00
Mattias Engdegård
f679bcbb39 ; * doc/lispref/searching.texi (Search and Replace): Rephrase 2020-09-28 12:04:10 +02:00
Mattias Engdegård
583cb264ad Improve accuracy in string-replace description (bug#43598)
* doc/lispref/searching.texi (Search and Replace): More careful
description; string-replace does not necessarily return a copy.
2020-09-27 14:24:36 +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
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
Stefan Monnier
5d6a274c1f * doc/lispref/searching.texi (Regexp Special): Tweak wording 2020-08-14 10:03:50 -04:00
Mattias Engdegård
8ff5e346fe Regexps cannot infloop; fix manual
* doc/lispref/searching.texi (Regexp Special): Edit erroneous
statements about infinite looping in regexps.

(cherry picked from commit 63268253d2)
2020-08-14 14:52:13 +02:00
Mattias Engdegård
63268253d2 Regexps cannot infloop; fix manual
* doc/lispref/searching.texi (Regexp Special): Edit erroneous
statements about infinite looping in regexps.
2020-05-03 14:27:51 +02:00
Mattias Engdegård
0883c800a0 Simplify rx example in manual
* doc/lispref/searching.texi (Rx Notation):
Use the 'not' shorthand introduced in Emacs 27.
2020-03-09 16:00:18 +01:00
Mattias Engdegård
49d3cd90bd rx: Improve 'or' compositionality (bug#37659)
Perform 'regexp-opt' on nested 'or' forms, and after expansion of
user-defined and 'eval' forms.  Characters are now turned into strings
for wider 'regexp-opt' scope.  This preserves the longest-match
semantics for string in 'or' forms over composition.

* doc/lispref/searching.texi (Rx Constructs): Document.
* lisp/emacs-lisp/rx.el (rx--normalise-or-arg)
(rx--all-string-or-args): New.
(rx--translate-or): Normalise arguments first, and check for strings
in subforms.
(rx--expand-eval): Extracted from rx--translate-eval.
(rx--translate-eval): Call rx--expand-eval.
* test/lisp/emacs-lisp/rx-tests.el (rx-or, rx-def-in-or): Add tests.
* etc/NEWS: Announce.
2020-03-01 10:47:14 +01:00
Eli Zaretskii
2aed279be1 Warn about the likes of "[:alnum:]" in regexps
* doc/lispref/searching.texi (Char Classes): Warn about erroneous
usage of named character classes.  Suggested by Stephen Leake
<stephen_leake@stephe-leake.org>.
2020-02-22 11:07:42 +02:00
Mattias Engdegård
9f6a4bbcc9 Remove the optional KEEP-ORDER argument to regexp-opt
This argument was added for the 'or' clause in rx, but it turned out
to be a bad idea (bug#37659), and there seems to be little other use
for it.

* lisp/emacs-lisp/regexp-opt.el (regexp-opt): Remove KEEP-ORDER.
* doc/lispref/searching.texi (Regexp Functions):
* etc/NEWS: Remove it from the documentation.
* test/lisp/emacs-lisp/regexp-opt-tests.el (regexp-opt-test--match-all)
(regexp-opt-test--check-perm, regexp-opt-test--explain-perm)
(regexp-opt-keep-order, regexp-opt-longest-match): Simplify test.
2020-02-13 20:43:42 +01:00
Mattias Engdegård
5a21aaff46 rx: Use longest match for all-string 'or' forms (bug#37659)
Revert to the Emacs 26 semantics that always gave the longest match
for rx 'or' forms with only string arguments.  This guarantee was
never well documented, but it is useful and people likely have come to
rely on it.  For example, prior to this change,

 (rx (or ">" ">="))

matched ">" even if the text contained ">=".

* lisp/emacs-lisp/rx.el (rx--translate-or): Don't tell regexp-opt to
preserve the matching order.
* doc/lispref/searching.texi (Rx Constructs): Document the
longest-match guarantee for all-string 'or' forms.
* test/lisp/emacs-lisp/rx-tests.el (rx-or): Update test.
2020-02-12 11:20:47 +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
d55f2f74f5 More precise 'regexp-opt' documentation
* lisp/emacs-lisp/regexp-opt.el (regexp-opt):
* doc/lispref/searching.texi (Regexp Functions):
Be more specific about how the KEEP-ORDER argument actually works.
If nil, the regexp guarantees a longest match; this is the behaviour
that many callers implicitly rely on.
2019-12-18 12:46:30 +01:00
Mattias Engdegård
82b4e48c59 Allow characters and single-char strings in rx charsets
The `not' and `intersection' forms, and `or' inside these forms,
now accept characters and single-character strings as arguments.
Previously, they had to be wrapped in `any' forms.
This does not add expressive power but is a convenience and is easily
understood.

* doc/lispref/searching.texi (Rx Constructs): Amend the documentation.
* etc/NEWS: Announce the change.
* lisp/emacs-lisp/rx.el (rx--charset-p, rx--translate-not)
(rx--charset-intervals, rx): Accept characters and 1-char strings in
more places.
* test/lisp/emacs-lisp/rx-tests.el (rx-not, rx-charset-or)
(rx-def-in-charset-or, rx-intersection): Test the change.
2019-12-13 13:30:14 +01:00
Mattias Engdegård
f16766a0eb Use or' instead of union' for charset union in rx
Design change suggested by Stefan Monnier.

* doc/lispref/searching.texi (Rx Constructs):
* etc/NEWS: Document.
* lisp/emacs-lisp/rx.el (rx--translate-or): Detect charset arguments.
(rx--charset-p): New.
(rx--translate-not, rx--charset-intervals, rx--translate-union):
Change from `union' to `or'.
(rx--translate-form, rx--builtin-forms, rx): Remove `union'.
* test/lisp/emacs-lisp/rx-tests.el (rx-union, rx-def-in-union)
(rx-intersection): Rename tests and change `union' to `or' and `|'.
2019-12-12 23:47:25 +01:00
Paul Eggert
b0f20651e3 ; Spelling fixes 2019-12-10 20:05:49 -08:00
Mattias Engdegård
ea93326cc0 Add union' and intersection' to rx (bug#37849)
These character set operations, together with `not' for set
complement, improve the compositionality of rx, and reduce duplication
in complicated cases.  Named character classes are not permitted in
set operations.

* lisp/emacs-lisp/rx.el (rx--translate-any): Split into multiple
functions.
(rx--foldl, rx--parse-any, rx--generate-alt, rx--intervals-to-alt)
(rx--complement-intervals, rx--intersect-intervals)
(rx--union-intervals, rx--charset-intervals, rx--charset-union)
(rx--charset-all, rx--charset-intersection, rx--translate-union)
(rx--translate-intersection): New.
(rx--translate-not, rx--translate-form, rx--builtin-forms, rx):
Add `union' and `intersection'.
* test/lisp/emacs-lisp/rx-tests.el (rx-union ,rx-def-in-union)
(rx-intersection, rx-def-in-intersection): New tests.
* doc/lispref/searching.texi (Rx Constructs):
* etc/NEWS:
Document `union' and `intersection'.
2019-12-10 22:37:47 +01:00
Paul Eggert
d1a791f8ed Spelling fixes 2019-12-09 18:45:18 -08:00
Mattias Engdegård
cbd439e785 Expand rx definitions inside (not ...)
* lisp/emacs-lisp/rx.el (rx--translate-not):
* test/lisp/emacs-lisp/rx-tests.el (rx-not, rx-def-in-not):
* doc/lispref/searching.texi (Rx Constructs, Extending Rx):

Allow user-defined rx constructs to be expanded inside (not ...)
forms, for better composability (bug#37849).
2019-10-27 09:54:54 +01:00
Mattias Engdegård
c2cd27bceb Add missing rx symbols bow' and eow' to documentation
* doc/lispref/searching.texi (Rx Constructs):
* lisp/emacs-lisp/rx.el (rx):  Add missing synonyms.
2019-10-20 20:28:12 +02:00
Mattias Engdegård
ae5407b857 Add `unmatchable' as alias for (or) in rx (bug#37659)
* lisp/emacs-lisp/rx.el (rx--translate-symbol, rx--builtin-symbols, rx):
* test/lisp/emacs-lisp/rx-tests.el (rx-atoms):
* doc/lispref/searching.texi (Rx Constructs):
* etc/NEWS:
Add `unmatchable', more descriptive than (or), and corresponding to
the variable `regexp-unmatchable'.
2019-10-18 14:46:06 +02:00
Mattias Engdegård
e5a446b0a7 Add anychar' as alias to anything' in rx (bug#37659)
* lisp/emacs-lisp/rx.el (rx--translate-symbol, rx--builtin-symbols, rx):
* test/lisp/emacs-lisp/rx-tests.el (rx-atoms):
* doc/lispref/searching.texi (Rx Constructs):
* etc/NEWS:
Add `anychar', an alias for `anything'.  Since `anychar' is more
descriptive (and slightly shorter), treat it as the preferred name.
2019-10-18 14:45:47 +02:00
Mattias Engdegård
07367e5b95 Add rx extension mechanism
Add a built-in set of extension macros: `rx-define', `rx-let' and
`rx-let-eval'.

* lisp/emacs-lisp/rx.el (rx-constituents, rx-to-string): Doc updates.
(rx--builtin-symbols, rx--builtin-names, rx--local-definitions)
(rx--lookup-def, rx--substitute, rx--expand-template)
(rx--make-binding, rx--make-named-binding, rx--extend-local-defs)
(rx-let-eval, rx-let, rx-define): New.
(rx--translate-symbol, rx--translate-form): Use extensions if any.
(rx): Use local definitions.
* test/lisp/emacs-lisp/rx-tests.el (rx-let, rx-define)
(rx-to-string-define, rx-let-define, rx-let-eval): New.
* etc/NEWS (Changes in Specialized Modes and Packages):
* doc/lispref/searching.texi (Rx Notation, Rx Functions, Extending Rx):
Add node about rx extensions.
2019-09-25 14:29:50 -07:00
Mattias Engdegård
2ed71227c6 New rx implementation
* lisp/emacs-lisp/rx.el:
* test/lisp/emacs-lisp/rx-tests.el:
* doc/lispref/searching.texi (Rx Constructs):
Rewrite rx for correctness, clarity, and performance.  The new
implementation retains full compatibility and has more comprehensive
tests.

* lisp/emacs-lisp/re-builder.el (reb-rx-font-lock-keywords):
Adapt to changes in internal variables in rx.el.
2019-09-25 14:29:50 -07:00
Mattias Engdegård
a773a64748 Allow regexp-quote to return its argument
* src/search.c (Fregexp_quote): Only allocate a new string if needed.
* doc/lispref/searching.texi (Regexp Functions):
* etc/NEWS (Incompatible Lisp Changes): Document.
2019-09-25 18:09:42 +02:00
Mattias Engdegård
d27fb533ff * doc/lispref/searching.texi (Rx Constructs): Fix typo. 2019-09-17 12:02:31 +02:00
Mattias Engdegård
47a3e0dc2c ; * doc/lispref/searching.texi: Typo fix 2019-08-05 10:30:08 +02:00
Lars Ingebrigtsen
3e2e2aa450 Add some indices for regexp character classes
* doc/lispref/searching.texi (Char Classes): Add some concept
index entries for a handful of character classes (bug#32430).
2019-07-13 04:55:52 +02:00
Glenn Morris
736d5927ab Avoid makeinfo error "@code expected braces"
* doc/lispref/searching.texi (Rx Constructs): Fix for makeinfo 4.13.
2019-07-07 14:22:23 -07:00
Mattias Engdegård
ac1ad3e49a Describe the rx notation in the elisp manual (bug#36496)
The additions are excluded from the print version to avoid making it
thicker.

* doc/lispref/elisp.texi (Top): New menu entry.
* doc/lispref/searching.texi (Regular Expressions): New menu entry.
(Regexp Example): Add rx form of the example.
(Rx Notation, Rx Constructs, Rx Functions): New nodes.
* doc/lispref/control.texi (pcase Macro): Describe the rx pattern.
2019-07-07 11:49:21 +02:00