emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@gmail.com>
To: Uwe Brauer <oub@mat.ucm.es>
Cc: emacs-orgmode@gnu.org
Subject: [PATCH] Re: the comment environment does not work for checkboxes
Date: Sat, 30 Jul 2022 13:27:47 +0800	[thread overview]
Message-ID: <87tu6ztbjg.fsf@localhost> (raw)
In-Reply-To: <87y1wc3ruw.fsf@mat.ucm.es>

[-- Attachment #1: Type: text/plain, Size: 707 bytes --]

Uwe Brauer <oub@mat.ucm.es> writes:

> Thanks, a couple of remarks
>
>     1. It does not work! I Presume you mean «C-c '» no «C-c C-'»? Well
>        this is bound to  is edit special
> ...
>
> Comments block are not listed and as I said it seems not to work, if
> what you say is the correct syntax, then there  is a bug, since
>
>     1. when I mark the region,
>
>     2. Run org-insert-structure-template,
>
>     3. Select comment, it should then lead to 

Thanks for the heads-up!
Comment blocks are not supposed to contain Org markup, and thus it indeed
makes sense to support them in org-edit-special and in structure
templates.

See the attached patch.

Best,
Ihor


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Support-interactive-editing-of-comment-blocks.patch --]
[-- Type: text/x-patch, Size: 5928 bytes --]

From 4913df3f84b6d1d0fc5cc0f613dca42abe47821d Mon Sep 17 00:00:00 2001
Message-Id: <4913df3f84b6d1d0fc5cc0f613dca42abe47821d.1659158779.git.yantar92@gmail.com>
From: Ihor Radchenko <yantar92@gmail.com>
Date: Sat, 30 Jul 2022 13:24:10 +0800
Subject: [PATCH] Support interactive editing of comment blocks

* lisp/org-src.el (org-edit-comment-block): New command to edit
comment block elements.  The command auto-escapes Org markup inside.
(org-src--contents-area):
* lisp/org.el (org-insert-structure-template):
(org-edit-special): Support comment blocks.
* etc/ORG-NEWS (Interactive commands now support escaping text inside
comment blocks):
(New command ~org-edit-comment-block~ to edit comment block at point):
Document the new features.

See https://orgmode.org/list/87y1wc3ruw.fsf@mat.ucm.es
---
 etc/ORG-NEWS    | 19 ++++++++++++++++++-
 lisp/org-src.el | 25 ++++++++++++++++++++++++-
 lisp/org.el     |  5 ++++-
 3 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 478fcf95c..0bc3fa638 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -141,6 +141,14 @@ discouraged when working with Org files.
 
 ** New features
 
+*** Interactive commands now support escaping text inside comment blocks
+
+~org-edit-special~ and ~org-insert-structure-template~ now handle
+comment blocks.
+
+See [[*New command ~org-edit-comment-block~ to edit comment block at
+point]].
+
 *** New customization option =org-property-separators=
 A new alist variable to control how properties are combined.
 
@@ -253,6 +261,16 @@ instance,
 includes all available items in the printed bibliography.
 ** New functions and changes in function arguments
 
+*** New command ~org-edit-comment-block~ to edit comment block at point
+
+As the contents of comments blocks is not parsed as Org markup, the
+headlines and keywords inside should be escaped, similar to src
+blocks, example blocks, and export blocks.  This in inconvenient to do
+manually and ~org-edit-special~ is usually advised to edit text in
+such kind of blocks.
+
+Now, comment block editing is also supported via this new function.
+
 *** New function ~org-element-cache-map~ for quick mapping across Org elements
 
 When element cache is enabled, the new function provides the best
@@ -266,7 +284,6 @@ to ~org-element--cache-map-statistics~ and
 ~org-element--cache-map-statistics-threshold~.
 
 ~org-scan-tags~ and tag views in agenda utilise the new function.
-
 *** New function ~org-element-at-point-no-context~
 
 This function is like ~org-element-at-point~, but it does not try to
diff --git a/lisp/org-src.el b/lisp/org-src.el
index b7e0af50e..0249af60b 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -384,7 +384,7 @@ (defun org-src--contents-area (datum)
        (let ((beg (org-element-property :contents-begin datum))
 	     (end (org-element-property :contents-end datum)))
 	 (list beg end (buffer-substring-no-properties beg end))))
