문제

현재 영역의 내용에 함수 내 문자열로 액세스하고 싶습니다. 예를 들어:

(concat "stringa" (get-region-as-string) "stringb")

감사

에드

도움이 되었습니까?

해결책

buffer-substring 함께 region-beginning 그리고 region-end 그렇게 할 수 있습니다.

다른 팁

Starblue가 말했듯이 (buffer-substring (mark) (point)) 마크가 설정된 경우 지역의 내용을 반환합니다. 당신이 원하지 않는다면 문자열 속성, 당신은 그것을 사용할 수 있습니다 'buffer-substring-no-properties 변종.

그러나 당신이 쓰고 있다면 인터렉티브 명령, 양식을 사용하여 해당 지역의 끝점을 얻는 더 좋은 방법이 있습니다. (interactive "r"). 다음은 예입니다 simple.el:

(defun count-lines-region (start end)
  "Print number of lines and characters in the region."
  (interactive "r")
  (message "Region has %d lines, %d characters"
       (count-lines start end) (- end start)))

LISP 코드에서 호출했을 때 (interactive ...) 양식이 무시 되므로이 기능을 사용하여 선을 계산할 수 있습니다. 어느 적절한 인수를 전달함으로써 지역뿐만 아니라 버퍼의 일부 (count-lines-region (point-min) (point-max)) 버퍼의 좁은 부분의 선을 계산합니다. 그러나 대화식으로 불리는 경우 (interactive ...) 양식이 평가되고 "r" 코드는 포인트와 마크를 두 개의 숫자 인수로 가장 먼저 제공합니다.

EMACS LISP 매뉴얼 섹션을 참조하십시오 21.2.1 대화식 사용 그리고 21.2.2 대화식의 코드 문자.

LISP 코드의 영역 컨텐츠를 Kill-Ring, X Clipboard 또는 Register와 같은 사용자가 액세스 가능한 데이터 구조로 복사하려면 EMACS LISP 설명서는 사용하는 것이 좋습니다. filter-buffer-substring 간단한 대신 buffer-substring. 복사하기 전에 함수는 호출되는 목록 변수에서 필터 함수를 적용합니다. filter-buffer-substring-functions. 기능은 버전 22.3에 추가되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top