2011-09-14 8 views
4

この質問はthis questionと重複しているかもしれませんが、私のemacsで正しく動作するようにはできません。Emacsでメジャーモードのマイナモードに入る

メジャーモードmatlab-mode(どちらのモードもtheir SourceForge pageで利用可能)に入ると、マイナーモードmlint-modeに入力しようとしています。私は.emacsファイルに以下を書いています。

(add-hook 'matlab-mode-hook 
     (function (lambda() 
        (mlint-mode)))) 

私は上記の質問に答えているようです。 .mファイルを開くときに、私は次のエラーを取得する:

File mode specification error: (void-function mlint-mode)

誰かが私が.mファイルを開くときmlint-modeを入力するための正しいフックを書くうえで支援していただけますか? FWIW、私はemacs 23.1.50.1を実行しています。

+0

なぜ、(add-hook 'matlab-mode-hook' mlint-mode) 'だけではないのですか?実際にマイナーモードをロードしてもよろしいですか? –

+0

これは私が試した最初のもので、うまくいかなかった。以下の@Lindydancerの答えを参照してください。 –

+3

ほとんどのマイナーモードは、引数なしで呼び出されたときに機能を切り替えるので、そうしないのです(対話的に呼び出す場合と同じです)。したがって、すでにmlintモードがバッファに対して有効になっていて、matlab-modeに変更した場合、上記のフォームはmlintモードをオフに切り替える効果があります。そのため、フック機能を使用してマイナーモードを有効にする場合は、通常、引数(頻繁に1またはtが、適切なドキュメント文字列をチェックする)を渡します。 – phils

答えて

10

正しい名前はmlint-minor-modeだと思います。また、すべてのMATLABのものがEmacsが知られており、これは使用して行うことができることを保証することを忘れないでください:

(require 'matlab-load) 

を注意点として、フックにラムダ関数を使用することが一般的に悪い考えです。フックの価値を調べると、無関係なものがたくさん見えます。また、ラムダ式を変更して再追加すると、古いバージョンと新しいバージョンの両方がフックになります。

(defun my-matlab-hook() 
    (mlint-minor-mode 1)) 
(add-hook 'matlab-mode-hook 'my-matlab-hook) 

「1」であるが、mlintモードがオンまたはそれ以前の有効な場合に滞在されていることを保証します。

代わりに、あなたのような何かを行うことができます。

関連する問題