2010-08-05 21 views
11

En Emacs, estoy usando un esquema de color con un fondo oscuro y texto claro. Cuando trabajo con archivos .rst, tengo un modo para eso que usa rst.el. Sin embargo, primero destaca encabezados con un color de fondo claro, lo que hace imposible leer textos claros en él.Modificar colores en rst.el

creo que esta es la sección del código en rst.el que es responsable de los colores de fondo:

(defgroup rst-faces-defaults nil 
    "Values used to generate default faces for section titles on all levels. 
Tweak these if you are content with how section title faces are built in 
general but you do not like the details." 
    :group 'rst-faces 
    :version "21.1") 

(defun rst-define-level-faces() 
    "Define the faces for the section title text faces from the values." 
    ;; All variables used here must be checked in `rst-set-level-default' 
    (let ((i 1)) 
    (while (<= i rst-level-face-max) 
     (let ((sym (intern (format "rst-level-%d-face" i))) 
     (doc (format "Face for showing section title text at level %d" i)) 
     (col (format ("gray10"))) 
    (make-empty-face sym) 
    (set-face-doc-string sym doc) 
    (set-face-background sym col) 
    (set sym sym) 
    (setq i (1+ i)))))) 

(defun rst-set-level-default (sym val) 
    "Set a customized value affecting section title text face and recompute the 
faces." 
    (custom-set-default sym val) 
    ;; Also defines the faces initially when all values are available 
    (and (boundp 'rst-level-face-max) 
     (boundp 'rst-level-face-format-light) 
     (boundp 'rst-level-face-base-color) 
     (boundp 'rst-level-face-step-light) 
     (boundp 'rst-level-face-base-light) 
     (rst-define-level-faces))) 

;; Faces for displaying items on several levels; these definitions define 
;; different shades of grey where the lightest one (i.e. least contrasting) is 
;; used for level 1 
(defcustom rst-level-face-max 6 
    "Maximum depth of levels for which section title faces are defined." 
    :group 'rst-faces-defaults 
    :type '(integer) 
    :set 'rst-set-level-default) 
(defcustom rst-level-face-base-color "grey" 
    "The base name of the color to be used for creating background colors in 
ection title faces for all levels." 
    :group 'rst-faces-defaults 
    :type '(string) 
    :set 'rst-set-level-default) 
(defcustom rst-level-face-base-light 
    (if (eq frame-background-mode 'dark) 
     85 
    15) 
    "The lightness factor for the base color. This value is used for level 1. The 
default depends on whether the value of `frame-background-mode' is `dark' or 
not." 
    :group 'rst-faces-defaults 
    :type '(integer) 
    :set 'rst-set-level-default) 
(defcustom rst-level-face-format-light "%2d" 
    "The format for the lightness factor appended to the base name of the color. 
This value is expanded by `format' with an integer." 
    :group 'rst-faces-defaults 
    :type '(string) 
    :set 'rst-set-level-default) 
(defcustom rst-level-face-step-light 
    (if (eq frame-background-mode 'dark) 
    -7 
    7) 
    "The step width to use for the next color. The formula 

    `rst-level-face-base-light' 
    + (`rst-level-face-max' - 1) * `rst-level-face-step-light' 

must result in a color level which appended to `rst-level-face-base-color' 
using `rst-level-face-format-light' results in a valid color such as `grey50'. 
This color is used as background for section title text on level 
`rst-level-face-max'." 
    :group 'rst-faces-defaults 
    :type '(integer) 
    :set 'rst-set-level-default) 

(defcustom rst-adornment-faces-alist 
    (let ((alist '((t . font-lock-keyword-face) 
     (nil . font-lock-keyword-face))) 
    (i 1)) 
    (while (<= i rst-level-face-max) 
     (nconc alist (list (cons i (intern (format "rst-level-%d-face" i))))) 
     (setq i (1+ i))) 
    alist) 
    "Provides faces for the various adornment types. Key is a number (for the 
section title text of that level), t (for transitions) or nil (for section 
title adornment). If you generally do not like how section title text faces are 
set up tweak here. If the general idea is ok for you but you do not like the 
details check the Rst Faces Defaults group." 
    :group 'rst-faces 
    :type '(alist 
     :key-type 
     (choice 
     (integer 
     :tag 
     "Section level (may not be bigger than `rst-level-face-max')") 
     (boolean :tag "transitions (on)/section title adornment (off)")) 
     :value-type (face)) 
    :set-after '(rst-level-face-max)) 

He intentado cambiar 'gris' a otra cosa, pero no cambia una cosa. ¿Alguna ayuda?

Respuesta

5
M-x customize-group rst-faces 

Si insistes en usar el código, entonces usa personalizar para establecer algunas cosas, mira el código generado y úsalo como modelo. Sin embargo, ya no se considera buena forma de hacerlo con el antiguo código .emacs.

+0

Para aquellos que desconocen la fácil personalización en emacs: A continuación, presione intro en la variable derecha 'Hide Rst Level 1'. Aparecerá una lista de configuraciones y cambiará el fondo, siempre presionando Intro en el cuadro de la derecha. – user989762

4

Usando

M-x customize-group rst-faces-default 

y establecer el valor de Rst Level Face Base Color a black hacen los títulos más fácil de leer. Asegúrese de establecer el valor para todas las sesiones futuras.

6

Perdón por desenterrar una pregunta anterior.

El campo para cambiar es Rst Level Face Base Light. Cambiar el valor a ~ 51 desde el valor predeterminado de 85 hace que el texto sea legible, pero mantiene el resaltado de los títulos.

Hace uso de los colores sistemáticamente nombrados grey%2d para sombrear la profundidad de la sección de fondo.

+0

Personalmente, prefiero un tono más oscuro de gris para un contraste mejorado, así que configuré 'Base de luz de nivel Rst' a '25 '. ** Nota **: tuve que reiniciar Emacs para que el cambio surta efecto, por lo que no estoy seguro si esto siempre es necesario o si es algo específico de mi versión. –