emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Eric Schulte" <schulte.eric@gmail.com>
To: "Sébastien Vauban" <wxhgmqzgwmuf@spammotel.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Re: Fontification of blocks
Date: Thu, 03 Feb 2011 08:02:19 -0700	[thread overview]
Message-ID: <871v3pp3e3.fsf@gmail.com> (raw)
In-Reply-To: 80ei7q9is6.fsf@missioncriticalit.com

[-- Attachment #1: Type: text/plain, Size: 2417 bytes --]

Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes:

> Hi Eric(s), Dan & all,
>
> Sébastien Vauban wrote:
>> "Eric Schulte" wrote:
>>> I think that adding a new block delimiter face which inherits from the
>>> org-meta face as you've suggested is the way to go.
>>>
>>> I would recommend however that rather than removing/changing the
>>> org-meta-line, quote and verse delimiting faces to cover the entire line
>>> you simply add the org-block-begin/end-line face overtop of these existing
>>> faces. That way the default behavior is not changed by the patch, and users
>>> have more control over the final display.
>>>
>>> In fact rather than having the org-block-begin/end-line faces inherit
>>> from org-meta-line why not have them begin as empty faces.  Do you think
>>> this sounds like a good way to go?  If so would you mind submitting a
>>> patch which
>>> - doesn't remove existing faces but rather adds these new faces overtop
>>>   of them
>>> - includes of definition of the org-block-begin/end-line faces to empty
>>>   faces (otherwise the elisp compiler will warn of references to
>>>   undefined variables)
>>>
>>> Also, could you share an example code snippet which initializes the
>>> org-block-begin/end-line faces initialized (either here and/or on worg)?
>>
>> Here a proposition that goes in that direction -- not yet a real patch, but
>> something for you to have a look at. Should be easy to test, at least,
>> that's what I tried to achieve.
>
> Eric (Fraga), David (O'Toole) and Carsten, you should love the following...
> when in native fontification...
>
> #+TITLE:     Test file for future patch (for block fontification)
> #+DATE:      2011-02-02
> #+LANGUAGE:  en_US
>
> * Abstract
>
> This is the new code that I will supply as a patch. To test it, just
> evaluate the next source block, and please report any problem.
>
> What it does:
>
> - Add 2 faces for the lines delimiting the beginning and the end of
>   the source block
>
> - Fixes a tiny bug (affecting the begin delimiter line of source
>   blocks) when in "native" fontification (from Dan Davison)
>
> - NEW!! >>> Add a light yellow background in native mode!!! <<< NEW!!
>

Hi Seb,

Thanks for sharing this code.  I couldn't help myself but to turn it
into a patch as that has become my favorite way of reviewing new code.
The resulting patch it attached.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: seb-faces-for-org-blocks.patch --]
[-- Type: text/x-diff, Size: 2688 bytes --]

diff --git a/lisp/org-faces.el b/lisp/org-faces.el
index c237a0e..0cf5269 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -511,6 +511,16 @@ follows a #+DATE:, #+AUTHOR: or #+EMAIL: keyword."
   :group 'org-faces
   :version "22.1")
 
