I like it. This is a great little piece of work. Thanks a lot.
Scot
On Fri, Mar 26, 2010 at 3:34 AM, Dan Davison
<davi...@stats.ox.ac.uk> wrote:
Carsten, Scot --
Scot Becker <scot.bec...@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.
OK, I understand that suddenly-disappearing text might be
confusing. My
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
As sexy as it is, really hiding the
markup is a fair break from most (all?) of 'standard' org mode,
Right, apart from links I guess. Org users are used to sudden
hiding
behaviour on their part.
[...]
On Wed, Mar 24, 2010 at 2:52 PM, Carsten Dominik <
carsten.domi...@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.
In addition to the new faces, I've introduced a new variable
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.el
index e336b3c..fc80e82 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -59,6 +59,19 @@ The foreground color of this face should be
equal to the
background
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
:version "22.1")
+(defface org-document-title
+ '((((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 document title, i.e. that which follows the #
+TITLE: keyword."
+ :group 'org-faces)
+
+(defface org-document-author
+ '((((class color) (background light)) (:foreground "midnight
blue"))
+ (((class color) (background dark)) (:foreground "steel
blue")))
+ "Face for document author, i.e. that which follows the #
+AUTHOR:
keyword."
+ :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.")
+
(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 dad8649..4410f46 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -2975,6 +2975,17 @@ lines to the buffer:
: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")
(add-text-properties beg1 end1 '(face org-verse))))
t))
+ ((equal dc1 "title:")
+ (add-text-properties
+ beg (match-end 3)
+ (if (member 'title org-hidden-keywords)
+ '(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
+ beg (match-end 3)
+ (if (member 'author org-hidden-keywords)
+ '(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
+ beg (match-end 3)
+ (if (member 'email org-hidden-keywords)
+ '(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
+ beg (match-end 3)
+ (if (member 'date org-hidden-keywords)
+ '(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 <davi...@stats.ox.ac.uk> writes:
Carsten Dominik <carsten.domi...@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 <davi...@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