問題タブ [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.
emacs - emacs 関数へのアドバイス; 反論
emacs で関数をアドバイスしようとしていますが、何も起こりません。
つまり、再センタリングは起こりません。代わりにa がある場合、(message "foo")
実際に foo が表示されます。デフアドバイスについて私が知らないことは何ですか?
emacs - emacsインタラクティブ機能のアドバイス:前
私は前にしたい-インタラクティブな引数を使用するいくつかの関数をアドバイスします、例えばfind-dired
:
find-dired
しかし、emacsはインタラクティブセッションの後でのみこのアドバイスを実行し、私はfind-args
前にセットアップすることができません。矛盾を解決する方法は?
更新 defadvice
マクロは非推奨であることに注意してください。
emacs - 条件が満たされたときに機能を実行しないようにアドバイスを得るにはどうすればよいですか?
アドバイスがnilを返したときに、アドバイスされた関数が実行されないようにするにはどうすればよいですか?
->beginning-of-line
まったく実行されていません。
編集:あなたの心配を取り除くためだけに、私はそれをで使うつもりはありませんbeginning-of-line
。
emacs - Emacsのカーソル移動のアドバイス
カーソルがバッファ内を移動するときにバッファのさまざまな部分を強調表示するマイナーモードを作成しました。私はこのような動きの機能をアドバイスすることによってこれを行います。
しかし、これはこれを行うための間違った方法のようです。カーソル移動用のフックを探しましたが、フックがないようです。
たくさんの動きの機能をアドバイスする代わりに使用できるフックがありませんか、それともこれにアプローチするためのより良い方法がありますか?
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 固有のバージョンに置き換えられました。
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-backward
a[ ]*b[ ]*c[ ]*
問題は、関数にアドバイスしてから「abc」のisearchを実行すると、エラーが発生したことですI-search: abc [(void-function nil)]
。しかし、コードをdefadvise
元のisearch-search-fun-default
関数に入れると、うまくいきます! だから私は混乱します。Elisp のマニュアルad-do-it
では、元の関数コードのプレースホルダーに過ぎないと述べているため、これらの 2 つのアプローチ (関数にアドバイスするか、元の関数を変更する) は、最終的に同じコードを生成するはずです。アドバイスするとエラーになるのはなぜですか?
emacs - 組織モードは、エクスポート中に src ブロックのコンテンツを取得します
これが私がやろうとしていることです:
組織ドキュメントから生成された HTML に表示し、そのコードを HTML ページで実行したい JavaScript コードのスニペットがあります。単純な例として、次のようにします。
しかし、これは undefined symbol について文句を言いますblock-name
。
非常によく似たこの質問を見つけましたが、そこにある答えはうまくいきません。Emacs org-mode で、あるコード ブロックのソース コードを別のコード ブロックへの入力にする
ブロックの内容/名前を参照するための構文は何ですか?
編集:
私は近づいていますが、まだそこにはありません:
これには 2 つの問題があります。script
変数の値はnil
で、スクリプト タグはエスケープされています (山かっこは and に置き換えられてい<
ます>
。スクリプト タグを評価の外に置くことで、この特定の置換のケースを見つけることができましたが、一般的にこれを防ぐことはできません。ルール (スクリプト内に「より少ない」または「より大きな」記号がある場合、それらは置き換えられます)。
EDIT1:
もうすぐそこ!
org-babel-get-src-block-info
variable に名前が付けられている場合は、コードのブロックのコンテンツをローカルに保存するようにアドバイスしました<name>-text
。これにより、後で取得できます。
使用例:
エスケープは:results html
オプションで処理されます。これにより、Org は HTML を文字どおりに挿入します。
失敗する最小限の例を次に示します。
しかし、これは機能し、「期待される」結果を生成します:
の出力<script>your script could be here</script>
と、eLisp コード ブロックのコメント内の JavaScript コード。
emacs - defadvice ループで eval を回避するかどうか、および回避する方法
次のコードで eval を避けるべきですか? もしそうなら、どのように?それとも、これは eval を使用する方が優れている例外的なケースの 1 つですか?
上記のイディオムの実際の例:
function - Emacs ライブラリの単一の関数をオーバーライドする
私はいくつかのファイルに注釈を付けるために Emacs モードを使用しています (実際のモードは重要ではありません)。これはライブラリとして提供され、コンパイル済みの Lisp コードが付属しています (もちろん)。その中の単一の関数をオーバーライドして、その動作を変更したいと考えています。私のローカルEmacsセッションのためだけに。とりあえず、ライブラリのソース ファイルから関数をコピーして貼り付け、少し変更してからeval-last-sexp
. ここまでは順調ですね。しかし、一貫性のない結果が得られます。Emacs が.elc
ソースからの関数と混合されたファイルからの関数をどのように処理するかはわかりません。自分のバージョンの関数が実行されていることもあれば、元のバージョンが実行されていることもあります。非常に紛らわしい(そして迷惑)。
読み取り専用のライブラリのソース ファイルを変更せずに、Emacs ライブラリの Lisp 関数を一貫して置き換える方法はありますか?