2016-01-29 53 views
3

Emacs允許你使用像「;;;;」這樣的小型cookies來「自動加載」功能### autoload應該在emacs庫中自動加載什麼?

對於應該自動加載的內容有什麼共識嗎?例如,自動加載模塊中的每個交互功能是否有意義(假設它們中有很多,例如50)?或者,只有自動加載「主要」的纔有意義。

+0

您是否在徵求意見,哪些應該加載?或者你是否在問某個地方是否有共識?無論哪種方式,問題主要是基於意見的。 – Drew

回答

2

您只能自動載入「主」字。例如,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中,只需要幾十個幫助函數。

+0

謝謝。那些只提供函數的庫呢?例如。所有的交互功能都應該自動化嗎? –

+0

是的,大多數交互功能都應該自動加載,否則'M-x'將無法找到它們。例如,'M-x man','M-x shell','M-x ido-find-file'全部自動加載。但是所有的交互式python- *函數都不是自動加載的。 –

0

這裏有幾種可能的情況,答案取決於你正在使用哪一種。

簡單而明顯的情況是,圖書館具有許多交互功能,但只有少數「主要」入口點。 Emacs的版本控制模式就是很好的例子 - 有許多與版本控制後臺進行交互的方式,但是第一步通常會在您從版本控制中籤出一段代碼或想要檢查您所做的更改時發生已經做出了開始提交。所以這些是主要的入口點,其他的只有在你開始這些操作時纔有用(至少在典型情況下)。

一個有點可能但不幸的情況將是一個「模塊」,它真的是很多想要成爲自己模塊的小模塊。如果內部凝聚力很弱,也許你應該考慮將代碼的某些部分移動到單獨的更小的庫中。 (這裏有Emacs庫,它的發行版符合這個描述。)

如果你真的有一個複雜的問題需要很多不同的入口點,也許實際上你想要公開它們。在這裏抓住一些吸管,我想到一個統計軟件包 - 有許多方法供您選擇,而且您事先不知道哪一種方法對每種情況都有意義。 (通常這種龐然大物的包裹至少需要獲得主題學士學位才能正常運行!)

相關問題