summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien <bzg@gnu.org>2020-01-29 21:35:04 +0100
committerBastien <bzg@gnu.org>2020-01-29 21:35:04 +0100
commit0aff90f499f307bc2a5e4255ceb5f424b4a155f4 (patch)
treeda4433296276883b8c2138f47797b039f9bc7c2d
parent57721a1cb0ba511ee457f4bc47951808e1918127 (diff)
downloadorg-mode-0aff90f499f307bc2a5e4255ceb5f424b4a155f4.tar.gz
Run `org-table-electric-header-mode' with a tiny timer
* lisp/org-table.el (org-table-electric-header-mode): Autoload and run with timer.
-rw-r--r--lisp/org-table.el28
1 files changed, 17 insertions, 11 deletions
diff --git a/lisp/org-table.el b/lisp/org-table.el
index f7dd0ae..ad10fff 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -451,6 +451,7 @@ prevents it from hanging Emacs."
;;; Org table electric header minor mode
(defvar org-table-temp-header-line nil)
(defvar org-table-temp-header-remapping nil)
+(defvar org-table-electric-header-mode nil)
(defun org-table-set-header-line-format ()
"Set the header of table at point as the `header-line-format'.
Assume `org-table-temp-header-line' already stores the previously
@@ -460,19 +461,24 @@ existing value of `header-line-format' we might want to restore."
(setq org-table-temp-header-remapping
(face-remap-add-relative 'header-line '(:inherit default)))
(if (org-at-table-p)
- (let* ((beg (org-table-begin))
- (tbeg (if (save-excursion (goto-char beg) (org-at-table-hline-p))
- (save-excursion (goto-char beg) (move-beginning-of-line 2) (point))
- beg)))
- (if (< tbeg (save-excursion (move-to-window-line 0) (point)))
- (setq header-line-format
- (concat (propertize " " 'display '(space :width left-fringe))
- (buffer-substring
- tbeg (+ tbeg (- (point-at-eol) (point-at-bol))))))
- (setq header-line-format org-table-temp-header-line)))
+ (run-with-timer
+ 0.001 nil
+ (lambda ()
+ (let* ((beg (org-table-begin))
+ (tbeg (if (save-excursion
+ (goto-char beg) (org-at-table-hline-p))
+ (save-excursion
+ (goto-char beg) (move-beginning-of-line 2) (point))
+ beg)))
+ (if (< tbeg (save-excursion (move-to-window-line 0) (point)))
+ (setq header-line-format
+ (concat (propertize " " 'display '(space :width left-fringe))
+ (buffer-substring
+ tbeg (+ tbeg (- (point-at-eol) (point-at-bol))))))
+ (setq header-line-format org-table-temp-header-line)))))
(setq header-line-format org-table-temp-header-line)))
-(defvar org-table-electric-header-mode nil)
+;;;###autoload
(define-minor-mode org-table-electric-header-mode
"Display the first row of the table at point in the header line."
:init-value org-table-electric-header-p