diff options
author | Bastien <bzg@gnu.org> | 2020-01-29 21:35:04 +0100 |
---|---|---|
committer | Bastien <bzg@gnu.org> | 2020-01-29 21:35:04 +0100 |
commit | 0aff90f499f307bc2a5e4255ceb5f424b4a155f4 (patch) | |
tree | da4433296276883b8c2138f47797b039f9bc7c2d | |
parent | 57721a1cb0ba511ee457f4bc47951808e1918127 (diff) | |
download | org-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.el | 28 |
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 |