为每个Emacs实例运行特定插件

时间:2013-11-06 04:15:57

标签: plugins emacs

首次启动emacs时是否可以运行某些插件?

假设我使用Python开发,也使用Ruby开发。所以我希望有一个运行Python插件的emacs实例和另一个运行Ruby插件的实例。

我想象的是我可以从命令行调用rb-emacs或py-emacs。

所以我认为我的部分解决方案就在这里

http://stackoverflow.com/questions/2112256/emacs-custom-command-line-argument

然后我可以使用自定义开关将emacs调用别名为上述

之一

但是,如何将特定插件与特定开关相关联? 我是否在正确的轨道上?或者我应该完全做其他事情?

编辑: 由于我的问题似乎并不清楚,我将在此重申。我并不担心加载时间过长。我担心插件之间可能存在冲突。我之前使用过emacs,但只是在基本规模上。现在我想更深入地了解插件。虽然我不完全了解插件的工作原理。

我说我编写的每种语言都有一个插件(或两三个,我不知道它可能有多少)。这些插件是否会相互冲突?此外,我不希望该特定语言不需要视图/窗口。

2 个答案:

答案 0 :(得分:2)

您只需要为每个Emacs实例使用不同的init文件。然后,您可以创建shell别名,以便使用这些init文件打开Emacs。

来自Emacs Wiki

  

使用特定的初始文件启动Emacs:emacs -q -l ~/my-init-file.el

然后你只需设置一个shell别名,如:

alias rb-emacs=emacs -q -l ~/.rb-emacs-init.el

但为什么要使用单独的Emacs进程呢?如果您担心启动时间,可以使用延迟加载包或使用Emacsclient Emacs Server

答案 1 :(得分:1)

我投票赞成“完全做其他事情”,但我并不是100%确定你要解决的问题是什么。

通常,您可以使用模式挂钩eval-after-loadautoload来确保只在需要时加载特定的elisp库。

如果您的问题是强行加载所有内容并且花费的时间太长,那么您需要更改代码,以便只在必要时加载内容。请参阅OptimizingEmacsStartup

如果您的问题是您为不同项目需要具有不同值的变量设置全局值,那么您希望通过模式挂钩或使用目录本地变量为它们使用缓冲区本地值。 / p>

你想要解决的问题是什么?