2012-12-31 2 views
1

두 가지 다른 경우에, 나는 중요한 파일을 이맥스로 덮어 썼다. 여러 가지 명령 (특히 org-agenda-writeorg-export)은 해당 이름의 파일이 이미 존재한다는 경고없이 기존 파일을 간단하게 대체하기 때문에 발생합니다. 이럴 수 없도록 emacs를 설정하는 방법이 있습니까?이맥스가 경고없이 파일을 덮어 쓰지 않도록하려면 어떻게해야합니까?

+4

파일을 덮어 쓰는 명령의 예를 들려 줄 수 있습니까? – Juancho

+1

예, 재발행을위한 단계를 제공하십시오. –

답변

1

org-agenda-writewrite-file을 사용하여 일정을 저장합니다. 이 함수는 프로그램에서 호출 될 때 확인없이 기존 파일을 덮어 씁니다. write-fileorg-agenda-write 안에 꽤 깊숙이 묻혀 있으며 직접 수정하면 Emacs의 다른 곳에서 놀라운 버그가 발생할 가능성이 있습니다. 그러나 주위의 조언에 org-agenda-write을 감쌀 수 있습니다. 이것은 파일의 존재 여부에 대한 점검을 추가하고이를 덮어 쓰기 전에 사용자에게 경고하는 깔끔한 방법입니다.

(defadvice org-agenda-write (around my-file-check) 
    "Check if a file exists before writing the agenda to it." 
    (if (file-exists-p file) 
     (if (y-or-n-p (format "Overwrite %s?" file)) 
      ad-do-it) 
    ad-do-it)) 

(ad-activate 'org-agenda-write) 

org-agenda-write의 버그로받을 수 있으며 당신이 orgmode 메일 링리스트에 정중하게 요청하면 그들은이 기본 동작을 확인하게 납득 될 수 있습니다.

파일 작성 동작이 org-export인데 좀 더 복잡 해 보이며 완료하려면 외부 프로그램을 사용할 수 있습니다. 그래도 원하는 경우 유사한 래퍼를 사용할 수 있습니다.

+0

감사합니다.이 코드를 사용해 보겠습니다. 경고없이 기존 파일을 덮어 쓰려고하는 모든 기능에 적용 할 글로벌 솔루션이 없다면 어떻게 될까요? –

+0

'write-file'을 조언 할 수 있습니다. 그러나 쓰기 파일은 다른 많은 코드에서 사용되므로 기본 기능을 사용하는 것은 위험합니다. 대부분의 파일 작성 기능은 이미 덮어 쓰기를 확인합니다. 그들이 버그가 아니라면 수정해야 할 버그 일 것입니다. 이것이 최고의 글로벌 솔루션입니다. – Tyler

관련 문제