맞춤 시스템은 A가 이맥스의 기능을 내장 정확하게이 문제를 해결하기 위해 설계 설명을-프로그램은 일반 사용자가 자신의 편집기를 구성하는 이상적인 방법하지 않을 수 있습니다.
사용자 정의 기능의 기본 진입 점은 M-x customize RET
(또는 Options > Customize Emacs > Top-level Customization Group
메뉴에서)입니다. 여기에서 설정 조정을위한 대화식 메뉴 시스템이 표시됩니다. 이 인터페이스는 사용자가 프로그래밍 방식으로 Emacs를 구성 할 때 발생하는 주요 오류 원인을 피하면서 모든 설정이 올바른 유형 (숫자, 문자열, 색상 등)이되도록합니다. 사용자가 UI를 통해 변경 한 내용을 유지하기로 선택한 경우 설정은 사용자의 초기화 파일의 특수 섹션 (읽기 :)에 저장됩니다 .emacs
.
defcustom
같은 주변 저수준 이맥스 리스프 기능 래퍼 defvar
모두 변수를 선언하는 것이 및 커스터마이즈 인터페이스 내에는 볼 수는. 또한 개발자는 적절한 대화 형 제어를 표시하는 데 필요한 추가 메타 데이터를 제공 할 수 있습니다. 즉,이 변수에 어떤 유형의 값이 저장됩니까? 임의의 문자열? 숫자? 고정 옵션 세트에서 선택? etc. defgroup
는 이러한 사용자 정의 가능한 옵션에 대한 그룹화 구성이므로 멋진 계층 구조로 배열 될 수 있습니다.
이 기능은 데이터의 일부가 라이브러리의 내부 세부 사항이 아니라 사용자를 위해 구성 가능한 옵션으로 간주 될 때마다 사용해야합니다.
다음은 작은 라이브러리에서 가져온 간단한 예입니다.
(defgroup checkbox nil
"Quick manipulation of textual checkboxes."
:group 'convenience)
(defcustom checkbox-states '("[ ]" "[x]")
"Checkbox states to cycle between.
First item will be the state for new checkboxes."
:group 'checkbox
:type '(repeat string))
는 defgroup
최상위 레벨에서 사용자 정의 인터페이스 내에서 새 그룹을 생성 convenience
항목을 선택합니다. 그런 다음 가능한 확인란 상태를 저장하는 변수가 필요했습니다. 나는 사용할 수 defvar
있었지만 이것을 쉽게 사용자 정의 할 수 있기를 원했기 때문에을 사용하기로 결정했습니다 defcustom
. :group
부분은 이전에 정의 된 그룹에 속하는 것을 나타내고,는 :type
그 문자열의 시퀀스임을 나타낸다. 기본값과 설명도 있습니다. 사용자가 입력 한 값을 변환하기위한 추가 기능 (여기에는 표시되지 않음)도 있습니다.
이제 실행 M-x customize RET
하고로 이동 Convenience > Checkbox
하면 다음이 표시됩니다.
세계에서 가장 아름다운 인터페이스는 아니지만 "체크 박스 상태"( checkbox-states
내부적으로) 의 값을 사용자 정의하기위한 대화식 도구가 있습니다 . INS
(삽입) 및 DEL
(삭제) 버튼 과 함께 현재 문자열 값을 표시하고 편집 상자에서 문자열 값을 편집 할 수 있습니다. 완료되면 변경 사항을 적용할지, 되돌릴 지 또는 향후 세션에 적용하고 저장할지 결정할 수 있습니다.
customize
시설 을 사용하고 언제 손으로 사용자 정의 해야하는지 알고 싶 습니까? 아니면 모드 작성에 관심이 있습니까? 후자는 실제로 등을 사용하여 자신을 찾을 수있는 상황입니다defcustom
.