summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2019-01-09 23:25:57 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2019-01-09 23:25:57 +0100
commitfa71fdbb53c58e72940a9d9fb76e7dab8a3663f2 (patch)
tree37fbf1755d4232840c63730495634de059aefa50
parentc006a60fac7eaa9a4c4adebfc865f5e299d57b0b (diff)
downloadorg-mode-fa71fdbb53c58e72940a9d9fb76e7dab8a3663f2.tar.gz
org-num: Clear numbering overlays upon changing major mode
* lisp/org-num.el (org-num--clear): New function. (org-num-mode): Use new function. Reported-by: stardiviner <numbchild@gmail.com> <http://lists.gnu.org/r/emacs-orgmode/2019-01/msg00088.html>
-rw-r--r--lisp/org-num.el14
1 files changed, 10 insertions, 4 deletions
diff --git a/lisp/org-num.el b/lisp/org-num.el
index bfdf4c0..f062526 100644
--- a/lisp/org-num.el
+++ b/lisp/org-num.el
@@ -184,6 +184,11 @@ Update `org-num--invalid-flag' accordingly."
(overlay-put o 'org-num 'invalid)
(setq org-num--invalid-flag t))
+(defun org-num--clear ()
+ "Remove all numbering overlays in current buffer."
+ (mapc #'delete-overlay org-num--overlays)
+ (setq org-num--overlays nil))
+
(defun org-num--make-overlay (numbering level skip)
"Return overlay for numbering headline at point.
@@ -444,11 +449,12 @@ NUMBERING is a list of numbers."
(user-error "Cannot activate headline numbering outside Org mode"))
(setq org-num--numbering nil)
(setq org-num--overlays (nreverse (org-num--number-region nil nil)))
- (add-hook 'after-change-functions #'org-num--verify nil t))
+ (add-hook 'after-change-functions #'org-num--verify nil t)
+ (add-hook 'change-major-mode-hook #'org-num--clear nil t))
(t
- (mapc #'delete-overlay org-num--overlays)
- (setq org-num--overlays nil)
- (remove-hook 'after-change-functions #'org-num--verify t))))
+ (org-num--clear)
+ (remove-hook 'after-change-functions #'org-num--verify t)
+ (remove-hook 'change-major-mode-hook #'org-num--clear t))))
(provide 'org-num)