如何在控制台模式下使用无颜色主题?

3
我使用的是深蓝2色彩主题,但在控制台下看起来很丑。因此,我想在终端下使用无颜色主题,那么我该怎么做呢?
4个回答

13
要稍微简短一些,变量window-system在窗口系统中是something,在终端中则是nil。因此,如果我想要加载color-theme-darkblue2主题,我应该执行以下操作:
(if window-system
    (progn
       (load "color-theme")
       (color-theme-darkblue2)))

否则程序将在终端中使用默认颜色。当然,如果您希望可以在else部分加载一个适用于终端的主题:

(load "color-theme")
(if window-system
     (color-theme-darkblue2)
   (some-term-theme)))

1
在启动Emacs之前,设置一个与单色终端对应的“TERM”变量。例如,如果您在xterm中,则使用以下命令:
TERM=xterm-mono emacs -nw

如果您所说的"console"是指文本模式下的Linux控制台,您可以尝试使用"vt100"(或"vt320")代替。


1

我使用这个,因为我使用 Emacs CVS(未来的23)中的multi-tty功能:

(defun mrc-xwin-look (frame)
  "如果在 X 窗口中运行,则设置"
  (color-theme-deep-blue))
(defun mrc-terminal-look (frame) "如果在终端中运行,则设置" (color-theme-charcoal-black))
(defun mrc-setup-frame (frame) (set-variable 'color-theme-is-global nil) (select-frame frame) (cond ((window-system) (mrc-xwin-look frame) (tool-bar-mode -1) (mrc-maximize-frame)) (t (mrc-terminal-look frame))))
(add-hook 'after-make-frame-functions 'mrc-setup-frame)
(add-hook 'after-init-hook (lambda () (mrc-setup-frame (selected-frame))))

它根据框架是在控制台还是 X 窗口中运行选择不同的颜色主题。(我不想在控制台中失去颜色语法高亮。)

顺便说一下,最大化看起来像这样:

(defun mrc-maximize-frame () "切换窗口最大化状态" ;; 来自 http://paste.lisp.org/display/54627/raw (interactive) (cond ((eq 'x (window-system)) (progn (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)) (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)))) (t (message "不支持 %s 窗口系统的最大化功能" (symbol-name (window-system))))))

0

我使用的另一个简单方法:

(when window-system
   (load-theme '<myThemeName>))

因此,只要window-system不为nil(基本上是任何类型的GUI),这将在所有情况下加载主题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接