On 13/08/2022 13:42, Ihor Radchenko wrote:
Max Nikulin writes:
+ (bare (and (string-match org-link-bracket-re l)
+ (match-string 1 l))))
+ (when bare
+ (if (and org-babel-tangle-use-relative-file-links
+ (string-match org-link-types-re bare)
+ (string= (match-string 1 bare) "file"))
It looks like (string-prefix-p "file:" bare) but without the complex
regexp. I see, such code was used before. By the way, why it is "bare",
not e.g. "target"?
match-end is used later in the code. Thus, string-match is justified.
The matched string is always "file:", so there is no actual point in
`string-match'. It does not really matter however.
(let ((params '((:tangle . "/home/user/file.el")))
(type "file:")
(target "file:///dev/null"))
(if (and target
org-babel-tangle-use-relative-file-links
(string-prefix-p type target))
(concat type
(file-relative-name
(substring target (length type))
(file-name-directory (alist-get :tangle params))))
target))
In the code existed before and moved by the committed patch I do not
like that "then" branch of the `if' form uses side effect of evaluation
of the condition.