From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Kitchin Subject: patch for custom colored links in org-mode Date: Sun, 26 Jun 2016 09:35:59 -0400 Message-ID: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bHAEL-000850-CG for emacs-orgmode@gnu.org; Sun, 26 Jun 2016 09:36:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bHAEF-0002XY-Bs for emacs-orgmode@gnu.org; Sun, 26 Jun 2016 09:36:08 -0400 Received: from mail-qk0-x22e.google.com ([2607:f8b0:400d:c09::22e]:34331) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bHAEF-0002XU-6h for emacs-orgmode@gnu.org; Sun, 26 Jun 2016 09:36:03 -0400 Received: by mail-qk0-x22e.google.com with SMTP id t127so185272966qkf.1 for ; Sun, 26 Jun 2016 06:36:02 -0700 (PDT) Received: from Johns-MacBook-Air.local (c-67-171-67-30.hsd1.pa.comcast.net. [67.171.67.30]) by smtp.gmail.com with ESMTPSA id x136sm871287qkb.32.2016.06.26.06.36.00 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Jun 2016 06:36:00 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: org mode Hi all, I tried this aproach to enable custom colored links in org-mode if an org-link-type face is defined. If no face is applied, then it just gets the default org-link face For example this will make all doi links red. (defface org-link-doi `((t (:inherit org-link :foreground "red"))) "Color for doi links.") It seems to work pretty well for me. What do you think about making this a feature in org-mode? diff --git a/lisp/org.el b/lisp/org.el index af68539..f1c500d 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -5851,14 +5851,19 @@ prompted for." "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 (org-match-string-no-properties 0))) + (let* ((face (get-text-property (max (1- (match-beginning 0)) (point-min)) + 'face)) + (link (org-match-string-no-properties 0)) + (type (org-match-string-no-properties 1)) + (link-face-symbol (intern (format "org-link-%s" type))) + (link-face (if (facep link-face-symbol) + link-face-symbol + 'org-link))) (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 'highlight - 'face 'org-link + 'face link-face 'htmlize-link `(:uri ,link) 'keymap org-mouse-map)) (org-rear-nonsticky-at (match-end 0)) @@ -6340,8 +6345,8 @@ needs to be inserted at a specific position in the font-lock sequence.") ;; Links (if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend))) (if (memq 'angle lk) '(org-activate-angle-links (0 'org-link t))) - (if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t))) - (if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t))) + (if (memq 'plain lk) '(org-activate-plain-links (0 'org-link))) + (if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link))) (if (memq 'radio lk) '(org-activate-target-links (1 'org-link t))) (if (memq 'date lk) '(org-activate-dates (0 'org-date t))) (if (memq 'footnote lk) '(org-activate-footnote-links)) -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu