2012-03-18 11 views
2

forward-sexpからmatlab-forward-sexpmatlab-modeに再割り当てしたいと思います。Emacsコマンドを再マッピングする

現在、私はこれを実行します。

(define-key matlab-mode-map [remap forward-sexp] 'matlab-forward-sexp-safe) 

を私はMathWorks社のMATLABモードでM-x forward-sexpを入力するとき、私はまだ古い動作を取得します。どうして?キーボードのショートカットを使用してforward-sexpに電話すると機能しますか?

私が入力したときにC-h f forward-sexpすべてがOKと思われる:

forward-sexp is an interactive compiled Lisp function in `lisp.el'. 

It is remapped to `matlab-forward-sexp-safe', which is bound to C-M-f, 
<C-M-right>, ESC <C-right>. 

(forward-sexp &optional ARG) 



For more information check the manuals. 

Move forward across one balanced expression (sexp). 
With ARG, do it that many times. Negative arg -N means 
move backward across N balanced expressions. 
This command assumes point is not in a string or comment. 

This function is advised. 

After-advice `ctx-flash'. 

[back] 

答えて

1

本当に機能の動作を変更したい場合は、forward-sexp-functionを使用できます。

また、SMIEを構文解析に使用するEmacs-24のオクターブモードをチェックすると、forward-sexpが括弧/角かっこではなく実際のOctaveの構文要素を自動的にジャンプします。

+0

SMIEとは何ですか?解析インフラストラクチャですか? –

4

はい、[remap]構文はキーバインディングのために明示的です。バインディングによって古い関数が呼び出された場合、再マッピングによって新しい関数が呼び出されます。しかし、どちらの関数の定義も変更されませんが、それらは依然として直接呼び出すことができます。

詳細について

、参照M-:(info "(elisp) Remapping Commands")それが今読んでいましたので、以下のようにEmacs 24の最近の変更は、このヘルプテキストを明らかにした

RET:

前方-S式`lisp.el 'のインタラクティブにコンパイルされたLisp関数です。

そのキーは `matlab-forward-sexp-safe 'に再マップされます。この再マッピングがなければ、 はC-M-f、 < C-M-right>、ESC < C-right>に結合される。 。

+2

+1 @Nordlöw:再マッピングを実行するために使用した関数の名前もメモします(define- * key * ...)。これは既に、リマッピングがキーボードショートカットにのみ適用されるというヒントを示しています。 – Thomas

関連する問題