summaryrefslogtreecommitdiffhomepage
path: root/attic/jao-org-tags.el
diff options
context:
space:
mode:
Diffstat (limited to 'attic/jao-org-tags.el')
-rw-r--r--attic/jao-org-tags.el61
1 files changed, 61 insertions, 0 deletions
diff --git a/attic/jao-org-tags.el b/attic/jao-org-tags.el
new file mode 100644
index 0000000..b00276d
--- /dev/null
+++ b/attic/jao-org-tags.el
@@ -0,0 +1,61 @@
+;; lifted from http://orgmode.org/worg/org-hacks.php
+
+(require 'org)
+
+(defvar ba/org-adjust-tags-column nil)
+
+(defun ba/org-adjust-tags-column-reset-tags ()
+ "In org-mode buffers it will reset tag position according to
+`org-tags-column'."
+ (when (and
+ (not (string= (buffer-name) "*Remember*"))
+ (eql major-mode 'org-mode))
+ (let ((b-m-p (buffer-modified-p)))
+ (condition-case nil
+ (save-excursion
+ (goto-char (point-min))
+ (command-execute 'outline-next-visible-heading)
+ ;; disable (message) that org-set-tags generates
+ (flet ((message (&rest ignored) nil))
+ (org-set-tags 1 t))
+ (set-buffer-modified-p b-m-p))
+ (error nil)))))
+
+(defun ba/org-adjust-tags-column-now ()
+ "Right-adjust `org-tags-column' value, then reset tag position."
+ (set (make-local-variable 'org-tags-column)
+ (- (- (window-width) 3)))
+ (ba/org-adjust-tags-column-reset-tags))
+
+(defun ba/org-adjust-tags-column-maybe ()
+ "If `ba/org-adjust-tags-column' is set to non-nil, adjust tags."
+ (when ba/org-adjust-tags-column
+ (ba/org-adjust-tags-column-now)))
+
+(defun ba/org-adjust-tags-column-before-save ()
+ "Tags need to be left-adjusted when saving."
+ (when ba/org-adjust-tags-column
+ (setq org-tags-column 1)
+ (ba/org-adjust-tags-column-reset-tags)))
+
+(defun ba/org-adjust-tags-column-after-save ()
+ "Revert left-adjusted tag position done by before-save hook."
+ (ba/org-adjust-tags-column-maybe)
+ (set-buffer-modified-p nil))
+
+;; automatically align tags on right-hand side
+(defun jao-org-tags-setup ()
+ (setq ba/org-adjust-tags-column t)
+ (add-hook 'window-configuration-change-hook
+ 'ba/org-adjust-tags-column-maybe)
+ (add-hook 'before-save-hook 'ba/org-adjust-tags-column-before-save)
+ (add-hook 'after-save-hook 'ba/org-adjust-tags-column-after-save))
+
+(defun jao-org-tags-uninstall ()
+ (setq ba/org-adjust-tags-column nil)
+ (remove-hook 'window-configuration-change-hook
+ 'ba/org-adjust-tags-column-maybe)
+ (remove-hook 'before-save-hook 'ba/org-adjust-tags-column-before-save)
+ (remove-hook 'after-save-hook 'ba/org-adjust-tags-column-after-save))
+
+(provide 'jao-org-tags)