Saturday, May 4, 2013

Korean in Emacs

Korean in Emacs

Korean in Emacs


이 문서는 e[⎋esc]m[⌥⌘meta]a[⌥alt]c[⌃ctrl]s[⇧shift] org-mode로 작성된 글입니다.


Operating System Environments

  • Main- : OS X Mountain Lion (10.8.3)
  • Sub- : Debian GNU/Linux Squeeze (6.0.7)
  • Server : Debian GNU/Linux Squeeze || Lenny
  • Mobile : iOS 6.1.3

태초에 e⎋m⌘a⌥c⌃s⇧1라는 이름의 초강력 editor 가 있었다. Richard Stallman이 이끄는 GNU Project에서 1976년에 처음으로 배포된 후, 아직까지 최강의 editor로 군림하고 있다. Lisp라는 언어로 쓰여진 e⎋m⌘a⌥c⌃s⇧는 거의 못 하는 것이 없는데, 특히 LaTeX, Fortran, C, 등의 coding에 강력한 힘을 발휘하며, .el의 확장자를 가진 일종의 plugin을 설치하면 Mathematica source, Markdown, 등도 편리하게 사용할 수 있다. 역사가 오래된 만큼 다양한 emacs variants(or forks)가 존재하는데, windows users 사이에서는 xemacs가 가장 유명하고, os x users 사이에서는 aquamacsemacs(cocoa)가 널리 사용되고 있다. 내 MacBookPro에는 둘다 깔려있긴한데, 그중에서 aquamacs가 나의 메인 editor이다. Debian GNU/Linux에서는 당연히 gnu emacs를 쓴다.

내가 주로 보는 소스 코드들은, .c, .h, 등의 C-language와 .f를 가지는 Fortran, .tex, .bib, 등의 LaTeX 관련 파일들과, Mathematica source 들이다. 모두 e⎋m⌘a⌥c⌃s⇧로 coding을 하고 있는데, 최근에는 plain text 와 .org의 emacs org-mode 를 e⎋m⌘a⌥c⌃s⇧에서 쓰려고 하니, 한글이 문제였다.

e⎋m⌘a⌥c⌃s⇧ 안에서의 한글환경

OS X에서

처음 맞닥드리는 문제는 한글이 e⎋m⌘a⌥c⌃s⇧ 안에서 깨지는 것인데, 이는 ~/.emacs 를 수정하는 것으로 손쉽게 해결할 수 있다. current-language-environmentUTF-8 으로 바꿔주면 된다. 가장 큰 문제는 시스템 차원의 한영변환(⌘-SPC)과 e⎋m⌘a⌥c⌃s⇧가 궁합이 안맞는다는 점이다. 즉, ⌘-SPC로 한영변환을 하면 Save(⌘-s)와 Save as…(⌘⇧-s) 등이 aquamacs 안에서 먹히지 않는것은 물론이거니와, ⌥-! 나 ⌥-x 로 minibuffer를 부를 수도 없다. aquamacs가 아니라 emacs(cocoa)를 쓰면 Save(⌘-s)와 Save as…(⌘⇧-s) 등은 쓸 수 있지만, 여전히 다른 단축키는 먹히지 않는다. 이는… 완벽한 해결책이 아직은 안보인다. 나같은 초보자가 보기에는 다른 Applications 처럼, ⌘(Meta or Command), ⌥(Alt or Option), ⌃(Ctrl), 등의 특수키를 누르면 자동 영어로 넘어가게 만들어 놓으면 간단히 해결될 문제로 생각되는데… e⎋m⌘a⌥c⌃s⇧ 안에서는 안된다. e⎋m⌘a⌥c⌃s⇧이 자체적으로 input method를 지원해서 인지, 그냥 개발자들이 비영어권 언어에대한 이해가 부족한 것인지.. 그 자세한 내막은 알 수 없다.

