Run `org-table-electric-header-mode' with a tiny timer
* lisp/org-table.el (org-table-electric-header-mode): Autoload and run with timer.
This commit is contained in:
parent
57721a1cb0
commit
0aff90f499
|
@ -451,6 +451,7 @@ prevents it from hanging Emacs."
|
||||||
;;; Org table electric header minor mode
|
;;; Org table electric header minor mode
|
||||||
(defvar org-table-temp-header-line nil)
|
(defvar org-table-temp-header-line nil)
|
||||||
(defvar org-table-temp-header-remapping nil)
|
(defvar org-table-temp-header-remapping nil)
|
||||||
|
(defvar org-table-electric-header-mode nil)
|
||||||
(defun org-table-set-header-line-format ()
|
(defun org-table-set-header-line-format ()
|
||||||
"Set the header of table at point as the `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
|
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
|
(setq org-table-temp-header-remapping
|
||||||
(face-remap-add-relative 'header-line '(:inherit default)))
|
(face-remap-add-relative 'header-line '(:inherit default)))
|
||||||
(if (org-at-table-p)
|
(if (org-at-table-p)
|
||||||
(let* ((beg (org-table-begin))
|
(run-with-timer
|
||||||
(tbeg (if (save-excursion (goto-char beg) (org-at-table-hline-p))
|
0.001 nil
|
||||||
(save-excursion (goto-char beg) (move-beginning-of-line 2) (point))
|
(lambda ()
|
||||||
beg)))
|
(let* ((beg (org-table-begin))
|
||||||
(if (< tbeg (save-excursion (move-to-window-line 0) (point)))
|
(tbeg (if (save-excursion
|
||||||
(setq header-line-format
|
(goto-char beg) (org-at-table-hline-p))
|
||||||
(concat (propertize " " 'display '(space :width left-fringe))
|
(save-excursion
|
||||||
(buffer-substring
|
(goto-char beg) (move-beginning-of-line 2) (point))
|
||||||
tbeg (+ tbeg (- (point-at-eol) (point-at-bol))))))
|
beg)))
|
||||||
(setq header-line-format org-table-temp-header-line)))
|
(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)))
|
(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
|
(define-minor-mode org-table-electric-header-mode
|
||||||
"Display the first row of the table at point in the header line."
|
"Display the first row of the table at point in the header line."
|
||||||
:init-value org-table-electric-header-p
|
:init-value org-table-electric-header-p
|
||||||
|
|
Loading…
Reference in New Issue