Emacs lisp: get RGB components of face? - emacs

I've recently made a switch to Emacs trunk and the region face
color was changed.
And I can't change it back without knowing what it was before.
So I've launched emacs24.3 and see that it was "gtk_selection_bg_color".
This color name isn't valid any more in the trunk.
I've found the color to be "f9b593" with screenshot->gimp->eyedrop method,
but I'd like to know how to do this in Elisp, e.g. something like
(get-face-background-rgb 'region)
;; "f9b593"
Any suggestions?

You can use color-value:
color-values is a compiled Lisp function in `faces.el'. (color-values
COLOR &optional FRAME)
Return a description of the color named COLOR on frame FRAME. The
value is a list of integer RGB values--(RED GREEN BLUE). These values
appear to range from 0 to 65280 or 65535, depending on the system;
white is (65280 65280 65280) or (65535 65535 65535). If FRAME is
omitted or nil, use the selected frame. If FRAME cannot display COLOR,
the value is nil. If COLOR is the symbol `unspecified' or one of the
strings "unspecified-fg" or "unspecified-bg", the value is nil.
To get the color of a face, you can use face-foreground and face-background. In your case, you can use:
(color-values (face-background 'region))

You can use library eyedropper.el or library palette.el --- see Color Palette --- to get the color of a face at point. And you can use library palette to explore colors, to come up with a similar but slightly different color etc. You can use library hexrgb.el to examine and modify RGB components of colors.

Related

How can I make each Packed Bubble a different color?

I have a Packed Bubble dashboard. My Y axis is a list of names and my X axis is a decimal. I want each differing number to be a different color. Can I do this manually?
If you want to color each bubble with a separate color just use the field that each bubble represent in the color shelf. If I understood your data correctly, each bubble basically represents one campaign, so you should use that as the color.
You can manually assign color using Color>Edit Color and assigning the color of your choice.
See image 1.
If you want to color your bubbles based on your measure AVg(NPV/Marketing $) you can do as Alex Blakemore mentioned and use your measure as a stepped color or gradient.
You can use Color>Edit Color here too , in this case manually assigning color is a bit difficult. But if you play with number of steps, the gradient pre-select, etc, you can usually get very close to what ever your wanted it to look like.
Put your numeric field on the color shelf, and either edit the colors to use a stepped set of colors - or change the field to be discrete and choose individual colors to taste.

How to lighten up colors of syntax highlighting?

I need to make syntax colors lighter (for dark themes). Globaly or not.
Yes, in fact there is a dimmer switch that affects all faces. There are in fact several such dimmer switches: (1) to dim/brighten, (2) to heighten colors or make them more washed-out, (3) to move toward or away from a particular hue, or (4, 5, 6) to make them all more - or less - red, blue, or green.
All of these dimmer switches that act on all faces together are rolled into a single command -- well two commands: one for the face backgrounds (doremi-all-faces-bg+) and one for the face foregrounds (doremi-all-faces-fg+).
These are two of several Do Re Mi color incrementer commands. The others work on individual faces or on frame backgrounds and foregrounds. All of these commands work the same way. After invoking the command (e.g. M-x doremi-all-faces-bg+):
You are prompted for the color COMPONENT to increment/decrement (a character):
`r` - red
`g` - green
`b` - blue
`h` - hue (basic color)
`s` - saturation (purity)
`v` - value (brightness)
`R` - red, green, and blue, at the same time
`H` - hue, saturation, and value, at the same time
`R` and `H` increment all components of the respective color spaces,
according to the value of INCREMENT.
You can at any time change, to increment/decrement a different color
component (r, g, b, h, s, v, R, or H). For example, you can type `r`
and use the arrow keys or mouse wheel to change the red component,
then type `b` and use the arrows or wheel to change the blue
component, and so on, all in the same call.
For desaturating, that is, to render all colors more pale or washed-out, you just use s.
See Angry Fruit Salad for more information about this synchronized saturation dimming of all faces.
You can use the dimmer switch whenever you want, if you want more or less washed out colors. Or you can use it to find a good combination and then save the current face values in your custom-file (or your init file, if you do not have a custom-file, which you should have).
More likely, you will want to experiment by "dimming" and then follow that up with some customization of a few individual faces. For that, you can use the similar dimmer switches for individual faces (doremi-face-bg+ etc.). Incrementing qualities of all faces at once is a bit rough-and-ready. But for something like desaturating, it is very quick and does the job well.
Note that the face changes made using Do Re Mi commands are not saved automatically. User option doremi-customization-status controls how Customize views such changes.
By default, Customize sees them as if you had made them using the Customize UI. In this case, you can use command customize-unsaved to open Customize for them all, where you can save individual changes or all of the together.
If you set option doremi-customization-status to value outside then Customize sees the changes instead as having been made outside Customize. In this case, you can use command customize-rogue to open Customize for them all.
If you set the option to anything else then Customize ignores the changes altogether - you cannot use Customize to save them until you reapply them using Customize itself or a command such as set-face-foreground. This option setting can be useful if you just want to experiment and do not want Customize to see what you do.

How to set color in Emacs display property?

I found Org-mode display superscript by modifying the display property with option org-script-display. The superscript/subscript display are toggled by options org-pretty-entities and org-pretty-entities-include-sub-superscripts.
I want to change superscript/subscript display property foreground color into "yellow".
I need to modify the option org-script-display.
But I failed when I set this option value with:
'(((raise -0.3)
(height 0.7)
(:foreground "yellow"))
((raise 0.3)
(height 0.7)
(:foreground "yellow"))
((raise -0.5))
((raise 0.5))
)
Does anybody knows how to set foreground colour here ?
You can't change the foreground color with a display spec. Se Display Property.
You'll need to change the face in order to use a different foreground color, however Org does not define customizable faces for subscripts and superscripts. You'd have to change the face property of these, but to do so you'd first have to find subscripts and superscripts in the text.
TLDR: You quite likely can't change the foreground color of Org mode superscripts and subscripts without writing a non-trivial amount of custom Emacs Lisp code.

Trying to figure out how to force Aquamacs (or any windowed Emacs) to use the xterm 256-colors

This question is in regards to forcing emacs to use a 256 color xterm color scheme.
When you open emacs in a terminal that supports xterm-256, it defaults to the xterm-256 color scheme, where default emacs font face colors like 'Firebrick' turns into something the xterm color scheme can display, which in this case is 'Red', so on and so forth. I really like this. I do not like the default emacs colors in a non-terminal setting; I think they are too faded and washed out-- I much prefer the brightness of the terminal colors.
(In fact I find myself programming in the terminal most often simply because I vastly prefer the typeface and the colors-- but I'd like to start using Aquamacs more for various reasons.)
For the life of me, I cannot figure out how to force Emacs (or in my case, Aquamacs) to force itself to downgrade the default color scheme to the xterm 256 color scheme like it does in my terminal. There has to be an easier way than making a new, ridiculously detailed color theme, but beyond the "TERM= " command you can set in your bashrc file (which obviously Aquamacs doesn't care about or use) I can't find anything equivalent in Emacs/Aquamacs that tells it to adopt a 256 color range so that it does things like turns Firebrick into the closest 'available' color, in this case, red.
I've attached screenshots. The first is how I want it to look like. (jpeg ruins the cripsness/brightness of the colors, but you get the idea.)
Second shot here is the default 'washed out' colors in aquamacs. See how the comments are in Firebrick (correctly displayed), versus the bright red of the comments in the above pic.
Variable names show up as more yellow in the top pic, but as more 'brown' in the bottom. Strings in the above file show up as more 'light brown' whereas in the bottom, it's more a dark brown. You can see they are definitely the same color scheme-- it's just that the terminal doesn't know about some of the colors and so it converts them to their baser, brighter forms.
Anybody know how to force this in Aquamacs? I've spent far too many hours researching this. :-)
Thanks!
Nick

How to darken postscript text produced by emacs

I'm using emacs command ps-spool-buffer-with-faces command to make some postscript files of code I'm working on. The problem is that the font color seems to be light gray instead of black. I've poked around the postscript file & googled a bit, but have not found any solution. Does anyone know how to turn my gray font black?
Assuming you just want to print in black and white, try:
(setq ps-print-color-p nil)
Otherwise, you might take a look at other values for ps-print-color-p:
ps-print-color-p is a variable defined in `ps-print.el'.
Its value is t
Documentation:
Specify how buffer's text color is printed.
Valid values are:
nil Do not print colors.
t Print colors.
black-white Print colors on black/white printer.
See also `ps-black-white-faces'.
Any other value is treated as t.
You can customize this variable.
You can customize using M-xcustomize-variableRETps-print-color-pRET