2012-04-28 6 views
2

私は、マイナーモードに加えて明示的な呼び出しのためにいくつかの機能を利用できるようにemacsマイナーモードを書いています。モードのファイルの外でemacsモードから機能を利用できるようにする

.emacsにI require
(provide 'xcode-dired-mode) 

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

今、バッファが、この中であるモードのファイルでは、モードや機能を定義した後、私はprovide Dモードをしましたモードでは、私はいくつかの余分な機能を利用したい。 I defunマイナーモード用のLispファイル内の関数ならば、のように:

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

機能は、例えば、ファイルの外には使用できませんM-x xcode-buildは機能しません。私はprovideファイルを作成することは適切ではないと思うので、私はrequireのすべてを.emacsに入れたくありません。私は魔法のコメント;;; ###autoloadを見てきましたが、emacs自体をコンパイルするときにしか使用されていないことが分かりました。

マイナーモードをバッファに適用すると、モードのlispファイルで定義された関数を使用することができます。

+1

:ファイルは、この例ではrequire' 'によって(ロードされたとすぐに)、そのファイルによって定義されたすべての定義された関数、変数などは、そのファイルの外部でコード化することができます。 – phils

+1

';;; ### autoload'コメントは、さまざまなパッケージマネージャー(' el-get'は一例です; 'package.el'もそれらを使用していると仮定します)でも使用されることに注意してください。したがって、他の人が使用できるようにコードを記述している場合は、これらの自動ロードコメントを適切な定義に追加して、それらのパッケージマネージャーのいずれかを使ってコードを使用する人は、自分のオートロード設定を追加する必要はありません。 – phils

答えて

3

M-xxcode-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

関連する問題