emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Clément Pit--Claudel" <clement.pit@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: Two small org-src patches
Date: Sun, 7 Aug 2016 15:22:07 -0400	[thread overview]
Message-ID: <4e9720cb-58b7-cf0f-2199-c6f0e877ab70@gmail.com> (raw)
In-Reply-To: <4355b0e5-1641-d01a-9c2f-9497f7cf48a0@gmail.com>


[-- Attachment #1.1.1: Type: text/plain, Size: 178 bytes --]

In 2016-08-07 15:16, Clément Pit--Claudel wrote:
> The two attached patches add this feature.

There was a small mistake in the first patch; I have reattached both of them.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1.2: 0001-Use-font-lock-append-text-property-to-apply-org-src-.patch --]
[-- Type: text/x-diff; name="0001-Use-font-lock-append-text-property-to-apply-org-src-.patch", Size: 2289 bytes --]

From 41263e53a58fe43a123e00b5ee2ce459f1b1274e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Pit--Claudel?= <clement.pitclaudel@live.com>
Date: Sun, 7 Aug 2016 14:59:05 -0400
Subject: [PATCH 1/2] Use font-lock-append-text-property to apply org-src faces

* lisp/org-src.el (org-src-font-lock-fontify-block): Replace anonymous
  faces with inheritance by lists of faces constructed by
  `font-lock-add-text-property`.  This properly deals with cases when
  the source buffer's `face' property is already a list.
---
 lisp/org-src.el | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/lisp/org-src.el b/lisp/org-src.el
index 892c52e..5906721 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -492,10 +492,7 @@ as `org-src-fontify-natively' is non-nil."
     (when (fboundp lang-mode)
       (let ((string (buffer-substring-no-properties start end))
 	    (modified (buffer-modified-p))
-	    (org-buffer (current-buffer))
-	    (block-faces (let ((face-name (intern (format "org-block-%s" lang))))
-			   (append (and (facep face-name) (list face-name))
-				   '(org-block)))))
+	    (org-buffer (current-buffer)))
 	(remove-text-properties start end '(face nil))
 	(with-current-buffer
 	    (get-buffer-create
@@ -509,14 +506,14 @@ as `org-src-fontify-natively' is non-nil."
 	    (while (setq next (next-single-property-change pos 'face))
 	      (let ((new-face (get-text-property pos 'face)))
 		(put-text-property
-		 (+ start (1- pos)) (1- (+ start next)) 'face
-		 (list :inherit (append (and new-face (list new-face))
-					block-faces))
+		 (+ start (1- pos)) (1- (+ start next)) 'face new-face
 		 org-buffer))
-	      (setq pos next))
-	    ;; Add the face to the remaining part of the text.
-	    (put-text-property (1- (+ start pos)) end 'face
-			       (list :inherit block-faces) org-buffer)))
+	      (setq pos next))))
+	;; Add org faces
+	(let ((face-name (intern (format "org-block-%s" lang))))
+	  (when (facep face-name)
+	    (font-lock-append-text-property start end 'face face-name))
+	  (font-lock-append-text-property start end 'face 'org-block))
 	(add-text-properties
 	 start end
 	 '(font-lock-fontified t fontified t font-lock-multiline t))
-- 
2.7.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1.3: 0002-Copy-all-font-lock-properties-in-org-src-not-just-fa.patch --]
[-- Type: text/x-diff; name="0002-Copy-all-font-lock-properties-in-org-src-not-just-fa.patch", Size: 1531 bytes --]

From f764ad7379a98ea31b9e492dfa5bd447a2135314 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Pit--Claudel?= <clement.pitclaudel@live.com>
Date: Sun, 7 Aug 2016 15:03:55 -0400
Subject: [PATCH 2/2] Copy all font-lock properties in org-src, not just face

* lisp/org-src (org-src-font-lock-fontify-block): Loop over
  `font-lock-extra-managed-props', thus copying other properties that
  might be applied using font-lock.  An example is composition, applied
  by `prettify-symbols-mode'.
---
 lisp/org-src.el | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lisp/org-src.el b/lisp/org-src.el
index 5906721..04f5f62 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -503,11 +503,12 @@ as `org-src-fontify-natively' is non-nil."
 	  (unless (eq major-mode lang-mode) (funcall lang-mode))
 	  (org-font-lock-ensure)
 	  (let ((pos (point-min)) next)
-	    (while (setq next (next-single-property-change pos 'face))
-	      (let ((new-face (get-text-property pos 'face)))
-		(put-text-property
-		 (+ start (1- pos)) (1- (+ start next)) 'face new-face
-		 org-buffer))
+	    (while (setq next (next-property-change pos))
+	      (dolist (prop (cons 'face font-lock-extra-managed-props))
+		(let ((new-prop (get-text-property pos prop)))
+		  (put-text-property
+		   (+ start (1- pos)) (1- (+ start next)) prop new-prop
+		   org-buffer)))
 	      (setq pos next))))
 	;; Add org faces
 	(let ((face-name (intern (format "org-block-%s" lang))))
-- 
2.7.4


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2016-08-07 19:22 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-07 19:16 Two small org-src patches Clément Pit--Claudel
2016-08-07 19:22 ` Clément Pit--Claudel [this message]
2016-08-08  9:06   ` Nicolas Goaziou
2016-08-08 15:13     ` Clément Pit--Claudel
2016-08-08 16:54       ` Nicolas Goaziou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4e9720cb-58b7-cf0f-2199-c6f0e877ab70@gmail.com \
    --to=clement.pit@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).