2016-11-29 4 views
1

は、私は次のテキストが含まれているEmacsのバッファがあるとします。emacs:バッファの内容をs式として評価しますか?

'(1 2 3) 

私はlispのexprerssion(S式)として、このバッファの内容を評価したいと思います。私は(evalの(バッファの文字列))を起動した場合、その結果は単に以下の文字列として評価されます:

"'(1 2 3)" 

私は結果がlispの声明として評価したいです。この例では、結果を文字列ではなく3要素のリストにします。

私はこれを行う方法を理解していません。何か案は?

ありがとうございました。

答えて

2

(eval-buffer)を使用すると、バッファ全体を評価できます。eval-bufferは、常にnilを返すため、これに対する解決策ではありません。

文字列を使用する場合は、read-from-stringを使用できます。それはそれが解析され、両方の何を返すので、それはコンスセルとして、あなたは通常、その戻り値にcarを呼びたい、構文解析を停止インデックス:

(eval (car (read-from-string (buffer-string)))) 
+1

(EVAL-バッファ)はnilを返すので、私はできませんこれを使用してバッファ内の式の値を返します。しかし、(eval(car-read-from-string(buffer-string))))実際に動作します。私はread-from-stringについて忘れていました。ありがとうございました! – HippoMan

+0

ああ、答える前にそれをテストしたはずです:) – legoscia

関連する問題