아이폰 개발을 Emacs 로 하시는 분들은 Object-c 의 그 살인적인 키워드 길이 (예를 들면 scheduledTimerWithTimeInterval 이런것) 에 당황하실 때가 있으리라고 생각합니다. XCode 내장된 에디터를 사용하시면 물론 편합니다. 하지만 Emacs 로 개발하시려면 여간 성가신게 아닌데요. Emacs 에 내장된 objc-mode 가 나쁘지는 않습니다. 괜찮게 쓰고 있는 편이긴 하지만 역시 부족한건 부족한 것입니다.

예컨대 scheduledTimerWithTimeInterval  이런 함수를 외워서 쓸려면 여간 부담되는 게 아닙니다. 자동 완성을 구현하고 싶기는 한데, 아직 귀찮아서 그쪽까지 공부할 여력은 안되더군요. 대신 제대로 쳤는지 확인하기 위해서라도 키워드의 색을 다르게 해 주고 싶더군요.

예전에 포스팅 했던 "Major 모드에 Keyword 추가하기" 의 변형입니다.

일단 결론입니다. 설정하면 다음과 같이 보입니다.

"누르면 커져요"


인디안레드 색으로 보이는게 추가한 키워드 입니다. 뭐 지금 당장 완벽한 것은 아니고요. 차차 알게되는 키워드를 추가할려고 생각중입니다. 남의 object-c 라이브러리를 얻어다 쓰는 처지라 어떤 것이 Object-c 원래 키워드인지 알아내는 과정도 필요해서 시간이 좀 걸릴 것 같습니다. (배경색으로는 칠판색을 선택해서 쓰고 있습니다. 그렇게 보기 싫어하던 칠판을 이 나이가 되서 텍스트 에디터에서 매번 보고 있습니다.)

실제로 키워드 추가하는 방법입니다.

1. 건드리는 프로그래밍 언어가 알게 모르게 많기 때문에 font-lock 을 전문적으로 하기 위해서 ~/.emacs.d/ 안에 관련 폴더를 한개 만들어 줬습니다. "~/.emacs.d/lang-font-lock" 으로 정해줬습니다.

2. 파일 한개를 생성합니다. 저는 "obj-c-add-font-lock.el" 로 만들어 줬습니다.

3. 그 내용입니다. (obj-c-add-font-lock.el)

(make-face 'cr-obj-c-keywords-face)

;; M-x list-color-display
(set-face-foreground 'cr-obj-c-keywords-face "IndianRed")

(font-lock-add-keywords 'objc-mode '(("\\<loadNibNamed\\|setNeedsDisplay\\|mainBundle\\|scheduledTimerWithTimeInterval\\>" . 'cr-obj-c-keywords-face)))
(font-lock-add-keywords 'objc-mode '(("\\<addSubview\\>" . 'cr-obj-c-keywords-face)))

(provide 'obj-c-add-font-lock)


윗 부분은 전에 올렸던 내용과 비슷합니다. loaddNibNamed 와  setNeedsDisplay , mainBundle, scheduledTimerWithTimeInterval 그리고 addSubview 를 우선 키워드로 등록해줬습니다. 마지막에 (provide 'obj-c-add-font-lock) 은 .emacs 에서 require 문을 쓰기 쉽게 해주려고 추가해줬습니다.

4. .emacs 에 다음과 같이 추가해서 로딩때 불러주기로 합니다.
(add-to-list 'load-path "~/.emacs.d/lang-font-lock")
(require 'obj-c-add-font-lock)

이제 키워드를 알아갈 때마다 obj-c-add-font-lock.el 파일에 추가해주시면 됩니다.





길지도 않고, 핵심적인 부분을 너무 잘 정리했습니다. 아이폰 개발하고 싶은데 대체 Object-C 가 뭔지 감이 안잡히는 분들에게 정말 괜찮은 핵심 요약입니다.

가서 보기

우연히 돌아다니다가 찾았는 데 정말 괜찮습니다.

+ Recent posts