detly
detly

Reputation: 30342

Why is Emacs syntax highlighting in Gnome terminal affected by terminal colour theming?

I'm using Emacs 24.3 under Ubuntu 14.04.1. I'd like to use it both via the GTK interface and the Gnome terminal with emacs -nw. Unfortunately, the colours for any theme that I use appear slightly different in the terminal.

I've set things up so that under Gnome terminal, TERM=xterm-256color. However, I have also customised my terminal colors — "black" is actually #151515, "red" is #DA4939, etc. Emacs seems to get close to displaying the correct colours for each theme, but is never quite correct. The themes I'm using are the deftheme-style of theme.

I don't understand why customising terminal colours should affect this — with TERM=xterm-256color, Emacs should have access to a greater palette than just the usual 16 colours. In the output of list-colors-display, black is listed as #000000 but displayed as #151515; there is, however, a color-16 that is also listed as #000000 and displayed properly. So Emacs is indeed capable of displaying #000000.

Emacs GTK vs terminal comparison

On the left is Emacs GTK, which displays the theme colours correctly. On the right is emacs -nw run in Gnome terminal, where all the colours are slightly different from what the theme specifies. The theme I've used for this picture is just an example; this happens with any theme. My full config is on Github.

How can I get Emacs to display the correct theme colours in Gnome terminal without removing my customisation of the terminal palette?

Upvotes: 4

Views: 784

Answers (1)

Nathan Stocks
Nathan Stocks

Reputation: 2164

A couple issues:

1) I believe that when you customize the "terminal colours", they overlap the first 16 color entries of the 256-colour palette. So if emacs is telling the terminal to use colors 0-15, they will come out as whatever you have set that colour to actually be in your terminal preferences. It doesn't appear to be affecting you specifically, but it is good to be aware of.

2) For the remaining 256 colors, I believe there are only 256 (maybe 241 if your terminal re-colored the first 16) colors that you may choose from.

Unless you choose your GTK theme colors to match exact colours that are available in the 256 palette, having them be identical is not going to be possible. It looks like your emacs did a pretty good job of selecting the closest available colors of the 256 on its own.

If you want to see what I'm talking about in action, try downloading and running a script such as this show-all-256-colors.py script and running it in your terminal. I would wager that as you change your terminal colours, you'll see the entries 000 through 015 change correspondingly, while the remaining colors are always the same.

Upvotes: 4

Related Questions