어찌보면 가장 간단한 해결책은 OS X에서 한글을 쓸 때 e⎋m⌘a⌥c⌃s⇧를 안쓰는 것일지도 모르겠으나, 그럼에도 불구하고 쓰고 싶을때는 두가지 방법이 있다. 언급했다시피, 문제의 핵심은 e⎋m⌘a⌥c⌃s⇧가 OS의 input method toggling에 반응을 한다는 점이므로, 첫째는 OS의 input method는 그대로 둔채 (즉, OS X에서는 ⌘-SPC), e⎋m⌘a⌥c⌃s⇧ 안에서 지원하는 input method의 단축키를 ⇧-SPC 같은 것으로 따로 설정해서 쓰는 방법이다. 이방법은 나름 유용함은 있으나, 막상 사용해보면 두 단축키가 달라서 헷갈리기 쉽상이고 자꾸 타이핑이 꼬인다. 그렇다고 OS의 input method toggling 단축키와 너무 다른 단축키로 e⎋m⌘a⌥c⌃s⇧의 input method toggling을 지정하면 사용이 불편하다. 두번째 방법으로 OS의 input method를 사용하지 말고 바람입력기를 사용하는 방법이 있다. 바람입력기는 Application 별로 input source를 고정해 놓을 수 있는 기능을 제공하고 있어서, e⎋m⌘a⌥c⌃s⇧를 쓸 때는 OS의 input method를 영어로 고정해 놓고, e⎋m⌘a⌥c⌃s⇧ 안에서 제공하는 input method toggling 단축키를 OS의 그것과 일치시키면 된다. 그러면 사용자 입장에서는 e⎋m⌘a⌥c⌃s⇧ 안에서 한글 사용환경이 OS 전반과 동일해지고, e⎋m⌘a⌥c⌃s⇧ 제공하는 다양한 기능은 문제없이 쓸 수 있다.2

Debian GNU/Linux에서

Debian GNU/Linux에서는 ibus 입력기를 사용하고 있는데, gnu emacs는 여기에 당연(?)하게도 반응하지 않는다. 그러므로, 한글깨짐만 수정하고, 그냥 ibus와 gnu emacs의 input method toggling을 하나로 일치시켜주기만 하면 모든 문제는 해결된다. Linux 한글입력기 관련 지난 Post 보러가기

해결책

OS X에서

I. aquamacsemacs(cocoa)는 깔려있다고 가정한다.

II. 바람입력기를 설치한 후 아래 순서로 OS X의 input source를 조정한다.

  1. 바람입력기는 pkg 형태로 배포되고 있다. 설치 후에는 자동으로 logout 된다.
  2. [System Preferences] → [Accessibility] → "Enable access for assistive devices"를 선택한다.
  3. [System Preferences] → [Language & Text] → [Input Sources]로 가서 "Baram"만 남겨두고 모두 선택해제한다.3
  4. [System Preferences] → [Keyboard] → [Keyboard Shortcuts]로 가서, 왼쪽 페널에서 "Keyboard & Text Input "을 선택 한 후, 오른쪽 페널에서 원래 지정되어있던 "Select the previous input source"와 "Select next source in input menu"를 모두 선택해제한다.
  5. 바람입력기에서 [Preferences]로 가서 "User Defined Hangul-English Switch Shortcut"을 설정(내경우는 ⌘-SPC) 후, [Application]으로 가서 aquamacs와 emacs(cocoa)를 등록해서 항상 English로 동작하게 설정한다.
  6. 바람입력기 삭제 순서는 아래와 같다.
    • a. Baram_xxx.dmg 를 클릭하여 마운트 한다.
    • b. Bash shell(Terminal)을 연다.
    • c. Baram_xxx.dmg 에 포함된 uninstall.sh을 Terminal로 Drag&Drop 하고 Enter(return)키를 눌러 실행한다. 이때 "Password:"가 화면에 출력되면, administer password(관리자 비밀번호)를 입력한다.
    • d. logout한다.

Screen+Shot+2013-05-04+at+10.58.29+AM.png Screen+Shot+2013-05-04+at+11.01.22+AM.png Screen+Shot+2013-05-04+at+11.02.45+AM.png Screen+Shot+2013-05-04+at+11.07.54+AM.png Screen+Shot+2013-05-04+at+11.07.48+AM.png

III. 특별히 한글폰트를 깔지않은 맥의 경우, ~/.emacs 를 다시 열어 아래를 복사해 넣고 저장한다.

