Emacs 한글 맞춤법 검사기
;; ================================================= ;; εμαcs is ⎋[esc]⌘[meta]⌥[alt]⌃[ctrl]⇧[shift]. ;; =================================================
이 문서는 emacs org-mode로 작성된 글입니다.
Operating System Environments
- Main- : OS X Mavericks (10.9)
- Sub- : Debian GNU/Linux Wheezy (7.2)
- Server: Debian GNU/Linux Squeeze || Lenny
- Mobile: iOS 7.0.4
Emacs 사용 환경
- OS X: Aquamacs + OS X dictionaries
- Debian GNU/Linux: Emacs + Hunspell
emacs_lisp
in .emacs
OS X: Aquamacs + OS X dictionaries
Aquamacs 와 한글 맞춤법 검사기는 아래에서 다운 받는다.
ko-aff-dic-0.5.6.zip
파일의 압축을 풀어, ko.aff
와 ko.dic
를 ~/Library/Spelling/
(Finder에서 ⌘⇧G
) 아래에 복사해 넣는다. 전체 사용자에게 한글 맞춤법 검사기가 동작하게 하려면, /Library/Spelling/
에 복사해 붙이자. 시스템을 재부팅한다.
여기까지 하면, TextEdit.app이나 Mail.app 등에서 한글 맞춤법 검사기가 잘 동작하는 것을 볼 수 있다. 하지만 여기서 목표는 Aquamacs에서 이를 사용할 수 있게 하는 것이다. Aquamacs에서는 TextEdit.app이나 Mail.app 등과는 다르게 어떤 언어를 사용하여 맞춤법 검사를 할 지를 editor 차원에서 일일이 변경해야 함에 주의하자. 즉, 한글 맞춤법을 검사할 때는 한글로 해서 검사해야 하고, 영문 맞춤법을 검사할 때는 영어로 맞춤법 검사기를 바꾸어 주어야 한다. 또한, 아래의 기술할 방법으로 Aquamacs에서 한글 맞춤법을 쓰게 되면, TextEdit.app이나 Mail.app에서도 한 가지 언어로만 맞춤법 검사를 할 수 있게 됨에도 주의하자. 1
그럼에도 불구하고 Aquamacs에서 한글 및 다른 언어들의 맞춤법 검사를 쓰고 싶으면 다음을 진행하자. 사실, 아래 Emacs Lisp code에 다 적어 놨지만 간단히 방법을 기술하면 아래와 같다.
0째, Aquamacs에서 원할한 한글 사용을 하려면 바람 입력기 사용을 추천한다. 자세한 설치법은 지난 Post를 참고하자. -> "Emacs에서의 한글환경" 바로 가기
첫째, Aquamacs에서 영어 맞춤법을 검사하기를 기본으로 지정하자. 2
- OS X Mavericks에서는
System Preferences
을 열어Keyboard
를 클릭,Text
페널에서Spelling:
을U.S. English
로 선택하자. - OS X Mountain Lion에서는
System Preferences
을 열어Language & Text
를 클릭,Text
페널에서Spelling:
을U.S. English
로 선택하자.
여기까지하면 Aquamacs 뿐만 아니라 TextEdit.app이나 Mail.app 등에서도 영어 맞춤법 검사만 가능해진다.
둘째, 이제 아래 Emacs Lisp code를 ~/.emacs
를 열어 적어넣자.
;; ------------------------------------------- ;; Aquamacs spell-checker ;; ------------------------------------------- ;; ### ;; pre-settings for Mountain Lion: System Preferences -> Language & Text -> [Text: Spelling: U.S. English] ;; pre-settings for Mavericks : System Preferences -> Keyboard -> [Text: Spelling: U.S. English] ;; ### ;; ### korean-english-german ;; (let ((langs '("ko" "en" "de"))) ;; (setq lang-ring (make-ring (length langs))) ;; (dolist (elem langs) (ring-insert lang-ring elem))) ;; (defun cycle-ispell-languages () ;; (interactive) ;; (let ((lang (ring-ref lang-ring -1))) ;; (ring-insert lang-ring lang) ;; (ispell-change-dictionary lang))) ;; ### ;; ### korean-english (let ((langs '("ko" "en"))) (setq lang-ring (make-ring (length langs))) (dolist (elem langs) (ring-insert lang-ring elem))) (defun cycle-ispell-languages () (interactive) (let ((lang (ring-ref lang-ring -1))) (ring-insert lang-ring lang) (ispell-change-dictionary lang))) ;; ### ;; ### key bindings (global-set-key (kbd "S-SPC") 'cycle-ispell-languages) (global-set-key (kbd "A-D") 'ispell-region) ;; cmd+shift+d (global-set-key (kbd "A-d") 'ispell-word) ;; cmd+d
한글과 영어로 맞춤법 검사하기를 활성화 하였고, 맞춤법 검사기 변환은 ⇧SPC
로 지정하였다. 영어로 시작되었을 것이므로 ⇧SPC
한 번 누르면 한글로, 또 누르면 영어로, 또 다시 누르면 다시 한글로 바뀐다. 글을 쓰다가 빨간줄이 그어지면, ⌘d
를 누르면 올바른 단어가 Aquamacs 최상단에 뜬다. 예를 들어, "적어놨지만"이라고 적은 부분에서 ⌘d
하면 아래 화면을 볼 수 있다.
여기서 0
을 누르면 "적어냈지만"으로, 3
을 누르면 "적어 놨지만"으로 바뀐다. Shift-Selction으로 지정한 영역 전체의 맞춤법 검사는 ⌘⇧d
(or ⌘D
)로 지정해 놓았다. 물론 이 key bindings가 싫으면, 사용자 취향에 따라 원하는 것으로 바꾸면 된다. 세 개 이상의 언어로 맞춤법 검사를 하고 싶으면 이를 확장하면 된다. 위의 Emacs Lisp
code에서 주석 처리(;;
)해놓은 부분이 바로 "한국어-영어-독어"의 사용 예이다.
Debian GNU/Linux: Emacs + Hunspell
Emacs는 깔려 있는 것으로 가정한다. 역시, 아래 Emacs Lisp code에 다 적어 놨지만 간단히 방법을 기술하면 아래와 같다. 여기서는 "한국어-영어-독어"를 사용하는 것으로 예를 들었다.3
- 아래를 실행하여
hunspell
,hunspell-en-us
,hunspell-ko
,hunspell-de-de
를 설치한다.$ sudo apt-get install hunspell hunspell-en-us hunspell-ko hunspell-de-de
- 아래 Emacs Lisp code를
~/.emacs
를 열어 적어넣자.;; ------------------------------------------- ;; GNU Emacs spell-checker in Debian GNU/Linux ;; ------------------------------------------- ;; ### ;; pre-settings: sudo apt-get install hunspell hunspell-en-us hunspell-ko hunspell-de-de (setq ispell-local-dictionary-alist '( ("korean" "[가-힣]" "[^가-힣]" "[0-9a-zA-Z]" nil ("-d" "ko_KR") nil utf-8) ("english" "[A-Za-z]" "[^A-Za-z]" "[0-9a-zA-Z]" nil ("-d" "en_US") nil utf-8) ("german" "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t ("-d" "de_DE") nil utf-8) ) ) ;; =====> Mandatory I. (if (file-exists-p "/usr/bin/hunspell") (progn (setq ispell-program-name "hunspell") (eval-after-load "ispell" '(progn (defun ispell-get-coding-system () 'utf-8)))) ) ;; =====> Mandatory II. (setq ispell-local-dictionary "english") ;; ### ;; ### korean-english-german (let ((langs '("korean" "english" "german"))) (setq lang-ring (make-ring (length langs))) (dolist (elem langs) (ring-insert lang-ring elem))) (defun cycle-ispell-languages () (interactive) (let ((lang (ring-ref lang-ring -1))) (ring-insert lang-ring lang) (ispell-change-dictionary lang))) ;; ### ;; ### korean-english ;; (let ((langs '("korean" "english"))) ;; (setq lang-ring (make-ring (length langs))) ;; (dolist (elem langs) (ring-insert lang-ring elem))) ;; (defun cycle-ispell-languages () ;; (interactive) ;; (let ((lang (ring-ref lang-ring -1))) ;; (ring-insert lang-ring lang) ;; (ispell-change-dictionary lang))) ;; ### ;; ### key bindings (global-set-key (kbd "S-SPC") 'cycle-ispell-languages) ;; shift-spacebar (global-set-key (kbd "s-D") 'ispell-region) ;; cmd+shift+d (global-set-key (kbd "s-d") 'ispell-word) ;; cmd+d ;; ### key bindings for windows keyboard ;; (global-set-key (kbd "S-SPC") 'cycle-ispell-languages) ;; shift-spacebar ;; (global-set-key (kbd "M-D") 'ispell-region) ;; alt+shift+d ;; (global-set-key (kbd "M-d") 'ispell-word) ;; alt+d
key bindings와 사용법은 위와 동일하다. Debian GNU/Linux를 Windows keyboard와 쓰는 경우(대부분은 그렇겠지만)는 위 code의 ;; ### key bindings for windows keyboard
위의 세줄을 주석(;;
) 처리하고, 아래 세 줄은 주석(;;
) 해제하여 쓰면 된다. 위에서 보다시피 이 경우에는 '단어 검사'와 '영역 검사'를 각각 ⌥d
와 ⌥⇧d
(or ⌥D
)로 지정되었다.
Epilog
Cocoa emacs에서 한글 맞춤법 검사기 사용은 시도해 보았으나… 실패했다. Cocoa emacs에서 OS X 사전을 사용하는 방법도 모르겠고, MacPorts에서 Hunspell port에 한글도 없어서 쓰려면 직접 설치해야 하는데, 귀찮아서 안해봤다. 어차피 Cocoa emacs는 자잘한 bugs가 많아서 쓰지도 않고 추천하지도 않는다.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
No comments:
Post a Comment