Emacs에 입력 필드를위한 라이브러리가 있습니까?


10

꽤 많은 Emacs 모드가 (같은 것) 형태를 사용합니다 : 커스터마이즈 인터페이스는 그들 중 하나이고, 메시지 모드 (읽기 : 헤더 부분)는 또 다른 것입니다. 불행히도 항상 매우 유사한 것은 아닙니다. 여기서 "양식"이란 텍스트를 입력하도록 지정된 읽기 전용 부분과 장소가있는 버퍼를 의미합니다. 버튼을 포함하거나 포함하지 않을 수 있습니다 ( OK 버튼 C-c C-c이 있는지 여부에 관계없이 확인 / 커밋 키로 수락해야 함 ).

특히 필드의 자동 완성에 관심이 있습니다 (특히 쉼표로 구분 된 지정된 세트의 값 목록 으로 필드를 활성화하는 방법 ). 내 질문은 : Emacs 라이브러리가 그러한 양식을 쉽게 ( "쉬운"으로, 바퀴를 다시 만들지 않음을 의미) 만들 수 있습니까? 아니면 모든 것을 직접 코딩해야합니까?

(난 단지 읽기, (2), 특별한 주요 모드를 준비하는 등 있도록 버퍼의 일부를 설정) (필자는 후자의 경우에 무엇을해야하는지 그 것이다 일을 상상 TAB하고 S-TAB) ( "필드"사이를 전환하고, (3) 자동 완성을 위해 차가워 요 또는 헬멧과 같은 것을 사용할 수 있습니다.)


1
입력 필드를 말하도록 제목을 변경했습니다. 형태는 elisp에서 매우 특별한 의미를 가지므로 혼란을 초래할 수 있습니다.
Malabarba

2
그리고 네, 빌트인 위젯 라이브러리가 있습니다. 그러나 나는 그것에 대해 아무것도 모른다.
Malabarba

@ Malabarba : 고마워, 아마 더 나은 표현입니다.
mbork

(Emacs 자체가이 의미에서 "form"이라는 단어를 사용하더라도 – Drew의 답변에 언급 된 위젯 매뉴얼을 참조하십시오!)
mbork

답변:


8

라이브러리를 참조 cus-edit.el하고 wid-edit.el(그리고 그들의 최고 수준의 라이브러리 custom.elwidget.elGNU 이맥스에 포함되어 및 관련 구성 요소 라이브러리). 전자는 후자를 사용합니다. 후자는 계층에서 " 위젯 " 이라고하는 기본 (및 기본이 아닌) 양식 항목을 정의합니다 . 라이브러리에서 이러한 사전 정의 된 위젯 및 함수를 사용하여 고유 한 위젯 및 위젯 유형을 작성할 수 있습니다.

그러나, 이들 라이브러리의 코드는, 특히 있다는 경고 wid-edit.el입니다 매우 쉬운 일이 아닙니다 따르십시오. 가장 좋은 방법은 기존 위젯을 재사용하거나 기존 위젯 정의 코드를 가이드로 사용하여 시작하는 것입니다.

(이에 대한 두 개의 작은 확장 라이브러리는 cus-edit+.elwid-edit+.el입니다. 또한 사용 예제도 제공합니다.)

" Emacs 위젯 라이브러리 " 라는 제목의 GNU Emacs와 함께 제공되는 위젯에 대한 정보 매뉴얼이 있습니다 .

forms.elGNU Emacs에 포함 된 library도 있지만 익숙하지 않습니다. 아마도 다른 누군가가 그것에 대해 말할만한 유용한 정보를 가지고있을 것입니다. GNU Emacs와 함께 배포되고 " 양식 모드 " 라는 제목의 양식에 대한 매뉴얼이 있습니다 .


2
forms.el에 대해 더 자세히 알아보기 : stackoverflow.com/questions/10166600/…
phils

1
@Drew : 답변 주셔서 감사합니다! 비트 \(custom\|widget\).el\(cus\|wid\)-edit.el비트 의 관계를 명확하게 설명해 주 시겠습니까? 위젯 매뉴얼에서 이해할 수없는 부분에서 특히이 부분을 찾습니다 (require 'widget) (eval-when-compile (require 'wid-edit)).
mbork

1
첫째, 나는 이것에 대해 전문가가 아닙니다. wrt Customize를 변경해야 할 때 cus-edit.el와에 담 그었습니다 wid-edit.el. 언급 한 다른 파일은 최상위 파일입니다. *-edit.el파일은 내가 관심이되었다는 코드를 몰라 훨씬 더보다.; 죄송합니다. 실제 어려움은 코드 자체입니다.이 세미 -OOP 스타일을 사용하여 Emacs 자체 문서화 (가벼운 설명) 나 Emacs 디버거에 적합하지 않습니다. 직접 조사하거나 저자에게 연락을 시도 할 수도 있습니다 (행운을 빕니다!). 어쩌면 여기 다른 사람들이 도움이 될 것입니다.
Drew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.