2009-03-03 5 views

답변

49

region-beginning과 함께 buffer-substringregion-end 그렇게 할 수 있습니다.

+0

정말 멋지 네. 고마워. 나는 나 혼자서 그것을 명확히 발견하지 못했을 것이다. – Singletoned

59

starblue에서 말하듯이 (buffer-substring (mark) (point))은 표시가 설정된 경우 영역의 내용을 반환합니다. string properties을 원하지 않으면 'buffer-substring-no-properties 변형을 사용할 수 있습니다.

대화 형 명령을 작성하는 경우 (interactive "r") 양식을 사용하여 영역의 끝점을 얻는 더 좋은 방법이 있습니다. 당신은 버퍼뿐만 아니라 지역의 어떤 부분에 라인을 계산이 기능을 사용할 수 있도록

리스프 코드에서 호출
 
(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))) 

(interactive ...) 형태로, 무시 : 여기 simple.el에서 예입니다 적절한 인수를 전달합니다 (예 : (count-lines-region (point-min) (point-max))). 버퍼의 좁은 부분의 행을 계산합니다. 그러나 대화식으로 호출 될 때 (interactive ...) 양식이 평가되고 "r" 코드는 포인트와 표시를 두 개의 숫자 인수로 가장 작은 것으로 제공합니다.

이멕스 리스프 매뉴얼 21.2.1 Using Interactive21.2.2 Code Characters for interactive을 참조하십시오.

4

Lisp 코드의 영역 내용을 kill-ring, X clipboard 또는 register와 같은 사용자 액세스 가능 데이터 구조로 복사하려면 이멕스 Lisp 매뉴얼에서 buffer-substring 대신 filter-buffer-substring을 사용할 것을 권장합니다. 복사하기 전에이 함수는 filter-buffer-substring-functions이라는 목록 변수에서 필터 함수를 적용합니다. 이 함수는 added in version 22.3입니다.