2017년 12월 8일 금요일

Start Emacs on Windows

회사에 다니는 동안 업무에 대한 기록은 OneNote를 이용했으나, 회사 DRM 시스템에 의한 백업 과정에서의 충돌이 빈번히 일어나고 3년 가까이 작성하면서 꽤 양이 많아져서 안 그래도 무거운 원노트가 점점 부담스러웠다.

OneNote를 대체할 프로그램을 찾았으나 아래 조건을 충족하는 항목들이 마땅치 않았다.
  • 가벼울 것
  • 강력한 검색 기능
  • 백업
  • Line folding
  • Todo 관리 
이 모든 걸 Emacs ORG 모드가 해결해줬다.

우선 OneNote 프로그램 자체도 무거웠고, 검색 기능을 제대로 활용을 못 한 것이 문제인지 검색 결과가 만족스럽지 않고 느렸다. OneNote 캐시된 파일이 DRM 때문에 문제가 생길 때마다, 백업 파일을 불러와서 새로 파일을 만드는 쓸데없는 작업들을 했다. 이마저도 공들여서 적었으나 백업 파일에는 누락된 부분도 있어서 그럴 때 마다 다른 프로그램으로 갈아타야지 생각했었다.

지하철을 타고 판교를 지나고 있는데 마침 옆자리에 앉은 분이 노트북을 꺼내 문서 편집을 하고 있었다. 레이아웃이 특이하길래 슬쩍 보았는데, 자유롭게 윈도우를 분할해가며 Line folding
되고, Todo 까지 관리하고 있는 모습이 보여 무슨 에디터냐고 물었는데 그 때 들었던 것이 Emacs 였다.

Vi vs Emacs 에디터 전쟁에 대해서는 알고 있었고, Vi 로도 얼추 가능은 할 것 같기도 했지만 익숙한 vi 말고 괜히 Emacs를 써보고 싶어 회사 리눅스 PC에 Emacs 셋팅 해놓고 집에 와서 Windows에도 설치해보았다.

이틀 정도 써보니 처음에는 손에 익질 않아서 그냥 때려치울까 했는데, 이제 조금 익숙해져서 그런지 점점 맘에 든다. Emacs에 빠지면 답도 없다는데...

* 윈도우에 Emacs 설치
1 ~ 3, 5 스킵 가능

1. python 2.7 설치 및 PATH 등록
- cask 설치하려고 깔았으나, cask 설치에 실패

2. git 설치 및 PATH 등록
- 스킵 가능.

3. cURL 설치
- cask 설치를 위해 curl을 설치했으나, cask 설치에 실패. 이 부분은 스킵 하셔도 됩니다.
- https://github.com/vszakats/harbour-deps
- http://ilhee.tistory.com/25

4. Emacs 설치
- https://www.gnu.org/software/emacs/download.html

5. D2Coding 설치
- https://github.com/naver/d2codingfont

6. .emacs 설정
- HOME 환경변수 없는 경우 C:\Users\유저명\AppData\Roaming\.emacs

7. recentf 설치
- 최근 파일, C-x C-r

8. which-key 설치
- 단축키 cheat sheet

9. Cask 설치 실패 (해결법 알고 계시면 공유해주시면 감사드리겠습니다.)
C:\Users\NAM>Contacting host: melpa.org:443
gnutls.c: [1] (Emacs) GnuTLS library not found
Opening TLS connection to `melpa.org'...
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 melpa.org'...
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 melpa.org'...failed
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 melpa.org --protocols ssl3'...
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 melpa.org --protocols ssl3'...failed
Opening TLS connection with `openssl s_client -connect melpa.org:443 -no_ssl2 -ign_eof'...
Opening TLS connection with `openssl s_client -connect melpa.org:443 -no_ssl2 -ign_eof'...failed
Opening TLS connection to `melpa.org'...failed
Failed to download `melpa' archive.
Contacting host: elpa.gnu.org:443
Opening TLS connection to `elpa.gnu.org'...
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 elpa.gnu.org'...
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 elpa.gnu.org'...failed
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 elpa.gnu.org --protocols ssl3'...
Opening TLS connection with `gnutls-cli --x509cafile nil -p 443 elpa.gnu.org --protocols ssl3'...failed
Opening TLS connection with `openssl s_client -connect elpa.gnu.org:443 -no_ssl2 -ign_eof'...
Opening TLS connection with `openssl s_client -connect elpa.gnu.org:443 -no_ssl2 -ign_eof'...failed
Opening TLS connection to `elpa.gnu.org'...failed
Package refresh done
Failed to download `gnu' archive.
Setting `package-selected-packages' temporarily since "emacs -q" would overwrite customizations
Setting `package-selected-packages' temporarily since "emacs -q" would overwrite customizations
Package `s-' is unavailable

10. 참고
- https://www.gnu.org/software/emacs/manual/html_mono/efaq-w32.html#Location-of-init-file
- http://ders45.blogspot.kr/2016/04/emacs.html
- http://devnauts.tistory.com/51
- http://devnauts.tistory.com/55
- http://ehneilsen.net/notebook/orgExamples/org-examples.html
- http://orgmode.org/worg/org-tutorials/org4beginners.html

11. .emacs 설정