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
next prev parent 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).