emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/valign 8618a44 021/198: Add valign-mode


From: Stefan Monnier
Subject: [elpa] externals/valign 8618a44 021/198: Add valign-mode
Date: Tue, 1 Dec 2020 18:19:08 -0500 (EST)

branch: externals/valign
commit 8618a448315b9061aa0292b47a570fa2ed2018c9
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    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)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]