2010-03-19 2 views
12

이맥스에서 코드를 폴드하는 데는 많은 방법이 있으며 개요 마이너 모드를 사용하여 해결했습니다 ... 훌륭합니다!이맥스 영구 폴딩 모드

그러나 파일을 닫고 다시 열 때 내 접기가 지속되도록해야합니다. Emacs를 다시 시작했을 때 폴드를 좋아하는 방식으로 파일에 폴딩을 설정하는 것은 상당히 실망 스럽습니다.

파일의 폴딩 상태를 영구히 유지하는 방법을 찾은 사람이 있습니까?

+1

하지 정확한 대답,하지만 당신은 [orgfold.el]와 조직 모드 (http://www.emacswiki.org/emacs/orgfold.el을 사용할 수 있습니다) 또는 [orgfold-separate-file.el] (http://www.emacswiki.org/emacs/orgfold-separate-file.el) - 후자가 하나의 전역 상태 저장소로 작업하면 좋을 것입니다. 파일 (예 : [saveplace.el] (http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/saveplace.el)). – Mark

답변

4

편집 : 이제 질문을 이해 ...

방법 다음 코드 nippet 같은 약. 때마다 파일 로컬 변수에 대한 메시지가 나타나지 않도록하는 방법을 찾지 못했지만 저에게는 효과가있는 것처럼 보입니다.

# Local Variables: 
# omm-state:() 
# mode:omm-state 
# End:    
+0

Trey에게 의견을 보내 주셔서 감사합니다. 명확하게하기 - 나는 후크로 좋아하는 파일 형식에 대해 개요 마이너 모드를 활성화 할 수 있습니다. 내가 찾고있는 코드 항목을 접어 버퍼를 닫은 다음 나중에 파일을 다시 열면 해당 항목을 계속 접기를 원합니다. –

+1

@Chris 나는 이해하고있다. 이것이 가능하다는 것을 모른다. –

+0

이 지속성은 어디에 저장됩니까? 파일 자체? 나쁜 생각; 다른 파일? 가능 합니다만, 그런 일은 할 수있는 그런 갈고리가 아직 없습니다. 그리고 나는 그 파일들을 여기 저기에 떨어 뜨리는 것에 대해 의심 스러울 것입니다. 하나의 폴더에 모아 있다면 .. 거대한 것입니다. –

0

나는 이것이 이전 게시물을 실감하지만 FWIW 내가 HS-마이너 모드를 보완하는 사소한 모드를 생성, 개요 :

(defvar omm-state nil 
    "file local variable storing outline overlays") 
(defun omm-state-mode (&optional arg) 
    "poor man's minor mode to re-apply the outline overlays " 
    (interactive) 
    (omm-re-enable-outline-state) 
    (add-hook 'before-save-hook 'omm-state-save)) 
(defun omm-get-all-overlays() 
    "return a list of outline information for all the current buffer" 
    (save-excursion 
    (let ((all-overlays (overlays-in (point-min) (point-max)))) 
     (mapcar (lambda (o) 
       (list (overlay-start o) (overlay-end o) (overlay-get o 'invisible))) 
       (reverse all-overlays))))) 
(defun omm-re-enable-outline-state (&optional arg) 
    "turn on outline-minor-mode and re-apply the outline information" 
    (outline-minor-mode 1) 
    (when (listp omm-state) 
    (mapcar (lambda (p) 
       (apply 'outline-flag-region p)) 
      omm-state))) 
(defun omm-state-save() 
    "save the outline state in a file local variable 
Note: this just replaces the existing value, you need to start 
it off by adding something like this to your file: 

# Local Variables: 
# omm-state:() 
# mode:omm-state 
# End:    
" 
    (ignore-errors 
    (save-excursion 
     (goto-char (point-max)) 
     (when (search-backward "omm-state:" nil t) 
     (goto-char (match-end 0)) 
     (kill-sexp) 
     (princ (omm-get-all-overlays) (current-buffer))))) 
    nil) 

이 솔루션은 같은 것을 사용하여 파일을 "시딩"요구 -mode 등. 또한 "파일을 닫고 다시 열 때 내 접기가 지속되도록해야합니다." :)

패키지는 오늘 MELPA에 있으며 영구 오버레이라고합니다.

이 직접 GitHub의에로도 주문 가능합니다 https://github.com/mneilly/Emacs-Persistent-Overlays

관련 문제