emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: gerard.vermeulen@posteo.net
To: Ihor Radchenko <yantar92@posteo.net>
Cc: Emacs orgmode <emacs-orgmode@gnu.org>,
	emacs-orgmode-bounces+gerard.vermeulen=posteo.net@gnu.org
Subject: Re: [PATCH] org-babel-demarcate-block: split using element API
Date: Thu, 22 Feb 2024 16:28:47 +0000	[thread overview]
Message-ID: <d13bb2ad30c516d02a0b321b33607d2f@posteo.net> (raw)
In-Reply-To: <cb58ba03ad2e7086db23d29ed06ce7b2@posteo.net>


On 21.02.2024 19:19, gerard.vermeulen@posteo.net wrote:
> On 21.02.2024 10:40, Ihor Radchenko wrote:
>> gerard.vermeulen@posteo.net writes:
[...]
>> May you please provide more details?
> 
This is different of what I saw before:

When splitting python blocks in an org file I got a long list of 
warnings:
Warning (org-element): ‘org-element-at-point’ cannot be used in non-Org 
buffer #<buffer *Org Src rpasyncio.org[ python ]*> (python-mode)
until it stopped by itself.

I traced this to user-errors in my own `org-babel-edit-prep:python' 
which I
use to let eglot handle python source blocks.

I rewrote my `org-babel-edit-prep:python' to get rid of user-errors but
then I bumped on the user-error coming from 
`org-src--make-source-overlay'.

I think that this may be the case for other definitions of 
`org-babel-edit-prep:LANG'

I copy my `org-babel-edit-edit-prep:python' without user-errors below:

#+begin_src emacs-lisp -n :results silent
(with-eval-after-load 'emacs
   (defcustom eglot-maybe-ensure-modes '(python-mode)
     "Modes where maybe `eglot-ensure' should be or has been called.
This may be in the case of proper directory local variables or in
the case of proper `org-src-mode' buffers.")

   ;; https://www.reddit.com/r/emacs/comments/w4f4u3
   ;; /using_rustic_eglot_and_orgbabel_for_literate/
   (defun eglot-org-babel-edit-prep (info)
     "Try to setup an `org-mode-src' buffer to make `eglot-ensure' 
succeed.
INFO has a form similar to the return value of
`org-babel-get-src-block-info'.  Try to load the tangled file
into the `org-src-mode' buffer as well as to narrow the region to
the Org-mode source block code before calling `eglot-ensure'."
     (when-let ((ok (bound-and-true-p org-src-mode))
                (mark (point))
                (body (nth 1 info))
                (filename (cdr (assq :tangle (nth 2 info)))))
       (when (string= filename "no")
         (message "Org source block has no tangled file")
         (setq ok nil))
       (when ok
         (setq filename (expand-file-name filename))
         (unless (file-readable-p filename)
           (message "Tangled file %s is not readable" filename)
           (setq ok nil)))
       (when ok
         (with-temp-buffer
           (insert-file-contents filename 'visit nil nil 'replace)
           (unless (search-forward body nil 'noerror)
             (message "Org source block does not occur in tangled file 
%s"
                      filename)
             (setq ok nil))
           (when (search-forward body nil 'noerror)
             (message "Org source block occurs twice or more in tangled 
file %s"
                      filename)
             (setq ok nil))))
       (when ok
         (goto-char (point-min))
         (insert-file-contents filename 'visit nil nil 'replace)
         (search-forward body)
         (narrow-to-region (match-beginning 0) (match-end 0))
         (goto-char mark)
         (eglot-ensure))
       ;; (message "Buffer %s is no `org-src-mode' buffer" (buffer-name))
       ))

   (defun org-babel-edit-prep:python (info)
     (eglot-org-babel-edit-prep info)))
#+end_src

Regards -- Gerard


  reply	other threads:[~2024-02-22 16:29 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-30 19:13 [PATCH] org-babel-demarcate-block: duplicate switches too gerard.vermeulen
2023-12-31 14:28 ` Ihor Radchenko
2024-01-01 12:52   ` gerard.vermeulen
2024-01-02 10:48     ` Ihor Radchenko
2024-01-02 20:20       ` [PATCH] org-babel-demarcate-block: split using org-element instead of regexp gerard.vermeulen
2024-01-03 15:11         ` Ihor Radchenko
2024-01-04  8:59           ` gerard.vermeulen
2024-01-04 14:43             ` Ihor Radchenko
2024-01-07 18:49               ` [PATCH] org-babel-demarcate-block: split using element API gerard.vermeulen
2024-01-08 12:08                 ` Ihor Radchenko
2024-01-08 20:25                   ` gerard.vermeulen
2024-01-09  7:49                     ` gerard.vermeulen
2024-01-09 10:50                       ` gerard.vermeulen
2024-01-09 14:49                         ` Ihor Radchenko
2024-01-13 14:04                           ` gerard.vermeulen
2024-01-13 15:17                             ` Ihor Radchenko
2024-01-13 20:16                               ` gerard.vermeulen
2024-01-14 10:53                                 ` gerard.vermeulen
2024-01-14 12:16                                   ` Ihor Radchenko
2024-01-14 19:18                                     ` gerard.vermeulen
2024-01-15  9:37                                       ` gerard.vermeulen
2024-01-16 13:34                                         ` Ihor Radchenko
2024-02-19  9:46                                           ` Ihor Radchenko
2024-02-19 13:01                                             ` gerard.vermeulen
2024-02-21  9:40                                               ` Ihor Radchenko
2024-02-21 18:19                                                 ` gerard.vermeulen
2024-02-22 16:28                                                   ` gerard.vermeulen [this message]
2024-02-23 13:43                                                     ` Ihor Radchenko
2024-02-25 12:06                                                       ` gerard.vermeulen
2024-02-25 12:21                                                         ` Ihor Radchenko
2024-02-26  8:51                                                           ` gerard.vermeulen
2024-02-28 11:54                                                             ` Ihor Radchenko
2024-02-29  9:50                                                               ` gerard.vermeulen
2024-02-29 11:56                                                                 ` Ihor Radchenko
2024-02-29 17:33                                                                   ` gerard.vermeulen
2024-03-03 13:08                                                                     ` Ihor Radchenko
2024-03-03 15:45                                                                       ` gerard.vermeulen
2024-03-04 10:12                                                                         ` Ihor Radchenko
2024-03-04 11:40                                                                           ` gerard.vermeulen
2024-03-04 11:51                                                                             ` Ihor Radchenko
2024-02-26  9:06                                                           ` gerard.vermeulen

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=d13bb2ad30c516d02a0b321b33607d2f@posteo.net \
    --to=gerard.vermeulen@posteo.net \
    --cc=emacs-orgmode-bounces+gerard.vermeulen=posteo.net@gnu.org \
    --cc=emacs-orgmode@gnu.org \
    --cc=yantar92@posteo.net \
    /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).