[O] [PATCH] Fix renumbering for footnotes at BOL.
Hi all, org-footnote-renumber-fn:N invalidates footnotes that appear as the first thing on a line. Here's a test file including the recipe. --8---cut here---start-8--- * Bla This is a line in which the following footnote that is inserted exactly [fn:1] is the first thing in that line. And now invoke org-footnote-renumber-fn:N and see it breaking. * Footnotes [fn:1] Test --8---cut here---end---8--- Note, that in larger org files, it's likely that you don't even notice that the footnotes break. Once I added a patch on patchwork that fixed this issue, and that's shown as accepted. http://patchwork.newartisans.com/patch/705/ I think, I've marked it as deferred or so myself because I've thought the issue was fixed in the meantime, but that doesn't seem to be true. Here's an updated patch. --- lisp/org-footnote.el | 11 --- 1 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el index cce0921..931f7dd 100644 --- a/lisp/org-footnote.el +++ b/lisp/org-footnote.el @@ -893,16 +893,13 @@ If LABEL is non-nil, delete that footnote instead. (goto-char (point-min)) (while (re-search-forward \\[fn:\\([0-9]+\\)[]:] nil t) (setq i (string-to-number (match-string 1))) - (when (and (string-match \\S- (buffer-substring - (point-at-bol) (match-beginning 0))) -(not (assq i map))) + (when (not (assq i map)) (push (cons i (number-to-string (incf n))) map))) (goto-char (point-min)) (while (re-search-forward \\(\\[fn:\\)\\([0-9]+\\)\\([]:]\\) nil t) - (replace-match (concat \\1 -(cdr (assq (string-to-number (match-string 2)) - map)) -\\3))) + (setq i (cdr (assq (string-to-number (match-string 2)) map))) + (assert (progn i) t Footnote has no number. Better undo renumbering!) + (replace-match (concat \\1 i \\3))) (defun org-footnote-auto-adjust-maybe () Renumber and/or sort footnotes according to user settings. -- 1.7.6.1
Re: [O] [PATCH] Fix renumbering for footnotes at BOL.
Hello, Tassilo Horn tass...@member.fsf.org writes: org-footnote-renumber-fn:N invalidates footnotes that appear as the first thing on a line. Here's a test file including the recipe. * Bla This is a line in which the following footnote that is inserted exactly [fn:1] is the first thing in that line. And now invoke org-footnote-renumber-fn:N and see it breaking. * Footnotes [fn:1] Test Note, that in larger org files, it's likely that you don't even notice that the footnotes break. It looks like the original function isn't right in more than one way (it doesn't even make sure the matched string is really a footnote). But that's another topic. About your patch, I have but one question: I don't get a situation in which the assert would be triggered, may you give me such an example? Regards, -- Nicolas Goaziou
Re: [O] [PATCH] Fix renumbering for footnotes at BOL.
Nicolas Goaziou n.goaz...@gmail.com writes: It looks like the original function isn't right in more than one way (it doesn't even make sure the matched string is really a footnote). But that's another topic. Yes, indeed. About your patch, I have but one question: I don't get a situation in which the assert would be triggered, may you give me such an example? I don't either, and that's a good thing. I added that just as some extra paranoia so that you get an error if a footnote gets broken. Bye, Tassilo
Re: [O] [PATCH] Fix renumbering for footnotes at BOL.
Tassilo Horn tass...@member.fsf.org writes: Nicolas Goaziou n.goaz...@gmail.com writes: About your patch, I have but one question: I don't get a situation in which the assert would be triggered, may you give me such an example? I don't either, and that's a good thing. I added that just as some extra paranoia so that you get an error if a footnote gets broken. Well, provided the first part of the function doesn't modify the buffer, I still don't see how the assert could fail, even with a broken footnote. Now, I may also be less paranoid than you are in that case. Do you still think that assert should be a stayer? If so, I'll apply your patch. Regards, -- Nicolas Goaziou
Re: [O] [PATCH] Fix renumbering for footnotes at BOL.
Nicolas Goaziou n.goaz...@gmail.com writes: Hi! I don't either, and that's a good thing. I added that just as some extra paranoia so that you get an error if a footnote gets broken. Well, provided the first part of the function doesn't modify the buffer, I still don't see how the assert could fail, even with a broken footnote. Now, I may also be less paranoid than you are in that case. You are right. And the regex doesn't even match broken footnotes, that is, footnotes with missing numbers. Do you still think that assert should be a stayer? Nope, feel free to remove that line. Bye, Tassilo
Re: [O] [PATCH] Fix renumbering for footnotes at BOL.
Patch applied. Thank you. Now, onto the other problems in that function... Regards, -- Nicolas Goaziou