unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* e23 inverse video on mode line and nowhere else
@ 2010-01-13  1:42 Karl Berry
  2010-01-13  8:31 ` Leo
  2010-01-16 22:35 ` Juri Linkov
  0 siblings, 2 replies; 9+ messages in thread
From: Karl Berry @ 2010-01-13  1:42 UTC (permalink / raw)
  To: help-gnu-emacs

I habitually run Emacs in an xterm window.  For that purpose, I'd like
to have the mode lines be inverse video, and not to have inverse video,
or any other face manipulations (underline, etc.), in buffer contents,
such as *compilation* and *grep*.

Is there any way to do this globally in Emacs 23?

If not ...
A couple years ago Juri Linkov kindly sent me the Elisp below to
disable faces by default, leaving only faces matching ^mode-line
untouched.  This seems to generally give what I want.  (Thanks again, Juri.)

But what I'm finding now is that the compilation status string, such as
":run", ": exit[0]", and so on, is shown as normal text (not inverse
video) in the mode line.

I can get the compilation string in inverse video in the mode line with
this (or by excluding ^compilation in my-faces-fix below):

  (set-face-attribute 'compilation-info nil    :inverse-video t)
  (set-face-attribute 'compilation-warning nil :inverse-video t)
  (set-face-attribute 'compilation-error nil   :inverse-video t)

But then filenames and various other strings show up in inverse video in
the buffer contents.

Short of reverting back to old versions of M-x compile, etc., which I
don't want to do, is there any way to control this?

Perhaps by doing something in the mode line display to force all faces
to inverse video?  (It seems like the same compilation-* faces should
not be used both within the buffer contents and in the mode line, but
anyway.)

Thanks,
Karl


;; Kill all faces except mode lines.  (Juri, 14aug07)
(defun my-faces-fix (&optional frame)
  "Fix defined faces."
  (interactive)
  ;; Check if this function is called by `custom-define-hook' from
  ;; `custom-declare-face' where the variable `face' is bound locally.
  (when (boundp 'face)
    (dolist (face (face-list))
      (unless (string-match "^mode-line" (symbol-name face))
        ;; Reset all face attributes
        (modify-face face)))))
;;
;; 1. Fix existing faces
(let ((face t)) (my-faces-fix))
;;
;; 2. Call `my-faces-fix' every time some new face gets defined
(add-to-list 'custom-define-hook 'my-faces-fix)




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

* Re: e23 inverse video on mode line and nowhere else
  2010-01-13  1:42 Karl Berry
@ 2010-01-13  8:31 ` Leo
  2010-01-16 22:35 ` Juri Linkov
  1 sibling, 0 replies; 9+ messages in thread
From: Leo @ 2010-01-13  8:31 UTC (permalink / raw)
  To: help-gnu-emacs

On 2010-01-13 01:42 +0000, Karl Berry wrote:
> I habitually run Emacs in an xterm window. For that purpose, I'd like
> to have the mode lines be inverse video, and not to have inverse
> video, or any other face manipulations (underline, etc.), in buffer
> contents, such as *compilation* and *grep*.

When I run emacs in terminals, the mode line is always inverse video but
the rest is normal. M-x describe RET mode-line RET:

Face: mode-line (sample) (customize this face)
Documentation: Basic mode line face for selected window.
Defined in `faces.el'.

        Family: unspecified
       Foundry: unspecified
         Width: unspecified
        Height: unspecified
        Weight: unspecified
         Slant: unspecified
    Foreground: unspecified
    Background: unspecified
     Underline: unspecified
      Overline: unspecified
Strike-through: unspecified
           Box: unspecified
       Inverse: t
       Stipple: unspecified
          Font: unspecified
       Fontset: unspecified
       Inherit: unspecified

Leo





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

* Re: e23 inverse video on mode line and nowhere else
@ 2010-01-14 23:04 ` Karl Berry
  2010-01-15  4:13   ` Steve Revilak
  2010-01-15 20:23   ` Leo
  0 siblings, 2 replies; 9+ messages in thread
From: Karl Berry @ 2010-01-14 23:04 UTC (permalink / raw)
  To: help-gnu-emacs

    When I run emacs in terminals, the mode line is always inverse video
    but the rest is normal.

Thanks for replying, but this is not even remotely true for me in e23
(it used to be that way, for sure, for many many years).  Now, I start
emacs with emacs-23.1 --no-site --no-init in an xterm, and immediately
observe the *scratch* buffer name is in bold.  (Haven't tried
tty-suppress-bold-inverse-default-colors yet, but anyway, that's not so
critical.)

More importantly, then I run M-x grep and do something like
"grep -nH e /etc/issue", and observe that "/etc/issue:1:" is underlined,
"matches found" is in bold, etc.

All of these things are what my brain needs to have eliminated :).




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

* Re: e23 inverse video on mode line and nowhere else
       [not found] <mailman.1436.1263510311.18930.help-gnu-emacs@gnu.org>
@ 2010-01-15  0:32 ` Tim X
  2010-01-15  8:21   ` Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: Tim X @ 2010-01-15  0:32 UTC (permalink / raw)
  To: help-gnu-emacs

karl@freefriends.org (Karl Berry) writes:

>     When I run emacs in terminals, the mode line is always inverse video
>     but the rest is normal.
>
> Thanks for replying, but this is not even remotely true for me in e23
> (it used to be that way, for sure, for many many years).  Now, I start
> emacs with emacs-23.1 --no-site --no-init in an xterm, and immediately
> observe the *scratch* buffer name is in bold.  (Haven't tried
> tty-suppress-bold-inverse-default-colors yet, but anyway, that's not so
> critical.)
>
> More importantly, then I run M-x grep and do something like
> "grep -nH e /etc/issue", and observe that "/etc/issue:1:" is underlined,
> "matches found" is in bold, etc.
>
> All of these things are what my brain needs to have eliminated :).

Three possible solutions. 

1. M-x customize-face will allow you to set the attributes of various
faces. If you have the cursor on one of the faces you want to change
when you run customize-face, it will, by default, allow you to customize
that face. Otherwise, you can ask to customize all faces and they will
be listed in a customize buffer (showing samples for each of the faces).
One of the options is to set a face to inherit its attributes from
another face and then modify it further. This allows you to have a
hierarchy of attributes. So, if you wanted to have a specific face have
no special attributes, you could define it to inherit from the 'default'
face and not set any specific attributes. Doing this will mean that if,
at some later time, you want to modify the default face, all the ones
that inherit from it will also inherit those mods. 

2. M-x list-faces-display will bring up a buffer showing all the
currently defined faces. You can then use the mouse or cursor keys to
select a definition for customization. 

Using either of the two above techniques, you can change all the
attributes of a face i.e. bold, underline, fg/bg colour, size, font,
etc.

3. Turn off global font lock mode. This will result in most faces just
having the 'default' attributes. 

HTH

Tim

-- 
tcross (at) rapttech dot com dot au


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

* Re: e23 inverse video on mode line and nowhere else
  2010-01-14 23:04 ` Karl Berry
@ 2010-01-15  4:13   ` Steve Revilak
  2010-01-15 20:23   ` Leo
  1 sibling, 0 replies; 9+ messages in thread
From: Steve Revilak @ 2010-01-15  4:13 UTC (permalink / raw)
  To: help-gnu-emacs

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

>>    When I run emacs in terminals, the mode line is always inverse video
>>    but the rest is normal.

karl> Thanks for replying, but this is not even remotely true for me
karl> in e23 (it used to be that way, for sure, for many many years).
karl> Now, I start emacs with emacs-23.1 --no-site --no-init in an
karl> xterm, and immediately observe the *scratch* buffer name is in
karl> bold.  (Haven't tried tty-suppress-bold-inverse-default-colors
karl> yet, but anyway, that's not so critical.)

I had a bit of a surprise when I first tried Emacs-23.  It's only
slightly related to Karl's issue, but I'll mention it anyway.

The first time I tried Emacs-23, I lost reverse video in the mode
line.  Talk about disorienting :)

After some trial and error, I discovered the cause.  I'd used M-x
customize-face to customize the default face.  The customized default
face worked well for a windowed emacs, but not so well for "emacs
-nw".  Unfortunately, I don't remember the precise customization, and
the bufferfly has long flipped those bits on my hard drive.

Karl was using --no-init-file --no-site-file, so face customizations
probably have nothing to do with it.


timx> Three possible solutions.
timx> 
timx> 1. M-x customize-face will allow you to set the attributes of
timx> various faces.

timx> 3. Turn off global font lock mode. This will result in most
timx> faces just having the 'default' attributes.

Turning off font-lock removes much of the decoration, but seems to
have little effect on compile mode.  M-x customize-face might be the
most effective way to de-ornament compile mode.

Steve

[-- Attachment #2: Type: application/pgp-signature, Size: 195 bytes --]

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

* Re: e23 inverse video on mode line and nowhere else
  2010-01-15  0:32 ` Tim X
@ 2010-01-15  8:21   ` Eli Zaretskii
  0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2010-01-15  8:21 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Tim X <timx@nospam.dev.null>
> Date: Fri, 15 Jan 2010 11:32:20 +1100
> 
> Three possible solutions. 
> 
> 1. M-x customize-face will allow you to set the attributes of various
> faces. If you have the cursor on one of the faces you want to change
> when you run customize-face, it will, by default, allow you to customize
> that face. Otherwise, you can ask to customize all faces and they will
> be listed in a customize buffer (showing samples for each of the faces).
> One of the options is to set a face to inherit its attributes from
> another face and then modify it further. This allows you to have a
> hierarchy of attributes. So, if you wanted to have a specific face have
> no special attributes, you could define it to inherit from the 'default'
> face and not set any specific attributes. Doing this will mean that if,
> at some later time, you want to modify the default face, all the ones
> that inherit from it will also inherit those mods. 
> 
> 2. M-x list-faces-display will bring up a buffer showing all the
> currently defined faces. You can then use the mouse or cursor keys to
> select a definition for customization. 
> 
> Using either of the two above techniques, you can change all the
> attributes of a face i.e. bold, underline, fg/bg colour, size, font,
> etc.
> 
> 3. Turn off global font lock mode. This will result in most faces just
> having the 'default' attributes. 

In practice, solution #3 alone won't cut it, because some Emacs
features use faces regardless of Font Lock mode.

So what Karl would need to do is:

  . Turn off Global Font Lock mode.  This will turn off many faces.

  . Use "M-x list-faces-display" to list and customize the rest of
    faces.

  . Whenever a new face pops up, list it with list-faces-display and
    customize it.

The last item is needed because many faces are not defined until they
are first used by some feature.  Until it is defined,
list-faces-display will not show it.

I believe that with this procedure, the number of faces that evade
customization will fade out with time.




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

* Re: e23 inverse video on mode line and nowhere else
  2010-01-14 23:04 ` Karl Berry
  2010-01-15  4:13   ` Steve Revilak
@ 2010-01-15 20:23   ` Leo
  1 sibling, 0 replies; 9+ messages in thread
From: Leo @ 2010-01-15 20:23 UTC (permalink / raw)
  To: help-gnu-emacs

On 2010-01-14 23:04 +0000, Karl Berry wrote:
>     When I run emacs in terminals, the mode line is always inverse video
>     but the rest is normal.
>
> Thanks for replying, but this is not even remotely true for me in e23
> (it used to be that way, for sure, for many many years).  Now, I start
> emacs with emacs-23.1 --no-site --no-init in an xterm, and immediately
> observe the *scratch* buffer name is in bold.  (Haven't tried
> tty-suppress-bold-inverse-default-colors yet, but anyway, that's not so
> critical.)
>
> More importantly, then I run M-x grep and do something like
> "grep -nH e /etc/issue", and observe that "/etc/issue:1:" is underlined,
> "matches found" is in bold, etc.
>
> All of these things are what my brain needs to have eliminated :).

My test was with Emacs 2010-01-01 version 23.1.91. Maybe that's a bug in
23.1.

Best wishes,
Leo





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

* Re: e23 inverse video on mode line and nowhere else
  2010-01-13  1:42 Karl Berry
  2010-01-13  8:31 ` Leo
@ 2010-01-16 22:35 ` Juri Linkov
  1 sibling, 0 replies; 9+ messages in thread
From: Juri Linkov @ 2010-01-16 22:35 UTC (permalink / raw)
  To: help-gnu-emacs

> A couple years ago Juri Linkov kindly sent me the Elisp below to
> disable faces by default, leaving only faces matching ^mode-line
> untouched.  This seems to generally give what I want.  (Thanks again, Juri.)
>
> But what I'm finding now is that the compilation status string, such as
> ":run", ": exit[0]", and so on, is shown as normal text (not inverse
> video) in the mode line.
>
> I can get the compilation string in inverse video in the mode line with
> this (or by excluding ^compilation in my-faces-fix below):
>
>   (set-face-attribute 'compilation-info nil    :inverse-video t)
>   (set-face-attribute 'compilation-warning nil :inverse-video t)
>   (set-face-attribute 'compilation-error nil   :inverse-video t)
>
> But then filenames and various other strings show up in inverse video in
> the buffer contents.
>
> Short of reverting back to old versions of M-x compile, etc., which I
> don't want to do, is there any way to control this?
>
> Perhaps by doing something in the mode line display to force all faces
> to inverse video?  (It seems like the same compilation-* faces should
> not be used both within the buffer contents and in the mode line, but
> anyway.)

Currently I see no way to display the compilation status string
differently in the mode line and in the compilation buffer because
compile.el reuses non-mode-line faces for the mode line.

A good solution would be to add new faces to compile.el like

  mode-line-compilation-info
  mode-line-compilation-warning
  mode-line-compilation-error

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





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

* Re: e23 inverse video on mode line and nowhere else
@ 2010-02-01  2:04 Karl Berry
  0 siblings, 0 replies; 9+ messages in thread
From: Karl Berry @ 2010-02-01  2:04 UTC (permalink / raw)
  To: help-gnu-emacs

Thanks to everyone for replying, although unfortunately these
suggestions do not work for me.(*)

I've filed a bug about compile.el using non-mode-line-faces on the
mode line.  Meanwhile, I'll guess I'll try to defadvise
mode line creation, or something.

Karl

(*) list-faces and customize-face are useless for me.  They do not allow
for completely turning off "facification", last time I tried anyway.
Beyond that, they are far too ui-intensive, mess around with my startup
files, and most importantly there are far too many faces to deal with
that way.  And new faces crop up at the drop of a hat.

The Elisp that Juri sent me years ago, which I included in my original
post, already takes care of the issue in general, as well as possible.
(http://lists.gnu.org/archive/html/help-gnu-emacs/2010-01/msg00196.html)

What I posted about this month is a new problem, where, as Juri and I
said, non-mode-line faces are used to propertize text for the mode line.
It's no different in the 23.1.92 pretest, either.

Anyway.




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

end of thread, other threads:[~2010-02-01  2:04 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-01  2:04 e23 inverse video on mode line and nowhere else Karl Berry
     [not found] <mailman.1436.1263510311.18930.help-gnu-emacs@gnu.org>
2010-01-15  0:32 ` Tim X
2010-01-15  8:21   ` Eli Zaretskii
     [not found] <20100115004221.598A8AF600@mxperim7.sea5.speakeasy.net>
2010-01-14 23:04 ` Karl Berry
2010-01-15  4:13   ` Steve Revilak
2010-01-15 20:23   ` Leo
  -- strict thread matches above, loose matches on Subject: below --
2010-01-13  1:42 Karl Berry
2010-01-13  8:31 ` Leo
2010-01-16 22:35 ` Juri Linkov

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