2009-08-17 5 views
4

내가 가진 이맥스의 한 가지 문제점은 서로 다른 디렉토리에있는 비슷한 이름의 파일을 잘 처리하지 못하는 것입니다. 예를 들어, 조심하지 않으면 2__init__.py 버퍼가 열리게됩니다. 내가 한 일은 M-x rename-buffer을 사용하고 그 안에있는 패키지를 나타내는 이름을 바꾸는 것입니다. 그러나 수동으로 수행하는 것은 다소 지루합니다.emacs에서 이름이 비슷한 여러 파일을 처리하는 가장 좋은 방법은 무엇입니까?

누구든지이 문제를 공격하기위한 전략이 있습니까?

답변

19

내가 이맥스와 함께 제공되는 uniquify을 좋아한다 : 이러한 설정으로

(require 'uniquify) 

(setq uniquify-buffer-name-style 'reverse) 
(setq uniquify-separator "/") 
(setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified 

(setq uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers (or Gnus mail buffers) 

, 디렉토리는 당신에게이 파일이 의 표시를주는 버퍼 이름에 추가됩니다. 예를 들어, 다음 버퍼 이름 초래 파일 /some/path/to/Makefile/some/path/to/different/Makefile로드 :

Makefile/to   (which is /some/path/to/Makefile) 

Makefile/different (which is /some/path/to/different/Makefile) 

uniquify 또한 버퍼가 삭제 될 때 버퍼 이름을 갱신 처리, 그래서 때 둘 중 하나 Makefile 버퍼가 삭제되고 다른 버퍼의 이름이 Makefile으로 바뀝니다.

+0

매력처럼 작동합니다. 감사! –

+1

나도 uniquify를 발견하게되어 기뻤다. – seth

+0

기본적으로 이맥스 스타터 키트가 제공됩니다. –

1

완전히 제어하려는 경우 create-file-buffer을 다시 정의 할 수 있습니다.

당신은 참조를 위해 files.el를 참조 간단

(defun create-file-buffer (filename) 
    "Create a suitably named buffer for visiting FILENAME, and return it." 
    (generate-new-buffer filename)) 

로 될 수있는 전체 파일 이름을합니다.

+1

표준 라이브러리 함수를 재정의하는 것은 현명한 방법이 아닙니다. uniquify가 어떻게하는지 더 잘 알려줍니다. –

관련 문제