Scott Frazer <[email protected]> wrote: > On 3/11/11 12:38 PM, Bastien Guerry wrote: > > >> > >> --- > >> lisp/org-html.el | 2 +- > >> 1 files changed, 1 insertions(+), 1 deletions(-) > >> > >> diff --git a/lisp/org-html.el b/lisp/org-html.el > >> index c60c90d..2312b21 100644 > >> --- a/lisp/org-html.el > >> +++ b/lisp/org-html.el > >> @@ -2186,7 +2186,7 @@ Possible conversions are set in > >> `org-export-html-protect-char-alist'." > >> (let ((start 0)) > >> (while (string-match (car c) s start) > >> (setq s (replace-match (cdr c) t t s) > >> - start (match-beginning 0))))) > >> + start (1+ (match-beginning 0)))))) > >> s)) > >> > >> (defun org-html-expand (string) > >> > > I think there might be a second bug in that function that I had to fix myself. > I don't know the proper way to create/submit a patch, but instead of this: > > (while (setq c (pop cl)) > (while (string-match (car c) s start) > > I think you need this: > > (while (setq c (pop cl)) > (setq start 0) > (while (string-match (car c) s start) > > i.e. you need to start over at the beginning of the line each time you go > through the list of protected chars, or else you'll start from the last > replacement location. >
There is a (let ((start 0))... around the (while (string-match...)..) and inside the outer loop, so every time the inner loop is finished, start is recreated and initialized to 0 for the next iteration of the outer loop. At least, that's the case in latest git. Nick
