unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Customizing faces with `defcustom'
@ 2005-08-27 10:24 martin rudalics
  2005-08-28 15:11 ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-08-27 10:24 UTC (permalink / raw)


A number of customization groups like matching, view, ispell, ibuffer,
use `(defcustom ... :type 'face)' for customizing faces.  However, the
associated tags are not assgined a face like `custom-variable-tag'.  As
a consequence, the associated customization buffers become less
intelligible.

Is there any reason not to use `defface' in these cases?

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-08-27 10:24 Customizing faces with `defcustom' martin rudalics
@ 2005-08-28 15:11 ` Richard M. Stallman
  2005-08-30  5:55   ` martin rudalics
  0 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-08-28 15:11 UTC (permalink / raw)
  Cc: emacs-devel

    A number of customization groups like matching, view, ispell, ibuffer,
    use `(defcustom ... :type 'face)' for customizing faces.  

These are not faces, they are face-valued variables.

    However, the
    associated tags are not assgined a face like `custom-variable-tag'.

I don't understand that sentence at all, sorry.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-08-28 15:11 ` Richard M. Stallman
@ 2005-08-30  5:55   ` martin rudalics
  2005-09-01 15:53     ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-08-30  5:55 UTC (permalink / raw)
  Cc: emacs-devel

 >     However, the
 >     associated tags are not assgined a face like `custom-variable-tag'.
 >
 > I don't understand that sentence at all, sorry.
 >
 >

Consider, for example, the customization buffer for `matching':

(1) `match' stands out in `custom-face-tag-face', by default scaled by
     1.2 and bold.

(2) `list-matching-lines-default-context-lines' is highlighted in
     `custom-variable-tag-face', by default scaled by 1.2 and bold.

Then come the options

(3) `list-matching-lines-face' and
     `list-matching-lines-buffer-name-face' both in default face.

This makes it more difficult to spot the latter and makes you believe
that these options are part of the text explaining
`list-matching-lines-default-context-lines'.  Shouldn't it be possible
to give _all_ "tags" of custom - variables (including face-valued ones),
faces, groups - a similar appearance with respect to height, pitch, and
the like.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-08-30  5:55   ` martin rudalics
@ 2005-09-01 15:53     ` Richard M. Stallman
  2005-11-12  8:09       ` martin rudalics
  0 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-09-01 15:53 UTC (permalink / raw)
  Cc: Per Abrahamsen, emacs-devel

    Consider, for example, the customization buffer for `matching':

[Made by M-x customize-group RET matching RET]

    (1) `match' stands out in `custom-face-tag-face', by default scaled by
	 1.2 and bold.

    (2) `list-matching-lines-default-context-lines' is highlighted in
	 `custom-variable-tag-face', by default scaled by 1.2 and bold.


    Then come the options

    (3) `list-matching-lines-face' and
	 `list-matching-lines-buffer-name-face' both in default face.

That is a real bug.  These are variables, and their names should be
highlighted like all other variable names.

I think this is a consequence of the following definition for
widget type `face'.

    (define-widget 'face 'symbol
      "A Lisp face name (with sample)."
      :format "%t: (%{sample%}) %v"
      :tag "Face"
      :value 'default
      :sample-face-get 'widget-face-sample-face-get

I think that this :sample-face-get definition is affecting the
appearance of the variable's name.  The code in the definition of the
`face' widget was adapted from the `color' widget.  I tried this
example

    (defcustom foocolor "black"
      "Foo"
      :type 'color)

and saw the same problem occur.

I think it is a bug that the :sample-face-get of the type has an
effect on display of the variable name.  I would expect it to affect
only where the value is displayed.  But I have never understood the
widget code, so I have no idea how this happens.

Can anyone figure out how to fix that?

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-09-01 15:53     ` Richard M. Stallman
@ 2005-11-12  8:09       ` martin rudalics
  2005-11-13 20:54         ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-11-12  8:09 UTC (permalink / raw)
  Cc: Per Abrahamsen, emacs-devel

 >     Consider, for example, the customization buffer for `matching':
 >
 > [Made by M-x customize-group RET matching RET]
 >
 >     (1) `match' stands out in `custom-face-tag-face', by default scaled by
 > 	 1.2 and bold.
 >
 >     (2) `list-matching-lines-default-context-lines' is highlighted in
 > 	 `custom-variable-tag-face', by default scaled by 1.2 and bold.
 >
 >
 >     Then come the options
 >
 >     (3) `list-matching-lines-face' and
 > 	 `list-matching-lines-buffer-name-face' both in default face.
 >
 > That is a real bug.  These are variables, and their names should be
 > highlighted like all other variable names.
 >
 > I think this is a consequence of the following definition for
 > widget type `face'.
 >
 >     (define-widget 'face 'symbol
 >       "A Lisp face name (with sample)."
 >       :format "%t: (%{sample%}) %v"
 >       :tag "Face"
 >       :value 'default
 >       :sample-face-get 'widget-face-sample-face-get
 >
 > I think that this :sample-face-get definition is affecting the
 > appearance of the variable's name.  The code in the definition of the
 > `face' widget was adapted from the `color' widget.  I tried this
 > example
 >
 >     (defcustom foocolor "black"
 >       "Foo"
 >       :type 'color)
 >
 > and saw the same problem occur.
 >
 > I think it is a bug that the :sample-face-get of the type has an
 > effect on display of the variable name.  I would expect it to affect
 > only where the value is displayed.  But I have never understood the
 > widget code, so I have no idea how this happens.
 >
 > Can anyone figure out how to fix that?
 >


The solution appears deceptively simple:

*** cus-edit.el	Sat Nov  5 20:44:24 2005
--- cus-edit.el	Fri Nov 11 18:32:56 2005
***************
*** 3397,3403 ****

   (define-widget 'face 'symbol
     "A Lisp face name (with sample)."
!   :format "%t: (%{sample%}) %v"
     :tag "Face"
     :value 'default
     :sample-face-get 'widget-face-sample-face-get
--- 3397,3403 ----

   (define-widget 'face 'symbol
     "A Lisp face name (with sample)."
!   :format "%{%t%}: (%{sample%}) %v"
     :tag "Face"
     :value 'default
     :sample-face-get 'widget-face-sample-face-get

*** wid-edit.el	Sat Nov  5 20:44:42 2005
--- wid-edit.el	Fri Nov 11 18:34:24 2005
***************
*** 3575,3581 ****
   ;; Fixme: match
   (define-widget 'color 'editable-field
     "Choose a color name (with sample)."
!   :format "%t: %v (%{sample%})\n"
     :size 10
     :tag "Color"
     :value "black"
--- 3575,3581 ----
   ;; Fixme: match
   (define-widget 'color 'editable-field
     "Choose a color name (with sample)."
!   :format "%{%t%}: %v (%{sample%})\n"
     :size 10
     :tag "Color"
     :value "black"

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-12  8:09       ` martin rudalics
@ 2005-11-13 20:54         ` Richard M. Stallman
  2005-11-15  7:45           ` martin rudalics
                             ` (2 more replies)
  0 siblings, 3 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-11-13 20:54 UTC (permalink / raw)
  Cc: abraham, emacs-devel

I will install your fix in cus-edit.el and wid-edit.el
in a week or so if no one reports a problem with it.

Thanks for fixing it.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-13 20:54         ` Richard M. Stallman
@ 2005-11-15  7:45           ` martin rudalics
  2005-11-16 19:26           ` martin rudalics
  2005-11-30  2:44           ` Juri Linkov
  2 siblings, 0 replies; 51+ messages in thread
From: martin rudalics @ 2005-11-15  7:45 UTC (permalink / raw)
  Cc: abraham, emacs-devel

> I will install your fix in cus-edit.el and wid-edit.el
> in a week or so if no one reports a problem with it.
> 

There is one problem: When I now open a customization buffer for
`basic-faces' and attempt to show the face of `mode-line' I get a
"Lisp nesting exceeds `max-lisp-eval-depth'" error.  Increasing
`max-lisp-eval-depth' from 300 to 303 solves the problem for me.
Anyway such behavior does not appear reasonable.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-13 20:54         ` Richard M. Stallman
  2005-11-15  7:45           ` martin rudalics
@ 2005-11-16 19:26           ` martin rudalics
  2005-11-17 14:07             ` Richard M. Stallman
  2005-11-30  2:44           ` Juri Linkov
  2 siblings, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-11-16 19:26 UTC (permalink / raw)
  Cc: emacs-devel

The problem reported in my last mail is obviously not related to the
change.  I did not byte-compile `cus-edit'.  Opening a customization
buffer for `basic-faces' and attempting to show the face of `mode-line'
always gets me a "Lisp nesting exceeds `max-lisp-eval-depth'" provided
`cus-edit.el' is not byte-compiled.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-16 19:26           ` martin rudalics
@ 2005-11-17 14:07             ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-11-17 14:07 UTC (permalink / raw)
  Cc: emacs-devel

    The problem reported in my last mail is obviously not related to the
    change.  I did not byte-compile `cus-edit'.  Opening a customization
    buffer for `basic-faces' and attempting to show the face of `mode-line'
    always gets me a "Lisp nesting exceeds `max-lisp-eval-depth'" provided
    `cus-edit.el' is not byte-compiled.

Lots of programs would give this result if they were not compiled.
Don't worry about that.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-13 20:54         ` Richard M. Stallman
  2005-11-15  7:45           ` martin rudalics
  2005-11-16 19:26           ` martin rudalics
@ 2005-11-30  2:44           ` Juri Linkov
  2005-11-30  7:47             ` martin rudalics
  2005-11-30  9:15             ` Per Abrahamsen
  2 siblings, 2 replies; 51+ messages in thread
From: Juri Linkov @ 2005-11-30  2:44 UTC (permalink / raw)
  Cc: rudalics, abraham, emacs-devel

> I will install your fix in cus-edit.el and wid-edit.el
> in a week or so if no one reports a problem with it.

This patch fixed the appearance for most face options in the
Customization buffer, but not all.

In the customization group `cpp' there is one face that still is
displayed incorrectly:

cpp-known-face: Hide Value 'invisible
   State: STANDARD. (mismatch)

It seems the wrong appearance is caused by the invalid value of this
face variable.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-30  2:44           ` Juri Linkov
@ 2005-11-30  7:47             ` martin rudalics
  2005-11-30 13:27               ` Per Abrahamsen
  2005-11-30  9:15             ` Per Abrahamsen
  1 sibling, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-11-30  7:47 UTC (permalink / raw)
  Cc: emacs-devel, rms, abraham

 > In the customization group `cpp' there is one face that still is
 > displayed incorrectly:
 >
 > cpp-known-face: Hide Value 'invisible
 >    State: STANDARD. (mismatch)
 >
 > It seems the wrong appearance is caused by the invalid value of this
 > face variable.

It's not related to the earlier problem.  I see three possibilities to
handle this:

1. Defface `invisible'

2. Replace the reference to invisible by a reference to an existing face
    like, for example, `shadow'

3. Define a new face say `cpp-invisible' and use that instead

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-30  2:44           ` Juri Linkov
  2005-11-30  7:47             ` martin rudalics
@ 2005-11-30  9:15             ` Per Abrahamsen
  1 sibling, 0 replies; 51+ messages in thread
From: Per Abrahamsen @ 2005-11-30  9:15 UTC (permalink / raw)


The cpp "faces" can be either true faces, or the special keyword
"invisible". 

2005-11-30  Per Abrahamsen  <abraham@dina.kvl.dk>

	* progmodes/cpp.el (cpp-face): New widget.
	(cpp-known-face, cpp-unknown-face, cpp-edit-list): Use it.

*** cpp.el.~1.28.~	2003-10-24 15:35:06.000000000 +0200
--- cpp.el	2005-11-30 10:11:27.000000000 +0100
***************
*** 57,70 ****
    :type 'file
    :group 'cpp)
  
  (defcustom cpp-known-face 'invisible
    "*Face used for known cpp symbols."
!   :type 'face
    :group 'cpp)
  
  (defcustom cpp-unknown-face 'highlight
    "*Face used for unknown cpp symbols."
!   :type 'face
    :group 'cpp)
  
  (defcustom cpp-face-type 'light
--- 57,75 ----
    :type 'file
    :group 'cpp)
  
+ 
+ (define-widget 'cpp-face 'lazy
+   "Either a face or the special symbol 'invisible'."
+   :type '(choice (const invisible) (face)))
+ 
  (defcustom cpp-known-face 'invisible
    "*Face used for known cpp symbols."
!   :type 'cpp-face
    :group 'cpp)
  
  (defcustom cpp-unknown-face 'highlight
    "*Face used for unknown cpp symbols."
!   :type 'cpp-face
    :group 'cpp)
  
  (defcustom cpp-face-type 'light
***************
*** 93,102 ****
  1. Face used for text that is `ifdef' the macro.
  2. Face used for text that is `ifndef' the macro.
  3. t, nil, or `both' depending on what text may be edited."
!   :type '(repeat (list string face face
! 		       (choice (const t)
! 			       (const nil)
! 			       (const both))))
    :group 'cpp)
  
  (defvar cpp-overlay-list nil)
--- 98,109 ----
  1. Face used for text that is `ifdef' the macro.
  2. Face used for text that is `ifndef' the macro.
  3. t, nil, or `both' depending on what text may be edited."
!   :type '(repeat (list (string :tag "Macro") 
!                        (cpp-face :tag "True") 
!                        (cpp-face :tag "False")
! 		       (choice (const :tag "True branch writable" t)
! 			       (const :tag "false branch writeable" nil)
! 			       (const :tag "Both branches writeable" both))))
    :group 'cpp)
  
  (defvar cpp-overlay-list nil)

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-30  7:47             ` martin rudalics
@ 2005-11-30 13:27               ` Per Abrahamsen
  2005-11-30 15:33                 ` Juri Linkov
  2005-12-23 13:23                 ` martin rudalics
  0 siblings, 2 replies; 51+ messages in thread
From: Per Abrahamsen @ 2005-11-30 13:27 UTC (permalink / raw)
  Cc: Juri Linkov, rms, emacs-devel

martin rudalics <rudalics@gmx.at> writes:

> It's not related to the earlier problem.  I see three possibilities to
> handle this:

My patch should handle that.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-30 13:27               ` Per Abrahamsen
@ 2005-11-30 15:33                 ` Juri Linkov
  2005-12-23 13:23                 ` martin rudalics
  1 sibling, 0 replies; 51+ messages in thread
From: Juri Linkov @ 2005-11-30 15:33 UTC (permalink / raw)
  Cc: rudalics, rms, emacs-devel

>> It's not related to the earlier problem.  I see three possibilities to
>> handle this:
>
> My patch should handle that.

Since `invisible' is a special feature of cpp.el and it has nothing to do
with faces (i.e. it uses overlays to hide text blocks), then it seems
your patch is a better way to handle this than to use a fake face.

Your patch has one problem.  It changes the default values of elements
of `cpp-edit-list'.  Currently the default value is the face `default':

Cpp Edit List: Hide Value
INS DEL List:
            String: 
            Face: (sample) default
            Face: (sample) default
            Choice: Value Menu t

But your patch changes the default to the value `invisible':

Cpp Edit List: Hide Value
INS DEL List:
            Macro: 
            True: Choice: Value Menu invisible
            False: Choice: Value Menu invisible
            Choice: Value Menu True branch writable

I think it's better to keep old defaults.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-11-30 13:27               ` Per Abrahamsen
  2005-11-30 15:33                 ` Juri Linkov
@ 2005-12-23 13:23                 ` martin rudalics
  2005-12-24 20:14                   ` Juri Linkov
  1 sibling, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-12-23 13:23 UTC (permalink / raw)
  Cc: Juri Linkov, rms, emacs-devel

 > My patch should handle that.

It probably still needs some fixing:

cpp-face-default-list: Hide Value nil
    State: CHANGED outside Customize; operating on it here may be unreliable. (mismatch)

Alist of faces you can choose from for cpp conditionals. Hide Rest
Each element has the form (STRING . FACE), where STRING
serves as a name (for `cpp-highlight-buffer' only)
and FACE is either a face (a symbol)
or a cons cell (background-color . COLOR).


cpp-face-light-list: Hide Value
INS DEL Cons-cell:
             String: light gray
             Choice: Value Menu Cons-cell:
             background-color
             String: light gray
...
INS
    State: CHANGED outside Customize; operating on it here may be unreliable.

Alist of names and faces to be used for light backgrounds.


cpp-face-none-list: Hide Value
'(("default" . default)
   ("invisible" . invisible))
    State: STANDARD. (mismatch)

Alist of names and faces available even if you don't use a window system.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-23 13:23                 ` martin rudalics
@ 2005-12-24 20:14                   ` Juri Linkov
  2005-12-25 16:23                     ` martin rudalics
                                       ` (2 more replies)
  0 siblings, 3 replies; 51+ messages in thread
From: Juri Linkov @ 2005-12-24 20:14 UTC (permalink / raw)
  Cc: emacs-devel, abraham, rms

>> My patch should handle that.
>
> It probably still needs some fixing:
>
> cpp-face-default-list: Hide Value nil
>    State: CHANGED outside Customize; operating on it here may be unreliable. (mismatch)

Please note that there are more cases that need fixing.  All they can be
displayed in `emacs -Q' with `M-x customize-rogue RET'.

> cpp-face-none-list: Hide Value
> '(("default" . default)
>   ("invisible" . invisible))
>    State: STANDARD. (mismatch)

I want to remind also there are more mismatched face variables:

locate-header-face: Hide Value nil
   State: STANDARD. (mismatch)

delphi-other-face: Hide Value nil
   State: STANDARD. (mismatch)

...

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-24 20:14                   ` Juri Linkov
@ 2005-12-25 16:23                     ` martin rudalics
  2005-12-26  2:20                       ` Richard M. Stallman
  2005-12-25 19:07                     ` Richard M. Stallman
  2005-12-25 19:07                     ` Richard M. Stallman
  2 siblings, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-12-25 16:23 UTC (permalink / raw)
  Cc: emacs-devel, abraham, rms

 > I want to remind also there are more mismatched face variables:
 >
 > locate-header-face: Hide Value nil
 >    State: STANDARD. (mismatch)
 >
 > delphi-other-face: Hide Value nil
 >    State: STANDARD. (mismatch)
 >
 > ...
 >

Richard's last proposal (2005-09-12 `delphi-other-face mismatch') was:

 > In that case, maybe the `face' custom type should accept nil
 > as an alternative.  That way, the existing default for
 > delphi-other-face would be valid, it would still work the same
 > as now, and it would not require changing the :type spec.
 >
 > Does anyone see any problems with that?

That closed the thread then.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-24 20:14                   ` Juri Linkov
  2005-12-25 16:23                     ` martin rudalics
@ 2005-12-25 19:07                     ` Richard M. Stallman
  2005-12-25 19:07                     ` Richard M. Stallman
  2 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-25 19:07 UTC (permalink / raw)
  Cc: rudalics, abraham, emacs-devel

We don't have to fix all these rogue-by-default variables before the
release, but it would be nice to fix some more.

Meanwhile, this seems to fix cpp.el.  But it needs another fix,
because it doesn't know that some colors are available on ttys.


*** cpp.el	15 Dec 2005 20:52:23 -0500	1.33
--- cpp.el	25 Dec 2005 13:57:53 -0500	
***************
*** 189,195 ****
     '(("default" . default)
       ("invisible" . invisible))
     "Alist of names and faces available even if you don't use a window system."
!   :type '(repeat (cons string face))
    :group 'cpp)
  
  (defvar cpp-face-all-list
--- 189,195 ----
     '(("default" . default)
       ("invisible" . invisible))
     "Alist of names and faces available even if you don't use a window system."
!   :type '(repeat (cons string cpp-face))
    :group 'cpp)
  
  (defvar cpp-face-all-list

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-24 20:14                   ` Juri Linkov
  2005-12-25 16:23                     ` martin rudalics
  2005-12-25 19:07                     ` Richard M. Stallman
@ 2005-12-25 19:07                     ` Richard M. Stallman
  2005-12-26 16:37                       ` martin rudalics
  2005-12-27 19:04                       ` Juri Linkov
  2 siblings, 2 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-25 19:07 UTC (permalink / raw)
  Cc: rudalics, abraham, emacs-devel

    I want to remind also there are more mismatched face variables:

    locate-header-face: Hide Value nil
       State: STANDARD. (mismatch)

    delphi-other-face: Hide Value nil
       State: STANDARD. (mismatch)

I fixed those.  Which others are there?

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-25 16:23                     ` martin rudalics
@ 2005-12-26  2:20                       ` Richard M. Stallman
  2005-12-27 19:05                         ` Juri Linkov
  0 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-26  2:20 UTC (permalink / raw)
  Cc: juri, abraham, emacs-devel

     > In that case, maybe the `face' custom type should accept nil
     > as an alternative.  That way, the existing default for
     > delphi-other-face would be valid, it would still work the same
     > as now, and it would not require changing the :type spec.
     >
     > Does anyone see any problems with that?

    That closed the thread then.

We never did that, and I think we fixed other such problems by
adding nil as an explicit alternative, so I fixed these two in that
way also.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-25 19:07                     ` Richard M. Stallman
@ 2005-12-26 16:37                       ` martin rudalics
  2005-12-27  4:55                         ` Richard M. Stallman
  2005-12-27 19:04                       ` Juri Linkov
  1 sibling, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-12-26 16:37 UTC (permalink / raw)
  Cc: Juri Linkov, abraham, emacs-devel

 > I fixed those.  Which others are there?

The `makefile-shell' oddity

(defface makefile-shell
   ()
   ;;'((((class color) (min-colors 88) (background light)) (:background  "seashell1"))
   ;;  (((class color) (min-colors 88) (background dark)) (:background  "seashell4")))
   "Face to use for additionally highlighting Shell commands in Font-Lock mode."
   :group 'faces
   :group 'makefile
   :version "22.1")


Also I'd remove the makefile faces from the `faces' group - currently
they are the only progmode members to figure here - and move `button',
`show-paren-match', and `show-paren-mismatch' from `faces' to
`basic-faces'.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-26 16:37                       ` martin rudalics
@ 2005-12-27  4:55                         ` Richard M. Stallman
  2005-12-27 19:04                           ` Juri Linkov
  0 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-27  4:55 UTC (permalink / raw)
  Cc: juri, abraham, emacs-devel

    The `makefile-shell' oddity

    (defface makefile-shell
       ()
       ;;'((((class color) (min-colors 88) (background light)) (:background  "seashell1"))
       ;;  (((class color) (min-colors 88) (background dark)) (:background  "seashell4")))
       "Face to use for additionally highlighting Shell commands in Font-Lock mode."
       :group 'faces

It's not invalid, but it is not very useful.
We need someone who uses this mode to suggest what that
font should look like.  Is there some standard font-lock face
that would be good to inherit from, as a good default?

    Also I'd remove the makefile faces from the `faces' group - currently

I agree; I did that.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-27  4:55                         ` Richard M. Stallman
@ 2005-12-27 19:04                           ` Juri Linkov
  2005-12-28 10:04                             ` martin rudalics
  2005-12-28 17:01                             ` Richard M. Stallman
  0 siblings, 2 replies; 51+ messages in thread
From: Juri Linkov @ 2005-12-27 19:04 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

>     Also I'd remove the makefile faces from the `faces' group - currently
>
> I agree; I did that.

There is still the last face in the group `faces' that doesn't belong to
this group: `display-time-mail-face'.  Currently it is in two groups:
`faces' and `display-time'.  So we could remove it from `faces'.

However, there is another similar face that is used to highlight text in
the mode line: `Buffer-menu-buffer'.  We could create a new group
`modeline-faces' and add all modeline-related faces to this new group.
The faces that could be added to `modeline-faces' are:

Buffer-menu-buffer
display-time-mail-face
mode-line-highlight
mode-line-inactive
mode-line

Or alternatively, add `Buffer-menu-buffer' and `display-time-mail-face' to
the existing group `modeline' (where three latter faces from the list above
already belong to), and add the parent group `faces' to the group `modeline'.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-25 19:07                     ` Richard M. Stallman
  2005-12-26 16:37                       ` martin rudalics
@ 2005-12-27 19:04                       ` Juri Linkov
  2005-12-28 17:01                         ` Richard M. Stallman
  1 sibling, 1 reply; 51+ messages in thread
From: Juri Linkov @ 2005-12-27 19:04 UTC (permalink / raw)
  Cc: rudalics, abraham, emacs-devel

>     I want to remind also there are more mismatched face variables:
>
>     locate-header-face: Hide Value nil
>        State: STANDARD. (mismatch)
>
>     delphi-other-face: Hide Value nil
>        State: STANDARD. (mismatch)
>
> I fixed those.  Which others are there?

I can find only one other face that has the nil value by default.
It is `glasses-face'.  Currently it uses `:type 'symbol', so it
has no problem.  But it would be more appropriate to use `:type 'face'
and add nil as an explicit alternative.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-26  2:20                       ` Richard M. Stallman
@ 2005-12-27 19:05                         ` Juri Linkov
  2005-12-28 17:01                           ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: Juri Linkov @ 2005-12-27 19:05 UTC (permalink / raw)
  Cc: rudalics, abraham, emacs-devel

>      > In that case, maybe the `face' custom type should accept nil
>      > as an alternative.  That way, the existing default for
>      > delphi-other-face would be valid, it would still work the same
>      > as now, and it would not require changing the :type spec.
>      >
>      > Does anyone see any problems with that?
>
>     That closed the thread then.
>
> We never did that, and I think we fixed other such problems by
> adding nil as an explicit alternative, so I fixed these two in that
> way also.

Other such cases also use a tag like "Default" or "None" for the nil face
value, because displaying "nil" in the customization buffer is not
user-friendly.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-27 19:04                           ` Juri Linkov
@ 2005-12-28 10:04                             ` martin rudalics
  2005-12-28 15:57                               ` Juri Linkov
                                                 ` (2 more replies)
  2005-12-28 17:01                             ` Richard M. Stallman
  1 sibling, 3 replies; 51+ messages in thread
From: martin rudalics @ 2005-12-28 10:04 UTC (permalink / raw)
  Cc: rms, emacs-devel

 > However, there is another similar face that is used to highlight text in
 > the mode line: `Buffer-menu-buffer'.  We could create a new group
 > `modeline-faces' and add all modeline-related faces to this new group.
 > The faces that could be added to `modeline-faces' are:
 >
 > Buffer-menu-buffer
 > display-time-mail-face
 > mode-line-highlight
 > mode-line-inactive
 > mode-line
 >

The question is whether the corresponding faces should be simultaneously
removed from the `basic-faces' group.  If they are removed where should
`header-line' - which inherits from `mode-line' - go to?

 > Or alternatively, add `Buffer-menu-buffer' and `display-time-mail-face' to
 > the existing group `modeline' (where three latter faces from the list above
 > already belong to), and add the parent group `faces' to the group `modeline'.
 >

`Buffer-menu-buffer' should definitely figure in the modeline group.
When I first tried to customize the modeline, `Buffer-menu-buffer' was
hard to spot and very undescriptive.  Since `display-time' is already
part of the modeline group I'd simply remove `display-time-mail-face'

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-28 10:04                             ` martin rudalics
@ 2005-12-28 15:57                               ` Juri Linkov
  2005-12-28 22:48                               ` Richard M. Stallman
  2005-12-28 22:48                               ` Richard M. Stallman
  2 siblings, 0 replies; 51+ messages in thread
From: Juri Linkov @ 2005-12-28 15:57 UTC (permalink / raw)
  Cc: rms, emacs-devel

>> However, there is another similar face that is used to highlight text in
>> the mode line: `Buffer-menu-buffer'.  We could create a new group
>> `modeline-faces' and add all modeline-related faces to this new group.
>> The faces that could be added to `modeline-faces' are:
>>
>> Buffer-menu-buffer
>> display-time-mail-face
>> mode-line-highlight
>> mode-line-inactive
>> mode-line
>
> The question is whether the corresponding faces should be simultaneously
> removed from the `basic-faces' group.  If they are removed where should
> `header-line' - which inherits from `mode-line' - go to?

In this case I think the corresponding faces should not be removed from
the `basic-faces' group.  Only their group `modeline' could be replaced
with `modeline-faces'.

>> Or alternatively, add `Buffer-menu-buffer' and `display-time-mail-face' to
>> the existing group `modeline' (where three latter faces from the list above
>> already belong to), and add the parent group `faces' to the group `modeline'.
>
> `Buffer-menu-buffer' should definitely figure in the modeline group.
> When I first tried to customize the modeline, `Buffer-menu-buffer' was
> hard to spot and very undescriptive.  Since `display-time' is already
> part of the modeline group I'd simply remove `display-time-mail-face'

I agree.  Unless a new special face group `modeline-faces' will be created,
`display-time-mail-face' should be removed from the group `modeline'.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-27 19:04                           ` Juri Linkov
  2005-12-28 10:04                             ` martin rudalics
@ 2005-12-28 17:01                             ` Richard M. Stallman
  1 sibling, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-28 17:01 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

    There is still the last face in the group `faces' that doesn't belong to
    this group: `display-time-mail-face'.  Currently it is in two groups:
    `faces' and `display-time'.  So we could remove it from `faces'.

Yes, I think we should.

    However, there is another similar face that is used to highlight text in
    the mode line: `Buffer-menu-buffer'.  We could create a new group
    `modeline-faces' and add all modeline-related faces to this new group.
    The faces that could be added to `modeline-faces' are:

    Buffer-menu-buffer
    display-time-mail-face
    mode-line-highlight
    mode-line-inactive
    mode-line

This seems ok, but please call it mode-line-faces.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-27 19:04                       ` Juri Linkov
@ 2005-12-28 17:01                         ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-28 17:01 UTC (permalink / raw)
  Cc: rudalics, abraham, emacs-devel

    I can find only one other face that has the nil value by default.
    It is `glasses-face'.  Currently it uses `:type 'symbol', so it
    has no problem.  But it would be more appropriate to use `:type 'face'
    and add nil as an explicit alternative.

Thanks.  I fixed that.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-27 19:05                         ` Juri Linkov
@ 2005-12-28 17:01                           ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-28 17:01 UTC (permalink / raw)
  Cc: rudalics, abraham, emacs-devel

    Other such cases also use a tag like "Default" or "None" for the nil face
    value, because displaying "nil" in the customization buffer is not
    user-friendly.

Please add that if you would like to.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-28 10:04                             ` martin rudalics
  2005-12-28 15:57                               ` Juri Linkov
@ 2005-12-28 22:48                               ` Richard M. Stallman
  2005-12-29  9:47                                 ` martin rudalics
  2005-12-28 22:48                               ` Richard M. Stallman
  2 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-28 22:48 UTC (permalink / raw)
  Cc: juri, emacs-devel

     > Buffer-menu-buffer
     > display-time-mail-face
     > mode-line-highlight
     > mode-line-inactive
     > mode-line
     >

    The question is whether the corresponding faces should be simultaneously
    removed from the `basic-faces' group.

I am not sure what you mean by "corresponding faces" in this context.
The face `mode-line' -- not something that "corresponds" to it,
but the very same symbol -- is in the `basic-faces' group
as well as the modeline group.

Please don't change the `basic-faces' group.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-28 10:04                             ` martin rudalics
  2005-12-28 15:57                               ` Juri Linkov
  2005-12-28 22:48                               ` Richard M. Stallman
@ 2005-12-28 22:48                               ` Richard M. Stallman
  2005-12-29  1:23                                 ` Juri Linkov
  2005-12-29 10:13                                 ` martin rudalics
  2 siblings, 2 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-28 22:48 UTC (permalink / raw)
  Cc: juri, emacs-devel

    `Buffer-menu-buffer' should definitely figure in the modeline group.
    When I first tried to customize the modeline, `Buffer-menu-buffer' was
    hard to spot and very undescriptive.

What is the face `Buffer-menu-buffer' used for?
Where does it appear?  Its documentation is quite unclear,
and I would like to clear it up, but first I need to understand.
(Maybe its name should be changed too.)

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-28 22:48                               ` Richard M. Stallman
@ 2005-12-29  1:23                                 ` Juri Linkov
  2005-12-30  2:17                                   ` Richard M. Stallman
  2005-12-29 10:13                                 ` martin rudalics
  1 sibling, 1 reply; 51+ messages in thread
From: Juri Linkov @ 2005-12-29  1:23 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

>     `Buffer-menu-buffer' should definitely figure in the modeline group.
>     When I first tried to customize the modeline, `Buffer-menu-buffer' was
>     hard to spot and very undescriptive.
>
> What is the face `Buffer-menu-buffer' used for?  Where does it appear?
> Its documentation is quite unclear, and I would like to clear it up, but
> first I need to understand.  (Maybe its name should be changed too.)

The main purpose of `Buffer-menu-buffer' is to highlight buffer names in
the *Buffer List* buffer (since it is defined in buff-menu.el).  But the
same face is also used to highlight buffer names in the mode line.

There should be a special separate face for the mode line.  What would
be a good name for it?  `mode-line-buffer'?  This is too specific.
`mode-line-bold'?  This name might become untrue when customized to
something else.

There are modes that could use this new face.  For example, info.el
highlights in bold only the Info buffer name which is not quite important.
But the Info node name in the mode line (which is more important than
the Info buffer name) is not highlighted.  This new face could be used
to highlighted the Info node name in the mode line as well.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-28 22:48                               ` Richard M. Stallman
@ 2005-12-29  9:47                                 ` martin rudalics
  2005-12-30  2:18                                   ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-12-29  9:47 UTC (permalink / raw)
  Cc: juri, emacs-devel

 > I am not sure what you mean by "corresponding faces" in this context.
 > The face `mode-line' -- not something that "corresponds" to it,
 > but the very same symbol -- is in the `basic-faces' group
 > as well as the modeline group.

In fact I meant the faces `mode-line-highlight', `mode-line-inactive',
and `mode-line'.  And I wrongly suspected that Juri wanted to _move_
them to a mode-line-faces group.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-28 22:48                               ` Richard M. Stallman
  2005-12-29  1:23                                 ` Juri Linkov
@ 2005-12-29 10:13                                 ` martin rudalics
  2005-12-30  2:18                                   ` Richard M. Stallman
  1 sibling, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-12-29 10:13 UTC (permalink / raw)
  Cc: juri, emacs-devel

 > What is the face `Buffer-menu-buffer' used for?
 > Where does it appear?  Its documentation is quite unclear,
 > and I would like to clear it up, but first I need to understand.
 > (Maybe its name should be changed too.)

Capitalized face / variable names are confusing, in particular with
`custom-buffer-sort-alphabetically' non-nil.  However, it's non-trivial
to detect that this very face is used in the modeline at all.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-29  1:23                                 ` Juri Linkov
@ 2005-12-30  2:17                                   ` Richard M. Stallman
  2005-12-30  6:29                                     ` Juri Linkov
  0 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-30  2:17 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

    The main purpose of `Buffer-menu-buffer' is to highlight buffer names in
    the *Buffer List* buffer (since it is defined in buff-menu.el).  But the
    same face is also used to highlight buffer names in the mode line.

It seems like bad design to use the same face for both.

    There should be a special separate face for the mode line.  What would
    be a good name for it?  `mode-line-buffer'?  This is too specific.

`mode-line-buffer' would be a good name for a face used only to
highlight buffer names.  But if we want something a little
more general, how about `mode-line-emphasis'?

    There are modes that could use this new face.  For example, info.el
    highlights in bold only the Info buffer name which is not quite important.
    But the Info node name in the mode line (which is more important than
    the Info buffer name) is not highlighted.

Let's use `mode-line-emphasis' for that too.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-29 10:13                                 ` martin rudalics
@ 2005-12-30  2:18                                   ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-30  2:18 UTC (permalink / raw)
  Cc: juri, emacs-devel

     > What is the face `Buffer-menu-buffer' used for?
     > Where does it appear?  Its documentation is quite unclear,
     > and I would like to clear it up, but first I need to understand.
     > (Maybe its name should be changed too.)

    Capitalized face / variable names are confusing, in particular with
    `custom-buffer-sort-alphabetically' non-nil.

Yes, I think it should be renamed to buffer-menu-buffer.
But first let's change the mode line not to use it.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-29  9:47                                 ` martin rudalics
@ 2005-12-30  2:18                                   ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-30  2:18 UTC (permalink / raw)
  Cc: juri, emacs-devel

    In fact I meant the faces `mode-line-highlight', `mode-line-inactive',
    and `mode-line'.  And I wrongly suspected that Juri wanted to _move_
    them to a mode-line-faces group.

They should be in the new mode-line-faces group,
but some or all can be in basic-faces too.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-30  2:17                                   ` Richard M. Stallman
@ 2005-12-30  6:29                                     ` Juri Linkov
  2005-12-30 14:15                                       ` martin rudalics
                                                         ` (2 more replies)
  0 siblings, 3 replies; 51+ messages in thread
From: Juri Linkov @ 2005-12-30  6:29 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

>     There should be a special separate face for the mode line.  What would
>     be a good name for it?  `mode-line-buffer'?  This is too specific.
>
> `mode-line-buffer' would be a good name for a face used only to
> highlight buffer names.  But if we want something a little
> more general, how about `mode-line-emphasis'?

I now think the best name would be the same as the variable name whose
propertized value is used in the mode-line to display buffer information.
I mean the variable `mode-line-buffer-identification'.  However, it is
too long for the face name, and the suffix `-identification' or even a
shorter one `-id' doesn't make the purpose of the face name clearer.

Selecting a good face name will also set up a rule for naming more
mode line faces that could be added after the release, e.g.
(existing variable vs. new face name):

mode-line-mule-info variable - mode-line-mule face
mode-line-modified variable - mode-line-modified face
mode-line-frame-identification variable - mode-line-frame face
mode-line-position variable - mode-line-position face
vc-mode variable - mode-line-vc-mode face
mode-line-modes variable - mode-line-modes face
...

So taking this into account, for now a good face name for buffer
information in the mode line would be `mode-line-buffer'.

In the patch below I added a new group `mode-line-faces'
with the following faces belonging to it:

mode-line
mode-line-inactive
mode-line-highlight
mode-line-buffer (new face)
display-time-mail-face

Index: lisp/faces.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/faces.el,v
retrieving revision 1.345
diff -c -r1.345 faces.el
*** lisp/faces.el	11 Dec 2005 11:08:34 -0000	1.345
--- lisp/faces.el	30 Dec 2005 06:27:47 -0000
***************
*** 1932,1937 ****
--- 1932,1943 ----
    "Basic face for highlighting."
    :group 'basic-faces)
  
+ (defgroup mode-line-faces nil
+   "Faces used in the mode line."
+   :group 'modeline
+   :group 'faces
+   :version "22.1")
+ 
  (defface mode-line-highlight
    '((((class color) (min-colors 88))
       :box (:line-width 2 :color "grey40" :style released-button))
***************
*** 1939,1945 ****
       :inherit highlight))
    "Basic mode line face for highlighting."
    :version "22.1"
!   :group 'modeline
    :group 'basic-faces)
  
  (defface region
--- 1945,1951 ----
       :inherit highlight))
    "Basic mode line face for highlighting."
    :version "22.1"
!   :group 'mode-line-faces
    :group 'basic-faces)
  
  (defface region
***************
*** 2014,2020 ****
       :inverse-video t))
    "Basic mode line face for selected window."
    :version "21.1"
!   :group 'modeline
    :group 'basic-faces)
  
  (defface mode-line-inactive
--- 2020,2026 ----
       :inverse-video t))
    "Basic mode line face for selected window."
    :version "21.1"
!   :group 'mode-line-faces
    :group 'basic-faces)
  
  (defface mode-line-inactive
***************
*** 2030,2036 ****
       :foreground "grey80" :background "grey30"))
    "Basic mode line face for non-selected windows."
    :version "22.1"
!   :group 'modeline
    :group 'basic-faces)
  
  ;; Make `modeline' an alias for `mode-line', for compatibility.
--- 2036,2042 ----
       :foreground "grey80" :background "grey30"))
    "Basic mode line face for non-selected windows."
    :version "22.1"
!   :group 'mode-line-faces
    :group 'basic-faces)
  
  ;; Make `modeline' an alias for `mode-line', for compatibility.
***************
*** 2038,2043 ****
--- 2044,2055 ----
  (put 'modeline-inactive 'face-alias 'mode-line-inactive)
  (put 'modeline-highlight 'face-alias 'mode-line-highlight)
  
+ (defface mode-line-buffer
+   '((t (:weight bold)))
+   "Face used to highlight buffer identification parts of the mode line."
+   :version "22.1"
+   :group 'mode-line-faces)
+ 
  (defface header-line
    '((default
       :inherit mode-line)
***************
*** 2077,2083 ****
    '((((type tty)) :inherit mode-line-inactive))
    "Face used for vertical window dividers on ttys."
    :version "22.1"
-   :group 'modeline
    :group 'basic-faces)
  
  (defface minibuffer-prompt
--- 2089,2094 ----

Index: lisp/bindings.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/bindings.el,v
retrieving revision 1.155
diff -c -r1.155 bindings.el
*** lisp/bindings.el	16 Dec 2005 11:35:25 -0000	1.155
--- lisp/bindings.el	30 Dec 2005 06:27:52 -0000
***************
*** 449,455 ****
  FMT is a format specifier such as \"%12b\".  This function adds
  text properties for face, help-echo, and local-map to it."
    (list (propertize fmt
! 		    'face 'Buffer-menu-buffer
  		    'help-echo
  		    (purecopy "mouse-1: previous buffer, mouse-3: next buffer")
  		    'mouse-face 'mode-line-highlight
--- 449,455 ----
  FMT is a format specifier such as \"%12b\".  This function adds
  text properties for face, help-echo, and local-map to it."
    (list (propertize fmt
! 		    'face 'mode-line-buffer
  		    'help-echo
  		    (purecopy "mouse-1: previous buffer, mouse-3: next buffer")
  		    'mouse-face 'mode-line-highlight

Index: lisp/time.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/time.el,v
retrieving revision 1.88
diff -c -r1.88 time.el
*** lisp/time.el	11 Aug 2005 01:53:17 -0000	1.88
--- lisp/time.el	30 Dec 2005 06:27:02 -0000
***************
*** 129,135 ****
  If `display-time-use-mail-icon' is non-nil, the image's
  background color is the background of this face.  Set this to
  make the mail indicator stand out on a color display."
!   :group 'faces
    :group 'display-time
    :version "22.1"
    :type '(choice (const :tag "None" nil) face))
--- 129,135 ----
  If `display-time-use-mail-icon' is non-nil, the image's
  background color is the background of this face.  Set this to
  make the mail indicator stand out on a color display."
!   :group 'mode-line-faces
    :group 'display-time
    :version "22.1"
    :type '(choice (const :tag "None" nil) face))

Index: lisp/info.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/info.el,v
retrieving revision 1.469
diff -c -r1.469 info.el
*** lisp/info.el	23 Dec 2005 21:52:00 -0000	1.469
--- lisp/info.el	30 Dec 2005 06:27:28 -0000
***************
*** 1403,1410 ****
  		(concat " ("
  			(if Info-current-file
  			    (file-name-nondirectory Info-current-file)
! 			  " ")
! 			") " (or Info-current-node ""))))))
  \f
  ;; Go to an Info node specified with a filename-and-nodename string
  ;; of the sort that is found in pointers in nodes.
--- 1403,1414 ----
  		(concat " ("
  			(if Info-current-file
  			    (file-name-nondirectory Info-current-file)
! 			  "")
! 			") "
! 			(if Info-current-node
! 			    (propertize Info-current-node
! 					'face 'mode-line-buffer)
! 			  ""))))))
  \f
  ;; Go to an Info node specified with a filename-and-nodename string
  ;; of the sort that is found in pointers in nodes.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-30  6:29                                     ` Juri Linkov
@ 2005-12-30 14:15                                       ` martin rudalics
  2005-12-31  0:48                                         ` Juri Linkov
  2005-12-30 22:10                                       ` Richard M. Stallman
  2005-12-31 17:40                                       ` Richard M. Stallman
  2 siblings, 1 reply; 51+ messages in thread
From: martin rudalics @ 2005-12-30 14:15 UTC (permalink / raw)
  Cc: rms, emacs-devel

I appreciate your proposal but for one issue: `mode-line-buffer' would
usually highlight that part of the modeline where "previous / next
buffer" mouse clicks operate on.  Doing this differently for Info
buffers appears counterintuitive.  On the other hand, it would be
convenient to make the modeline part occupied by the Info node name
sensitive for `Info-next' / `Info-prev' (or `Info-history-forward' /
`Info-history-back').

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-30  6:29                                     ` Juri Linkov
  2005-12-30 14:15                                       ` martin rudalics
@ 2005-12-30 22:10                                       ` Richard M. Stallman
  2005-12-31  0:48                                         ` Juri Linkov
  2005-12-31 17:40                                       ` Richard M. Stallman
  2 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-30 22:10 UTC (permalink / raw)
  Cc: rudalics, emacs-devel


    Selecting a good face name will also set up a rule for naming more
    mode line faces that could be added after the release, e.g.
    (existing variable vs. new face name):

    mode-line-mule-info variable - mode-line-mule face
    mode-line-modified variable - mode-line-modified face
    mode-line-frame-identification variable - mode-line-frame face
    mode-line-position variable - mode-line-position face

It is logical, but far too complicated, and not worth it.  I would
rather have just the one face, called mode-line-emphasis or
mode-line-location or mode-line-subject-matter, and use that for the
buffer name and the info node name, and for any other similar thing.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-30 22:10                                       ` Richard M. Stallman
@ 2005-12-31  0:48                                         ` Juri Linkov
  2005-12-31 19:36                                           ` Richard M. Stallman
  2006-01-01 16:10                                           ` Richard M. Stallman
  0 siblings, 2 replies; 51+ messages in thread
From: Juri Linkov @ 2005-12-31  0:48 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

>     mode-line-mule-info variable - mode-line-mule face
>     mode-line-modified variable - mode-line-modified face
>     mode-line-frame-identification variable - mode-line-frame face
>     mode-line-position variable - mode-line-position face
>
> It is logical, but far too complicated, and not worth it.  I would
> rather have just the one face, called mode-line-emphasis or
> mode-line-location or mode-line-subject-matter, and use that for the
> buffer name and the info node name, and for any other similar thing.

I think using one face for different parts of the mode line is not
useful.  Users might want to highlight the buffer name and the info
node name with different faces.  There are already several faces for
highlighting different parts of the Info header line (`info-header-node',
`info-header-xref'), so it should be natural to add a new Info face for
the node name in the mode line.

Since part of the mode line highlighted currently in bold is clearly
associated with the buffer name (it even has a keymap for switching the
buffer), a good face name should have the word `buffer' in its name.  Any
other name would be not intuitive and even useless for other parts of
the mode line since it won't allow highlighting other parts in different
faces.

In the previous messages you said that `mode-line-buffer' is a good name
for a face used only to highlight buffer names.  So let's add this face
and also `info-mode-line-node' which by default will inherit from
`mode-line-buffer'.

BTW, while looking at `mode-line-buffer-identification-keymap', I noticed
that currently it is broken due to the recent changes in `last-buffer' which
now uses a new frame parameter `buried-buffer-list'.  This means that
mouse-1 clicked on the buffer name in the mode line uses the buffer list
from the frame parameter `buried-buffer-list', but mouse-3 uses `bury-buffer'
to put the buffer to the bottom of the global buffer list.  Either both
mouse-1 and mouse-3 should use the frame-local buffer list or the global
buffer list.  I'm not sure which is better.  Since `previous-buffer' and
`next-buffer' (that use the frame-local buffer list) currently are unfinished
(they require more changes in C after the release) they don't work reliably,
so maybe mouse-1 and mouse-3 in the mode line should use the global buffer
list.  Even though it is not convenient, it exhibits predictable behavior.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-30 14:15                                       ` martin rudalics
@ 2005-12-31  0:48                                         ` Juri Linkov
  2005-12-31 19:36                                           ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: Juri Linkov @ 2005-12-31  0:48 UTC (permalink / raw)
  Cc: rms, emacs-devel

> I appreciate your proposal but for one issue: `mode-line-buffer' would
> usually highlight that part of the modeline where "previous / next
> buffer" mouse clicks operate on.  Doing this differently for Info
> buffers appears counterintuitive.  On the other hand, it would be
> convenient to make the modeline part occupied by the Info node name
> sensitive for `Info-next' / `Info-prev' (or `Info-history-forward' /
> `Info-history-back').

Good idea.  I tried the following code and it works well.

(defvar Info-mode-line-node-keymap
  (let ((map (make-sparse-keymap)))
    (define-key map [mode-line mouse-1] 'Info-prev)
    (define-key map [mode-line mouse-3] 'Info-next)
    map)
  "Keymap to put on the Info node name in the mode line.")

(defun Info-set-mode-line ()
  (setq mode-line-buffer-identification
	(nconc (propertized-buffer-identification "%b")
	       (list
		(concat
		 " ("
		 (if Info-current-file
		     (file-name-nondirectory Info-current-file)
		   "")
		 ") "
		 (if Info-current-node
		     (propertize Info-current-node
				 'face 'info-mode-line-node
				 'help-echo
				 "mouse-1: previous node, mouse-3: next node"
				 'mouse-face 'mode-line-highlight
				 'local-map Info-mode-line-node-keymap)
		   ""))))))

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-30  6:29                                     ` Juri Linkov
  2005-12-30 14:15                                       ` martin rudalics
  2005-12-30 22:10                                       ` Richard M. Stallman
@ 2005-12-31 17:40                                       ` Richard M. Stallman
  2006-01-04  6:31                                         ` Juri Linkov
  2 siblings, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-31 17:40 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

    In the patch below I added a new group `mode-line-faces'
    with the following faces belonging to it:

    mode-line
    mode-line-inactive
    mode-line-highlight
    mode-line-buffer (new face)
    display-time-mail-face

Could you install that, with mode-line-buffer renamed
to mode-line-subject-matter?

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-31  0:48                                         ` Juri Linkov
@ 2005-12-31 19:36                                           ` Richard M. Stallman
  2006-01-04  6:34                                             ` Juri Linkov
  2006-01-01 16:10                                           ` Richard M. Stallman
  1 sibling, 1 reply; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-31 19:36 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

    I think using one face for different parts of the mode line is not
    useful.  Users might want to highlight the buffer name and the info
    node name with different faces.

There are an unlimited range of features that users "might want to"
use, but we certainly don't want to add them all.  So that's not a
basis for making this decision.

    In the previous messages you said that `mode-line-buffer' is a good name
    for a face used only to highlight buffer names.  So let's add this face
    and also `info-mode-line-node' which by default will inherit from
    `mode-line-buffer'.

I'd prefer to add one face rather than two.

If lots of users ask for that distinction, we can oblige them later.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-31  0:48                                         ` Juri Linkov
@ 2005-12-31 19:36                                           ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2005-12-31 19:36 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

    (defvar Info-mode-line-node-keymap
      (let ((map (make-sparse-keymap)))
	(define-key map [mode-line mouse-1] 'Info-prev)
	(define-key map [mode-line mouse-3] 'Info-next)
	map)
      "Keymap to put on the Info node name in the mode line.")

    ...

It sounds good.  Please install it.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-31  0:48                                         ` Juri Linkov
  2005-12-31 19:36                                           ` Richard M. Stallman
@ 2006-01-01 16:10                                           ` Richard M. Stallman
  1 sibling, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2006-01-01 16:10 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

      I'm not sure which is better.  Since `previous-buffer' and
    `next-buffer' (that use the frame-local buffer list) currently are unfinished
    (they require more changes in C after the release) they don't work reliably,
    so maybe mouse-1 and mouse-3 in the mode line should use the global buffer
    list.  Even though it is not convenient, it exhibits predictable behavior.

I agree.  Could you fix that?

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-31 17:40                                       ` Richard M. Stallman
@ 2006-01-04  6:31                                         ` Juri Linkov
  2006-01-05  3:46                                           ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: Juri Linkov @ 2006-01-04  6:31 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

>     In the patch below I added a new group `mode-line-faces'
>     with the following faces belonging to it:
>
>     mode-line
>     mode-line-inactive
>     mode-line-highlight
>     mode-line-buffer (new face)
>     display-time-mail-face
>
> Could you install that, with mode-line-buffer renamed
> to mode-line-subject-matter?

I think `mode-line-subject-matter' is the worst name among all proposed
so far.  For the user wanting to customize the appearance of the buffer
name in the mode line, the face with `subject' or `matter' in its name is
the last thing to look at.

Meanwhile, I found that XEmacs uses the name `mode-line-buffer-id' to
highlight the string from the variable `mode-line-buffer-identification'
in the mode line.  It seems a good name.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2005-12-31 19:36                                           ` Richard M. Stallman
@ 2006-01-04  6:34                                             ` Juri Linkov
  2006-01-05  3:46                                               ` Richard M. Stallman
  0 siblings, 1 reply; 51+ messages in thread
From: Juri Linkov @ 2006-01-04  6:34 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

>     I think using one face for different parts of the mode line is not
>     useful.  Users might want to highlight the buffer name and the info
>     node name with different faces.
>
> There are an unlimited range of features that users "might want to"
> use, but we certainly don't want to add them all.  So that's not a
> basis for making this decision.

I remember that more mode-line faces were already proposed on emacs-devel,
and you agreed to install them, but these faces are still not in CVS.

-- 
Juri Linkov
http://www.jurta.org/emacs/

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2006-01-04  6:31                                         ` Juri Linkov
@ 2006-01-05  3:46                                           ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2006-01-05  3:46 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

    Meanwhile, I found that XEmacs uses the name `mode-line-buffer-id' to
    highlight the string from the variable `mode-line-buffer-identification'
    in the mode line.  It seems a good name.

Ok.

^ permalink raw reply	[flat|nested] 51+ messages in thread

* Re: Customizing faces with `defcustom'
  2006-01-04  6:34                                             ` Juri Linkov
@ 2006-01-05  3:46                                               ` Richard M. Stallman
  0 siblings, 0 replies; 51+ messages in thread
From: Richard M. Stallman @ 2006-01-05  3:46 UTC (permalink / raw)
  Cc: rudalics, emacs-devel

    I remember that more mode-line faces were already proposed on emacs-devel,
    and you agreed to install them, but these faces are still not in CVS.

I don't remember anything about a previous discussion, but it could be
that I reached a different conclusion this time.  I would rather not
install a lot of them.

^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2006-01-05  3:46 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-08-27 10:24 Customizing faces with `defcustom' martin rudalics
2005-08-28 15:11 ` Richard M. Stallman
2005-08-30  5:55   ` martin rudalics
2005-09-01 15:53     ` Richard M. Stallman
2005-11-12  8:09       ` martin rudalics
2005-11-13 20:54         ` Richard M. Stallman
2005-11-15  7:45           ` martin rudalics
2005-11-16 19:26           ` martin rudalics
2005-11-17 14:07             ` Richard M. Stallman
2005-11-30  2:44           ` Juri Linkov
2005-11-30  7:47             ` martin rudalics
2005-11-30 13:27               ` Per Abrahamsen
2005-11-30 15:33                 ` Juri Linkov
2005-12-23 13:23                 ` martin rudalics
2005-12-24 20:14                   ` Juri Linkov
2005-12-25 16:23                     ` martin rudalics
2005-12-26  2:20                       ` Richard M. Stallman
2005-12-27 19:05                         ` Juri Linkov
2005-12-28 17:01                           ` Richard M. Stallman
2005-12-25 19:07                     ` Richard M. Stallman
2005-12-25 19:07                     ` Richard M. Stallman
2005-12-26 16:37                       ` martin rudalics
2005-12-27  4:55                         ` Richard M. Stallman
2005-12-27 19:04                           ` Juri Linkov
2005-12-28 10:04                             ` martin rudalics
2005-12-28 15:57                               ` Juri Linkov
2005-12-28 22:48                               ` Richard M. Stallman
2005-12-29  9:47                                 ` martin rudalics
2005-12-30  2:18                                   ` Richard M. Stallman
2005-12-28 22:48                               ` Richard M. Stallman
2005-12-29  1:23                                 ` Juri Linkov
2005-12-30  2:17                                   ` Richard M. Stallman
2005-12-30  6:29                                     ` Juri Linkov
2005-12-30 14:15                                       ` martin rudalics
2005-12-31  0:48                                         ` Juri Linkov
2005-12-31 19:36                                           ` Richard M. Stallman
2005-12-30 22:10                                       ` Richard M. Stallman
2005-12-31  0:48                                         ` Juri Linkov
2005-12-31 19:36                                           ` Richard M. Stallman
2006-01-04  6:34                                             ` Juri Linkov
2006-01-05  3:46                                               ` Richard M. Stallman
2006-01-01 16:10                                           ` Richard M. Stallman
2005-12-31 17:40                                       ` Richard M. Stallman
2006-01-04  6:31                                         ` Juri Linkov
2006-01-05  3:46                                           ` Richard M. Stallman
2005-12-29 10:13                                 ` martin rudalics
2005-12-30  2:18                                   ` Richard M. Stallman
2005-12-28 17:01                             ` Richard M. Stallman
2005-12-27 19:04                       ` Juri Linkov
2005-12-28 17:01                         ` Richard M. Stallman
2005-11-30  9:15             ` Per Abrahamsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).