+
+(org-copy-face 'org-meta-line 'org-block-begin-line
+  "Face used for the line delimiting the begin of source blocks.")
+
+(org-copy-face 'org-meta-line 'org-block-begin-line
+  "Face used for the line delimiting the end of source blocks.")
+
+(defface org-block-background nil
+  "Face used for the source block background.")
+
 (defface org-verbatim
   (org-compatible-face 'shadow
     '((((class color grayscale) (min-colors 88) (background light))
diff --git a/lisp/org.el b/lisp/org.el
index 52de784..35da334 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -5141,21 +5141,24 @@ will be prompted for."
 	      (add-text-properties
 	       beg end
 	       '(font-lock-fontified t font-lock-multiline t))
-	      (add-text-properties beg beg1 '(face org-meta-line))
-	      (add-text-properties end1 (+ end 1) '(face org-meta-line))
-					; for end_src
 	      (cond
 	       ((and lang org-src-fontify-natively)
-		(org-src-font-lock-fontify-block lang block-start block-end))
+		(org-src-font-lock-fontify-block lang block-start block-end)
+                (overlay-put (make-overlay beg1 block-end)
+                             'face 'org-block-background))
 	       (quoting
-		(add-text-properties beg1 (+ end1 1) '(face
-						       org-block)))
+		(add-text-properties beg1 (+ end1 1) '(face org-block)))
 					; end of source block
 	       ((not org-fontify-quote-and-verse-blocks))
 	       ((string= block-type "quote")
-		(add-text-properties beg1 end1 '(face org-quote)))
+		(add-text-properties beg1 (1+ end1) '(face org-quote)))
 	       ((string= block-type "verse")
-		(add-text-properties beg1 end1 '(face org-verse))))
+		(add-text-properties beg1 (1+ end1) '(face org-verse))))
+	      (add-text-properties beg beg1 '(face org-meta-line))
+	      (add-text-properties beg beg1 '(face org-block-begin-line))
+	      (add-text-properties (1+ end) (1+ end1) '(face org-meta-line))
+	      (add-text-properties (1+ end) (1+ end1)
+				   '(face org-block-end-line))
 	      t))
 	   ((member dc1 '("title:" "author:" "email:" "date:"))
 	    (add-text-properties
@@ -5171,7 +5174,7 @@ will be prompted for."
 	   ((not (member (char-after beg) '(?\  ?\t)))
 	    ;; just any other in-buffer setting, but not indented
 	    (add-text-properties
-	     beg (match-end 0)
+	     beg (1+ (match-end 0))
 	     '(font-lock-fontified t face org-meta-line))
 	    t)
 	   ((or (member dc1 '("begin:" "end:" "caption:" "label:"

[-- Attachment #3: Type: text/plain, Size: 478 bytes --]


I noticed a couple of issues in the applied patch (possibly due to a
transcription error on my part).  Namely
- I believe your default faces only work for white backgrounds
- I didn't notice a change in background for the code blocks
- it seems that the #+end_src line is fontified but the #+begin_src line
  is not

An image of my Emacs after applying the patch is available at:
http://i.imgur.com/2eu3z.png

Thanks for sharing, I hope this feedback is helpful.

Best -- Eric

[-- Attachment #4: Type: text/plain, Size: 201 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

  parent reply	other threads:[~2011-02-03 15:02 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-10  9:02 Fontification of blocks Sébastien Vauban
2010-12-10 11:12 ` David O'Toole
2010-12-13 21:25   ` Sébastien Vauban
2010-12-22 13:36     ` Dan Davison
2010-12-22 14:46       ` Sébastien Vauban
2010-12-13 19:50 ` Eric Schulte
2010-12-13 20:46   ` Sébastien Vauban
2010-12-15 17:22     ` Eric Schulte
2011-02-01 21:04       ` Sébastien Vauban
2011-02-02  7:25         ` Eric S Fraga
2011-02-02 14:34         ` Dan Davison
2011-02-02 20:19           ` Sébastien Vauban
2011-02-07 12:54             ` Dan Davison
2011-02-07 19:55               ` Sébastien Vauban
2011-02-08 19:00                 ` Dan Davison
2011-02-08 20:14                   ` Sébastien Vauban
2011-02-09  8:40                     ` Dan Davison
2011-02-02 22:24         ` Sébastien Vauban
2011-02-02 22:46           ` Eric S Fraga
2011-02-03 15:02           ` Eric Schulte [this message]
2011-02-03 19:57             ` Sébastien Vauban
2011-02-03 20:05             ` Eric S Fraga
2011-02-03 20:44               ` Sébastien Vauban
2011-02-04  9:21                 ` Sébastien Vauban
2011-02-04 16:18                   ` Eric S Fraga
2011-02-04 20:50                   ` Eric Schulte
2011-02-06  8:52                     ` Sébastien Vauban

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=871v3pp3e3.fsf@gmail.com \
    --to=schulte.eric@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=wxhgmqzgwmuf@spammotel.com \
    /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).