首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改Emacs模式-基于主模式的线条颜色

更改Emacs模式-基于主模式的线条颜色
EN

Stack Overflow用户
提问于 2013-04-09 23:38:54
回答 2查看 3.6K关注 0票数 6

我想看看是否有一种方法可以根据主模式改变模式链接的前景和背景颜色,

我在考虑将逻辑添加到

代码语言:javascript
复制
(add-hook 'after-change-major-mode-hook

但是,我没有所有的emacs lisp经验来进行这样的更改。逻辑如下:

代码语言:javascript
复制
switch major-mode:
case "emacs-lisp-mode":
  (set-face-foreground 'mode-line "ivory")
  (set-face-background 'mode-line "DarkOrange2")
case "ruby-mode":
  (set-face-foreground 'mode-line "white")
  (set-face-background 'mode-line "red")
...
default:
  (set-face-foreground 'mode-line "black")
  (set-face-background 'mode-line "white")
end switch

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-10 08:55:14

你可能想要这样的东西:

代码语言:javascript
复制
(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (face-remap-add-relative
             'mode-line '((:foreground "ivory" :background "DarkOrange2") mode-line))))

您可能还希望对mode-line-inactive face使用face-remap。

票数 10
EN

Stack Overflow用户

发布于 2013-04-10 01:21:02

你所说的“逻辑”是这样的:

代码语言:javascript
复制
(add-hook 'after-change-major-mode-hook 'my-set-mode-line-colors)
(defvar my-mode-line-colors
  '((emacs-lisp-mode :foreground "ivory" :background "DarkOrange2")
    (ruby-mode :foreground "white" :background "red")))
(defun my-set-mode-line-colors ()
  (face-remap-add-relative
   'mode-line (list (or (cdr (assq major-mode my-mode-line-colors))
                        '(:foreground "black" :background "white"))
                    'mode-line)))

或者,您也可以按照Stefan的建议,从特定于模式的钩子中执行此操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15906332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档