2010-01-14 93 views
1

我不知道如何在另一个宏内部调用一个宏来避免内部宏的铃声停止,因为这会停止外部宏。特别是,我必须进行两次搜索,并且我已经定义了一个宏,另一个必须搜索一些文件夹并在每个文件夹中调用内部宏,但外部宏在内部铃声停止后无法继续宏。在Emacs宏中调用宏

任何解决方案?

谢谢!

回答

1

可能有办法通过修改或研究isearch的行为来做到这一点,但最好的办法是在Lisp中编写内部循环,并将外部循环作为宏运行(或者将其写入Lisp中) 。宏观系统非常棒,但功耗有限,听起来像你正在尝试做比它能够处理(更容易)更强大的功能。

根据你在做什么,你也可以在正则表达式替换的替换字符串中使用Lisp表达式。从GNU Emacs 22开始,您可以使用替换字符串中的“\,”来转义Lisp表达式。我相信有一种方法可以实现你所要求的(毕竟它是Emacs),但它可能比它的价值更麻烦。

0

我终于找到了一个解决方案:

我有一个宏“A1”调用宏“政变”,直到发现错误(与铜0)

(fset 'a1 
    [escape ?< ?\C-u ?0 escape ?x ?e ?t ?a ?t return ]) 

宏观政变:

(fset 'etat 
    [?\C-s ?I ?n ?i ?t ?i ?a ?l ? ?S ?t ?a ?t ?e C-right C-left ?\C- ?\C-a ?\C-w ?< ?e ?t ?a ?t ?> return ?\C-s ?(left backspace ?\C-k ?\C-a ?\C-s ?I ?n ?i ?t ?i ?a ?l ? ?S ?t ?a ?t ?e ?\C-a return up ?< ?/ ?e ?t ?a ?t ?> ?\C-a down]) 
+1

请从您的答案中删除问题部分。问题也应该被问到。问题,而不是这里的答案。 – ThiefMaster 2012-07-11 09:21:42