Hi,
Yesterday, when I was going to commit changes after editing several
headings in different places of an Org file, I was surprised by huge
diff with hundreds of chunks. Tags spread across the whole file were
adjusted by one or tow spaces. Probably I just accidentally hit C-u
before setting a tag to a new heading by C-c C-q. Of course, I did not
noticed it immediately. I managed to create a commit with real changes
without noise due to tags realignment. However I would like to prevent
similar issues in future.
I can add a prompt for a particular argument of a function by
(defun nm-safe-org-set-tags-command (&optional arg)
"Call `org-set-tags-command' requiring to confirm
realigning of all tags."
(interactive "P")
(cond
((and (equal '(4) arg) (not (yes-or-no-p "Realign all tags? "))))
(t (call-interactively #'org-set-tags-command))))
(add-hook 'org-mode-hook
(lambda ()
(define-key org-mode-map (kbd "C-c C-q")
#'nm-safe-org-set-tags-command)))
The function can be made a bit smarter by adding minimal file size
threshold.
However almost certainly there are more function "destructive" in a
similar way. Is there a more general approach to make commands safer in
respect to global modifications?