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
next prev 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).