세월이 흘러감에 따라서 변하지 않는 것이 없거늘 어찌 Emacs 가 변하지 않으리라 생각했던가..

말 그대로 입니다. 세월이 흘러 흘러 Emacs 가 24.x 대가 나오기 시작한지도 꽤 여러해가 지났습니다. 그런데 저는 과거의 설정파일을 그대로 사용하고 있었더군요. 문제 없이 사용하고 있었던 이유는 최근 쓰고 있던 OSX 가 버젼업이 되면서 한글 '나눔고딕'이 기본으로 포함되서 별 의도하지 않게 사용하고 있었습니다.

최근 Clojure 에 관한 Online 책을 보다가 그 저자가 설정한 Emacs 설정파일을 제꺼에 포함시키는 과정에서 기본 폰트 크기를 변경시키는 로직이 있는데 제가 처음 보는 함수를 쓰고 있더군요. 찾아보니 제가 기존 설정파일에서 쓰고 있었던 폰트 설정 방법은 사라졌더군요.

예전의 폰트 설정 방법 의 내용이 현행화를 필요로 한다는 점입니다.

(set-face-font 'default "Monaco-10")
(set-fontset-font "fontset-default" '(#x1100 . #xffdc)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" '(#xe0bc . #xf66e)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" 'kana
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'han
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'japanese-jisx0208
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'katakana-jisx0201
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))

이 방법이 아주 틀린건 아니지만 살짝 달라졌습니다. 한자나 일본어 설정은 동일하게 동작하는 것 같습니다. 다만 기본 폰트 설정 방법이 변했습니다.

(when (eq system-type 'darwin)

  ;; default Latin font (e.g. Consolas)
  ;; but I use Monaco 
  (set-face-attribute 'default nil :family "Monaco")

  ;; default font size (point * 10)
  ;;
  ;; WARNING!  Depending on the default font,
  ;; if the size is not supported very well, the frame will be clipped
  ;; so that the beginning of the buffer may not be visible correctly. 
  (set-face-attribute 'default nil :height 130)

  ;; use specific font for Korean charset.
  ;; if you want to use different font size for specific charset,
  ;; add :size POINT-SIZE in the font-spec.
  (set-fontset-font t 'hangul (font-spec :name "NanumGothicCoding"))

  ;; you may want to add different for other charset in this way.
  )

이 소스는 KLDP 의 유명한 Emacs 고수이신 cinsk 님의 설정 내용입니다. 제가 좋아하는 폰트로 살짝 고쳤습니다. 다시 말씀드리지만 이건 Emacs 24.x 의 설정 방법입니다.

그리고 "NanumGothicCoding" 폰트는 OSX 에 기본으로 설치가 되어 있지 않습니다. 기본으로 설치 되어 있는 폰트는 "Nanum Gothic" 입니다. 일부러 한글 폰트를 "NanumGothicCoding" 으로 설정한 이유는 나중에 설명하기로 하고 일단 '나눔고딕코딩' 폰트를 다운 받아야 합니다.

나눔고딕코딩 폰트 받기

받아서 서체관리자를 이용해서 설치해 주시고 위의 설정을 .emacs 에 설정해 주면 영문:Monaco , 한글:나눔고딕코딩 으로 설정이 됩니다.

여기까지가 Emacs 24.x 에서 한글 폰트 설정하는 방법이였고. 이제 다른 목적인 Org Mode 에서 한글 테이블 만들 때 표 제대로 보이는 방법에 대해서 이야기 하겠습니다.

Org Mode 는 Ascii 형식의 테이블을 지원합니다. 이게 은근히 편해서 종종 쓰곤하는데 심각한 문제가 있습니다. 한글을 쓰면 테이블 표에 있는 셀(Cell) 크기가 맞질 않습니다. 그래서 궁여지책으로 영문으로 테이블 표를 작성해서 쓰곤 했는데. Emacs 24.x 에 한글을 설정하고 나서는 갑자기 한글로 된 표를 쓰고 싶어졌습니다.

온갖 삽질끝에 이유를 알아냈는데 (어떻게 보면 당연한 거지만)

기본적으로 테이블이 깨지는 이유는 한글 - 영문 폰트의 width 의 비율이 일치하지 않기 때문입니다. 즉 이상적으로는 영문 2자에 한글 1자의 폭이 일치해야 하지만 미묘하게 한글 1자의 폭이 작습니다.

따라서 폰트 크기를 재 설정해 주면 간단하게 해결 됩니다. (이 간단하게 라는 말을 쓰기 위해 고생한 걸 생각하면…)

높이 비율로 크기를 맞춰야 하는데 'Monaco' 크기가 (:height)가 130 일때 'Nanum Gothic' 은 size 가 17 , 'NanumGothicCoding' 은 size 가 16 이어야지 비율이 맞습니다. 실제로 적용은 face-font-rescale-alist 변수를 이용해서 적용해 줍니다.

(setq face-font-rescale-alist
      '((".*hiragino.*" . 1.2)
        ("NanumGothicCoding" . 1.2307692307692308)))

와 같이 .emacs 에 설정을 넣어주면 됩니다.


위와 같이 테이블이 깨지지 않고 보여집니다. 


Emacs 를 mac 에서 사용하다 보면 몇가지 불편한게 있습니다. 대표적으로 ClipBoard 와 연동문제가 있습니다. 그러다가 Emacs for OSX 라는 것이 있더군요.

https://github.com/railwaycat/emacs-mac-port

위 사이트에서 자세한 설명은 되어 있지만 언제 끝날지 모르는 프로젝트더군요. 설명은 저기서 참조하고 소스는 실제로 작업하는 일본 프로그래머의 사설 git 레파지토리에서 받아서 컴파일을 하면 됩니다.

http://www.math.s.chiba-u.ac.jp/~mituharu/emacs-mac.git

이게 그 사설 git 레파지토리 입니다. 이걸 받으셔서 제가 예전에 올렸던 OSX 에서 컴파일해서 사용하기 를 참조해서 컴파일 하시면 됩니다.

$ ./configure --with-mac

옵션을 줘야 mac용으로 컴파일 됩니다. 그리고 결과는 ./build 안에 있더군요. 아이콘이 멋지게 바껴있는 것을 확인하실 수가 있습니다. 다만 사용하시다 보면 한글 디렉토리명이 깨지는 경우가 있습니다. 이건 예전에 제가 Subversion 에서 한글 파일을 인식못하는 문제 에서 썼듯이 UTF8이 종류가 달라서 그러한 문제가 발생합니다. 이걸 해결 하기 위해서 원작자에게 메일로 문의했더니 답변을 주더군요. (감사 감사)


이렇게 파일 이름들이 깨지는 현상입니다.


.emacs 파일안에다가

(require 'ucs-normalize)
(set-file-name-coding-system 'utf-8-hfs)

와 같은 식으로 적어주면 문제가 해결이 됩니다.


R은 리습계열의 방언에서 출발했다는 이야기가 있습니다. 그래서 인지 정말 놀라울 정도로 이맥스(Emacs)와 잘붙습니다. 게다가 이맥스(Emacs) 와 잘 붙을 수 있게 해주는 모듈이 요즘 빅데이타 의 붐을 타고 계속해서 업데이트 되고 있습니다. 


ESS (Emacs Speaks Statistics) 는 참으로 멋진 줄임말이죠? 이 패키지 모듈을 쓰면 이맥스 상에서 완벽하게 R 과 함게 동작시킬 수가 있습니다. 다만 항상 이런것을 이용할 때의 문제점이 있습니다. 바로 인코딩 문제죠 한글을 입력하면 상태창에서 한글이 완벽하게 깨집니다. 방법은 간단합니다. 


.emacs 파일에 다음과 같은 부분을 추가해주면 됩니다. 




(add-hook 'ess-R-post-run-hook

          (lambda () (set-buffer-process-coding-system

                       'utf-8-unix 'utf-8-unix)))


그리고 이맥스를 재시작하면 깔끔하게 해결이 됩니다. 


추가로 library 명령을 써서 패키지를 로딩하고 나면 한글이 깨지는 경우가 발생합니다. 골치가 아프죠. -ㅅ- 저 같은 경우에는 


library(sqldf) 


를 쓰는 경우에 발생했습니다.  몇군데를 알아봤지만 이게 버그인건지 이맥스 자체의 문제인지는 알아보기 힘들더군요. 단지 interactive R 상에서 


Sys.setlocale ("LC_ALL", "ko_KR.UTF-8")


를 실행해주니 다시 돌아오더군요. 


Emacs 를 24.50 으로 업그레이드 했더니 , 잘 쓰던 org-mode 에서 에러가 발생합니다. 


org-overview: `recenter'ing a window that does not display current-buffer


이런 형식으로 에러가 발생하더군요. org-overview 가 문제라는 것을 알았으면 문제는 고치기 쉽습니다. 


C-h f  를 입력해서 describe-function 함수를 불러냅니다.  이때 함수명을 입력하는 곳에다가 org-overview 라고 입력하면 org-overview 에 대한 가벼운 설명과 그 함수가 포함된 org.el 파일이 하이퍼 링크로 나타납니다. 이때 org.el 을 클릭하면 org.el 파일이 열리는데. 이게 실은 org.el.gz 파일을 압축을 풀고 보여주는 것입니다. 



가볍게 recenter 함수를 호출하는 부분을 막아줍니다. 그리고 나서 이 내용을 저장하면 org.el.gz 파일로 저장되는데 이를 압축을 풀어주던지 아니면 새로 org.el 파일을 만들어서 같은 내용을 복사해줍니다. 그리고 byte-compile 을 해야 하지만 저는 귀찮은 관계로 그냥 org.el 파일로 뒀습니다. 


그리고 기존 소스로 만들어진 org.elc 파일을 지워주시고 emacs 를 다시 띄워주시면 됩니다. 

아래와 같이 파일을 열어서

$ emacs ~/.Xresources


다음과 같은 내용을 추가해 줍니다.

Emacs.font: Consolas-12
emacs.FontBackend: xft


그리고 다음과 같이 터미널에서 입력해 줍니다.

$ xrdb -merge ~/.Xresources


우분투에 Consolas 폰트를 설치하는 방법은 예전 포스트 에서 참조하세요.


EDIT: 2014-02-04

위 방법은 민트 리눅스 (Mint Linux) 마야 (Maya) 버젼에서도 동일하게 동작합니다.  

 
 Emacs 와 JDEE 와 Maven 과의 결합의 마지막을 해결했습니다. 그 전의 세팅을 보시고 싶으시면 


    2 번까지 끝을 내고 나니 Emacs 내에서 maven 컴파일과 빌드를 하고 싶더군요. (당장은 mvn install 만 되게) 딱히 다른 사람들이 만든 것은 내 필요에 부합하지 않은 것 같기도 하고 지원도 더 이상 하지 않는 것 같기에 직접 만들게 됐습니다. jdee 프로젝트 안에 있는 jde-make 를 변경했습니다. 간단하게 되더군요. 적당한 곳 (~/.emacs.d 안에)에 jde-mvn.el 을 복사하시고 .emacs 안에서 

(require 'jde-mvn)


 을 해주시면 됩니다. 그리고 세부 설정을 위해서 


(custom-set-variables

 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ecb-options-version "2.40")
 '(jde-build-function (quote jde-mvn))
 '(jde-global-classpath (quote 
     ("/Users//work/android/\
      sdk/platforms/android-17/android.jar" 
      "/Users//.emacs.d/\
      jdee/build/classes")))
 '(jde-mvn-enable-find t)
 '(js2-auto-indent-p t)
 '(js2-cleanup-whitespace t)
 '(js2-enter-indents-newline t)
 '(js2-global-externs (quote ("$" "Ext")))
 '(js2-mirror-mode nil)
 '(slime-complete-symbol-function 
   (quote slime-fuzzy-complete-symbol))
 '(tab-width 2))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )


 와 같이 jde 설정을 해주시면 완료입니다. 

 필요한 파일은 https://github.com/crazia/jdee-mvn 에 올려두었습니다.
   저번에 올린 Emacs 와 JDEE 를 가지고 안드로이드를 개발하는 방법에 대해서 글을 올렸습니다. 그런데 최근 화두는 어떻게 하면 Mavenpom.xml 을 이용해서 JDEE 의 개발환경에 접목을 시킬까 하는 것이였습니다. 아.. 진짜 힘들었습니다. 그래도 몇가지 테스트와 노력을 끝으로 드디어 성공했습니다. 

참고한 사이트입니다. 


여기에서 근본적인 pom-parser.el 을 다운 받을 수 있었습니다. 그런데 제대로 동작을 하지 않더군요. 이유는 maven 의 실행 옵션들이 변해서 그렇답니다. 


위 사이트를 참조하시면 어떻게 변경해야 하는지 알 수가 있습니다. 위 까지만 적용하면 다 될 줄 알았는데 제가 기본적으로 jde-global-classpath 에 넣어둔 것이 사라지면서 에러가 발생하더군요. 그래서 기존에 있는 클래스 패스를 포함하는 버젼으로 수정했습니다. 
    올려둔 파일을 다운 받으시고 ~/.emacs.d/ 에 복사하시고 maven 프로젝트가 있는 곳 (정확히는 pom.xml 파일이 있는 곳)에 다음과 같은 파일 prj.el 을 만들어 주시면 됩니다. 


(jde-project-file-version "1.0")
(jde-set-variables
'(jde-compile-option-command-line-args
(quote ("-Xlint:all" "-Xlint:-serial"))))
(require 'pom-parser)
  (with-pom ()
  (pom-set-jde-variables *pom-node*))


제가 최근에 읽었던 프로그래머들의 특징에 관한 글중에서 공감이 갔던 구절이 하나 있습니다. 

"프로그래머는 UX (User eXperience)를 개발한다고 해도 자신이 좋아하는 환경은 CLI (Command Line Interface)다" 


 다시금 진행하기전에 다짐하듯이 말씀드리는 사항은 안드로이드 (Android) 개발하기에 최적의 환경은 Google 에서 제공하는 ADT (http://developer.android.com/intl/ko/sdk/index.html) 환경에서 개발하는 것입니다. 이 포스트는 ADT 에서 개발을 진행하더라도 자꾸 자꾸 눈이 CLI 환경에서 떠나지 않는 중독자(?!!)들을 위한 것입니다. 

 이 포스트는
Emacs Version 24로 업글후 Clojure 와 Common Lisp 개발 환경 갖추기 의 연장선상에 있으며 (Version 24 로 올라간 후 정말 많은 것이 바꼈습니다), Snow Leopard 에서 Emacs 를 Android 개발환경 IDE 로 세팅의 연장선상 이기도 합니다. 그 시절과는 정말 많은 것이 달라졌더군요. 


Android SDK 다운로드 
     
http://developer.android.com/intl/ko/sdk/index.html 에서 'USE AN EXISTING IDE' 라고 되어 있는 부분을 누르시면 SDK 만 받는 부분이 있습니다. 받아서 적당한 곳에 풀어주시면 됩니다. 저는 "~/work/android" 에 풀어줬습니다.
 
     
.profile 에 PATH 추가 

export ANDROID_SDK_HOME=/Users/<자신의 아이디>/work/android/sdk
export PATH=$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH

     
이 내용을 추가해 줍니다. 이제 어디서건 android 명령과 adb 명령을 사용할 수가 있게 됩니다. 
 
     
android-mode 설치해주기 

$ git clone git://github.com/remvee/android-mode.git


 로 적당한 곳에 받아줍니다. 제 경우에는 "~/.emacs.d/android-mode" 입니다. 그리고 "$ANDROID_SDK_HOME/tools/lib" 에 있는 android.el 을 "~/.emacs.d/android-mode" 에 복사해줍니다. 
 

.emacs 파일에 android-mode 관련 내용 추가 



(add-to-list 'load-path "~/.emacs.d/android-mode") 
(require 'android-mode)
(require 'android)
(setq android-mode-sdk-dir "~/work/android/sdk")


를 추가해줍니다. 각각의 디렉토리는 제 것을 기준으로 했으니 자신의 디렉토리로 바꾸어 주는 작업이 필요할 것입니다. 
 

JDEE (Java Development Environment for Emacs) 설치하기 

JDEE Project Page 에서 받을 수도 있지만 저는 편하게 미러에서 받는 것을 선택했습니다. 
     

$ cd ~/.emacs.d 
$ git clone git://github.com/emacsmirror/jdee.git


 라는 식으로 적당한 곳에 jdee 를 받아줍니다. 그리고 이것을 컴파일 해줘야 하는데 아마 그냥 안 될것입니다. 
 Ant-Contrib 이라는 것이 필요합니다. "여기" 에서 다운 받을 수 있습니다. ant-contrib-1.0b3-bin.tar.gz 를 다운받고 압축을 풀어서 (ant-contrib-1.0b3.jar 파일이 나옴) 위의 디렉토리인 "~/.emacs.d/jdee" 로 복사해줍니다.  

$ emacs ~/.emacs.d/jdee/build.xml 


로 간단한 조작을 해줍니다. 기존 부분을 아래와 같이 변경해 줍니다. (금방 찾을 수 있습니다 !!)

<!-- add in the contribs (add ant-contrib-VERSION.jar) to CLASSPATH -->
<taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
    <pathelement location="/Users/&lt;자신의 아이디&gt;/.emacs.d/jdee/ant-contrib-1.0b3.jar">
  </pathelement></classpath>
</taskdef>


$ cd ~/.emacs.d/jdee
$ ant build 

해 주면 모든것이 컴파일 됩니다. 
 

Elib-1.0 설치하기 

 예전에 링크로 걸어둔 곳에 가봤더니 이제 받는 곳을 찾기가 어려워 졌습니다. 아마 기본적으로 Emacs 에 포함된 것이 아닐까 생각도 해보지만 혹시 모르니 제 디렉토리에 있는 것을 올려둡니다. 

 
첨부파일을 다운 받으시고 
     

$ tar xvzf elib-1.0.tgz 


로 적당한 곳에 풀어주시면 됩니다. 참고로 저는 "~/.emacs.d/elib-1.0" 에 풀어줬습니다. 


JDEE 세팅하기 

 저는 보통 세팅을 나눠서 하는 것을 좋아합니다. 주력하고 있는 프로젝트에 따라서 .emacs 파일을 조금씩 조절하는 것을 즐겨하기 때문에 이번에도 그런식으로 했습니다. 

$ emacs ~/.emacs 

     
로 열어서 맨 아래쪽에 


(require 'cr-jdee)


를 추가해줍니다. 그리고 

$ emacs ~/.emacs.d/cr-jdee.el


로 열어서 다음과 같은 내용을 채워줍니다. 


;;;
;;; jdeee settings 
;;;


(add-to-list 'load-path "~/.emacs.d/elib-1.0")
(add-to-list 'load-path "~/.emacs.d/jdee/build/lisp")

(setq jde-help-remote-file-exists-function '("beanshell"))

(require 'jde)

;;
;; 저장할 때마다 자동으로 import 정리해주기 
;;
(defun java-my-hook ()
  (progn
    (define-key jde-mode-map [(control return)] 'jde-complete)
    (add-hook 'before-save-hook
              (lambda ()
                (jde-import-kill-extra-imports)
                (jde-import-all)
                (jde-import-organize))
              nil t)
    ))

(add-hook 'jde-mode-hook 'java-my-hook)


(custom-set-variables
 `(jde-global-classpath (quote 
    ("/Users/<자신의 아이디>/work/android/sdk/platforms/\
      <자신의 주력 타겟:예로 android-16>/android.jar" 
     "/Users/<자신의 아이디>/.emacs.d/jdee/build/classes"))))

(provide 'cr-jdee)



이렇게 저장해 주면 기본적인 세팅은 끝입니다. 중간에 java-my-hook 함수로 하는건 몇 가지가 있지만 그중에 제일 편리한 기능이 파일 저장할 때 알아서 import 문을 추가해 주는 기능입니다. Eclipse 의 Cmd + Shift + O 누르면 해주는 기능과 비슷합니다. 처음 실행할 때 beanshell 실행하느라 좀 느리긴 하지만 일일이 찾아주는 것보다 얼마나 편합니까? ㅎㅎ 
     

테스트 하기 

프로젝트 만들고 간단하게 빌드 + 테스트는 
예전 포스트 와 Command Line 에서 프로젝트 관리하기 를 참조하시면 됩니다. 이 부분은 추후에 조금 더 보강해서 정리하겠습니다. 

저번 포스트 에서 Emacs 버젼을 24 로 업그레이드 한 후에 가장 큰 문제가 생겼습니다. ClojureCommon Lisp 개발환경이 동시에 안되는 문제가 발생했습니다. 

몇번의 노력끝에 결국 Emacs 에서도 편하게 설치하는 쪽을 받아들이게 됐습니다. 기존에는 "이맥스 유저는 이래야 해!!" 라는 말도 안되는 자존심으로 수동으로 이거 저거 설치하는 쪽이였으나 이제 대세를 받아들이기로 했습니다. 

클로져 (Clojure) 개발 환경 설정 


예전 포스트 에서 쉽게 설치하는 방법을 소개한 적이 있었습니다.  그러나 swank-js 를 만들었던 당사자가 더 훌륭한 솔루션이 나왔다고 GG 를 쳐버렸습니다. -0- (당신을 믿고 포스팅을 했었다고!!! ㅜ.ㅜ ) 

nRepl 을 설치해줍니다.  

nrepl.el is an Emacs client for nREPL, the Clojure networked REPL server. It's a great alternative to the now deprecated combination of SLIME + swank-clojure.


설치법은 간단합니다. Emacs 24 버젼부터는 Package 관리가 기본으로 포함되어 버렸습니다. 대세는 게을러지기 아니겠습니까? 
.emacs 파일에 다음과 같은 내용을 추가합니다. 


(require 'package)
(add-to-list 'package-archives
    '("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)


그리고 재 시작후 , M-x list-packages 로 출력해서 nrepl 을 찾아서 설치해 주거나 , 설명 페이지에서 추천하는 대로 

M-x package-install [RET] nrepl [RET]



로 설치해주시면 됩니다. 추가로 편리하게 사용하기 위해서 세팅 몇가지만 해주시면 됩니다. 

(add-hook 'nrepl-mode-hook
     (defun clojure-mode-slime-font-lock ()
         (let (font-lock-mode)
             (clojure-mode-font-lock-setup))))


이제 클로져 관련 파일을 열고나서 M-x nrepl-jack-in  를 입력하시면 익숙한 REPL 버퍼가 보일 것입니다. (속도도 Swank-js 보다 빨라졌습니다)


Common Lisp 개발 환경 설정 (SLIME 설정)
 
이제 이것 설치도 쉽게 하는 방법이 있습니다. SBCL 은 이미 설치되어 있다고 가정합니다. (참조사이트 : http://www.mohiji.org/2011/01/modern-common-lisp-on-linux/

일단 quicklisp 파일을 다운 받아야 합니다. http://beta.quicklisp.org/quicklisp.lisp 에서 받아줍니다. 적당한 곳에 옮겨주시고요. 

$ sbcl


sbcl 을 실행시켜줍니다.

user> (load "/path/to/quicklisp.lisp")


sbcl 상에서 위와 같이 quicklisp 파일이 받아진 것을 읽어들입니다.  

user> (quicklisp-quickstart:install)
user> (ql:add-to-init-file)
user> (ql:quickload "quicklisp-slime-helper") 


그리고 위와 같이 연속으로 실행시켜줍니다.  이러면 자연스럽게 SLIME 까지 설치가 됩니다. 이제 Emacs 에게 위치를 알려주는 일만 해주면 됩니다. 

(setq inferior-lisp-program "sbcl")
(load (expand-file-name "~/quicklisp/slime-helper.el"))

이제 M-x slime 을 입력하면 자연스럽게 SLIME REPL 이 뜨게 됩니다.  

May The Source Be With You !!!
 
Emacs 에 Yasnippet 을 설치하면 기본적으로 Text-mode snippet 중에 time 이라는 단축어가 있습니다. 
Text-Mode 상에서 time 을 입력하고 TAB 키를 누르시면

Thu Mar 21 18:36:06 2013

위와 같은 내용이 출력됩니다. 일단 영어이기도 하고 , 제가 필요하 것은 오늘 날짜와 뭐 더 필요하다면 요일정도? 출력이 되면 좋겠다고 생각이 들어서 간단한 함수를 제작했습니다.

(defun current-day-string ()
  (let ((datetime (decode-time))
        (dow '(일 월 화 수 목 금 토)))
    (format "%s-%s-%s %s요일" 
            (nth 5 datetime) 
            (nth 4 datetime) 
            (nth 3 datetime) 
            (nth (nth 6 datetime) dow))))


이제 이 함수를 .emacs 에 넣어둡니다. (전 다른 방법을 쓰지만 쉽게 쉽게 설명합니다 ㅎㅎ) 

그리고 Snippet 을 만들어줄 차례입니다. 

yasnippet 이 설치된 디렉토리로 이동합니다. (제 경우에는  ~/.emacs.d/plugins/yasnippet 에 저장이 되어 있습니다) 

$ cd snippets
$ cd text-mode



(만약 이 디렉토리들이 존재하지 않는다면, 예전 제 포스트 를 참조하셔야 합니다. yasnippet 부분만 따라하시면 됩니다. ) 
 

$ emacs day



(day 라는 이름의 snippet 을 만들어 주라는 것입니다)

# name: (current day)

# key: day
# --
`(current-day-string)`



자 이제 모든 준비가 끝났습니다. text-mode 상태에서 day 라고 누르고 TAB 키를 눌러주면

2013-3-21 목요일

라고 출력되는 것을 확인하실 수 있습니다.  
 

+ Recent posts