Hello,

Nick Dokos <ndo...@gmail.com> writes:

> | I can reproduce this and traced it to this code:
> | 
> | ,----
> | |     (catch :found
> | |       (while (funcall search-fun org-link-any-re nil t)
> | |   (pcase (org-element-lineage (org-element-context) '(link) t)    ;;; 
> <<<<< HERE
> | |     (`nil nil) (link
> | |      (goto-char (org-element-property :begin link)) (when
> | |      (org-invisible-p) (org-show-context)) (throw :found t))))
> | `----
> | 
> | which is a rewrite of org-next-link in commit 4ff8947ea8.
> | 
> | There is some asymmetry in how forward and backward searches behave:
> | 
> |  - in the forward case, the search ends up at the end of the first
> |    link where `org-element-lineage' returns nil, so the loop repeats;
> |    we then end up at the end of the second link where
> |    `org-element-lineage' returns the link, we go to the beginning of
> |    the link and return.
> | 
> |  - in the backward case, we end up at the beginning of each link in
> |    turn, in which case `org-element-lineage' returns a link, so both
> |    links are found.
> | 
> | So it may be that `org-element-context' should return a structure with
> | the link included when called at the end of the first link or it may
> | be that the search should back up one char in the forward case, before
> | calling org-context.
> `----
>
> This may be wrong but I did not have time to continue with it: I hope it's
> useful.

Fixed. Thank you.

Regards,

-- 
Nicolas Goaziou

Reply via email to