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

如何使emacs认为它正在使用终端?,emacs,terminal,Emacs,Terminal,我想使用Emacs自动化涉及字体锁定模式的作业。我想格式化一个文件,然后使用字体锁定模式的着色将其转换为HTML。问题是Emacs拒绝格式化文件,除非它认为它正在终端中运行。换句话说,当在-batch下运行时,它将不会fontify。有没有一种方法可以愚弄Emacs,使其即使在以编程方式运行时也认为它正在终端内运行?您可以尝试使用包装它,看看这是否足以愚弄Emacs。另一种方法是挖掘elisp代码并将其冻结,以删除对作业运行的任何检查或阻止作业运行。使用参数如何?为书中的所有源代码提供src.t

我想使用Emacs自动化涉及字体锁定模式的作业。我想格式化一个文件,然后使用字体锁定模式的着色将其转换为HTML。问题是Emacs拒绝格式化文件,除非它认为它正在终端中运行。换句话说,当在
-batch
下运行时,它将不会fontify。有没有一种方法可以愚弄Emacs,使其即使在以编程方式运行时也认为它正在终端内运行?

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

使用参数如何?

为书中的所有源代码提供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

==>/tmp/pty.out/tmp/tty.out我尝试了“expect”,但它仍然在屏幕上打印大量垃圾,这是我试图避免的问题之一。我将继续研究expect,以找到是否有办法不让它写入输出。您可以将输出重定向到/dev/null(除非您需要从emacs捕获stdout)。不,我不需要捕获stdout。谢谢,我终于让它工作了。这正是问题所在;如果我用批处理运行它,它就不工作了。啊,真的吗?你所做的看起来和htmlize.el一模一样,我敢肯定它过去在批处理模式下工作时没有任何问题。您能告诉我们您是如何解决的吗?我使用
expect
程序解决了它,如上所述。不幸的是,这让整个过程有点慢。你是对的,我正在使用htmlize.el,但除非它连接到终端(无论如何,对我来说),否则它不会工作。你需要更多的细节吗?