Ponownie spakować drzewo konspektu do nowego pliku trybu org?

13

Właśnie zaczynam pracę w trybie organizacji i wyobrażam sobie przepływ pracy, w którym przechwytuję nowe zadania i notatki w pliku skrzynki odbiorczej w trybie organizacji. W przypadku zadań, które przeradzają się w projekty, wyobrażam sobie, jak można je przekształcić w nowy plik trybu org, który jest następnie dodawany do mojego programu.

Podręcznik trybu org opisuje uzupełnianie drzewa głównie tak, jak szukam, z tym wyjątkiem, że wydaje się, że pozwala on tylko na uzupełnianie sekcji w tym samym pliku. To, co chciałbym zrobić, to wziąć to drzewo i przekształcić je w nowy plik (a następnie najlepiej dodać plik do listy programów).

Mogę skopiować i wkleić do nowego bufora, a następnie dodać nowy bufor do porządku obrad, ale wydaje się, że jest to coś, do czego bogowie w trybie org mogą mieć skrót.

Piotr
źródło
Dlaczego chcesz utworzyć nowy plik dla każdego projektu? Istnieją małe i duże projekty, więc możesz mieć plik projects.org jako rodzaj pliku inkubacyjnego, który początkowo zawiera wszystkie projekty, a jeśli projekt rośnie tak duży, że zasługuje na własny plik, możesz go utworzyć ręcznie.
Tom
Dzięki, Tom. To jest moje myślenie. Duże rzeczy przenoszą się do własnego pliku, gdy stają się zbyt duże. Znalazłem flagę, która pozwala mi na przejście do innego pliku na mojej liście agend, ale tylko pod istniejącym nagłówkiem. Jeszcze trochę kopię, żeby zobaczyć, czy mogę po prostu dodać drzewo do nowego pustego pliku org ...
Peter
1
@Peter możesz przełożyć dowolne drzewo do innego pliku. ale najpierw musisz dodać plik docelowy doorg-agenda-files
kindahero
@kindahero: Czy to domyślna opcja? Mam plik „test1.org” z drzewem, które chcę przenieść do pustego pliku „test2.org”, który został zapisany i dodany do porządku obrad za pomocą Cc [. Jedyne cele powtórzeń, które daje mi jako opcje ukończenia, pochodzą z „test1.org”.
Peter

Odpowiedzi:

1

Oto szybka i brudna funkcja elisp, którą można dowolnie modyfikować.

(defun subtree-to-new-file ()
  (interaktywny)
  „niechętnie pomaga w przeniesieniu poddrzewa organizacji do nowego pliku”
  (org-copy-subtree zero t)
;;; Ta długa instrukcja setq otrzymuje tytuł pierwszego nagłówka, który ma być używany jako domyślna nazwa pliku dla nowego pliku .org.
(setq pierwszy nagłówek
  (z buforem temp
    (szarpać)
    (początek bufora)
    („” do przodu „” zero zero 1)
    (setq title-start (point))
    (koniec linii wizualnej)
    (setq title-end (point))
    (setq first-header (bufor-podciąg tytuł-początek tytuł-koniec))
  ))
(setq def-filename (pierwszy nagłówek „.org”)))
(let ((wstaw domyślny katalog t))
  (znajdź plik-inne-okno  
    (read-file-name „Przenieś poddrzewo do pliku:” def-filename)
  ))
(org-paste-subtree)
;;; to ostatnie polecenie dodaje nowy plik .org do porządku obrad
(org-agenda-file-to-front)
)

Możesz szybko wypróbować ten kod, wklejając go do *scratch*bufora i naciskając Ctrl+ j. Następnie przejdź do poddrzewa w pliku trybu org i naciśnij Alt+ xdo M-x subtree-to-new-file.

Jeśli chcesz, aby był na miejscu za każdym razem, gdy używasz emacsa i jest całkowicie nieznany z elisp, najłatwiej jest również wkleić ten kod gdzieś w .emacspliku konfiguracyjnym i zapisać go. Możesz także dodać linię przed lub po funkcji, aby nadać mu skrót klawiszowy. Najprostszym sposobem, aby to zrobić (ale może nie najlepszy) byłoby coś takiego: (global-set-key "\C-xw" 'subtree-to-new-file).

Brian Z
źródło
Cóż, naprawdę ruszyłem stąd w innym kierunku, ale to załatwia sprawę. Zapytałem o to dawno temu i wspaniale jest zobaczyć odpowiedź. Dzięki za opublikowanie tego - działa jak urok. Może spróbuję sobie przypomnieć, co chciałem tutaj osiągnąć, i zacznę z tego korzystać.
Peter
5

Aby dodać inne bufory w trybie organizacji do listy plików uzupełnień, musisz dodać do pliku .emacs następującą linię: Wziąłem to z konfiguracji Brenta Hansena (patrz tutaj )

; Targets include this file and any file contributing to the agenda - up to 9 levels deep
(setq org-refile-targets (quote ((nil :maxlevel . 9)
                                 (org-agenda-files :maxlevel . 9))))

(org-agenda-files :maxlevel .9)Jest to tylko potrzebne, druga część określa maksymalną liczbę poziomów do uzupełnienia.

Jonathan Leech-Pepin
źródło
1
To pozwala mi dodać drzewo do istniejącego drzewa w nowym pliku, ale nie do pustego, nowo dodanego pliku bez istniejącej zawartości. Myślę, że może być tak blisko, jak tylko się da.
Peter
Możesz także dodać, (setq org-refile-allow-creating-parent-nodes (quote confirm))o którym mowa w tym samym bloku kodu od Bernta (patrz link powyżej). Pozwoli ci to dodać je jako węzły nadrzędne, a nie tylko jako podtytuły. Nie jestem pewien, czy możesz w ten sposób dodać nowy plik w drodze.
Jonathan Leech-Pepin
1
Nawet z tym wierszem pliki w planie nie są wyświetlane jako cele do uzupełnienia. Wygląda na to, że mogę uzupełnić tylko istniejący nagłówek.
Peter
1
A co z (setq org-refile-use-outline-path 'file)? To może tworzyć pliki jako cele.
Brady Trainor