2011-09-28 3 views
2

별도의 창에서 .sql 파일과 상호 작용하면서 psql.el에서 Postgres 클라이언트 "psql"을 실행하는 것을 즐깁니다. 때로는 적절한 테이블 이름의 이름을 찾기 위해 psql 프로세스를 실행하는 버퍼 내에서 탭 완성을 사용하려고합니다. 그러나, 나는 원하는 결과를 일으키는 방법을 알아낼 수 없습니다.Gnu Emacs : sql.el 프로세스 내에서 실행되는 psql의 탭 완성

매우 관련 질문은 여기에 물어되었습니다 성공적인 제안없이 https://superuser.com/questions/236574/how-can-i-send-a-literal-tab-to-bash-in-emacs-shell-mode

.

미리 감사드립니다.

setjmp는 보통

답변

2

(그들은 터미널을 소유 할 때) 배관에 사용하는 경우 (TAB에 대한 완료, DOWN UP/대한 역사처럼) 대화 형 기능을 비활성화 대화 형 사용하도록 설계된 프로그램.

이맥스는 대개 외부 프로세스 용 파이프를 사용합니다. 대화식 기능이 비활성화되었습니다.

TAB을 보내신 후에도 클라이언트 프로그램에서 원하는대로 해석하지 않습니다.

프로그램에 대한 man/help를 읽고 명령 행 스위치 (예 : --login for GNU Bash)를 제공하여 강제 대화식 모드를 시도 할 수 있습니다.

 
(defun my-comint-send-string (string) 
    "Send string to comint buffers. Useful for *compilation* read-only buffer." 
    (interactive 
    (list (read-input "Type string: " nil 'my-comint-send-hist-list)) 
    ) 
    (comint-send-string (get-buffer-process (current-buffer)) string) 
) 
(define-key XXX-mode-map [C-return] 'my-comint-send-string) 

와 같은 키 시퀀스 사용 :

은 TAB의 평가를 전송하려면 C-RET C-Q TABRET.

대부분 같은 문제가 Bash autocompletion in Emacs shell-mode

참고 MX 기간에서 논의

하지만 프로그램의 표준 입출력에 사용할 수 버퍼링 (입력 당신은 또한 \ n을 보내야합니다 플러시하는) 경우이 작동하지 않을 수 있습니다 ... 의사 터미널을 사용하여 모든 대화 형 프로그램이 원하는대로 작동하도록하십시오. 그러나이 모드에서는 Emacs 편집 기능을 잃게됩니다 ...