emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 434057a: Fix footnote-mode problem when reopening an old file


From: Lars Ingebrigtsen
Subject: master 434057a: Fix footnote-mode problem when reopening an old file
Date: Wed, 20 Jan 2021 13:42:45 -0500 (EST)

branch: master
commit 434057ad925cad3ebcae1802fab60733ae5decae
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Fix footnote-mode problem when reopening an old file
    
    * lisp/mail/footnote.el (footnote--regenerate-alist): New function
    (bug#7258).
    (footnote-mode): Use it to restore footnotes after opening an old
    file with footnotes.
---
 lisp/mail/footnote.el | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index ea109ee..9c1a738 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -910,7 +910,32 @@ play around with the following keys:
        (unless (assoc bullet-regexp filladapt-token-table)
          (setq filladapt-token-table
                (append filladapt-token-table
-                       (list (list bullet-regexp 'bullet)))))))))
+                       (list (list bullet-regexp 'bullet)))))))
+    (footnote--regenerate-alist)))
+
+(defun footnote--regenerate-alist ()
+  (save-excursion
+    (goto-char (point-min))
+    (if (not (re-search-forward footnote-section-tag-regexp nil t))
+        (error "No footnote section in this buffer")
+      (setq footnote--markers-alist
+            (cl-loop
+             with start-of-footnotes = (match-beginning 0)
+             with regexp = (footnote--current-regexp)
+             for (note text) in
+             (cl-loop for pos = (re-search-forward regexp nil t)
+                      while pos
+                      collect (list (match-string 1)
+                                    (copy-marker (match-beginning 0) t)))
+             do (goto-char (point-min))
+             collect (cl-list*
+                      (string-to-number note)
+                      text
+                      (cl-loop
+                       for pos = (re-search-forward regexp start-of-footnotes 
t)
+                       while pos
+                       when (equal note (match-string 1))
+                       collect (copy-marker (match-beginning 0) t))))))))
 
 (provide 'footnote)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]