-      ((memq type '(example-block export-block src-block))
+      ((memq type '(example-block export-block src-block comment-block))
        (list (progn (goto-char (org-element-property :post-affiliated datum))
 		    (line-beginning-position 2))
 	     (progn (goto-char (org-element-property :end datum))
@@ -1161,6 +1161,29 @@ (defun org-edit-export-block ()
        (lambda () (org-escape-code-in-region (point-min) (point-max)))))
     t))
 
+(defun org-edit-comment-block ()
+  "Edit comment block at point.
+\\<org-src-mode-map>
+A new buffer is created and the block is copied into it, and the
+buffer is switched into Org mode.
+
+When done, exit with `\\[org-edit-src-exit]'.  The edited text \
+will then replace the area in the Org mode buffer.
+
+Throw an error when not at a comment block."
+  (interactive)
+  (let ((element (org-element-at-point)))
+    (unless (and (eq (org-element-type element) 'comment-block)
+		 (org-src--on-datum-p element))
+      (user-error "Not in a comment block"))
+    (org-src--edit-element
+     element
+     (org-src--construct-edit-buffer-name (buffer-name) "org")
+     'org-mode
+     (lambda () (org-escape-code-in-region (point-min) (point-max)))
+     (org-unescape-code-in-string (org-element-property :value element)))
+    t))
+
 (defun org-edit-src-code (&optional code edit-buffer-name)
   "Edit the source or example block at point.
 \\<org-src-mode-map>
diff --git a/lisp/org.el b/lisp/org.el
index 937892ef3..d75894590 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -8869,7 +8869,8 @@ (defun org-insert-structure-template (type)
 	 (region-end (and region? (copy-marker (region-end))))
 	 (extended? (string-match-p "\\`\\(src\\|export\\)\\'" type))
 	 (verbatim? (string-match-p
-		     (concat "\\`" (regexp-opt '("example" "export" "src")))
+		     (concat "\\`" (regexp-opt '("example" "export"
+                                                "src" "comment")))
 		     type))
          (upcase? (string= (car (split-string type))
                            (upcase (car (split-string type))))))
@@ -16979,6 +16980,7 @@ (defun org-edit-special (&optional arg)
 When in a source code block, call `org-edit-src-code'.
 When in a fixed-width region, call `org-edit-fixed-width-region'.
 When in an export block, call `org-edit-export-block'.
+When in a comment block, call `org-edit-comment-block'.
 When in a LaTeX environment, call `org-edit-latex-environment'.
 When at an INCLUDE, SETUPFILE or BIBLIOGRAPHY keyword, visit the included file.
 When at a footnote reference, call `org-edit-footnote-reference'.
@@ -17025,6 +17027,7 @@ (defun org-edit-special (&optional arg)
       (`table-row (call-interactively 'org-table-edit-formulas))
       (`example-block (org-edit-src-code))
       (`export-block (org-edit-export-block))
+      (`comment-block (org-edit-comment-block))
       (`fixed-width (org-edit-fixed-width-region))
       (`latex-environment (org-edit-latex-environment))
       (`planning
-- 
2.35.1


  reply	other threads:[~2022-07-30  5:27 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-29  5:30 the comment environment does not work for checkboxes Uwe Brauer
2022-07-29  7:56 ` Dr. Arne Babenhauserheide
2022-07-29 14:39   ` Uwe Brauer
2022-07-30  5:27     ` Ihor Radchenko [this message]
2022-07-30  5:40       ` [PATCH] " Uwe Brauer
2022-07-30  5:55         ` Ihor Radchenko
2022-07-30  6:00           ` Uwe Brauer
2022-07-30  6:15             ` Ihor Radchenko
2022-07-30  6:23               ` Uwe Brauer
2022-07-30 12:09                 ` Ihor Radchenko
2022-08-04 12:08       ` Uwe Brauer
2022-08-04 14:26         ` Ihor Radchenko
2022-08-07  9:41       ` Ihor Radchenko
2022-07-30  5:21   ` [SOLVED: src not comment] (was: the comment environment does not work for checkboxes) Uwe Brauer

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=87tu6ztbjg.fsf@localhost \
    --to=yantar92@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=oub@mat.ucm.es \
    /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).