2012-09-11 3 views
4

이맥스 내에서 (M-x gdb) gdb를 실행하고 디렉토리 이름을 탭 완성하려고 할 때 슬래시 대신 공백으로 완료됩니다. 따라서, 예를 들어 :emacs gdb 탭 -/

(gdb) run/mn

탭 - 완료에

(gdb) run /mnt 

때해야 탭 완성 내가 이맥스의 외부 GDB를 실행하면

(gdb) run /mnt/

에 탭 완성은 예상대로 작동합니다.

저는 데비안 테스트에서 gdb 7.4.1-debian과 emacs 23.4.1을 실행하고 있습니다.

나를 도와 줄 수있는 도움을 주시면 감사하겠습니다. 이건 정말 짜증나!

+0

이것은 나에게도 정말 성가신 일이었습니다. 수정본을 아래에서 시도 할 것입니다. – bph

답변

3

gud-modegdbcomplete 명령을 호출하여 가능한 완료 목록을 검색합니다.

(run /mnt) 

반환 된 목록에있는 각 항목의 첫 번째 부분이 절단 : 당신의 예에서, 반환 된 목록은 다음 ("/ MN"로 시작하는 파일 시스템에 하나의 디렉토리가 있다고 가정)를 포함 할 것 그래서 당신이 볼 수 있듯이 오프, 나머지 전체 목록은

(/mnt) 

이다 GDB의complete 명령에 의해 반환이 항목은 이미 후행 슬래시 없다. 이 문제를 해결할 수있는 유일한 희망은 gdb의 명령을 패치하거나 Emacs의 gud-mode을 패치하는 것입니다. 어떻게 든 완성 된 단어가 디렉토리인지 확인한 다음 슬래시를 추가하여 (공백 문자).

그러나 물론

, 당신은 단순히 잠재적으로 다시 기본 gud-gdb-complete-command에 떨어지면, 그러나 아마 촉구 완료 다른 종류의 작업을 수행 한 다른 완료 함수에 TAB 키를 결합 할 수있다. 이를 위해

은 당신의 이맥스 파일에 다음을 넣어보십시오 :

(defun my-gud-gdb-setup() 
    (define-key (current-local-map) "\t" 'my-gud-gdb-complete-command)) 

(defun my-gud-gdb-complete-command (&optional COMMAND PREDICATE FLAGS) 
    (interactive) 
    (unless (comint-dynamic-complete-filename) 
    (gud-gdb-complete-command COMMAND PREDICATE FLAGS))) 

(add-hook 'gdb-mode-hook 'my-gud-gdb-setup) 

이 코드는 먼저 파일로 현재 단어를 확장하려고 TAB 키에 새로운 기능을 결합, 만 실패하면 기본값 gud-gdb-complete-command이 호출됩니다.

+0

emacs-side 간섭 문제는 원격 gdb에서 작동하지 않을 것이라고 생각합니다. – Sigma

+0

원래 질문의 후미 공백에 유의하십시오. 이것은 나를 미치게하는 부분입니다. 공간을 삭제하고 슬래시를 입력해야합니다. 후미 공간을 추가하는 이유는 무엇입니까? – sligocki

+0

@sligocki이 답변을 올린 지 너무 오래되었습니다. 그러나 내 솔루션이 후행 슬래시 문제도 해결했음을 기억하는 것 같습니다. 너 해봤 어? 나는 오도 할 수도있다. – Thomas