2

我正在尝试使我的电力线在第二部分具有自定义颜色。

我正在使用的代码是这样的:

(require 'powerline)

(defface my-pl-segment1-active
  '((t (:foreground "#3C3F41" :background "#3C3F41")))
  "Powerline first segment active face.")
(defface my-pl-segment1-inactive
  '((t (:foreground "#3C3F41" :background "#3C3F41")))
  "Powerline first segment inactive face.")

(defface my-pl-segment2-active
  '((t (:foreground "#4fddb0" :background "#4fddb0")))
  "Powerline third segment active face.")
(defface my-pl-segment2-inactive
  '((t (:foreground "#4fddb0" :background "#4fddb0")))
  "Powerline third segment inactive face.")

(defface my-pl-segment3-active
  '((t (:foreground "#3C3F41" :background "#3C3F41")))
  "Powerline second segment active face.")
(defface my-pl-segment3-inactive
  '((t (:foreground "#3C3F41" :background "#3C3F41")))
  "Powerline second segment inactive face.")

;; My custom powerline theme: see <https://github.com/milkypostman/powerline/blob/master/powerline-themes.el> to get your own.
(defun my-powerline-theme ()
  "Setup the default mode-line."
  (interactive)
  (setq-default mode-line-format
                '("%e"
                  (:eval
                   (let* ((active (powerline-selected-window-active))
                          (mode-line (if active 'my-pl-segment1-active 'my-pl-segment1-inactive))
                          (face1 (if active 'my-pl-segment2-active 'my-pl-segment2-inactive))
                          (face2 (if active 'my-pl-segment3-active 'my-pl-segment3-inactive))
                          (separator-left (intern (format "powerline-%s-%s"
                              (powerline-current-separator)
                                                          (car powerline-default-separator-dir))))
                          (separator-right (intern (format "powerline-%s-%s"
                                                           (powerline-current-separator)
                                                           (cdr powerline-default-separator-dir))))
                          (lhs (list (powerline-raw "%*" nil 'l)
                                     (when powerline-display-buffer-size
                                       (powerline-buffer-size nil 'l))
                                     (when powerline-display-mule-info
                                       (powerline-raw mode-line-mule-info nil 'l))
                                     (powerline-buffer-id nil 'l)
                                     (when (and (boundp 'which-func-mode) which-func-mode)
                                       (powerline-raw which-func-format nil 'l))
                                     (powerline-raw " ")
                                     (funcall separator-left mode-line face1)
                                     (when (boundp 'erc-modified-channels-object)
                                       (powerline-raw erc-modified-channels-object face1 'l))
                                     (powerline-major-mode face1 'l)
                                     (powerline-process face1)
                                     (powerline-minor-modes face1 'l)
                                     (powerline-narrow face1 'l)
                                     (powerline-raw " " face1)
                                     (funcall separator-left face1 face2)
                                     (powerline-vc face2 'r)
                                     (when (bound-and-true-p nyan-mode)
                                       (powerline-raw (list (nyan-create)) face2 'l))))
                          (rhs (list (powerline-raw global-mode-string face2 'r)
                                     (funcall separator-right face2 face1)
                     (unless window-system
                       (powerline-raw (char-to-string #xe0a1) face1 'l))
                     (powerline-raw "%4l" face1 'l)
                     (powerline-raw ":" face1 'l)
                     (powerline-raw "%3c" face1 'r)
                     (funcall separator-right face1 mode-line)
                     (powerline-raw " ")
                     (powerline-raw "%6p" nil 'r)
                                     (when powerline-display-hud
                                       (powerline-hud face2 face1)))))
             (concat (powerline-render lhs)
                 (powerline-fill face2 (powerline-width rhs))
                 (powerline-render rhs)))))))

(my-powerline-theme)

我遇到的基本问题'my-pl-segment2-active :background是影响文本颜色和分隔符的颜色。有没有办法将它们分开?

图片在'my-pl-segment2-active :background哪里black黑色的

'my-pl-segment2-active :backgroune与前景相同的图片( #4fddb0): 相同的

4

1 回答 1

1
  1. 您需要添加一个额外的面,其中背景代表背景颜色,而前景完全没有任何作用。
  2. 在 旁边声明(face2 (if active 'my-pl-segment2-active my-pl-segment2-inactive))。(例如(newface (if active 'my-pl-fixed-face-active my-pl-fixed-face-inactive)):)
  3. 然后用face1新面孔的名称替换包含“分隔符”的行(如您在步骤 2 中所写。)(例如:(funcall separator-right face2 face1)=> (funcall separator-right face2 newface)
于 2015-06-24T04:17:33.037 回答