branch: externals/valign
commit 8618a448315b9061aa0292b47a570fa2ed2018c9
Author: Feng Shu <[email protected]>
Commit: Feng Shu <[email protected]>
Add valign-mode
* valign.el (valign-lighter): New variable.
(valign-org-mode-hook): New function.
(valign-mode): New minor mode.
(valign-setup): Use valign-mode.
---
valign.el | 35 +++++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 8 deletions(-)
diff --git a/valign.el b/valign.el
index 13976d2..b8ee520 100644
--- a/valign.el
+++ b/valign.el
@@ -29,6 +29,11 @@
(require 'cl-lib)
(require 'pcase)
+(defcustom valign-lighter " valign"
+ "The lighter string used by function `valign-mode'."
+ :group 'valign
+ :type 'string)
+
;;; Backstage
(define-error 'valign-bad-cell "Valign encountered a invalid table cell")
@@ -440,20 +445,34 @@ for the former, and 'multi-column for the latter."
(valign--separator-row-add-overlay
p (1- (point))
(or (nth col-idx (reverse rev-list)) 0)))))))))
-
+
(valign-bad-cell (message (error-message-string err)))
(valign-werid-alignment (message (error-message-string err)))))
+(defun valign-org-mode-hook ()
+ "Valign hook function use by `org-mode'."
+ (add-hook 'jit-lock-functions
+ #'valign-initial-alignment 90 t))
+
+(define-minor-mode valign-mode
+ "valign minor mode."
+ :global t
+ :require 'valign
+ :group 'valign
+ :lighter valign-lighter
+ (if (and valign-mode window-system)
+ (progn
+ (add-hook 'org-mode-hook #'valign-org-mode-hook)
+ (advice-add 'org-table-next-field :after #'valign-table)
+ (advice-add 'org-table-previous-field :after #'valign-table))
+ (remove-hook 'org-mode-hook #'valign-org-mode-hook)
+ (advice-remove 'org-table-next-field #'valign-table)
+ (advice-remove 'org-table-previous-field #'valign-table)))
+
(defun valign-setup ()
"Enable visual table alignment."
(interactive)
- (when window-system
- (add-hook 'org-mode-hook
- (lambda ()
- (add-hook 'jit-lock-functions
- #'valign-initial-alignment 90 t)))
- (advice-add #'org-table-next-field :after #'valign-table)
- (advice-add #'org-table-previous-field :after #'valign-table)))
+ (valign-mode 1))
(provide 'valign)