Browse Source

org-table.el: Fix removal of the table header

* lisp/org-table.el (org-table-header-set-header): Ensure the
table header overlay is correctly deleted.  Lessen the timer.
Bastien 5 years ago
parent
commit
62b9b63af8
1 changed files with 22 additions and 21 deletions
  1. 22 21
      lisp/org-table.el

+ 22 - 21
lisp/org-table.el

@@ -471,25 +471,26 @@ This may be useful when columns have been shrunk."
   "Display the header of the table at point."
   (when (overlayp org-table-header-overlay)
     (delete-overlay org-table-header-overlay))
-  (when (org-at-table-p)
-    (run-with-timer
-     0.01 nil
-     (lambda ()
-       (let* ((ws (window-start))
-	      (beg (save-excursion
-		     (goto-char (org-table-begin))
-		     (while (or (org-at-table-hline-p)
-				(looking-at-p ".*|\\s-+<[rcl]?\\([0-9]+\\)?>"))
-		       (move-beginning-of-line 2))
-		     (point)))
-	      (end (save-excursion (goto-char beg) (point-at-eol))))
-	 (when (not (pos-visible-in-window-p beg))
-	   (setq org-table-header-overlay
-		 (make-overlay ws (+ ws (- end beg))))
-	   (org-overlay-display
-	    org-table-header-overlay
-	    (org-table-row-get-visible-string beg)
-	    'org-table-header)))))))
+  (run-with-timer
+   0.001 nil
+   (if (not (org-at-table-p))
+       (when (overlayp org-table-header-overlay)
+	 (delete-overlay org-table-header-overlay))
+     (let* ((ws (window-start))
+	    (beg (save-excursion
+		   (goto-char (org-table-begin))
+		   (while (or (org-at-table-hline-p)
+			      (looking-at-p ".*|\\s-+<[rcl]?\\([0-9]+\\)?>"))
+		     (move-beginning-of-line 2))
+		   (point)))
+	    (end (save-excursion (goto-char beg) (point-at-eol))))
+       (when (not (pos-visible-in-window-p beg))
+	 (setq org-table-header-overlay
+	       (make-overlay ws (+ ws (- end beg))))
+	 (org-overlay-display
+	  org-table-header-overlay
+	  (org-table-row-get-visible-string beg)
+	  'org-table-header))))))
 
 ;;;###autoload
 (defvar-local org-table-header-line-mode nil)
@@ -499,10 +500,10 @@ This may be useful when columns have been shrunk."
   (unless (eq major-mode 'org-mode)
     (user-error "Cannot turn org table header mode outside org-mode buffers"))
   (if org-table-header-line-mode
-      (add-hook 'post-command-hook 'org-table-header-set-header nil t)
+      (add-hook 'post-command-hook #'org-table-header-set-header nil t)
     (when (overlayp org-table-header-overlay)
       (delete-overlay org-table-header-overlay))
-    (remove-hook 'post-command-hook 'org-table-header-set-header t)))
+    (remove-hook 'post-command-hook #'org-table-header-set-header t)))
 
 
 ;;; Regexps Constants