Tag Archives: tuareg

윈도우즈에서 OCaml 개발 환경 (tuareg)

예전엔 FreeBSD에서 vi로 작업했었는데, Lisp/Slime 환경에 친숙해지면서 OCaml에서도 비슷한 개발환경을 찾아보게 됐습니다. Emacs외에도 몇가지 통합개발환경이 있지만 저는 Emacs 위에서 돌아가는 tuareg mode를 받아서 설치했습니다. 저는 로컬 윈도우즈에서 Emacs를 사용하지만 유닉스에서도 동일하게 사용할수 있습니다. OCaml은 mingw 기반의 설치파일을 받아서 설치했습니다.

tuareg는 tuareg-mode-1.46.1.zip를 받아서 Emacs의 site-lisp에 압축을 풀었습니다. 그리고는 다음을 .emacs 파일에 추가해주었습니다.

[CODE type=lisp](add-to-list ‘load-path “c:/Progra~1/emacs/site-lisp/tuareg-mode-1.46.1”)
(setq auto-mode-alist (cons ‘(“\\.ml\\w?” . tuareg-mode) auto-mode-alist))
(autoload ‘tuareg-mode “tuareg” “Major mode for editing Caml code” t)
(autoload ‘camldebug “camldebug” “Run the Caml debugger” t)

(defvar tuareg-interactive-program “c:/Progra~1/Object~1/bin/ocaml”)
(defvar tuareg-library-path “c:/Program Files/Objective Caml/lib”)
[/HTML][/CODE]
tuareg-interactive-program 지정할때  Program Files와 Objective Caml등으로 넣으면 OCaml 실행이 안되더군요.. 위 사항을 적용하면 ml이나 mli 파일을 읽을때 tuareg-mode로 자동으로 넘어갑니다.

키는 Lisp/Slime과 많이 유사하지만, Slime보다는 제공하는것이 적네요. C는 Ctrl, M은 Alt(Meta)키 입니다.

  • C-x C-e, C-c C-e, C-M-x : 세가지 키조합 모두 현재 expression을 실행합니다. OCaml이 실행중이 아니면 실행합니다.
  • C-c C-b : 현재 버퍼(파일)을 실행합니다.
  • C-c C-c : make를 실행하는데 프로젝트에 맞는 Makefile이 있어야합니다.
  • C-M-p, C-M-n : (toplevel) expression 위아래로 이동.
  • C-c C-a : ml과 mli 사이를 왔다갔다 합니다. 아주 유용한 기능이네요.

또 Emacs메뉴에 Tuareg에 보면 여러가지 기능이 제공됩니다. Definition-Scan을 선택하면 현재 파일에서 모든 정의(type & value)를 정리해서 메뉴에 보여줍니다. 또 C-c . 으로 시작하는 명령들이 있는데, 많이 사용하는 구절들을 빠르게 입력할수 있게 도와줍니다. 한가지 아쉬운점은 completion 기능이 동작하지 않는데, 왜 그런지 아직 파악하지 못했습니다. 메뉴에 보면 관련 항목이 있는데, 활성화 되어있지 않습니다. 또한 키도 할당되어 있지 않습니다. 소스를 보면 C-c TAB( (define-key map [?\C-c ?\t] ‘tuareg-complete) 로 할당되어 있는데, 이 키는 Interrupt Caml Toplevel로 할당되어 보이고, M-x tuareg-complete로 호출해도 “Symbol’s function definition is void: caml-complete”라는 메시지만 출력됩니다.

좀더 연구 해봐야겠습니다…