Emacs에서 세계 시간 보기

내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.

Emacs에서 세계 시간 보기

예전에 팀에서는 다른 나라에 있는 사람들과 함께 일할 기회가 많지 않았다. 지금 팀에서는 미국이나 인도에 있는 엔지니어와 커뮤니케이션 하는 경우가 종종 생기고, 그럴 때마다 상대편의 시간을 확인하곤 한다. 꼭 일 때문이 아니어도, 지금 한국은 몇 시쯤 됐을까 궁금할 때도 있다.

세계 시간을 확인할 때 MacOS의 Clock 위젯을 사용했다. London, Mumbai, Seoul, Seatle 이렇게 네 도시를 위젯에 등록했다. 다른 곳 시간이 궁금할 때마다 위젯을 열어보면 된다.

Clock Widget in MacOS

오늘 Emacs에서도 세계 시간을 확인할 수 있는 기능이 있다는 걸 알게 되었다. Emacs에 world-clock이라는 명령이 이미 내장되어 있었던 것이다. world-clock을 실행하면 화면에 다음과 같이 표시된다.

Seattle   Monday 11 March 12:19 PDT
New York  Monday 11 March 15:19 EDT
London    Monday 11 March 19:19 GMT
Paris     Monday 11 March 20:19 CET
Bangalore Tuesday 12 March 00:49 IST
Tokyo     Tuesday 12 March 04:19 JST

음... 서울 대신 도쿄가 나오는 것이 마음에 들지 않는다. 물론 이 목록 또한 바꿀 수 있다. 정확한 변수명을 몰라 M-x customize를 실행한 다음 world-clock으로 검색해 목록 변수를 찾았다. 정확한 변수 이름은 zoneinfo-style-world-list다. 따라서 M-x customize-variable <ENTER> zoneinfo-style-world-list를 통해 바로 변수 편집 화면으로 갈 수 있다.

나는 런던, 방갈로, 서울, 시애틀, 뉴욕, 이렇게 다섯 도시의 시간에 관심이 있다. 파리와 도쿄를 삭제하고 서울을 추가한 다음 순서를 조정했다. 저장한 다음 init.el 파일을 열어보면 zoneinfo-style-world-list에 저장되어 있음을 확인할 수 있다.

...
 '(zoneinfo-style-world-list
   '(("Europe/London" "London")
     ("Asia/Calcutta" "Bangalore")
     ("Asia/Seoul" "Seoul")
     ("America/Los_Angeles" "Seattle")
     ("America/New_York" "New York")))
...

world-clock을 다시 실행해 보면 화면에 다음과 같이 표시된다.

London    Monday 11 March 19:33 GMT
Bangalore Tuesday 12 March 01:03 IST
Seoul     Tuesday 12 March 04:33 KST
Seattle   Monday 11 March 12:33 PDT
New York  Monday 11 March 15:33 EDT

TimeZone을 설정할 때 가능한 값을 Emacs에서 목록으로 확인할 수 없을까 찾아봤지만 찾지 못했다. 대신 List of tz database time zones를 찾았다. 여기서 원하는 TZ Identifier를 찾아 쓰면 될 듯 하다.

이제 날짜 포맷을 손 볼 차례다. 나는 날짜를 yyyy-MM-dd hh:mm:ss Z 형식으로 표시하는 것이 좋다. world-clock의 날짜 형식을 지정하는 변수는 world-clock-time-format이다. M-x customize-variable <ENTER> world-clock-time-format으로 변수 편집 화면으로 간 다음 형식 문자열로 %Y-%m-%d %H:%M:%S %Z를 지정한다. 변수 편집 화면에 날짜 형식 문자열에 대한 도움말 링크가 있다. 적용/저장한 다음 init.el 파일을 열어보면 world-clock-time-format가 다음과 같이 지정된 것을 확인할 수 있다.

...
 '(world-clock-time-format "%Y-%m-%d %H:%M:%S %Z")
...

world-clock을 다시 실행해 보면 화면에 다음과 같이 표시된다.

World clock in Emacs

마지막으로, 이 기능을 편하게 실행할 수 있도록 단축키를 지정하다. 처음에는 C-c C-t로 했지만 이건 markdown-mode에서 충돌이 발생해 제대로 쓸 수 없었다. 몇 가지 다른 조합을 시도해보다 그냥 Cmd-t로 하기로 했다. init.el 파일에 다음 행을 추가한다.

(define-key global-map (kbd "s-t") 'world-clock)

이제 Emacs에서 편하게 셰계 시간을 확인할 수 있게 되었다. 솔직히 이걸 얼마나 사용하게 될지는 모르겠다. MacOS의 위젯으로 확인하는 것도 충분히 편하기 때문이다. 그러나 Emacs에서 편집 중이라면 손을 트랙패드로 옮겨서 두 손가락으로 스와이프하는 것보다는 에디터에서 Cmt-t를 누르는 게 훨씬 편할 것이다.

참고