Nicolas Goaziou <m...@nicolasgoaziou.fr> writes: > Hello, > > stardiviner <numbch...@gmail.com> writes: > >> For example, I have following Org content: >> >> #+begin_src org ,*** TODO Figwheel [0/1] >> >> - [ ] https://www.youtube.com/watch?v=yUTxm29fjT4 :: I built a >> Figwheel-inspired, hot code reloading experience for Clojure, >> with an eye towards #datascience hacking. >> >> ,*** TODO Docker ClojureScript [0/3] >> >> - [ ] https://www.youtube.com/watch?v=yUTxm29fjT4 #+end_src >> >> When my point at beginning of buffer, then press {{{kbd(C-c C-x >> C-n)}}} , it does not jump to first link, it jump to second link >> instead. But when I jump backwards with {{{kbd(C-c C-x C-p)}}} >> works fine. > > I rewrote this functions some weeks ago. Please try again on master. >
I can reproduce the problem with very recent org. I did some debugging and here are my notes: ,---- | 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. -- Nick "There are only two hard problems in computer science: cache invalidation, naming things, and off-by-one errors." -Martin Fowler