버퍼의 내용을 얻는다


15

그래서 buffer-string현재의 버퍼의 컨텐츠를 가져옵니다. 그러나 다른 버퍼를 지정할 수는 없습니다.

그 문제를 어떻게 해결할 수 있습니까? save-window-excursion작동시키기 위해 필요한 것이 있습니까?


물어 보는 것이 마음에 들지 않으면 어떻게하려고합니까?
Luke Shimkus

@ King 비동기 프로세스를 만들고 표준 입력이므로 버퍼의 내용을 보내려고합니다. 나는 내가 사용할 수 있다고 생각 process-send-string했고 갇혔다.
Maciej Goszczycki 님

답변:


25

Emacs의 많은 것들이 현재 버퍼에서 작동합니다. 현재 버퍼를 변경하고 완료되면 복원해야합니다. 사용 with-current-buffer하면 또 다른 버퍼에 뭔가를 할 필요가 있고, 간단한 경우에 대한 save-current-buffer여러 버퍼를 탐색 할 필요가 더 복잡한 경우에.

(defun buffer-string* (buffer)
  (with-current-buffer buffer
    (buffer-string)))

속성이없는 버퍼의 텍스트 내용을 원하면을 호출하십시오 buffer-substring-no-properties.

buffer-string버퍼 의 좁은 부분 만 반환합니다 . 전체 내용이 필요한 경우 축소를 저장 한 후 내용을 넓 힙니다.

(defun buffer-whole-string (buffer)
  (with-current-buffer buffer
    (save-restriction
      (widen)
      (buffer-substring-no-properties (point-min) (point-max)))))

포인트를 저장해야 할 경우에도 전화하십시오 save-excursion. 참고 save-excursion다른 버퍼로 전환해야하고, 거기에 전화 이동할 그렇다면 복원은 현재 버퍼에있는 점, save-excursion내부 save-current-buffer또는 with-current-buffer.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.