From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: coderef does not provide file path for org-insert-link when not in original buffre Date: Thu, 01 Nov 2018 18:39:32 +0100 Message-ID: <874ld0d7e3.fsf@nicolasgoaziou.fr> References: <87po1zvw9n.fsf@gmail.com> <87bmc1tb4s.fsf@nicolasgoaziou.fr> <87va6wk3ea.fsf@gmail.com> <875zysr0bb.fsf@nicolasgoaziou.fr> <875zxst5to.fsf@gmail.com> <87bm7gg06l.fsf@nicolasgoaziou.fr> <87zhv0p07b.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42431) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIGwp-00082k-Hd for emacs-orgmode@gnu.org; Thu, 01 Nov 2018 13:40:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIGwe-0004Sf-Ek for emacs-orgmode@gnu.org; Thu, 01 Nov 2018 13:39:55 -0400 Received: from relay6-d.mail.gandi.net ([217.70.183.198]:59711) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gIGwd-0004Nc-L7 for emacs-orgmode@gnu.org; Thu, 01 Nov 2018 13:39:47 -0400 In-Reply-To: <87zhv0p07b.fsf@gmail.com> (stardiviner's message of "Sat, 27 Oct 2018 10:55:52 +0800") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: stardiviner Cc: org-mode Hello, stardiviner writes: > I regenerated the patch. Thank you. Some more comments. > * org-src.el (org-src-source-file): Add a variable to get the file path > at the beginning of the function `org-src--edit-element'. > * org.el (org-insert-link): support option org-link-file-path-type > 'adaptive value. > --- > 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 > @@ -277,6 +277,11 @@ issued in the language major mode buffer." > "Type of element being edited, as a symbol.") > (put 'org-src--source-type 'permanent-local t) > > +(defvar org-src--source-file nil > + "A variable used to store the source file path before entering > + source block dedicated buffer.") > +(put 'org-src--source-file 'permanent-local t) The first sentence of a docstring needs to be one or more complete sentences. Why not using `defvar-local' instead? Also, since it is meant to be used in other libraries, it should be `org-src-source-file'. > + (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. 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? > (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, -- Nicolas Goaziou