Emacs에서 음력 지원 (cal-korea.el)
http://jmjeong.com/index.php?Emacs/Cal%2DKorea
메모+일정관리 목적으로 사용하고 있는 Org-mode에다 음력을 지원할 수 있지 않을까 해서, 관련 모듈을 살펴보다가 Emacs의 calendar + org-mode 모드에 사용되는 Calendar 음력 모드를 만들었습니다.
Emacs 내장 calendar에 moon phase를 출력하는 모듈과 중국 음력(cal-china)을 출력하는 루틴이 이미 들어 있습니다. 이것을 활용하여 한국음력을 지원하도록 했습니다. 중국과 우리나라 간의 음력날짜가 하루씩 다른 경우와 년도 표기 방법도 우리나라에서쓰는 방식대로 수정을 했습니다. 한국천문연구원에 있는 달력을 바탕으로 요 몇년 사이의 음력날짜에 대해서는 확인을 했는데, 혹시라도 다른 경우가 있으면 알려주시기 바랍니다.
출력되는 한글 메시지는 euc-kr를 기준으로 출력하도록 했습니다. prefer-coding-system에 맞춰서 출력 메시지를 다르게 할 필요가 있지 않을까 싶습니다.
korean-calendar-print-long-description 값이 t인 경우에는 간지까지 출력, nil 인 경우에는 간략하게 출력이 됩니다. 예를 들어 2007/12/12일 경우, 해당 값이 t인 경우에는 "2007년 11월 03일 (평달) 정해년 임자월 경진일"이, nil 인 경우에는 "2007/11/03" 으로 출력이 됩니다.
Diary 모드나 Org-mode에서 새로 지원이 되도록 추가된 sexp 함수는 아래와 같습니다.
(diary-korean-date)
그 날짜에 해당하는 음력 날짜 출력
출력결과로는 '음력: 2007/11/03' 이렇게 출력이 됩니다.
(diary-lunar-date MONTH DAY YEAR &optional LEAP MARK)
diary-date에 상대되는 음력함수입니다.
MONTH, DAY, YEAR 각 항목을 t로 지정하면 임의의 값이 들어와도 됩니다.
사용 방법으로는 '%%(diary-lunar-date 1 1 t) 설날 - %s' 과 같이 사용하고 %s는 음력 날짜로 치환이 됩니다.
(diary-lunar-anniversary MONTH DAY &optional YEAR LEAP MARK)
diary-anniversary에 상대되는 음력함수입니다. YEAR가 숫자로 입력이 된 경우에는 현재 날짜가 그 음력날짜로부터 몇 년이 지났는지를 계산해주고, t 인 경우에는 계산이 되지 않습니다.
사용방법으로는 '%%(diary-lunar-anniversary 12 4 1970) 정재목 - %s(%d)' 와 같이 되고 %s는 음력 날짜로, %d는 해당하는 음력날짜로부터 몇년이 지났는지에 대한 값이 치환됩니다. 윤달인 경우에는 LEAP에 t를 입력하면 됩니다. %s %d가 이 순서대로 나와야 합니다. %d %s 이런식으로 쓰게 되면 에러가 납니다. 출력결과는 '정재목 - 음력 12월 4일(37)' 와 같이 출력이 됩니다.
Calendar mode에서 음력날짜 지원을 위해 calendar-print-korean-date와 calendar-goto-korean-date가 추가되었습니다. 각각 default key 값으로는 'p l'과 'g l'로 mapping을 시켜 놓았습니다. Calendar mode에서 'p l'을 누르면 해당하는 날짜에 대한 음력날짜가 출력이 됩니다. 또한 해당 음력날짜에 해당하는 양력을 알고 싶은 경우에는 'g l'을 누르면 양력날짜로 옮겨가게 됩니다.
해당 모듈을 사용하기 위해서는 cal-korea.el을 load-path중 적당한 곳에 옮겨 놓고, .emacs 파일에서 (require 'cal-korea)를 하면 됩니다. Calendar, Diary, Org-mode 등에서 활용할 수 있습니다.
첨부 | 파일 크기 |
---|---|
![]() | 12.25 KB |
![]() | 7.45 KB |
댓글 달기