2011-01-16 4 views
8

dunnet.el 게임, eliza 의사 또는 IELM 모드를 상상해보십시오 ...; 이것은 답변을 평가하고 기본 버퍼에서 새로운 질문을하는 것입니다. 그런 다음 elisp 규칙에 따라 몇 가지 작업을 수행합니다.Emacs Lisp : REPL을 사용하는 대화식 버퍼 방법?

인터랙티브 어시스턴트와 같은 것을 만들지 만 미니 패드에서 (대화 형) 않습니다 (M-x하지 않음)를 묻지 않습니다 ... REPL 루프가 필요합니다. 그래서 질문은 어떻게 대화 버퍼/인터랙티브/모험 같은 작업 버퍼 (기본 화면)에 대한 상호 작용을하지만,이 방법으로 내 defun'ed 함수를 호출합니다.

그래서 사용자 정의 REPL을 만들기 위해 기본 elisp 해골이 필요합니다. 목표는 자연어를 사용하여 보조자를 만든 다음 anwsers를 구문 분석하고 규칙에 따라 일부 작업을 수행하는 것입니다.

, 당신의 시간을

스티브,

+0

리턴 키의 적절한 재 바인딩을 사용하여 일부 주요 모드에서 버퍼를 설정하는 것으로 충분합니까? –

답변

2

이 버퍼에 갈 수 있는지에 따라, 당신은 단지 그것을 적절한 return의 재 바인딩의 주요 모드를 제공 할 수 있습니다 감사합니다? (이 대답은 Lisp-Interaction-Mode의 C-j에서 모호하게 나타납니다)

+0

글쎄, 그것은 주요 모드, 중재 REPL, 반환 다시 바인딩해야합니다 ... 내 목표는 자연어를 해석하고 elisp 함수 호출로 변환 할 수있는 텍스트 도우미를 작성하는 것입니다. 예를 들어 보겠습니다. 일반 텍스트를 일종의 Tex 소스 (LaTex, Texinfo ...)와 통합하려는 게시자를 상상해보십시오. 먼저 대화 상자에 제목, 저자, 책 크기, 개요, 주 텍스트 파일 등을 요청할 수 있습니다 ... 또는 sqlite select의 쿼리를 구문 분석하는 자연어로 REPL을 상상해보십시오. 텍스트 프론트 엔드와 같은 것입니다. – user577475

+1

사용자가 "원시"키맵을 설정하여 사용자가 버퍼에서 자유롭게 이동할 수 없도록 설정하는 것이 좋습니다. term-mode의 소스 코드를 확인하십시오. 기본 "char-mode"와 비슷한 기능을합니다. – Thomas

5

emacs에 포함 된 elisp repl을 확인하십시오.

0

C-p C-n, 위 아래 화살표/위/아래 페이지와 같이 버퍼에서 이동하는 데 사용하는 모든 키를 바인드하여 (lambda())에 바인딩해야합니다. 커서 위치가 줄의 시작 또는 끝에 있으면 C-b 및 C-f (왼쪽 오른쪽 화살표)에 대한 변경 기능. 그리고 Return 키를 사용하여 현재 줄을 끝에서 옵션 프롬프트로 읽어 들이고 (Regex를 사용하여 프롬프트를 제거 할 수 있습니다.) 원하는 문자열을 버퍼에 넣고 버퍼의 다음 줄로 가서 결과를 인쇄하십시오.

관련 문제