From cda2f52b94a5a94566c668835f1c4964f4d93b2b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mattias=20Engdeg=C3=A5rd?= Date: Wed, 26 Jun 2019 11:23:32 +0200 Subject: [PATCH] Document bug in `replace-regexp-in-string' `replace-regexp-in-string' omits the first START characters of the input string in its return value. This is a clear bug, but fixing it probably causes more trouble; document the behaviour instead (bug#36372). * doc/lispref/searching.texi (Search and Replace) * lisp/subr.el (replace-regexp-in-string): Document current behaviour. --- doc/lispref/searching.texi | 6 ++++-- lisp/subr.el | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 33455114dac..ef1cffc446f 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1790,8 +1790,10 @@ this. This function copies @var{string} and searches it for matches for @var{regexp}, and replaces them with @var{rep}. It returns the modified copy. If @var{start} is non-@code{nil}, the search for -matches starts at that index in @var{string}, so matches starting -before that index are not changed. +matches starts at that index in @var{string}, and the returned value +does not include the first @var{start} characters of @var{string}. +To get the whole transformed string, concatenate the first +@var{start} characters of @var{string} with the return value. This function uses @code{replace-match} to do the replacement, and it passes the optional arguments @var{fixedcase}, @var{literal} and diff --git a/lisp/subr.el b/lisp/subr.el index baff1e909a1..b981af6afe6 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -4208,7 +4208,8 @@ Return a new string containing the replacements. Optional arguments FIXEDCASE, LITERAL and SUBEXP are like the arguments with the same names of function `replace-match'. If START -is non-nil, start replacements at that index in STRING. +is non-nil, start replacements at that index in STRING, and omit +the first START characters of STRING from the return value. REP is either a string used as the NEWTEXT arg of `replace-match' or a function. If it is a function, it is called with the actual text of each -- 2.39.5