Emacs blue (on dark background) is too dark. classA
is readable with difficulty in the example below:
How to fix the dark blue colour?
Add frame-background-mode
to your init file:
(setq frame-background-mode 'dark)
Put the cursor on the blue word, and say C-u C-x =
. Find the face
entry and click on its value. Then click on customize this face
and change the foreground value to e.g. Cyan1
.
If you are in a console or are doing emacs -nw
in a terminal, instead of clicking, put the cursor on the appropriate element and press RET
.
emacs -nw
mode to the right pane? <kbd> RET </kbd> the same as <kbd> ENTER </kbd>?
C-x o
will cycle through the windows. And yes, RET
is the commonly used emacs name for the key that is usually labeled Enter
.
C-u M-x what-cursor-position RET
but you should fix your setup: C-x is much too valuable as a prefix to waste.
Faces in Emacs can have different values, depending on display attributes such as the number of colors supported or whether they're displayed on a light/dark background. Emacs can guess the latter without any issues in graphical mode, for textual frames however the guessing isn't nearly as good. If it turns out to be wrong, you'll get dark blue on black (because it mistakenly assums a light background on which there would be enough contrast to the dark blue), like in the screenshot above.
To check whether that's the case for you, inspect the value of frame-background-mode
and customize it if needed.
NickD has a good answer but doesn't update your menu bar which may also have the same dark blue (can you see what it says when you type ctrl + s
?). This method will also fix hard to read menus.
alt + x customize-themes
ctrl + x, ctrl + s
to save the settingsctrl + x, ctrl + c
to quitThis theme is saved to your .emacs
file and will be used when you use emacs in the future. Here are more exhaustive instructions.
To change the colors of a part of a text, you put the cursor there, press C-u C-x =
, and find the face name:
Knowing the face name you can change the foreground (M-x set-face-foreground
), or the background (M-x set-face-background
). There's also (set-face-attribute
):
(set-face-attribute 'package-name nil :foreground "cyan1")
Replace package-name
with the desired face name. nil
means "for existing and newly created frames."
To display the list of colors use M-x list-colors-display
.
You can execute non-interactive functions (like set-face-attribute
) via M-:
, in a scratch buffer (C-x C-e
), or put them into ~/.emacs
.
The same applies to interactive functions (like set-face-foreground
, set-face-background
). But they can also be executed via M-x
.
frame-background-mode
will fix it and other faces.