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.


Reply via email to