[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
18 Jun 2004 12:10:42 +0200
I am having a problem with getting stuff right in replace.el.
The problem is that
(match-data t) is basically dangerous since it is lacking the
information to restore last_thing_searched. But that means that
(set-match-data (match-data t)) is not a noop, even if the buffer is
not changed in between since the restored match-data stops being
adjust when buffer changes occur before it.
Two possible amendments: one thing would be to add the buffer itself
as a list element into match-data. That might be an incompatible
The second one would be to allow an optional argument to
set-match-data that specifies a buffer, so that
(set-match-data (match-data t) buffer) will set last_thing_searched
to the specified buffer again.
As it is, I will probably have to write a special purpose function in
replace.el for now that looks like
(defun replace-set-match-data (match-data)
(if (integerp (car match-data))
(let ((marker (make-marker)))
(set-marker marker (car match-data))
(set-match-data (cons marker (cdr match-data)))
(set-marker marker nil))
which is pretty ugly and relies on some internals to stay the way
they are now.
David Kastrup, Kriemhildstr. 15, 44793 Bochum
- match-data confusion...,
David Kastrup <=