什么应该在emacs库中自动加载?

时间:2016-01-29 20:55:30

标签: emacs

Emacs允许您自动加载"功能很少的cookie,如;;; ### autoload

对于应该自动加载的内容是否有任何共识?例如,自动加载模块中的每个交互功能是否有意义(假设它们中有很多,例如50)?或者,只对#34; main"进行自动加载才有意义。的。

2 个答案:

答案 0 :(得分:2)

您只能自动加载" main"那些。例如,python-mode.el只出现一些自动加载:

;;;###autoload
(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'")  'python-mode))
;;;###autoload
(add-to-list 'interpreter-mode-alist (cons (purecopy "python[0-9.]*") 'python-mode))
--
;;;###autoload
(defun run-python (cmd &optional dedicated show)
--
;;;###autoload
(define-derived-mode python-mode prog-mode "Python"

只有"条目"功能是自动加载的。只有在您python-mode之后才需要几十个辅助函数。

答案 1 :(得分:0)

这里有几种可能的情况,答案取决于你正在使用哪一种。

简单明了的情况是一个具有大量交互功能但只有少数“主要”入口点的库。 Emacs的版本控制模式就是很好的例子 - 有许多方法可以与版本控制后端进行交互,但是第一步通常会在您从版本控制中检出一段代码时发生,或者想要检查您的更改已经做了以便开始提交。所以这些是主要的切入点,其他的只有在你开始其中一个操作时才有用(至少在典型情况下)。

一个有点但不幸的情况是一个“模块”,其中很多小模块都希望成为他们自己的模块。如果内部凝聚力很弱,也许您应该考虑将代码的某些部分移动到单独的较小的库中。 (Emacs库附带适合此描述的发行版。)

如果你真的有一个复杂的问题需要很多不同的入口点,实际上你可能想要公开它们。在这里抓住一点稻草,我想到例如统计软件包 - 有很多很多方法可供选择,而且您事先并不知道哪个方案对每个方案都有意义。 (通常这种庞然大物的套餐至少需要一个学科的学士学位才能正常运作!)