Nicolas Goaziou <m...@nicolasgoaziou.fr> writes:
>> --- >> lisp/org-src.el | 9 ++++++++- >> lisp/org.el | 9 ++++++--- >> 2 files changed, 14 insertions(+), 4 deletions(-) >> >> diff --git a/lisp/org-src.el b/lisp/org-src.el >> index 42e1225ed..0426ff96a 100644 >> --- a/lisp/org-src.el >> +++ b/lisp/org-src.el > > Why not using `defvar-local' instead? Also, since it is meant to be used > in other libraries, it should be `org-src-source-file'. Because the variable `org-src-source-file' is a bridge to pass info between two buffers "source buffer" and source block opened "dedicated buffer". So this variable must be global. Otherwise the "dedicated buffer" can't read it. > >> + (lang-f (progn >> + (setq-local org-src--source-file (buffer-file-name)) >> + (and (eq type 'src-block) (org-src--get-lang-mode lang)))) > > I don't think this is the right place to set `org-src--source-file': it > is unrelated to LANG-F. > I tried this: #+begin_src diff @@ -1000,9 +1000,11 @@ name of the sub-editing buffer." (let* ((lang (if (eq type 'src-block) (org-element-property :language element) "example")) - (lang-f (progn - (setq-local org-src--source-file (buffer-file-name)) - (and (eq type 'src-block) (org-src--get-lang-mode lang)))) + (lang-f (and (eq type 'src-block) (org-src--get-lang-mode lang))) + (org-src-source-file (buffer-file-name)) + (initialize (lambda () + (setq org-src-source-file (buffer-file-name)) + (funcall lang-f))) (babel-info (and (eq type 'src-block) (org-babel-get-src-block-info 'light))) deactivate-mark) #+end_src Put it into initialize function. This is the best way I can come up with. > Also, the value comes from the source buffer, but the variable needs to > be set in the edit buffer. AFAIU, here you set it in the source buffer, > not in the edit buffer. > >> + (insert (format coderef-format label)) >> + (setq link (format "file:%s::%s" >> + org-src--source-file >> + (concat "(" label ")"))) > > Should we check if `org-src-source-file' is the same as the current > file, and offer a simplified link in this case? Don't know which part you mean, I just insert the source file path into the link. About the final link is modified by bellowing `org-link-file-path-type' variable. > >> (setq desc nil))) >> (t (setq link nil))))) >> >> @@ -9852,6 +9853,8 @@ Use TAB to complete link prefixes, then RET for >> type-specific completion support >> (setq path (expand-file-name path))) >> ((eq org-link-file-path-type 'relative) >> (setq path (file-relative-name path))) >> + ((eq org-link-file-path-type 'adaptive) >> + (setq path (file-relative-name path))) >> (t >> (save-match-data >> (if (string-match (concat "^" (regexp-quote > > Would you writing a few tests? > > Thank you. > > Regards, -- [ stardiviner ] I try to make every word tell the meaning what I want to express. Blog: https://stardiviner.github.io/ IRC(freenode): stardiviner, Matrix: stardiviner GPG: F09F650D7D674819892591401B5DF1C95AE89AC3