GNU bug report logs -
#20690
25.0.50; query-replace: incorrect history when replacing the NUL character.
Previous Next
Reported by: Nicolas Richard <youngfrog <at> members.fsf.org>
Date: Fri, 29 May 2015 08:48:02 UTC
Severity: normal
Found in version 25.0.50
Done: Nicolas Richard <youngfrog <at> members.fsf.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> ;; We do a query-replace to remove NUL characters and replace them by
> ;; an empty string:
> M-% [query-replace]
> C-q [quoted-insert]
> 0 <return> <return> [exit-minibuffer]
> <return> [exit-minibuffer]
> ;; now we try to do it again, by relying on the history
> M-% [query-replace]
> <up> [previous-line-or-history-element]
> <return> [exit-minibuffer]
> ;; At this point, emacs asks what to replace "two NUL chars" with,
> ;; instead of removing NULs like the previous query-replace did.
>
> I suggest the following changes :
Thank you for the fix! I noticed that besides fixing the NUL character problem
your patch also changes the behaviour when there are no NUL characters, i.e.:
> +(defun query-replace--split-string (string)
> + "Split string STRING at a character with property `separator'"
> + (let* ((length (length string))
> + (split-pos (text-property-any 0 length 'separator t string)))
> + (if (not split-pos)
> + string
======
This used to be (substring-no-properties string)
> - (let* ((to (if (and (string-match separator from)
> - (get-text-property (match-beginning 0) 'separator from))
> - (substring-no-properties from (match-end 0))))
> - (from (if to (substring-no-properties from 0 (match-beginning 0))
> - (substring-no-properties from))))
=======================
Like you can see here above that stripes properties from the from string.
This bug report was last modified 10 years and 22 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.