function - 使 emacs 模式中的函数在模式文件之外可用

标签 function export elisp

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

(provide 'xcode-dired-mode)

其中,在我的.emacs中,我需要:

(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 将不起作用。我认为提供文件是不合适的事情,因为我不想要求所有文件都在.emacs<中。我看过神奇的评论 ;;; ###autoload 但据我所知,它仅在编译 emacs 本身时使用。

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

最佳答案

为了通过 M-x 调用 xcode-build,您需要确保函数实现调用 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

关于function - 使 emacs 模式中的函数在模式文件之外可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366750/

相关文章:

javascript - 使用className.onclick JS调用函数

php - 将函数创建的值添加到数组 : PHP

emacs 口齿不清 : how to add to link/hyperlink to another file just like that in *H e l p*

emacs - Elisp:在 Let 中绑定(bind)一个 lambda 并执行它

Python:按名称传递参数

c++ - 从非常量对象调用 const 函数

matlab - 将图形导出为 eps、pdf 时 Matlab 中的奇怪行为

database - 将表和索引从一个 SQL Server 2000 数据库导出到另一个数据库

javascript - 语法错误: import declarations may only appear at top level of a module

emacs - 将字体锁定应用于 elisp 中的引号