私はEmacsモードを使用していくつかのファイルに注釈を付けます(実際のモードは重要ではありません)。これはライブラリとして提供され、コンパイルされたlispコードが付いています(もちろん)。私はその中の一つの関数をオーバーライドすることによってその動作を変更したい。私のローカルEmacsセッションのためだけです。今のところ、私はライブラリのソースファイルから関数をコピーして貼り付け、それをちょっと修正してからeval-last-sexp
を押します。ここまでは順調ですね。しかし、私は一貫性のない結果を得ます:.elc
ファイルから来る関数をEmacsがどのように処理して、ソースから来た関数をどのように扱っているのかよくわかりません。時には私自身のバージョンの関数が動作していることがあります。時にはオリジナルのバージョンもあります。非常に紛らわしい(そして迷惑な)。Emacsライブラリ内の単一の関数をオーバーライドします。
私は一貫してEmacsライブラリのlisp関数を置き換えることができますは読み取り専用のライブラリのソースファイルを変更することなく使用できますか?
(advice-add 'name-of-func-to-override :override
(lambda() (message "does this instead now")))
は、関数名とバージョンとlambda
でname-of-func-to-override
を置き換えます。このような
「add-function」とその他はEmacs 24.4でのみ追加されました(私はEmacsを更新する必要があります)。 –