(set-fontset-font "fontset-default" '(#x1100 . #xffdc) '("Apple SD Gothic Neo" . "iso10646-1")) ; 한글과 영문 폰트 따로 설정
(custom-set-variables
 '(current-language-environment "UTF-8")
 '(default-input-method "korean-hangul390")  ;; 세벌식 390
 ;; '(default-input-method "korean-hangul3f")   ;; 세벌식 최종
 ;; '(default-input-method "korean-hangul")     ;; 두벌식 
)

;; (global-set-key (kbd "S-SPC") 'toggle-input-method)   ;; Debian GNU/Linux에서
(global-set-key (kbd "s-SPC") 'toggle-input-method)   ;; OS X에서 emacs(cocoa)용
(global-set-key (kbd "A-SPC") 'toggle-input-method)   ;; OS X에서 aquamacs용

옆에 주석(;;)을 달아놓았으니 헷갈리지는 않겠지만, 나는 세벌식390을 쓰고 있고, input source toggling은 ⌘-SPC (A-SPC for aquamacs, s-SPC for emacs(cocoa))로 지정해 놓았다. 두벌식 사용자는 ";; 두벌식"가 쓰인 문장을 주석해제(문장 맨 앞의 ;; 를 지우고)하고 ";; 세벌식390"이라고 쓰인 문장을 주석처리하면 된다. Debian GNU/Linux에서 gnu emacs를 쓰는 경우는 ⇧-SPC 로 쓸 예정이므로 그부분도 지우지 않고 주석처리해 놓았다.

FYI) '함초롬'체를 설치한 경우4, 맨위의 애플 산돌고딕체를 뜻하는 Apple SD Gothic NeoHCR Dotum 혹은 HCR Batang 으로 변겅하면 된다. → '함초롬'체 다운로드 바로가기

(set-fontset-font "fontset-default" '(#x1100 . #xffdc) '("HCR Dotum" . "iso10646-1")) ; 한글과 영문 폰트 따로 설정

Free-/Open-font로는 unfont(은체) 가 가장 유명한데, Debain GNU/Linux 에서 뿐만아니라 OS X 에서도 한글을 쓰기위해서는 부족하다. 특히 은체만으로는, e⎋m⌘a⌥c⌃s⇧VLC 에서 한글명 파일의 이름이 깨진다던지, 자막을 쓰는데 bold체가 없다던지, 하는 자잘한 문제가 간혹 발생할 수 있다. 또한 독어에 Umlaut(ä ö ü) 등이 빠져있는 무료 한글폰트들도 많은데, 함초롬체는 완벽하다. 함초롬체를 적극 추천한다.


Updated <2015-11-21 Sat>

Current Operating Systems

  • Main- : OS X El Capitan (10.11.1)
  • Sub- : Debian GNU/Linux Wheezy (7.9)
  • Server: Debian GNU/Linux Wheezy || Squeeze
  • Mobile: iOS 9.1

Aquamacs는 버렸다. OS X와 Debain GNU/Linux 모두에서 Emacs로 통일했고, 버전은 24.3.x이다. 한글 사용은 아직 까지는 매우 만족스럽다. 맞춤법은 Hunspell로 해결했다. 자세한 내용은 이 블로그의 지난 Posts인 아래 링크를 참고하자.


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Footnotes:

1

여기서, e⎋m⌘a⌥c⌃s⇧라 함은 OS X에서 aquamacs와 emacs(cocoa) 그리고 Debian GNU/Linux에서의 gnu emacs를 모두 포괄하는 용어로 사용되었다.

3

English가 해제되지 않는 경우, Kotoeri를 선택하면 English를 해제할 수 있다. 그리고 다시 Kotoeri를 해제하면 Baram만 남는다. Baram 에서도 English는 지원하니, 문제는 없다.

4

'함초롬'체는 한글과 컴퓨터 에서 개인 및 기업 사용자에게 무료로 배포하고 있는 '한컴오피스 2010'의 대표글꼴이다.

Created: 2015-11-21 Sat 10:32

Emacs 24.3.1 (Org mode 8.2.10)

No comments:

Post a Comment