【发布时间】:2013-05-24 12:19:43
【问题描述】:
我一般是 xemacs 和 linux 的新手,所以请考虑我是新手。 我想知道 elisp 不会立即执行一个或多个命令是否有原因。
我的 init.el 中有以下代码:
(defun myClear ()
"Clears console output buffer (F5)"
(erase-buffer "*Shell Command Output*"))
(defun myMake ()
"Executes make (F6)"
(shell-command "make"))
(defun myClearMake ()
"Clears console output buffer before executing make (F7)"
(erase-buffer "*Shell Command Output*")
(shell-command "make"))
它们绑定到 F5-F7 键。 按 F7 不会产生与先按 F5,然后按 F6 相同的结果,按预期工作。
反而会发生 (erase-buffer ...) 语句似乎被跳过,或者可能在 (shell-command ...) 之前执行。由于 shell-command 在转储 shell 输出之前会擦除缓冲区,所以很难说。
我所期望的:控制台输出被清除。这在 make 仍在运行并且尚未产生任何输出时应该是可见的(在我的情况下是几秒钟)。
我不知道如何进一步测试它,即使它看起来像是一项常见的任务,我也找不到任何合适的或类似的东西。还要考虑到我不仅对获得提到的行为感兴趣,而且还了解我做错了什么。
任何关于 elisp 机制的链接/指针都可以解释这种行为。 谢谢, 塔什
【问题讨论】:
-
我建议您使用
M-x compile RET而不是shell-command。这将创建一个编译缓冲区,您可以在其中单击错误/警告以直接转到文件中的相应点。