영역을 특정 너비로 ​​채우는 함수를 만드는 방법은 무엇입니까?

영역을 특정 너비로 ​​채우는 함수를 만드는 방법은 무엇입니까?

때로는 emacs에서 텍스트를 조정하는 데 사용합니다 C-u 70 M-x fill-region.

..emacsC-u 70 fill-region

저는 emacs 프로그래밍이 처음이지만 한동안 emacs를 사용해 왔습니다. 해결책이 있다면 어떻게 하는지 설명해 주실 수 있나요?

답변1

함수 앞에 접두사를 붙이면 C-h f해당 문서를 읽을 수 있습니다. 이렇게 하면 fill-region무엇보다도 다음이 표시됩니다.

The `fill-column' variable controls the width.

확인해보면Fill 명령에 관한 Emacs 매뉴얼당신은 읽을 수있다:

채우기의 최대 선 너비는 버퍼 로컬 변수에 의해 지정됩니다 fill-column. 기본값(참조 현지인)은 70이다. 현재 버퍼에 설정하는 가장 쉬운 방법은 fill-column명령 C-x f( set-fill-column)을 사용하는 것입니다. 숫자 매개변수의 경우 이를 새 채우기 열로 사용합니다. 매개변수와 마찬가지로 점의 현재 수평 위치로 C-u설정됩니다 .fill-column

이것이 어떻게 C-u 70 M-x fill-region작동하는지 설명합니다. 또한 패딩 너비를 설정하여 설정할 수 있음을 보여줍니다 C-x f. 따라서 인수가 필요한 함수를 작성할 필요가 없을 수도 있습니다. 즉, 대신 C-x fand를 사용할 수 있습니다 fill-region.

여전히 이 작업을 수행하는 새 함수를 원하는 경우 다음을 사용할 수 있습니다.

(defun fill-region-ask-width (fill-width)
  "Asks for a width and fills the region to it"
  (interactive "nFill region to column: ")
  (fill-region-width fill-width))

(defun fill-region-width-70 ()
  "Fills the region with width 70"
  (interactive)
  (fill-region-width 70))

(defun fill-region-width (fill-width)
  "Fills the region with the given width"
  (set-fill-column fill-width)
  (fill-region (region-beginning) (region-end)))

이러한 기능은 다음과 같이 설명됩니다.독스트링그러나 여기에 몇 가지 주의사항이 있습니다.

  • fill-region-ask-width사용자에게 요청하여 얻은 매개변수를 받아들이고 그 숫자를 정수( n)로 처리하여 에 전달합니다 fill-region-prompt-width.
  • fill-region-width-70에 하드코드된 숫자가 전달되었습니다 fill-region-prompt-width.
  • fill-region-width다른 두 함수의 공통점을 모듈화하는 데 사용되는 도우미 함수입니다. 대화형으로 정의되지 않았으므로 호출할 수 없습니다 M-x. fill-column주어진 매개변수를 설정 하고 영역을 채웁니다.

Emacs 함수를 작성하고 이를 키에 바인딩하는 방법을 알아보려면 다음을 참조하세요.Emacs용 Elisp 배우기: 4-2과 - Emacs에 사용자 정의 함수 추가.

관련 정보