2011-08-01 4 views
2

orgfile에서 CATEGORY를 PROPERTY로 변환하는 가장 좋은 방법은 무엇입니까?emacs org 파일에서 CATEGORY를 PROPERTY로 변환하는 가장 좋은 방법

#+CATEGORY: NETWORKING 

:PROPERTIES: 
:CATEGORY: NETWORKING 
:END: 

에 나는이 작업을 수행하려면 다음 elisp 코드를 사용했다.

(let ((buf_name "home.org") (current_line 0) (current_string "")) 
    (set-buffer buf_name) 
    (goto-char (point-min)) 
    (while (re-search-forward "#\\+CATEGORY: \\(.*$\\)" nil t) 
    (replace-match ":PROPERTIES:\n:CATEGORY: \\1\n:END:"))) 

더 좋은 방법이 있습니까?

편집 : - 난의 단어로 인식되지 않는 "C++"CATEGORY 만 "C"를 가지고 있기 때문에

"#\\+CATEGORY: \\(\\w+\\)" 

"#\\+CATEGORY: \\(.*$\\)" 

에 수정 된 정규 표현식 "C++"는 단어로 인식됩니다.

(let ((buf_name "home.org") 
     (current_line 0) 
     (current_string "")) 
    (with-current-buffer buf_name 
    (replace-regexp "#\\+CATEGORY: \\(\\w+\\)" 
        ":PROPERTIES:\n:CATEGORY: \\1\n:END:" 
        t 
        (point-min) 
        (point-max)))) 

을하지만 어떤 개념적으로 더 나은 방법이 단지 문체의 변화입니다 :

답변

1

이 사용할 수 있습니다.

추가 : 속성 서랍과 범주가 동일하지 않습니다. 두 번째 항목은 파일의 끝까지 확장됩니다. 첫 번째 항목은 현재 하위 트리 내부에만 있습니다. 그래서 나중에 대부분 수동으로 편집해야합니다.

+0

Talespin_Kit의 사용을 지적하고'대체-match'는 LISP를 작성할 때 더 정확 수용 할 수있는 코드를 편집. 'replace-regexp'에 대한 문서는 실제로 "정확하게 실행하고 마크를 설정하거나 아무것도 인쇄하지 않을 것이기 때문에 정확하게 수행하라"고 말합니다. – phils

1

이 시도 :

(save-excursion 
    (let* (file-cat 
    (file-list (org-agenda-files t))) 
    (dolist (file file-list) 
     (find-file file) 
     (goto-char (point-min)) 
     (re-search-forward "CATEGORY") 
     (setq file-cat (substring-no-properties 
       (org-get-category (point)))) 
     (beginning-of-line) 
     (kill-line) 
     (goto-char (point-min)) 
     (outline-next-heading) 
     (org-set-property "CATEGORY" file-cat) 
     (while (not (condition-case nil (outline-forward-same-level 1) 
      (error t))) 
    (org-set-property "CATEGORY" file-cat)) 
     (save-buffer)))) 

위의 코드는 파일 범주를 얻는다되지 않는 선을 제거하고 이전 파일 카테고리에 각 최상위 헤드 라인의 범주 속성을 설정합니다.

편집 : 경우 조나단에 의해`다시 검색 forward`의

+0

귀하의 # + 카테고리가 최상위 제목 뒤에 오는 줄이므로 모든 하위 표제를 통해 전달되는 경우 어떻게됩니까? (* Top \ n # + Category : Category \ n ** blah \ n ** blah2) –

+0

나는 그 사건을 수용 할 수있는 코드를 편집했다. 그것을 지적 주셔서 감사합니다. – suvayu

관련 문제