* Preventing inadvertent global modifications
@ 2023-09-12 16:47 Max Nikulin
2023-09-13 8:02 ` Ihor Radchenko
0 siblings, 1 reply; 5+ messages in thread
From: Max Nikulin @ 2023-09-12 16:47 UTC (permalink / raw)
To: emacs-orgmode
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?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Preventing inadvertent global modifications
2023-09-12 16:47 Preventing inadvertent global modifications Max Nikulin
@ 2023-09-13 8:02 ` Ihor Radchenko
2023-09-13 10:50 ` Max Nikulin
0 siblings, 1 reply; 5+ messages in thread
From: Ihor Radchenko @ 2023-09-13 8:02 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
Max Nikulin <manikulin@gmail.com> writes:
> 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.
You can set `org-auto-align-tags' to nil.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Preventing inadvertent global modifications
2023-09-13 8:02 ` Ihor Radchenko
@ 2023-09-13 10:50 ` Max Nikulin
2023-09-14 12:56 ` Ihor Radchenko
0 siblings, 1 reply; 5+ messages in thread
From: Max Nikulin @ 2023-09-13 10:50 UTC (permalink / raw)
To: emacs-orgmode
On 13/09/2023 15:02, Ihor Radchenko wrote:
> Max Nikulin writes:
>
>> 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.
>
> You can set `org-auto-align-tags' to nil.
I saw it, but from its description I decided that its effect may be to
broad. I have tried it and to my surprise it does not affect editing of
heading, tags are kept aligned. M-<right> and M-<left> do not realign
tags, so the value is not ignored.
C-u C-c C-q still realigns all tags in the buffer, so this option would
not save me from getting huge diff.
I suspect there are enough commands having similar global (and so mostly
hidden) effect. I may be unaware of them because I do not feel that I
need such commands.
I admit that some fraction of users keep their files tidy calling C-u
C-c C-q regularly. Perhaps at certain moment I will decide no align
tags, but it should be a dedicated commit not mixed with other changes.
My opinion that, by default, commands performing massive changes should
require reasonable efforts to execute. It should help to avoid calling
them unintentionally. Perhaps there is a better approach than annoying
`yes-or-no-p'.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Preventing inadvertent global modifications
2023-09-13 10:50 ` Max Nikulin
@ 2023-09-14 12:56 ` Ihor Radchenko
2023-09-15 11:00 ` Max Nikulin
0 siblings, 1 reply; 5+ messages in thread
From: Ihor Radchenko @ 2023-09-14 12:56 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
Max Nikulin <manikulin@gmail.com> writes:
>> You can set `org-auto-align-tags' to nil.
>
> I saw it, but from its description I decided that its effect may be to
> broad. I have tried it and to my surprise it does not affect editing of
> heading, tags are kept aligned. M-<right> and M-<left> do not realign
> tags, so the value is not ignored.
We might indeed want to respect org-auto-align-tags everywhere.
> C-u C-c C-q still realigns all tags in the buffer, so this option would
> not save me from getting huge diff.
C-u C-c C-q is explicitly documented to do so. Surely, you may press
universal argument by accident, but so you do for, say, C-u C-u C-k,
deleting 16 lines at once. I am not sure if makes much sense to
intervene here.
> I suspect there are enough commands having similar global (and so mostly
> hidden) effect. I may be unaware of them because I do not feel that I
> need such commands.
No other commands call (org-align-tags t).
> I admit that some fraction of users keep their files tidy calling C-u
> C-c C-q regularly. Perhaps at certain moment I will decide no align
> tags, but it should be a dedicated commit not mixed with other changes.
> My opinion that, by default, commands performing massive changes should
> require reasonable efforts to execute. It should help to avoid calling
> them unintentionally. Perhaps there is a better approach than annoying
> `yes-or-no-p'.
I am reluctant (see the above), unless other users also think that such
feature would be useful.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Preventing inadvertent global modifications
2023-09-14 12:56 ` Ihor Radchenko
@ 2023-09-15 11:00 ` Max Nikulin
0 siblings, 0 replies; 5+ messages in thread
From: Max Nikulin @ 2023-09-15 11:00 UTC (permalink / raw)
To: emacs-orgmode
On 14/09/2023 19:56, Ihor Radchenko wrote:
> Max Nikulin writes:
>
>> C-u C-c C-q still realigns all tags in the buffer, so this option would
>> not save me from getting huge diff.
>
> C-u C-c C-q is explicitly documented to do so. Surely, you may press
> universal argument by accident, but so you do for, say, C-u C-u C-k,
> deleting 16 lines at once. I am not sure if makes much sense to
> intervene here.
I have never tried to dispute that it is documented.
The issue is not prefix argument and not namely aligning tags, but a lot
of modifications scattered across file being invisible in the active frame.
I do not remember if I had problems due to C-k, but adding some friction
to C-w and M-w if the mark is too far away is in my plan. Fortunately I
usually can notice that C-w deletes significant part of my file because
mark was set in other window. So undo helps (attention is required
however to not revert undo to redo and to stop at proper point). Since
adjacent region may be unfolded in response to editing action, sometimes
it is hard to figure out if effect of key hit is consistent with
expectations.
> I am reluctant (see the above), unless other users also think that such
> feature would be useful.
Since nobody joined to the thread, I assume it is my personal pain,
perhaps related to Vim, perhaps to other experience. I can not say that
I am investing noticeable amount of efforts to eliminate it, but I hope
I will get better ideas in future.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-09-15 11:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-12 16:47 Preventing inadvertent global modifications Max Nikulin
2023-09-13 8:02 ` Ihor Radchenko
2023-09-13 10:50 ` Max Nikulin
2023-09-14 12:56 ` Ihor Radchenko
2023-09-15 11:00 ` Max Nikulin
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).