LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1415|回复: 1

Emacs 如何判断运行状态?

[复制链接]
发表于 2003-10-6 23:01:29 | 显示全部楼层 |阅读模式
我的目的是用一些 elisp 程序判断 emacs 的运行状态,是运行在 rxvt 终端中,还是用图形界面的方式运行的.如果是用图形界面的方式运行的话,就执行表达式(set-background-color "DarkSlateGray")把背景色设置为 DarkSlateGray ,如果是在 rxvt 之类的终端中运行的话,就不必执行这个表达式,如果执行的话,Emacs 的背景色会被设置为难看的黄绿色.

我在 emacs 里执行 info 命令,找到了一些资料,作了一些设置,请大家来看看.
开始的时候,我想通过判断 command-line-args 这个变量的特征来确定是否用图形界面的
方式运行了 emacs , 但是后来发现行不通.比如,我通过"emacs -nw /tmp/hello.scm"这
个命令运行 emacs 之后,在 emacs 中运行 command-line-args ,结果是
("emacs" "/tmp/hello.scm")这个表,没有出现"-nw"的字样,这和用"emacs /tmp/hello.scm
"这个命令运行 emacs 之后得出的结果是一样的.有没有别的招呢?
以下是我想出来的旁门左道:
(if (equal "linux" (getenv "TERM"))
    (set-background-color "DarkSlateGray"))
如果是用图形界面方式运行 emacs ,就会执行(set-background-color "DarkSlateGray")
这个语句, 如果是在其他的终端(如 rxvt 之类的程序)中或在字符界面下运行的话, 就
不会设置背景色(因为我已经把rxvt的终端类型设置为"xterm"了).
这种方法有一个缺点,即如果我运行的模拟终端的类型是"linux"的话,就会出现问题了,
但是还没有发现.本来还想作一番修正,加一条else
语句,但是emacs lisp 还不大会用,这就算了.(note: 在 rxvt 中运行 "emacs&"这个命令,
然后在 emacs 中执行 (getenv "TERM") ,会发现为"xterm"(rxvt 的终端类型就是"xterm"
然而在桌面点击 emacs 的图标,再执行 (getenv "TERM"),就会发现值为"linux"))
关于怎么通过判断命令行参数来确定是否设置背景色的问题我还是没有搞清楚.谢谢.
发表于 2009-4-2 00:58:17 | 显示全部楼层
if window-system
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表