2012년 9월 26일 수요일

[Emacs] Speedbar를 메인 윈도우에 넣기: sr-speedbar.el

Emacs의 내장 Speedbar는 별도의 윈도우가 뜨면서 동작한다. 개인적으론 좀 불편하다고 생각되어서 메인 윈도우 안에다 집어넣는 방법을 찾고 있었는데 누군가 이미 비슷한 목적으로 만들어 놓은 것을 찾았다.

sr-speedbar.el은 Speedbar를 Emacs 메인 프레임 속에 띄울 수 있게 해 주는 Emacs 확장이다.


EmacsWiki에 소스코드가 올려져 있기 때문에 auto-install로 쉽게 설치가 가능하다.

설정방법도 단순하다. 위 링크 페이지에도 설명이 되어 있지만 speed-bar를 require 해 둔 후 M-x  sr-speedbar-open 을 실행시키면 된다.

개인적으론 약간의 코드를 추가해서 토글 형식으로 사용하도록 해 봤다. 아래는 그 소스코드이다.
(require 'sr-speedbar)

;; speedbar를 창 왼쪽에 띄운다.
(setq sr-speedbar-right-side nil)
;; 파일목록 자동 갱신
(setq sr-speedbar-auto-refresh t)

;; speedbar 토글. speedbar가 뜨면 포커스를 speedbar로 이동.
(defun my-speedbar ()
  "Toggle sr-speedbar and select"
  (interactive)
  (progn
    (sr-speedbar-toggle)
    (if (sr-speedbar-exist-p)
        (sr-speedbar-select-window))))

;; 단축키 C-x p
(global-set-key (kbd "C-x p") 'my-speedbar)
이 코드를 실행시킨 후, C-x p 를 누르면 sr-speedbar가 동작하면서 Speedbar가 왼쪽에 프레임이 나눠지면서 뜬다. my-speedbar 함수의 역활은 토글을 하면서 만약 Speedbar 가 떴다면 Speedbar 로 프레임을 이동시키는 것이다. 물론 다시 한번 더 C-x p 를 누르면 Speedbar가 닫힌다.
음........ 색상만 어울리게 잘 조절하면 좋을 것 같다. -_-;;;;;;;;;;;;;;;;

댓글 3개 :

Unknown :

my-speedbar 함수가 아래처럼 수정되어야 할 거 같습니다......

(defun my-speedbar ()
"Toggle sr-speedbar and select"
(interactive)
(progn
(if (sr-speedbar-exist-p)
(sr-speedbar-select-window)
(sr-speedbar-toggle))))

Unknown :

progn 함수도 필요없을거 같네요...

Seorenn :

Dean Seo: 오래되서 잘 기억은 안납니다만, 토글 후 윈도우 선택을 해 줘야 포커스가 제대로 가기 때문에 그랬던 것으로 기억합니다. 혹시 수정한 내용은 직접 사용 중이신 것인지요?