emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [Bug] org-in-src-block-p returns t when not in source block
@ 2023-11-27 15:49 No Wayman
  2023-11-27 15:55 ` Ihor Radchenko
  0 siblings, 1 reply; 8+ messages in thread
From: No Wayman @ 2023-11-27 15:49 UTC (permalink / raw)
  To: emacs-orgmode


When on an empty line before a source block, org-in-src-block-p 
correctly returns nil.
However, when on an empty line after a source block, it returns t.
This is reproducible on my end with both the built-in version of 
Org and 9.7-pre. 

Yodel[1] Report 2023-11-27 10:42:54
===================================

--8<---------------cut here---------------start------------->8---
(yodel
  :post*
  (require 'org)
  (org-version nil 'full 'message)
  (yodel-file
    :point "|"
    :with* "#+begin_src text\n#+end_src\n|"
    :then* (message "org-in-src-block-p below: %s" 
    (org-in-src-block-p)))
  (yodel-file
    :point "|"
    :with* "|\n#+begin_src text\n#+end_src"
    :then* (message "org-in-src-block-p above: %s" 
    (org-in-src-block-p))))
--8<---------------cut here---------------end--------------->8---

STDOUT
======

> Org mode version 9.6.11 (release_9.6.11 @ 
> /usr/share/emacs/30.0.50/lisp/org/)
> org-in-src-block-p below: t
> org-in-src-block-p above: nil

Environment
===========

- emacs version: GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, 
  GTK+ Version 3.24.38, cairo version 1.18.0)
 of 2023-11-16
- system type: gnu/linux

[1] https://www.github.com/progfolio/yodel


^ permalink raw reply	[flat|nested] 8+ messages in thread
* Re: [Bug] org-in-src-block-p returns t when not in source block
@ 2023-11-27 20:14 No Wayman
  2023-11-27 20:30 ` Ihor Radchenko
  0 siblings, 1 reply; 8+ messages in thread
From: No Wayman @ 2023-11-27 20:14 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode


[Apologies for the duplicate message, Ihor. mu4e recently changed it's default
reply behavior without my noticing]

Ihor Radchenko <yantar92@posteo.net> writes:

> This is very different from LAX argument in `org-at-timestamp-p' -
> timestamp-like text may not be proper syntactically correct Org markup
> element, but is still considered by agenda for historical and practical
> reasons.

Fair enough.
 
> What about the attached patch?

That is much clearer. Thank you.

> If you want to check if point is inside source block code, use INSIDE
> argument.

Using the INSIDE argument still appears to fail in some cases:

Yodel[1] Report 2023-11-27 14:55:05
===================================

--8<---------------cut here---------------start------------->8---
(yodel
  :post*
  (require 'org)
  (org-version nil 'full 'message)
  (message "(org-in-source-block-p 'inside)")
  (yodel-file "before.org" :point "|"
    :with* "|\n#+begin_src text\ntest\n#+end_src\n"
    :then* (message "point on preceding blank line: %s"
             (if (org-in-src-block-p 'inside) "FAIL" "PASS")))
  (yodel-file "begin.org" :point "|"
    :with* "\n#+begin|_src text\ntest\n#+end_src\n"
    :then* (message "point on begin_src: %s"
             (if (org-in-src-block-p 'inside) "FAIL" "PASS")))
  (yodel-file "in.org" :point "|"
    :with* "\n#+begin_src text\nte|st\n#+end_src\n"
    :then* (message "point between begin_src end_src: %s"
             (if (org-in-src-block-p 'inside) "PASS" "FAIL")))
  (yodel-file "end-non-blank.org" :point "|"
    :with* "\n#+begin_src text\ntest\n#+end|_src\ntest"
    :then* (message "point on end_src (non-blank line after): %s"
             (if (org-in-src-block-p 'inside) "FAIL" "PASS")))
  (yodel-file "end.org" :point "|"
    :with* "\n#+begin_src text\ntest\n#+end|_src\n"
    :then* (message "point on end_src (blank line after): %s"
             (if (org-in-src-block-p 'inside) "FAIL" "PASS")))
  (yodel-file "end-eobp.org" :point "|"
    :with* "\n#+begin_src text\ntest\n#+end|_src"
    :then* (message "point on end_src (no line after): %s"
             (if (org-in-src-block-p 'inside) "FAIL" "PASS")))
  (yodel-file "after.org" :point "|"
    :with* "\n#+begin_src text\ntest\n#+end_src\n|"
    :then* (message "point on trailing blank line: %s"
                    (if (org-in-src-block-p 'inside) "FAIL" "PASS"))))
--8<---------------cut here---------------end--------------->8---

STDOUT
======

> Org mode version 9.6.11 (release_9.6.11 @ /usr/share/emacs/30.0.50/lisp/org/)
> (org-in-source-block-p ’inside)
> point on preceding blank line: PASS
> point on begin_src: PASS
> point between begin_src end_src: PASS
> point on end_src (non-blank line after): PASS
> point on end_src (blank line after): PASS
> point on end_src (no line after): FAIL
> point on trailing blank line: FAIL

Environment
===========

- emacs version: GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.38, cairo version 1.18.0)
 of 2023-11-16
- system type: gnu/linux

[1] https://www.github.com/progfolio/yodel


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-11-29 10:05 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-27 15:49 [Bug] org-in-src-block-p returns t when not in source block No Wayman
2023-11-27 15:55 ` Ihor Radchenko
     [not found]   ` <87cyvv9nag.fsf@gmail.com>
2023-11-27 19:59     ` Ihor Radchenko
  -- strict thread matches above, loose matches on Subject: below --
2023-11-27 20:14 No Wayman
2023-11-27 20:30 ` Ihor Radchenko
2023-11-27 20:39   ` No Wayman
2023-11-28 20:32   ` Jens Schmidt
2023-11-29 10:07     ` Ihor Radchenko

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).