'elisp'에 해당되는 글 1건

  1. 2008.12.15 emacs에서 C++ 컴파일과 실행을 편하게 하자. 1
2008. 12. 15. 01:14

요즘 다시 Topcoder 나 UVa 문제들을 하루에 한문제씩 풀고있습니다.
기존엔 Visual C++ 로 풀었는데 emacs에 익숙해질겸해서 에디터를 갈아치웠죠..

그런데 Visual C++ 처럼 단축키만으로 컴파일을 하고 실행이 안되니 너무 불편합니다 T.T

문제를 풀고 컴파일 여부와 실행해서 Test Case 를 입력 후 답이 제대로 나오는지 확인해야되는데.. 이게 금방금방 안되니.. ;(

하지만!! emacs 는 extensible! customizable! 한 에디터 아니겠습니까? ^^

그래서 그 단축키만으로 컴파일!을 하고 실행! 을 할수있게 기능을 추가했습니다.

; 현재 소스파일명으로 컴파일을 합니다. (ex. source.cpp -> source)
(defun compile-filename()
  "Compile buffer filename"
  (interactive)
  (let (compileString fileName))
  (setq fileName (file-name-nondirectory buffer-file-name))
  (setq fileName (file-name-sans-extension fileName))
  (setq compileString (format "g++ %s -o %s" buffer-file-name fileName))
  (compile compileString)
)
; 창을 두개로 나눠 쉘을 띄운 후 컴파일된 파일을 실행합니다.
(defun execute-filename ()
  "Run ./filename"
  (interactive)
  (let ((fileName (file-name-nondirectory buffer-file-name)))
    (setq fileName (format "./%s" (file-name-sans-extension fileName)))
    (setq windowHeight (- (window-height) 10))
    (split-window-vertically windowHeight)
    (other-window 1)
    (shell)
    (sit-for 0.1)
    (insert fileName)
    (comint-send-input)
    ) 
  )
;; M-x compile-filename 로 입력하니 불편하니 Ctrl+c c 로 컴파일 할수있게합니다.
(global-set-key [(control c) ?c] 'compile-filename)

;; 역시 실행시도 Ctrl+c x 로 실행할 수 있게 합니다.
(global-set-key [(control c) ?x] 'execute-filename)


elisp 를 하나도 모르던 상태라 http://www.gnu.org/software/emacs/manual/html_mono/elisp.html 와 KLDP, 구글링도 해가며 열심히 만들었습니다. 하루종일 삽질좀 하니 이제 elisp 를 좀 알겠네요.

결국 삽질 끝에 좀 편하게 emacs를 쓸수 있겠군요... 열심히 문제만 풀 일만 남았습니다. ^^

내공이 좀 더 쌓이면 푸는 문제들도 문제와 풀이를 올려봐야겠네요.
Posted by envi