2

我编写了一个 emacs 次要模式,除了次要模式之外,它还应该使一些函数可用于显式调用。在模式的文件中,定义模式和功能后,我定义了provide模式:

(provide 'xcode-dired-mode)

其中,在我的.emacsI中require

(setq load-path (cons "~/Documents/Local Projects/xcode-emacs" load-path))
(require 'xcode-dired-mode "xcode-dired")

现在,当缓冲区处于此模式时,我希望有一些额外的功能可用。如果我defun在 lisp 文件中有一个用于次要模式的函数,例如:

(defun xcode-build()
  "Build the default target in the Xcode project."
  ;; ...
  )

这些功能在文件之外不可用,例如M-x xcode-build将不起作用。我不认为provide文件是合适的做法,因为我不想将require所有文件都放在.emacs. 我已经看到了神奇的评论;;; ###autoload,但据我所知,这只在编译 emacs 本身时使用。

当我的次要模式应用于缓冲区时,如何安排可以使用该模式的 lisp 文件中定义的函数?

4

1 回答 1

3

为了调用xcode-buildvia M-x,您需要确保函数实现调用interactive特殊形式以将函数声明为可交互调用。

我相信这是相关的emacs文档:

http://www.gnu.org/software/emacs/manual/html_node/elisp/Using-Interactive.html

http://www.gnu.org/software/emacs/manual/html_node/elisp/Interactive-Call.html

于 2012-04-28T21:08:49.250 回答