Merge branch 'maint'
This commit is contained in:
commit
49b3d67ec3
|
@ -3492,7 +3492,7 @@ removed from the entry content. Currently only `planning' is allowed here."
|
|||
(insert txt)
|
||||
(when org-agenda-add-entry-text-descriptive-links
|
||||
(goto-char (point-min))
|
||||
(while (org-activate-bracket-links (point-max))
|
||||
(while (org-activate-links (point-max))
|
||||
(add-text-properties (match-beginning 0) (match-end 0)
|
||||
'(face org-link))))
|
||||
(goto-char (point-min))
|
||||
|
@ -3734,11 +3734,7 @@ FILTER-ALIST is an alist of filters we need to apply when
|
|||
(let ((inhibit-read-only t))
|
||||
(goto-char (point-min))
|
||||
(save-excursion
|
||||
(while (org-activate-bracket-links (point-max))
|
||||
(add-text-properties (match-beginning 0) (match-end 0)
|
||||
'(face org-link))))
|
||||
(save-excursion
|
||||
(while (org-activate-plain-links (point-max))
|
||||
(while (org-activate-links (point-max))
|
||||
(add-text-properties (match-beginning 0) (match-end 0)
|
||||
'(face org-link))))
|
||||
(unless (eq org-agenda-remove-tags t)
|
||||
|
|
235
lisp/org.el
235
lisp/org.el
|
@ -5800,62 +5800,77 @@ prompted for."
|
|||
(defsubst org-rear-nonsticky-at (pos)
|
||||
(add-text-properties (1- pos) pos (list 'rear-nonsticky org-nonsticky-props)))
|
||||
|
||||
(defun org-activate-plain-links (limit)
|
||||
"Add link properties for plain links."
|
||||
(when (and (re-search-forward org-plain-link-re limit t)
|
||||
(not (org-in-src-block-p)))
|
||||
|
||||
(let* ((face (get-text-property (max (1- (match-beginning 0)) (point-min))
|
||||
'face))
|
||||
(link (match-string-no-properties 0))
|
||||
(type (match-string-no-properties 1))
|
||||
(path (match-string-no-properties 2))
|
||||
(link-start (match-beginning 0))
|
||||
(link-end (match-end 0))
|
||||
(link-face (org-link-get-parameter type :face))
|
||||
(help-echo (org-link-get-parameter type :help-echo))
|
||||
(htmlize-link (org-link-get-parameter type :htmlize-link))
|
||||
(activate-func (org-link-get-parameter type :activate-func)))
|
||||
(unless (if (consp face) (memq 'org-tag face) (eq 'org-tag face))
|
||||
(org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
|
||||
(add-text-properties (match-beginning 0) (match-end 0)
|
||||
(list
|
||||
'mouse-face (or (org-link-get-parameter type :mouse-face)
|
||||
'highlight)
|
||||
'face (cond
|
||||
;; A function that returns a face
|
||||
((functionp link-face)
|
||||
(funcall link-face path))
|
||||
;; a face
|
||||
((facep link-face)
|
||||
link-face)
|
||||
;; An anonymous face
|
||||
((consp link-face)
|
||||
link-face)
|
||||
;; default
|
||||
(t
|
||||
'org-link))
|
||||
'help-echo (cond
|
||||
((stringp help-echo)
|
||||
help-echo)
|
||||
((functionp help-echo)
|
||||
help-echo)
|
||||
(t
|
||||
(concat "LINK: "
|
||||
(save-match-data
|
||||
(org-link-unescape link)))))
|
||||
'htmlize-link (cond
|
||||
((functionp htmlize-link)
|
||||
(funcall htmlize-link path))
|
||||
(t
|
||||
`(:uri ,link)))
|
||||
'keymap (or (org-link-get-parameter type :keymap)
|
||||
org-mouse-map)
|
||||
'org-link-start (match-beginning 0)))
|
||||
(org-rear-nonsticky-at (match-end 0))
|
||||
(when activate-func
|
||||
(funcall activate-func link-start link-end path nil))
|
||||
t))))
|
||||
(defun org-activate-links (limit)
|
||||
"Add link properties to links.
|
||||
This includes angle, plain, and bracket links."
|
||||
(catch :exit
|
||||
(while (re-search-forward org-any-link-re limit t)
|
||||
(let* ((start (match-beginning 0))
|
||||
(end (match-end 0))
|
||||
(type (cond ((eq ?< (char-after start)) 'angle)
|
||||
((eq ?\[ (char-after (1+ start))) 'bracket)
|
||||
(t 'plain))))
|
||||
(when (and (memq type org-highlight-links)
|
||||
;; Do not confuse plain links with tags.
|
||||
(not (and (eq type 'plain)
|
||||
(let ((face (get-text-property
|
||||
(max (1- start) (point-min)) 'face)))
|
||||
(if (consp face) (memq 'org-tag face)
|
||||
(eq 'org-tag face))))))
|
||||
(let* ((link (pcase type ;extract URL part
|
||||
(`plain (match-string-no-properties 0))
|
||||
(`angle (buffer-substring-no-properties
|
||||
(1+ start) (1- end)))
|
||||
(_ (match-string-no-properties 2))))
|
||||
(path (save-match-data
|
||||
(and (string-match ":" link) ;remove type
|
||||
(substring link (match-end 0)))))
|
||||
(properties ;for link's visible part
|
||||
(list
|
||||
'face (pcase (org-link-get-parameter type :face)
|
||||
((and (pred functionp) face) (funcall face path))
|
||||
((and (pred facep) face) face)
|
||||
((and (pred consp) face) face) ;anonymous
|
||||
(_ 'org-link))
|
||||
'mouse-face (or (org-link-get-parameter type :mouse-face)
|
||||
'highlight)
|
||||
'keymap (or (org-link-get-parameter type :keymap)
|
||||
org-mouse-map)
|
||||
'help-echo (pcase (org-link-get-parameter type :help-echo)
|
||||
((and (pred stringp) echo) echo)
|
||||
((and (pred functionp) echo) echo)
|
||||
(_ (concat "LINK: "
|
||||
(save-match-data
|
||||
(org-link-unescape
|
||||
(org-link-expand-abbrev link))))))
|
||||
'htmlize-link (pcase (org-link-get-parameter type
|
||||
:htmlize-link)
|
||||
((and (pred functionp) f) (funcall f))
|
||||
(_ `(:uri ,link)))
|
||||
'font-lock-multiline t)))
|
||||
(org-remove-flyspell-overlays-in start end)
|
||||
(org-rear-nonsticky-at end)
|
||||
(if (not (eq 'bracket type))
|
||||
(add-text-properties start end properties)
|
||||
;; Handle invisible parts in bracket links.
|
||||
(remove-text-properties start end '(invisible nil))
|
||||
(let ((hidden
|
||||
(append `(invisible
|
||||
,(or (org-link-get-parameter type :display)
|
||||
'org-link))
|
||||
properties))
|
||||
(visible-start (or (match-beginning 4) (match-beginning 2)))
|
||||
(visible-end (or (match-end 4) (match-end 2))))
|
||||
(add-text-properties start visible-start hidden)
|
||||
(add-text-properties visible-start visible-end properties)
|
||||
(add-text-properties visible-end end hidden)
|
||||
(org-rear-nonsticky-at visible-start)
|
||||
(org-rear-nonsticky-at visible-end)))
|
||||
(let ((f (org-link-get-parameter type :activate-func)))
|
||||
(when (functionp f)
|
||||
(funcall f start end path (eq type 'bracket))))
|
||||
(throw :exit t))))) ;signal success
|
||||
nil))
|
||||
|
||||
(defun org-activate-code (limit)
|
||||
(when (re-search-forward "^[ \t]*\\(:\\(?: .*\\|$\\)\n?\\)" limit t)
|
||||
|
@ -6010,18 +6025,6 @@ by a #."
|
|||
(org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
|
||||
t))
|
||||
|
||||
(defun org-activate-angle-links (limit)
|
||||
"Add text properties for angle links."
|
||||
(when (and (re-search-forward org-angle-link-re limit t)
|
||||
(not (org-in-src-block-p)))
|
||||
(org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
|
||||
(add-text-properties (match-beginning 0) (match-end 0)
|
||||
(list 'mouse-face 'highlight
|
||||
'keymap org-mouse-map
|
||||
'font-lock-multiline t))
|
||||
(org-rear-nonsticky-at (match-end 0))
|
||||
t))
|
||||
|
||||
(defun org-activate-footnote-links (limit)
|
||||
"Add text properties for footnotes."
|
||||
(let ((fn (org-footnote-next-reference-or-definition limit)))
|
||||
|
@ -6045,96 +6048,6 @@ by a #."
|
|||
'font-lock-multiline t
|
||||
'face 'org-footnote))))))
|
||||
|
||||
(defun org-activate-bracket-links (limit)
|
||||
"Add text properties for bracketed links."
|
||||
(when (and (re-search-forward org-bracket-link-regexp limit t)
|
||||
(not (org-in-src-block-p)))
|
||||
(let* ((hl (save-match-data
|
||||
(org-link-expand-abbrev (match-string-no-properties 1))))
|
||||
(type (save-match-data
|
||||
(and (string-match org-plain-link-re hl)
|
||||
(match-string-no-properties 1 hl))))
|
||||
(path (save-match-data
|
||||
(and (string-match org-plain-link-re hl)
|
||||
(match-string-no-properties 2 hl))))
|
||||
(link-start (match-beginning 0))
|
||||
(link-end (match-end 0))
|
||||
(bracketp t)
|
||||
(help-echo (org-link-get-parameter type :help-echo))
|
||||
(help (cond
|
||||
((stringp help-echo)
|
||||
help-echo)
|
||||
((functionp help-echo)
|
||||
help-echo)
|
||||
(t
|
||||
(concat "LINK: "
|
||||
(save-match-data
|
||||
(org-link-unescape hl))))))
|
||||
(link-face (org-link-get-parameter type :face))
|
||||
(face (cond
|
||||
;; A function that returns a face
|
||||
((functionp link-face)
|
||||
(funcall link-face path))
|
||||
;; a face
|
||||
((facep link-face)
|
||||
link-face)
|
||||
;; An anonymous face
|
||||
((consp link-face)
|
||||
link-face)
|
||||
;; default
|
||||
(t
|
||||
'org-link)))
|
||||
(keymap (or (org-link-get-parameter type :keymap)
|
||||
org-mouse-map))
|
||||
(mouse-face (or (org-link-get-parameter type :mouse-face)
|
||||
'highlight))
|
||||
(htmlize (org-link-get-parameter type :htmlize-link))
|
||||
(htmlize-link (cond
|
||||
((functionp htmlize)
|
||||
(funcall htmlize))
|
||||
(t
|
||||
`(:uri ,(format "%s:%s" type path)))))
|
||||
(activate-func (org-link-get-parameter type :activate-func))
|
||||
;; invisible part
|
||||
(ip (list 'invisible (or
|
||||
(org-link-get-parameter type :display)
|
||||
'org-link)
|
||||
'face face
|
||||
'keymap keymap
|
||||
'mouse-face mouse-face
|
||||
'font-lock-multiline t
|
||||
'help-echo help
|
||||
'htmlize-link htmlize-link))
|
||||
;; visible part
|
||||
(vp (list 'keymap keymap
|
||||
'face face
|
||||
'mouse-face mouse-face
|
||||
'font-lock-multiline t
|
||||
'help-echo help
|
||||
'htmlize-link htmlize-link)))
|
||||
;; We need to remove the invisible property here. Table narrowing
|
||||
;; may have made some of this invisible.
|
||||
(org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
|
||||
(remove-text-properties (match-beginning 0) (match-end 0)
|
||||
'(invisible nil))
|
||||
(if (match-end 3)
|
||||
(progn
|
||||
(add-text-properties (match-beginning 0) (match-beginning 3) ip)
|
||||
(org-rear-nonsticky-at (match-beginning 3))
|
||||
(add-text-properties (match-beginning 3) (match-end 3) vp)
|
||||
(org-rear-nonsticky-at (match-end 3))
|
||||
(add-text-properties (match-end 3) (match-end 0) ip)
|
||||
(org-rear-nonsticky-at (match-end 0)))
|
||||
(add-text-properties (match-beginning 0) (match-beginning 1) ip)
|
||||
(org-rear-nonsticky-at (match-beginning 1))
|
||||
(add-text-properties (match-beginning 1) (match-end 1) vp)
|
||||
(org-rear-nonsticky-at (match-end 1))
|
||||
(add-text-properties (match-end 1) (match-end 0) ip)
|
||||
(org-rear-nonsticky-at (match-end 0)))
|
||||
(when activate-func
|
||||
(funcall activate-func link-start link-end path bracketp))
|
||||
t)))
|
||||
|
||||
(defun org-activate-dates (limit)
|
||||
"Add text properties for dates."
|
||||
(when (and (re-search-forward org-tsr-regexp-both limit t)
|
||||
|
@ -6401,11 +6314,9 @@ needs to be inserted at a specific position in the font-lock sequence.")
|
|||
(list org-property-re
|
||||
'(1 'org-special-keyword t)
|
||||
'(3 'org-property-value t))
|
||||
;; Links
|
||||
;; Link related fontification.
|
||||
'(org-activate-links)
|
||||
(when (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
|
||||
(when (memq 'angle lk) '(org-activate-angle-links (0 'org-link t)))
|
||||
(when (memq 'plain lk) '(org-activate-plain-links (0 'org-link)))
|
||||
(when (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link)))
|
||||
(when (memq 'radio lk) '(org-activate-target-links (1 'org-link t)))
|
||||
(when (memq 'date lk) '(org-activate-dates (0 'org-date t)))
|
||||
(when (memq 'footnote lk) '(org-activate-footnote-links))
|
||||
|
|
Loading…
Reference in New Issue