먹고 살려고 windows 환경에서 emacs를 쓰고 있는데, 어느 순간엔가 제목과 같은 에러가 나면서 emacs가 시작조차 되지 않았다.
emacs가 안되면 나는 아무것도 할 수 없는 상태... 완전 맨붕.
*Messages* buffer의 내용은 아래와 같았다.
......
Desktop: 367.00ms to restore ~/.emacs.d/custom.el
Entering debugger...
condition-case: Variable binding depth exceeds max-specpdl-size
Error in post-command-hook (global-rinari-mode-check-buffers): (error "Variable binding depth exceeds max-specpdl-size")
Mark activated
rinari-root: Lisp nesting exceeds `max-lisp-eval-depth'
......
검색해봐도 별로 유의미한 것은 없었고 rinari는 ruby 관련 패키지라는 것 말고는 알아낸게 없었다 (난 ruby 쓰지도 않음).
얼마전부터 개별 패키지 설치를 하지 않고(너무 많아서 귀찮음) 대부분의 각종 설정을 해주는
emacs.d를 잘 쓰고 있었는데 거기에는
desktop이라는 패키지도 기본으로 포함되어 있었다. emacs 종료 직전의 상태(열린 파일 즉 버퍼 등)로 복구해주는 아주 유용한 패키지인데, 파일들을 열다가 상기 메시지를 뿌리는 것으로 보아 좀 의심이 갔다. 설정 파일(
~/.emacs.d/.emacs.desktop)을 열어 보았다.
에러 메시지를 뿌리기 직전 custom.el을 열고 그 다음에 remote server의 파일(//으로 시작하는 path)을 열면서 에러가 난 것으로 추정되었다.
기억을 더듬어 보니 며칠전에 remote file server에 있는 파일을 drag & drop으로 열려고 시도했는데 제대로 열리지 않아서 local로 옮겨서 열었던것이 용케 떠올랐다 (사실 rebooting 요구하는 windows update만 안했어도 몇주 이상 더 띄워 놓았을 거다).
해당 부분을 파일에서 삭제하고 emacs를 시작했더니 제대로 올라왔다.
해당 부분(lisp expression 이다):
(desktop-create-buffer 206
"//a.file.server/path/to/file"
"file"
'fundamental-mode
'(anzu-mode global-auto-revert-mode whitespace-cleanup-mode undo-tree-mode whole-line-or-region-mode hes-mode auto-compile-on-load-mode)
1
'(nil nil)
nil
nil
'((buffer-file-coding-system . iso-latin-1-dos)))
간만에 구글느님께서도 정답을 알려주지 못하는 문제가 생겨서 삽질좀했다.
happy hackin'