【问题标题】:Run Specific Plugins for each Emacs Instance为每个 Emacs 实例运行特定插件
【发布时间】:2013-11-06 04:15:57
【问题描述】:

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

假设我使用 Python 和 Ruby 进行开发。所以我想要一个使用 Python 插件运行的 emacs 实例和另一个运行 Ruby 插件的实例。

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

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

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

然后我可以将带有自定义开关的 emacs 调用别名为上述之一

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

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

假设我有一个插件(或两个或三个,我不知道它可能是多少)用于我编码的每种语言。它们不会相互冲突吗?另外,我不想要该特定语言不需要的视图/窗口。

【问题讨论】:

  • 在 Emacs 中一切皆有可能,但一般情况下(即给出合理编写的库),旨在处理互斥任务(例如编辑 ruby​​ 代码与编辑 python 代码)的库之间没有冲突。我认为你在想象不存在的问题。
  • 但是即使您决定要为每个项目运行单独的 Emacs 实例(这不是不合理的事情),通常也不需要维护单独的配置。您可以使用相同的配置启动每个 Emacs 实例,并让每个实例为您加载的文件执行适当的操作。

标签: plugins emacs


【解决方案1】:

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

来自Emacs Wiki

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

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

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

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

【讨论】:

  • 我不担心启动时间。我只是不希望一个插件与另一个插件冲突。虽然现在我想到了,插件是否设置为根据文件类型调用?或者它是如何工作的?
  • 是的,您可以根据文件扩展名设置加载哪些包。我强烈建议使用el-get,它通常会自动以理智的方式进行设置。您可以在Github 上使用 el-get 查看我的 Emacs 设置。
【解决方案2】:

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

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

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

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

您要解决的问题是什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多