2016-11-29 1 views
1

은 가정하자 나는 다음과 같은 텍스트가 포함 이맥스 버퍼를 가지고있다. 내가 (평가 (버퍼 문자열))를 호출 할 경우, 결과는 단순히 다음과 같은 문자열로 평가됩니다 :emacs : 버퍼 내용을 s- 표현으로 평가 하시겠습니까? 나는 LISP exprerssion (AN의 표현)으로이 버퍼의 내용을 평가하고 싶습니다</p> <pre><code>'(1 2 3) </code></pre> <p>:

"'(1 2 3)" 

나는 결과가 혀짤배기 문으로 평가하고 싶다. 이 예제에서는 결과가 문자열이 아닌 3 요소 목록이되도록하려고합니다.

나는 이것을 수행하는 방법을 알지 못했습니다. 어떤 아이디어?

대단히 감사합니다.

답변

2

(eval-buffer)을 사용하여 전체 버퍼를 평가할 수 있습니다.eval-buffer은 항상 nil을 반환하기 때문에 이에 대한 해결책이 아닙니다.

문자열을 통과하려면 read-from-string을 사용할 수 있습니다. 그게 구문 분석 모두 무엇을 반환하기 때문에 그것이 단점 세포로, 당신은 일반적으로 반환 값에 car을 호출 할, 구문 분석을 중지 인덱스 :

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

(평가 버퍼가) 전무를 반환, 그래서 나는 할 수 없습니다 그것을 사용하여 버퍼의 표현식 값을 리턴하십시오. 그러나 (eval (car (read-from-string (buffer-string))))) 실제로 작동합니다. 나는 read-from-string에 대해 잊었다. 고맙습니다! – HippoMan

+0

아, 대답하기 전에 테스트 했어야합니다 :) – legoscia

관련 문제