emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Omar Antolín Camarena" <omar@matem.unam.mx>
To: emacs-orgmode@gnu.org
Subject: Bug: org-catch-invisible-edits doesn't actually catch most deletions [9.4 (9.4-41-g9bb930-elpaplus @ /home/omarantolin/.emacs.d/elpa/org-plus-contrib-20201116/)]
Date: Mon, 23 Nov 2020 00:33:56 -0600	[thread overview]
Message-ID: <87lfesinu3.fsf@matem.unam.mx> (raw)


Remember to cover the basics, that is, what you expected to happen and
what in fact did happen.  You don't know how to make a good report?  See

     https://orgmode.org/manual/Feedback.html#Feedback

Your bug report will be posted to the Org mailing list.
------------------------------------------------------------------------

Setting org-catch-invisible-edits to 'error does catch org-delete-backward-char (bound to <backspace> by default), but it doesn't catch backward-kill-word (<C-backspace>), or kill-word with argument -1 (M-- M-d), or backward-kill-sexp (ESC <C-backspace>).

Steps to reproduce:

1. Create an org file with the following 3 lines:

* Stop, hammer time!
You can't touch this
* Break it down!

2. Run emacs -Q and visit the file.

3. M-: (setq org-catch-invisible-edits 'error)

4. Make sure the first headline is folded and place point after the ellipsis.

5. Now you can try any of the commands mentioned in the first paragraph.

The org-catch-invisible-edits will successfully block you from using <backspace>, but any of the other command I mentioned will silently delete the word "this". Because of the variable's name, I would expect all these commands to be blocked.

Maybe technically this isn't a bug, since the docstring for org-catch-invisible-edits only says: "Check if in invisible region before inserting or deleting a character." So you can argue it only promises to block deletion if you attempt it one character at a time, and if you try to delete a word, the docstring doesn't promise to stop you.

I'd suggest that naming the variable org-catch-invisible-edits strongly suggests it should catch all deletions in the invisible text and that the current behavior is misleading.

Emacs  : GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5, cairo version 1.16.0)
 of 2020-10-13, unofficial emacs-snapshot build: http://emacs.ganneff.de/, git commit 8d241e8840fdb02dcfce52425626dd8f2125e51a
Package: Org mode version 9.4 (9.4-41-g9bb930-elpaplus @ /home/omarantolin/.emacs.d/elpa/org-plus-contrib-20201116/)

