태그 보관물: readonly

Emacs: Buffer is read-only

원격 서버에 접속해서 개발을 마치고 커밋을 정리하려고 git rebase -i <base_commit>를 하는데 “Buffer is ready-only”가 뜨면서 rebase를 수행할 수 없는 문제가 생겼다.

로컬에서 사용하는 Emacs에서는 이런 문제를 겪은 적이 없었는데 원격 서버에서는 git-rebase-todo 버퍼를 읽기 전용으로 읽어 버리는 문제가 생기는 것이다. 이 문제를 해결하는 방법은 두가지 정도가 있다.

방법1: Read-only 강제 전환

특별한 문제가 있어서라기 보다는 모종의 이유로 special mode가 활성화 되어서 read-only가 걸린 상태가 되는 것일 뿐이므로 C-x C-q로 쓰기모드로 강제 전환해서 수정을 해도 별 문제가 없다. 다만, 이후로도 git rebase -i 명령어를 수행할 때 마다 강제 전환을 해줘야 한다는 사소한 문제가 있을 뿐.

방법2: git-rebase-mode-hook 설정

매번 버퍼를 강제 변환하는 과정을 귀찮으니 아예 git rebase mode일 때 read-only를 강제로 푸는 방법도 있다. init file의 뒷쪽에 다음을 추가해 준다.

...

;; git rebase를 수행할 때 read-only 걸리는 문제 수정
(add-hook 'git-rebase-mode-hook
  (lambda ()
    (read-only-mode -1)))