Function: org-link-make-regexps

org-link-make-regexps is a byte-compiled function defined in ol.el.gz.

Signature

(org-link-make-regexps)

Documentation

Update the link regular expressions.

This should be called after the variable org-link-parameters has changed.

Aliases

org-make-link-regexps (obsolete since 9.3)

Source Code

;; Defined in /usr/src/emacs/lisp/org/ol.el.gz
(defun org-link-make-regexps ()
  "Update the link regular expressions.
This should be called after the variable `org-link-parameters' has changed."
  (let ((types-re (regexp-opt (org-link-types) t)))
    (setq org-link-types-re
	  (concat "\\`" types-re ":")
	  org-link-angle-re
	  (format "<%s:\\([^>\n]*\\(?:\n[ \t]*[^> \t\n][^>\n]*\\)*\\)>"
		  types-re)
	  org-link-plain-re
          (let* ((non-space-bracket "[^][ \t\n()<>]")
                 (parenthesis
		  `(seq (any "<([")
                        (0+ (or (regex ,non-space-bracket)
                                (seq (any "<([")
				     (0+ (regex ,non-space-bracket))
				     (any "])>"))))
                        (any "])>"))))
	    ;; Heuristics for an URL link inspired by
	    ;; https://daringfireball.net/2010/07/improved_regex_for_matching_urls
	    (rx-to-string
	     `(seq word-start
                   ;; Link type: match group 1.
		   (regexp ,types-re)
		   ":"
                   ;; Link path: match group 2.
                   (group
		    (1+ (or (regex ,non-space-bracket)
			    ,parenthesis))
		    (or (regexp "[^[:punct:] \t\n]")
                        ?/
                        ,parenthesis)))))
          org-link-bracket-re
          (rx (seq "[["
                   ;; URI part: match group 1.
                   (group
                    (one-or-more
                     (or (not (any "[]\\"))
			 (and "\\" (zero-or-more "\\\\") (any "[]"))
			 (and (one-or-more "\\") (not (any "[]"))))))
		   "]"
		   ;; Description (optional): match group 2.
		   (opt "[" (group (+? anything)) "]")
		   "]"))
	  org-link-any-re
	  (concat "\\(" org-link-bracket-re "\\)\\|\\("
		  org-link-angle-re "\\)\\|\\("
		  org-link-plain-re "\\)"))))