I like it. This is a great little piece of work. Thanks a lot.
Scot
Carsten, Scot --
OK, I understand that suddenly-disappearing text might be confusing. My
Scot Becker <scot.becker@gmail.com> writes:
> Or what about---in the spirit of the 'hidden' outline stars---the option to set
> "#+TITLE:" and friends in a 'barely visible' color, and in the 'standard' font
> of the document, if that's possible.
intention was to help in the current efforts to avoid making org seem
too "technical" to people coming from more mainstream software, by
providing a clean document title. But OK, so magical hiding off by
default. Scot's suggestion seems like a good intermediate
position. Below is a new version of the patch which follows that. I
resisted the temptation to go crazy with the "barely visible"-ness, just
the same as other dimmed text in org (archived, code, etc). An image is
at
http://www.princeton.edu/~ddavison/org-faces/Default-MidnightBlue-DimmedKeywords.png
Right, apart from links I guess. Org users are used to sudden hiding
> As sexy as it is, really hiding the
> markup is a fair break from most (all?) of 'standard' org mode,
behaviour on their part.
[...]
In addition to the new faces, I've introduced a new variable
> On Wed, Mar 24, 2010 at 2:52 PM, Carsten Dominik <carsten.dominik@gmail.com>
> wrote:
>
> Hi Dan,
>
> I think the patch is almost good. I do like the larger face
> for the title, and I know that some themes also use larger faces
> for headlines.
>
> But I think we at least need a variable
> governing if the keyword will be made invisible or not.
org-hidden-keywords which is a list of special keywords to hide, with a
customise interface. At the moment that allows for hiding
of #+TITLE, #+AUTHOR, #+DATE and #+EMAIL. By default all hiding is off.
Dan
--8<---------------cut here---------------start------------->8---
diff --git a/lisp/org-faces.el b/lisp/org-faces.elindex e336b3c..fc80e82 100644
--- a/lisp/org-faces.el@@ -59,6 +59,19 @@ The foreground color of this face should be equal to the background
+++ b/lisp/org-faces.el
color of the frame."
:group 'org-faces)
+(defface org-dim ; similar to shadow
+ (org-compatible-face 'shadow
+ '((((class color grayscale) (min-colors 88) (background light))+ (:foreground "grey50"))
+ (((class color grayscale) (min-colors 88) (background dark))
+ (:foreground "grey70"))
+ (((class color) (min-colors 8) (background light))
+ (:foreground "green"))
+ (((class color) (min-colors 8) (background dark))
+ (:foreground "yellow"))))
+ "Face used to de-emphasise text by dimming."
+ :group 'org-faces)
+
(defface org-level-1 ;; originally copied from font-lock-function-name-face
(org-compatible-face 'outline-1
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
@@ -468,6 +481,41 @@ changes."
:group 'org-faces+(defface org-document-title
:version "22.1")
+ '((((class color) (background light)) (:foreground "midnight blue" :weight bold :height 1.44))+ "Face for document title, i.e. that which follows the #+TITLE: keyword."
+ (((class color) (background dark)) (:foreground "steel blue" :weight bold :height 1.44))
+ (t (:weight bold :height 1.44)))
+ :group 'org-faces)
+
+(defface org-document-author
+ '((((class color) (background light)) (:foreground "midnight blue"))+ "Face for document author, i.e. that which follows the #+AUTHOR: keyword."
+ (((class color) (background dark)) (:foreground "steel blue")))
+ :group 'org-faces)
+
+(defface org-document-email
+ (org-compatible-face 'org-document-author '((t nil)))
+ "Face for document email, i.e. that which follows the #+EMAIL: keyword."
+ :group 'org-faces)
+
+(defface org-document-date
+ (org-compatible-face 'org-document-author '((t nil)))
+ "Face for document date, i.e. that which follows the #+DATE: keyword."
+ :group 'org-faces)
+
+(org-copy-face 'org-dim 'org-document-title-keyword
+ "Face for #+TITLE: keyword.")
+
+(org-copy-face 'org-dim 'org-document-author-keyword
+ "Face for #+AUTHOR: keyword.")
+
+(org-copy-face 'org-dim 'org-document-email-keyword
+ "Face for #+EMAIL: keyword.")
+
+(org-copy-face 'org-dim 'org-document-date-keyword
+ "Face for #+DATE: keyword.")
+index dad8649..4410f46 100644
(defface org-block
(org-compatible-face 'shadow
'((((class color grayscale) (min-colors 88) (background light))
diff --git a/lisp/org.el b/lisp/org.el
--- a/lisp/org.el@@ -2975,6 +2975,17 @@ lines to the buffer:
+++ b/lisp/org.el
:group 'org-font-lock
:type 'boolean)
+(defcustom org-hidden-keywords nil
+ "List of keywords that should be hidden when typed in the org buffer.
+For example, add #+TITLE to this list in order to make the
+document title appear in the buffer without the initial #+TITLE
+keyword."
+ :group 'org-font-lock
+ :type '(set (const :tag "#+AUTHOR" author)
+ (const :tag "#+DATE" date)
+ (const :tag "#+EMAIL" email)
+ (const :tag "#+TITLE" title)))
+
(defcustom org-fontify-done-headline nil
"Non-nil means change the face of a headline if it is marked DONE.
Normally, only the TODO/DONE keyword indicates the state of a headline.
@@ -4681,6 +4692,42 @@ will be prompted for."
((string= block-type "verse")+ (if (member 'title org-hidden-keywords)
(add-text-properties beg1 end1 '(face org-verse))))
t))
+ ((equal dc1 "title:")
+ (add-text-properties
+ beg (match-end 3)
+ '(font-lock-fontified t invisible t)
+ '(font-lock-fontified t face org-document-title-keyword)))
+ (add-text-properties
+ (match-beginning 6) (match-end 6)+ '(font-lock-fontified t face org-document-title)))
+ ((equal dc1 "author:")
+ (add-text-properties+ (if (member 'author org-hidden-keywords)
+ beg (match-end 3)
+ '(font-lock-fontified t invisible t)
+ '(font-lock-fontified t face org-document-author-keyword)))
+ (add-text-properties
+ (match-beginning 6) (match-end 6)+ '(font-lock-fontified t face org-document-author)))
+ ((equal dc1 "email:")
+ (add-text-properties+ (if (member 'email org-hidden-keywords)
+ beg (match-end 3)
+ '(font-lock-fontified t invisible t)
+ '(font-lock-fontified t face org-document-email-keyword)))
+ (add-text-properties
+ (match-beginning 6) (match-end 6)+ '(font-lock-fontified t face org-document-email)))
+ ((equal dc1 "date:")
+ (add-text-properties+ (if (member 'date org-hidden-keywords)
+ beg (match-end 3)
+ '(font-lock-fontified t invisible t)
+ '(font-lock-fontified t face org-document-date-keyword)))
+ (add-text-properties
+ (match-beginning 6) (match-end 6)+ '(font-lock-fontified t face org-document-date)))
((not (member (char-after beg) '(?\ ?\t)))
;; just any other in-buffer setting, but not indented
(add-text-properties
--8<---------------cut here---------------end--------------->8---
> If you type "#+email:", for example, that string does disappear
> without a trace, and that is very confusing. In fact, my preference
> would be to not make the keyword invisible.
>
> Thanks
>
> - Carsten
>
>
> On Mar 22, 2010, at 2:24 AM, Dan Davison wrote:
>
>
> Dan Davison <davison@stats.ox.ac.uk> writes:
>
>
> Carsten Dominik <carsten.dominik@gmail.com> writes:
>
>
> On Mar 16, 2010, at 5:25 PM, Dan Davison wrote:
>
>
> Might it be worth considering a special display for the #
> +title line
> in
> org buffers?
>
> Currently it is easy for the title to get buried among more
> technical
> configuration lines like #+options, #+startup, #+seq_toto
> etc. One can
> take the approach of leaving #+title at the top of the
> document, and
> moving the other config lines elesewhere, but even so I am
> wondering
> whether anyone else is attracted by the idea of providing
> an org-title
> display property that would hide the #+title: component,
> and use an
> appropriate face for the title text.
>
> In some ways, the current state gives the impression that
> the title is
> something which becomes important during export, but is not
> really a
> key
> component of document when it is being viewed in emacs. For
> example, I
> expect others are familiar with the experience of exporting
> an org
> file
> without a title, finding that the first heading has been
> used as a
> title, and then going back to add in the title as an
> afterthought. But a
> title is an important part of a document, and I thought
> perhaps a
> special title display would help to make the title more of
> a first
> class
> citizen in org buffers?
>
>
> Hi Dan,
>
> I agree. Maybe he same should be true for DATE and AUTHOR,
> maybe EMAIL?
>
> Would you like to make a patch for this, introducing a new face
> and applying it to these constructs?
>
>
> I've made a proposed patch (below). This involved making a few
> decisions
> about appearance -- it would be great to get other peoples' views and
> alternative proposals.
>
> At the risk of stating the obvious, I think we should ask the question
> "What might attract new users to org-mode most?", rather than query our
> personal preferences (because we can all change it ourselves or fire
> off
> an email to this list asking how).
>
> Here's my main proposal (corresponding to the patch below). Note that
> in
> the first 4 lines the #+TITLE: and #+AUTHOR: etc bits are still there,
> but invisible.
>
> [I've also put the screenshots at http://www.princeton.edu/~ddavison/
> org-faces/]
>
> [Default-MidnightBlue.png]
>
> <Default-MidnightBlue.png>
> The main issue then is that I'm suggesting making the title face larger
> than the other faces. This would be the only large face in org-mode,
> but
> I thought that it was appropriate for the title. Here's a version
> without the large title face:
>
> [Default-MidnightBlue-NoBigTitle.png]
>
> <Default-MidnightBlue-NoBigTitle.png>
> As for the colours, here's an alternative:
>
> [Default-DarkSlateGrey.png]
>
> <Default-DarkSlateGrey.png>
> The important thing is the default emacs colour theme shown above, but
> I
> did pick a colour for dark backgrounds. For what it's worth, here is
> what it looks like with (the excellent) color-theme-charcoal-black:
>
> [CharcoalBlack-SteelBlue.png]
>
> <CharcoalBlack-SteelBlue.png>
> Here's the patch. If anyone wants to play around, it's pretty obvious
> in
> the patch below where to change the colours (and boldness and
> height). Don't forget the functions list-colors-display and
> list-faces-display.
>
> There's at least one issue with the patch: if you leave a space between
> e.g. '#+TITLE:' and the start of the title text, then that space will
> not be made invisible and so will appear at the start of the title. I
> couldn't see how to avoid that without altering one of the key
> font-lock
> regexps.
>
> Dan
>
> --8<---------------cut here---------------start------------->8---
> commit 72aa791ea0bf613d50b9bf88affd6a53e91c1ebe
> Author: Dan Davison <davison@stats.ox.ac.uk>
> Date: Sun Mar 21 20:26:02 2010 -0400
>
> Alter display of title, author, email and date lines.
>
> For each of #+TITLE:, #+AUTHOR:, #+EMAIL:, #+DATE:, the
> initial #+KEYWORD: part is hidden and the following new
> faces are applied to the remaining visible part:
>
> org-title-line
> org-author-line
> org-email-line
> org-date-line
>
> diff --git a/lisp/org-faces.el b/lisp/org-faces.el
> index e336b3c..ebc9596 100644
> --- a/lisp/org-faces.el
> +++ b/lisp/org-faces.el
> @@ -468,6 +468,25 @@ changes."
> :group 'org-faces
> :version "22.1")
>
> +(defface org-title-line
> + '((((class color) (background light)) (:foreground "midnight blue"
> :weight bold :height 1.44))
> + (((class color) (background dark)) (:foreground "steel blue"
> :weight bold :height 1.44))
> + (t (:weight bold :height 1.44)))
> + "Face for #+TITLE: line."
> + :group 'org-faces)
> +
> +(defface org-author-line
> + '((((class color) (background light)) (:foreground "midnight blue"))
> + (((class color) (background dark)) (:foreground "steel blue")))
> + "Face for #+AUTHOR: line."
> + :group 'org-faces)
> +
> +(org-copy-face 'org-author-line 'org-email-line
> + "Face for #+EMAIL: line.")
> +
> +(org-copy-face 'org-author-line 'org-date-line
> + "Face for #+DATE: line.")
> +
> (defface org-block
> (org-compatible-face 'shadow
> '((((class color grayscale) (min-colors 88) (background light))
> diff --git a/lisp/org.el b/lisp/org.el
> index b723528..17e3877 100644
> --- a/lisp/org.el
> +++ b/lisp/org.el
> @@ -4642,6 +4642,22 @@ will be prompted for."
> ((string= block-type "verse")
> (add-text-properties beg1 end1 '(face org-verse))))
> t))
> + ((equal dc1 "title:")
> + (add-text-properties beg (match-end 3) '
> (font-lock-fontified t invisible t))
> + (add-text-properties
> + (match-beginning 6) (match-end 6) '(font-lock-fontified t
> face org-title-line)))
> + ((equal dc1 "author:")
> + (add-text-properties beg (match-end 3) '
> (font-lock-fontified t invisible t))
> + (add-text-properties
> + (match-beginning 6) (match-end 6) '(font-lock-fontified t
> face org-author-line)))
> + ((equal dc1 "email:")
> + (add-text-properties beg (match-end 3) '
> (font-lock-fontified t invisible t))
> + (add-text-properties
> + (match-beginning 6) (match-end 6) '(font-lock-fontified t
> face org-email-line)))
> + ((equal dc1 "date:")
> + (add-text-properties beg (match-end 3) '
> (font-lock-fontified t invisible t))
> + (add-text-properties
> + (match-beginning 6) (match-end 6) '(font-lock-fontified t
> face org-date-line)))
> ((not (member (char-after beg) '(?\ ?\t)))
> ;; just any other in-buffer setting, but not indented
> (add-text-properties
> --8<---------------cut here---------------end--------------->8---
>
>
>
>
>
> OK, it's on my list.
>
> Dan
>
>
>
> - Carsten
>
>
>
> _______________________________________________
> 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
>
>
>
> _______________________________________________
> 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
>
>
> - Carsten
>
>
>
>
>
> _______________________________________________
> 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
>
>
> _______________________________________________
> 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