問題タブ [advising-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
315 参照

emacs - emacs 関数へのアドバイス; 反論

emacs で関数をアドバイスしようとしていますが、何も起こりません。

つまり、再センタリングは起こりません。代わりにa がある場合、(message "foo")実際に foo が表示されます。デフアドバイスについて私が知らないことは何ですか?

0 投票する
5 に答える
3546 参照

emacs - emacsインタラクティブ機能のアドバイス:前

私は前にしたい-インタラクティブな引数を使用するいくつかの関数をアドバイスします、例えばfind-dired

find-diredしかし、emacsはインタラクティブセッションの後でのみこのアドバイスを実行し、私はfind-args前にセットアップすることができません。矛盾を解決する方法は?

更新 defadviceマクロは非推奨であることに注意してください。

0 投票する
1 に答える
147 参照

emacs - 条件が満たされたときに機能を実行しないようにアドバイスを得るにはどうすればよいですか?

アドバイスがnilを返したときに、アドバイスされた関数が実行されないようにするにはどうすればよいですか?

->beginning-of-lineまったく実行されていません。

編集:あなたの心配を取り除くためだけに、私はそれをで使うつもりはありませんbeginning-of-line

0 投票する
1 に答える
434 参照

emacs - Emacsのカーソル移動のアドバイス

カーソルがバッファ内を移動するときにバッファのさまざまな部分を強調表示するマイナーモードを作成しました。私はこのような動きの機能をアドバイスすることによってこれを行います。

しかし、これはこれを行うための間違った方法のようです。カーソル移動用のフックを探しましたが、フックがないようです。

たくさんの動きの機能をアドバイスする代わりに使用できるフックがありませんか、それともこれにアプローチするためのより良い方法がありますか?

0 投票する
3 に答える
1205 参照

emacs - initial-buffer-choice に自動保存データがある場合、emacs がハングしないようにするにはどうすればよいですか?

私はデーモンモードでemacsを使用しており、initial-buffer-choice 変数セットも持っています。に使用するファイルを編集しているときに、emacs がクラッシュすることがありますinitial-buffer-choice。この場合、--daemon を指定して emacs を起動すると、次のメッセージが表示されてハングします。

ほとんどの場合、init スクリプトからデーモンを起動するため、このダイアログを確認または拒否することはできず、デーモンは永久にハングします。この場合、自動保存データの通知をバイパスするにはどうすればよいですか? 必要に応じてオートセーブデータが失われてもかまいません。

これが私の試みでした:

ただし、これは機能しません。私はまだ同じハング動作を取得します。実際、アドバイス内に「メッセージ」呼び出しを入れると、アドバイスがまったく呼び出されないことがわかります。

同様の質問:ファイルに自動保存データがある場合、emacs-daemon の起動がフリーズします。ただし、このソリューションは では機能しませんinitial-buffer-choice。受け入れられた回答は、私が試みたようにアドバイスを正常に定義した可能性のある以前のバージョンから編集されたcommand-lineようですが、残念ながらこのバージョンはなくなり、desktop.el 固有のバージョンに置き換えられました。

0 投票する
1 に答える
150 参照

emacs - isearch-search-fun-default の defadvice エラー

これは前回の投稿の続きです ( Emacs で isearch-forward の前に入力文字列を前処理することは可能ですか)。jpkotta変数を使用しての回答を実装しようとしていますisearch-search-fun-function。独自の関数を記述する代わりに、「abc」と入力するたびに isearch が regexp を強調表示して検索するようisearch-search-fun-defaultに、独自の関数 (isearch-str-forwardおよび、デモの目的で) を含めることをお勧めします。isearch-str-backwarda[ ]*b[ ]*c[ ]*

問題は、関数にアドバイスしてから「abc」のisearchを実行すると、エラーが発生したことですI-search: abc [(void-function nil)]。しかし、コードをdefadvise元のisearch-search-fun-default関数に入れると、うまくいきます! だから私は混乱します。Elisp のマニュアルad-do-itでは、元の関数コードのプレースホルダーに過ぎないと述べているため、これらの 2 つのアプローチ (関数にアドバイスするか、元の関数を変更する) は、最終的に同じコードを生成するはずです。アドバイスするとエラーになるのはなぜですか?

0 投票する
2 に答える
2182 参照

emacs - 組織モードは、エクスポート中に src ブロックのコンテンツを取得します

これが私がやろうとしていることです:

組織ドキュメントから生成された HTML に表示し、そのコードを HTML ページで実行したい JavaScript コードのスニペットがあります。単純な例として、次のようにします。

しかし、これは undefined symbol について文句を言いますblock-name

非常によく似たこの質問を見つけましたが、そこにある答えはうまくいきません。Emacs org-mode で、あるコード ブロックのソース コードを別のコード ブロックへの入力にする

ブロックの内容/名前を参照するための構文は何ですか?

編集:

私は近づいていますが、まだそこにはありません:

これには 2 つの問題があります。script変数の値はnilで、スクリプト タグはエスケープされています (山かっこは and に置き換えられてい<ます>。スクリプト タグを評価の外に置くことで、この特定の置換のケースを見つけることができましたが、一般的にこれを防ぐことはできません。ルール (スクリプト内に「より少ない」または「より大きな」記号がある場合、それらは置き換えられます)。

EDIT1:

もうすぐそこ!

org-babel-get-src-block-infovariable に名前が付けられている場合は、コードのブロックのコンテンツをローカルに保存するようにアドバイスしました<name>-text。これにより、後で取得できます。

使用例:

エスケープは:results htmlオプションで処理されます。これにより、Org は HTML を文字どおりに挿入します。


失敗する最小限の例を次に示します。

しかし、これは機能し、「期待される」結果を生成します:

の出力<script>your script could be here</script>と、eLisp コード ブロックのコメント内の JavaScript コード。

0 投票する
1 に答える
109 参照

emacs - defadvice ループで eval を回避するかどうか、および回避する方法

次のコードで eval を避けるべきですか? もしそうなら、どのように?それとも、これは eval を使用する方が優れている例外的なケースの 1 つですか?

上記のイディオムの実際の例:

0 投票する
2 に答える
793 参照

function - Emacs ライブラリの単一の関数をオーバーライドする

私はいくつかのファイルに注釈を付けるために Emacs モードを使用しています (実際のモードは重要ではありません)。これはライブラリとして提供され、コンパイル済みの Lisp コードが付属しています (もちろん)。その中の単一の関数をオーバーライドして、その動作を変更したいと考えています。私のローカルEmacsセッションのためだけに。とりあえず、ライブラリのソース ファイルから関数をコピーして貼り付け、少し変更してからeval-last-sexp. ここまでは順調ですね。しかし、一貫性のない結果が得られます。Emacs が.elcソースからの関数と混合されたファイルからの関数をどのように処理するかはわかりません。自分のバージョンの関数が実行されていることもあれば、元のバージョンが実行されていることもあります。非常に紛らわしい(そして迷惑)。

読み取り専用のライブラリのソース ファイルを変更せずに、Emacs ライブラリの Lisp 関数を一貫して置き換える方法はありますか?