태그 보관물: MozRepl

이맥스(Emacs)에서 파이어폭스(Firefox) 새로고침 자동으로 하기

지난 포스트에서 MozRepl을 설치했다. 이번에는 MozRepl을 이맥스(Emacs)에서 사용하는 방법을 설명한다. 제목에는 제어라고 했지만 실제로 제어라기 보다는 이맥스에서 편집중인 파일 또는 버퍼가 변경되거나 저장되었을 때, 브라우저(파이어폭스)를 새로고침해 주는 기능에 대해서 설명한다. 하지만 MozRepl을 이맥스에서 열 수 있으면, 거기서 대부분의 제어를 할 수 있다.

Moz.el 설치

MozRepl 소스를 보다보면 이맥스에서 사용하는 moz.el 파일이 보인다. 이 moz.el을 다운 받는다. 다운 받은 moz.el 파일을 Emacs의 load-pah에 추가한다.

(add-to-list 'load-path "moz.el이 설치된 경로")
(autoload 'moz-minor-mode "moz" "Mozilla Minor and Inferior Mozilla Modes" t)

MozRepl 사용하기

moz.el을 설치했으면 설치가 잘 됐는지 확인 해 보자. 파이어폭스를 실행 한 후에 이맥스를 다시 시작하고 M-x run-mozilla를 실행하자. 그러면 이맥스에서 MozRepl 버퍼가 열리고 텔넷으로 접속한 MozRepl과 동일한 기능을 수행 할 수 있다.

파이어폭스 새로고침

이제 이맥스에서 파일을 수정하고 저장하면 자동으로 파이어폭스를 새로고침하는 기능을 추가해 보자. 이를 위해서 몇 개의 함수를 추가해야 한다. 이맥스 init.el 파일에 다음을 추가한다.

(require 'moz)

(defun moz-enable-auto-refresh ()
"파일을 저장하면 자으로 원격의 MozRepl을 새로고침 기능 켜기"
(interactive)
(add-hook 'after-save-hook 'moz-reload t t))

(defun moz-disable-auto-refresh ()
"파일을 저장하면 MozRepl을 이용해 새로고침하는 기능 끄기"
(interactive)
(remove-hook 'after-save-hook 'moz-reload t))

(defun moz-open-url (url &rest ignore)
"MozRepl을 이용해서 파이어폭스 주소 이동"
(interactive "sURL: ")
(comint-send-string (inferior-moz-process)
(concat "content.document.location=\ '" url "\ ';")))

(defun moz-reload (&rest ignore)
"파이어폭스 새로고침 하기"
(interactive)
(comint-send-string (inferior-moz-process) "BrowserReload();"))

3~6행의 moz-enable-auto-refresh 함수는 파일을 저장하면 자동으로 파이어폭스를 새로고침하게 한다. 그 아래의 8~11행의 moz-disable-auto-update 함수는 반대로 이 기능을 끈다. 소스를 보면 알겠지만 단순히 파일 저장 후크(after-save-hook)에 새로고침 함수를 등록/해제하는 함수이다. 실제 파이어폭스를 새로고침해주는 함수는 마지막에 있는 moz-reload 함수다. 이 함수는 moz.el의 내부 moz 프로세스에게 BrowserReload();를 실행하고 있다.

사용하기

이맥스에서 HTML파일을 만들고, M-x browse-url-of-buffer를 실행하자. 그러면 파이어폭스가 이 버퍼를 열어서 보여준다. 이제 M-x moz-enable-auto-refresh를 실행하라. 준비가 완료 됐다. 이 HTML파일에 약간의 코드를 추가하고 저장해 보자. 그러면 파이어폭스가 자동으로 새로고침 된다.