emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: stardiviner <numbchild@gmail.com>
Cc: org-mode <emacs-orgmode@gnu.org>
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	[thread overview]
Message-ID: <874ld0d7e3.fsf@nicolasgoaziou.fr> (raw)
In-Reply-To: <87zhv0p07b.fsf@gmail.com> (stardiviner's message of "Sat, 27 Oct 2018 10:55:52 +0800")

Hello,

stardiviner <numbchild@gmail.com> 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

  reply	other threads:[~2018-11-01 17:40 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-14  1:52 coderef does not provide file path for org-insert-link when not in original buffre stardiviner
2018-06-23 22:02 ` Nicolas Goaziou
2018-06-24  9:10   ` stardiviner
2018-09-23  8:46   ` stardiviner
     [not found]     ` <875zysr0bb.fsf@nicolasgoaziou.fr>
2018-10-24  2:51       ` stardiviner
2018-10-26 16:08         ` Nicolas Goaziou
2018-10-27  2:55           ` stardiviner
2018-11-01 17:39             ` Nicolas Goaziou [this message]
2018-11-02  6:15               ` stardiviner
2018-11-04 15:47                 ` Nicolas Goaziou
2018-11-06  4:48                   ` stardiviner
2018-11-06  4:48                   ` [SOLVED] " stardiviner
2018-10-31  5:16           ` stardiviner
  -- strict thread matches above, loose matches on Subject: below --
2018-09-26 13:18 Nicolas Goaziou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874ld0d7e3.fsf@nicolasgoaziou.fr \
    --to=mail@nicolasgoaziou.fr \
    --cc=emacs-orgmode@gnu.org \
    --cc=numbchild@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).