|
@@ -479,21 +479,30 @@ or new, let the user edit the definition of the footnote."
|
|
|
(org-footnote-goto-local-insertion-point)
|
|
|
(org-show-context 'link-search))
|
|
|
(t
|
|
|
- (let ((re (concat "^" org-footnote-tag-for-non-org-mode-files "[ \t]*$")))
|
|
|
- (unless (re-search-forward re nil t)
|
|
|
- (let ((max (if (and (derived-mode-p 'message-mode)
|
|
|
- (re-search-forward message-signature-separator nil t))
|
|
|
- (progn (beginning-of-line) (point))
|
|
|
- (goto-char (point-max)))))
|
|
|
- (skip-chars-backward " \t\r\n")
|
|
|
- (delete-region (point) max)
|
|
|
- (insert "\n\n")
|
|
|
- (insert org-footnote-tag-for-non-org-mode-files "\n"))))
|
|
|
- ;; Skip existing footnotes
|
|
|
- (while (re-search-forward "^[[:space:]]*\\[[^]]+\\] " nil t)
|
|
|
- (forward-line))))
|
|
|
+ ;; In a non-Org file. Search for footnote tag, or create it if
|
|
|
+ ;; necessary (at the end of buffer, or before a signature if in
|
|
|
+ ;; Message mode). Set point after any definition already there.
|
|
|
+ (let ((tag (concat "^" org-footnote-tag-for-non-org-mode-files "[ \t]*$"))
|
|
|
+ (max (save-excursion
|
|
|
+ (if (and (derived-mode-p 'message-mode)
|
|
|
+ (re-search-forward
|
|
|
+ message-signature-separator nil t))
|
|
|
+ (copy-marker (point-at-bol) t)
|
|
|
+ (copy-marker (point-max) t)))))
|
|
|
+ (goto-char max)
|
|
|
+ (unless (re-search-backward tag nil t)
|
|
|
+ (skip-chars-backward " \t\r\n")
|
|
|
+ (delete-region (point) max)
|
|
|
+ (insert "\n\n" org-footnote-tag-for-non-org-mode-files "\n"))
|
|
|
+ ;; Skip existing footnotes.
|
|
|
+ (while (re-search-forward org-footnote-definition-re max t))
|
|
|
+ (let ((def (org-footnote-at-definition-p)))
|
|
|
+ (when def (goto-char (nth 2 def))))
|
|
|
+ (set-marker max nil))))
|
|
|
+ ;; Insert footnote label, position point and notify user.
|
|
|
+ (unless (bolp) (insert "\n"))
|
|
|
(insert "\n[" label "] \n")
|
|
|
- (goto-char (1- (point)))
|
|
|
+ (backward-char)
|
|
|
(message "Edit definition and go back with `C-c &' or, if unique, with `C-c C-c'.")))
|
|
|
|
|
|
;;;###autoload
|