2

私は、アセンブラー、プログラマー、およびその他の外部プログラムへのさまざまな呼び出しを行うプログラムモードに取り組んでいます。私の狡猾な計画は、これらすべてを関数で処理し、実行中のプログラムに依存compileする明示的なものを渡すことでした。compile-command

この種のものは機能しているようで、さまざまな外部プログラムに特定のエラー正規表現を追加したいと考えています。1 つのオプションは、メジャー モードを変更compilation-error-regexp-alist-alistしてから、メジャー モードを に追加することcompilation-error-regexp-alistです。

ただし、私がやりたいことは、次のようなものです。

(let ((compilation-error-regexp-alist
       (cons <my-regexp-and-numbers> compilation-error-regexp-alist))
  (compile <my-compile-command>))

奇妙なことに、このバインディングは、コンパイル バッファーが解析/マークアップされる方法に影響を与えないようです。<my-regexp-and-numbers>バッファの前に手動でプッシュしてcompilation-error-regexp-alistから呼び出すと(compilation-mode t)、すべてが期待どおりにフォント化されます(したがって、正規表現が間違っていません)。ただし、上記のよう(compilation-mode t)にフォーム内に呼び出しを貼り付けてletも、何の影響もありません。

再現しやすいテストケースとして、これは惨めに失敗することを私は認識しています。誰もアイデアを持っていない場合は、例をハックしようとしますが、誰かが「ああ、そうです。それは評価されないからです」など.. .

4

1 に答える 1

2

私の推測では、変数はコマンドに設定されていますが、どういうわけかコンパイル バッファに渡されません。

C-h vメソッドを試して、確認のためにコンパイル バッファ内の変数 ( ) の値を表示します。

于 2012-08-21T22:23:48.800 に答える