2

Flycheckは、ソース ファイルのバックグラウンド コンパイルを行う emacs ライブラリです。マニュアルの助けを借りて、独自の「チェッカー」(特定のファイルをコンパイルする方法) を追加できます。

現在のファイルへの相対ディレクトリでいくつかのファイルを見つける必要があるコンパイラを追加しようとしています。と呼ばれる、私のためにそれを行う関数があります(process filename)。ファイルに対して実行する端末コマンドを作成するときは(eval FORM)、オンザフライで計算パラメーターを使用できます。私のチェッカーの定義の関連部分は次のとおりです。

(flycheck-declare-checker unity-csharp-flychecker
  "given a c-sharp file, looks for the unity file and then tries to build it using mdtool."

  :command '("mdtool" "build" 
    (eval '(process source-original)))

  ...)

source-original実行時に buffer-file-name の代わりに使用される特殊な記号です。

残念ながら、チェッカーを使用しようとすると、次のエラーが発生します。

Invalid result from evaluation of (quote (process source-original)): (process source-original)

(eval)ここで間違って使用していますか?に渡すことができるように、内部から source-original にアクセスするにはどうすればよい(process)ですか? どんな助けでも大歓迎です。

4

1 に答える 1

1

これは正しい形式です:

(flycheck-declare-checker unity-csharp-flychecker
  "given a c-sharp file, looks for the unity file and then tries to build it using mdtool."

  :command '("mdtool" "build" 
    (eval (process buffer-file-name)))

  ...)

前に引用を削除するように依頼してくれたブルース・コナーに感謝します(process ...)。それは私に新しいエラーを与えました:

Error: (void-variable source-original)

そこで、ソースを掘り下げたところ、評価前にシンボルの置換がないことがわかりました。buffer-file-name使うだけではうまくいかないシンボルが与えられたので、私はそれを試してみました。今後、そのアプローチに影響があるかどうかはわかりません。

于 2013-07-19T10:52:46.140 に答える