current state:
==============
(setq
 org-src-mode-hook '(org-src-babel-configure-edit-buffer
                     org-src-mode-configure-edit-buffer)
 org-link-shell-confirm-function 'yes-or-no-p
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
 org-refile-targets '((nil :maxlevel . 2) ("~/Notes/Notes.org" :maxlevel . 2)
                      ("~/Notes/Someday.org" :level . 0)
                      ("~/Notes/Daily.org" :level . 3))
 org-pretty-entities t
 org-capture-bookmark nil
 org-latex-default-packages-alist '(("AUTO" "inputenc" t ("pdflatex"))
                                    ("" "graphicx" t) ("" "grffile" t)
                                    ("" "longtable" nil) ("" "wrapfig" nil)
                                    ("" "rotating" nil) ("normalem" "ulem" t)
                                    ("" "amsmath" t) ("" "amssymb" t)
                                    ("" "capt-of" nil) ("" "hyperref" nil))
 org-special-ctrl-a/e t
 org-agenda-files '("~/Notes/Refile.org" "~/Notes/Daily.org"
                    "~/Notes/Alumnos.org" "~/Notes/Someday.org")
 org-mode-hook '(#[0 "\301\211%10\207"
                   [imenu-create-index-function org-imenu-get-tree] 2]
                 #[0 "\300\301\302\303\304$\207"
                   [add-hook change-major-mode-hook org-show-all append local]
                   5]
                 #[0 "\300\301\302\303\304$\207"
                   [add-hook change-major-mode-hook org-babel-show-result-all
                    append local]
                   5]
                 org-babel-result-hide-spec org-babel-hide-all-hashes
                 ediff-with-org-show-all turn-on-org-cdlatex beginend-org-mode
                 org-eldoc-load)
 org-outline-path-complete-in-steps nil
 org-archive-hook '(org-attach-archive-delete-maybe)
 org-confirm-elisp-link-function 'yes-or-no-p
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-metaup-hook '(org-babel-load-in-session-maybe)
 org-bibtex-headline-format-function #[257 "\300%1\236A\207" [:title] 3 "\n\n(fn ENTRY)"]
 org-babel-pre-tangle-hook '(save-buffer)
 org-tab-first-hook '(org-babel-hide-result-toggle-maybe
                      org-babel-header-arg-expand)
 org-hide-leading-stars t
 org-hide-emphasis-markers t
 org-highlight-latex-and-related '(latex script entities)
 org-ellipsis "…"
 org-agenda-loop-over-headlines-in-active-region nil
 org-src-lang-modes '(("latex-macros" . latex) ("inline-js" . javascript)
                      ("redis" . redis) ("php" . php) ("arduino" . arduino)
                      ("C" . c) ("C++" . c++) ("asymptote" . asy)
                      ("bash" . sh) ("beamer" . latex) ("calc" . fundamental)
                      ("cpp" . c++) ("ditaa" . artist) ("dot" . fundamental)
                      ("elisp" . emacs-lisp) ("ocaml" . tuareg)
                      ("screen" . shell-script) ("shell" . sh)
                      ("sqlite" . sql))
 org-occur-hook '(org-first-headline-recenter)
 org-agenda-mode-hook '(beginend-org-agenda-mode)
 org-structure-template-alist '(("a" . "export ascii") ("c" . "center")
                                ("C" . "comment") ("e" . "example")
                                ("E" . "export") ("h" . "export html")
                                ("l" . "export latex") ("q" . "quote")
                                ("s" . "src") ("v" . "verse")
                                ("thm" . "theorem") ("pf" . "proof")
                                ("lem" . "lemma") ("cor" . "corollary")
                                ("def" . "definition") ("rem" . "remark")
                                ("exer" . "exercise") ("prop" . "proposition")
                                ("el" . "src emacs-lisp"))
 org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers
                  org-cycle-show-empty-lines
                  org-optimize-window-after-visibility-change)
 org-todo-keywords '((sequence "TODO" "|" "DONE" "NOPE") (type "WAIT"))
 org-support-shift-select t
 org-speed-command-hook '(org-speed-command-activate
                          org-babel-speed-command-activate)
 org-refile-allow-creating-parent-nodes 'confirm
 org-refile-use-outline-path 'file
 org-export-before-parsing-hook '(org-attach-expand-links)
 org-confirm-shell-link-function 'yes-or-no-p
 org-link-parameters '(("attachment" :follow org-attach-follow :complete
                        org-attach-complete-link)
                       ("id" :follow org-id-open)
                       ("eww" :follow org-eww-open :store org-eww-store-link)
                       ("rmail" :follow org-rmail-open :store
                        org-rmail-store-link)
                       ("mhe" :follow org-mhe-open :store org-mhe-store-link)
                       ("irc" :follow org-irc-visit :store org-irc-store-link
                        :export org-irc-export)
                       ("info" :follow org-info-open :export org-info-export
                        :store org-info-store-link)
                       ("gnus" :follow org-gnus-open :store
                        org-gnus-store-link)
                       ("docview" :follow org-docview-open :export
                        org-docview-export :store org-docview-store-link)
                       ("bibtex" :follow org-bibtex-open :store
                        org-bibtex-store-link)
                       ("bbdb" :follow org-bbdb-open :export org-bbdb-export
                        :complete org-bbdb-complete-link :store
                        org-bbdb-store-link)
                       ("w3m" :store org-w3m-store-link)
                       ("cite" :follow org-bibtex-goto-citation :export nil)
                       ("org-title" :store store-org-title-link) ("file+sys")
                       ("file+emacs") ("shell" :follow org-link--open-shell)
                       ("news" :follow
                        #[514 "\301\300\302%4Q%2\"\207"
                          ["news" browse-url ":"] 6 "\n\n(fn URL ARG)"]
                        )
                       ("mailto" :follow
                        #[514 "\301\300\302%4Q%2\"\207"
                          ["mailto" browse-url ":"] 6 "\n\n(fn URL ARG)"]
                        )
                       ("https" :follow
                        #[514 "\301\300\302%4Q%2\"\207"
                          ["https" browse-url ":"] 6 "\n\n(fn URL ARG)"]
                        )
                       ("http" :follow
                        #[514 "\301\300\302%4Q%2\"\207"
                          ["http" browse-url ":"] 6 "\n\n(fn URL ARG)"]
                        )
                       ("ftp" :follow
                        #[514 "\301\300\302%4Q%2\"\207" ["ftp" browse-url ":"]
                          6 "\n\n(fn URL ARG)"]
                        )
                       ("help" :follow org-link--open-help)
                       ("file" :complete org-link-complete-file)
                       ("elisp" :follow org-link--open-elisp)
                       ("doi" :follow org-link--open-doi))
 org-capture-templates '(("s" "Someday" entry (file "Someday.org") "* %?\n")
                         ("d" "Daily" entry (file+olp+datetree "Daily.org")
                          "* TODO %?\n")
                         ("r" "Refile" entry (file "Refile.org") "* %?\n")
                         ("j" "Journal entry" plain
                          (file+olp+datetree "Journal.org"))
                         ("e" "Emacs templates")
                         ("ei" "Idea" entry
                          (file+olp "Editors/Emacs.org" "Ideas") "* %?\n")
                         ("et" "Tip" entry
                          (file+olp "Editors/Emacs.org" "Tips") "* %?\n")
                         ("eq" "Question" entry
                          (file+olp "Editors/Emacs.org" "Questions") "* %?\n")
                         ("ep" "Package" entry
                          (file+olp "Editors/Emacs.org" "Packages") "* %?\n")
                         )
 org-link-elisp-confirm-function 'yes-or-no-p
 outline-mode-hook '(beginend-outline-mode)
 org-latex-packages-alist '(("AUTO" "babel" t ("pdflatex")))
 org-confirm-babel-evaluate nil
 org-directory "~/Notes"
 org-preview-latex-image-directory "~/.cache/ltximg/"
 )


             reply	other threads:[~2020-11-23  6:35 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-23  6:33 Omar Antolín Camarena [this message]
2024-02-10 16:11 ` Bug: org-catch-invisible-edits doesn't actually catch most deletions [9.4 (9.4-41-g9bb930-elpaplus @ /home/omarantolin/.emacs.d/elpa/org-plus-contrib-20201116/)] Ihor Radchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lfesinu3.fsf@matem.unam.mx \
    --to=omar@matem.unam.mx \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).