2013년 2월 22일 금요일

[Emacs] Projectile 및 Helm 확장

Projectile은 Emacs에서 제공해 주지 않는 기능인 프로젝트 단위의 파일 관리를 할 수 있게 해 주는 확장이다. 예를 들자면 프로젝트 내의 파일을 연다던가....


역시나 설치는 MELPA 등을 통해서 하는 것이 간단하다. MELPA는 축복에 가깝다. :-)


설정은 별로 필요한 것은 없지만 마이너모드이기 때문에 동작시킬 환경을 만들어 줘야 한다. 다만 개인적으론 굳이 모드별로 동작시킬 이유가 없기에 그냥 항상 동작하도록 설정하였다.
(require 'projectile)

(projectile-global-mode)
위 github 사이트에서 다양한 명령어를 살펴 볼 수 있다. 예를 들어 projectile-find-file 이라는 명령은 프로젝트 내 파일을 (서브디렉토리 포함) 열기 위한 명령이다.
IDO가 활성화 되어서인지 잘 모르겠지만 위 처럼 표시되었다.

그런데 Projectile은 어떻게 프로젝트를 구분하는 걸까? 답은 역시 위 github 사이트에 적혀있는데 특수한 파일이나 디렉토리가 존재하는 디렉토리는 프로젝트 루트 디렉토리로 인식한다. 예를 들자면 .git 디렉토리가 있다면 프로젝트 루트로 인식한다.

만약 VCS/DVCS를 사용하지 않는다면 .projectile 이라는 파일 하나를 생성해 두면 역시 프로젝트 루트로 인식한다.

.projectile 파일은 또한 ignore list 역활을 하기도 한다. 여기에 특정 경로나 파일(와일드카드 가능)을 명시하면 해당 파일은 Projectile이 표시하지 않는다.


Helm 과의 연동

MELPA나 Marmalade를 통해 찾아보면 helm-projectile 이라는 확징이 있다. 이 확장은 Projectile의 파일 목록을 Helm에 던져줘서 Helm 인터페이스로 파일을 열 수 있게 도와준다. helm-projectile을 설치하고 아래처럼 설정 해 줄 수 있다.
(require 'helm-projectile)
(global-set-key (kbd "C-x p") 'helm-projectile)
C-x p 키를 누르면 Helm 인터페이스 화면이 뜨지만 파일 목록은 Projectile에 의해 관리되는 내용이 표시된다.
projectile-find-file을 이용하는 것 보다 helm-projectile을 이용하는 편이 더 편한 것 같다.

관령링크: [Emacs] Helm

댓글 없음 :