如何让emacs认为它正在使用终端?

时间:2010-07-06 08:38:24

标签: emacs terminal

我想使用Emacs自动执行涉及字体锁定模式的作业。我想使用字体锁定模式的颜色来使文件成为一个文件,然后将其转换为HTML。问题是Emacs拒绝为文件提供异议,除非它认为它在终端中运行。换句话说,在-batch下运行时,它不会形象化。有没有办法欺骗Emacs认为它在终端内运行,即使它是以编程方式运行的?

3 个答案:

答案 0 :(得分:2)

Advanced Programming in the Unix Environment为本书中的所有源代码提供了src.tar.gz; 'pty'目录包含用于创建pty主/从程序的示例代码,它可以伪造tty的存在。我用cron测试了这个:

* * * * * /tmp/apue.2e/pty/pty /usr/bin/tty > /tmp/pty.out 2> /tmp/pty.err
* * * * * /usr/bin/tty > /tmp/tty.out 2> /tmp/tty.err

输出结果令人满意:

==> /tmp/pty.out <==
/dev/pts/5

==> /tmp/tty.out <==
not a tty

这至少足以愚弄tty。 :)

答案 1 :(得分:1)

使用-batch参数怎么样?

答案 2 :(得分:0)

您可以尝试使用expect来包装它,看看是否足够愚弄emacs。另一种方法是挖掘elisp代码并将其移除以删除对isatty的任何检查或阻止作业运行。