Перезавантажити дерево контуру в новий файл org-mode?


13

Я тільки починаю з org-режиму і уявляю собі робочий процес, за допомогою якого я фіксую нові завдання та нотатки у файлі "Вхідні" в органічному режимі. Що стосується завдань, які переростають у проекти, я б міг заздалегідь переправити їх у новий файл в режимі org, який потім додається до мого порядку денного.

Посібник з org-режиму описує переповнення дерева в основному так, як я шукаю, за винятком того, що воно, здається, лише дозволяє повторно заправляти розділ в одному файлі. Що я хотів би зробити, це взяти це дерево і перезавантажити його в новий файл (а потім бажано додати файл до списку порядку денного).

Я можу скопіювати вставити в новий буфер, а потім додати новий буфер до порядку денного, але здається, що це такий варіант, для якого боги в режимі org мали б ярлик.


Чому ви хочете створити новий файл для кожного проекту? Є невеликі проекти та великі, тож ви можете мати файл projekt.org як своєрідний файл інкубації, який містить усі проекти спочатку, і якщо проект зростає настільки великим, що він заслуговує власного файлу, його можна створити вручну.
Том

Спасибі, Томе. Це моє мислення. Великі речі переміщуються до власного файлу, коли вони надто великі. Я знайшов прапор, який дозволяє мені перепрофілювати інший файл у своєму списку порядку денного, але лише під існуючим заголовком. Я збираюся зробити ще трохи копати, щоб побачити, чи можу я просто додати дерево до нового порожнього файлу org ...
Петро

1
@Peter ви можете перепрофілювати будь-яке дерево в інший файл. але спочатку вам потрібно додати файл призначення доorg-agenda-files
kindahero

@kindahero: Це варіант за замовчуванням? У мене є файл "test1.org" з деревом, яке я хочу перенести у порожній файл "test2.org", який було збережено та додано до порядку денного за допомогою Cc [. Єдині цілі перепрофілювання, які він дає мені як варіанти завершення, - з "test1.org."
Петро

Відповіді:


1

Ось швидка і брудна функція еліпса, яку можна змінити за вашим бажанням.

(розблокувати піддерево-новий-файл ()
  (інтерактивний)
  "неохайно допомагає перенести org subtree до нового файлу"
  (org-copy-subtree nil t)
;;; Цей довгий оператор setq отримує заголовок першого заголовка для використання в якості імені файлу за замовчуванням для нового файлу .org.
(setq перший заголовок
  (з-темп-буфера
    (ривок)
    (початок буфера)
    (пошук вперед "" nil nil 1)
    (setq title-start (point))
    (візуальний рядок)
    (setq-end-end (point))
    (setq перший заголовок (buff-substring title-start title-end))
  ))
(setq def-filename (короткий перший заголовок ".org"))
(нехай ((вставити-за замовчуванням-каталог t))
  (find-file-other-window)  
    (read-file-name "Перемістити піддірець у файл:" def-filename)
  ))
(org-paste-subtree)
;;; ця остання команда додає новий файл .org до порядку денного
(org-порядок денний-файл на фронт)
)

Ви можете швидко спробувати цей код, вставивши в *scratch*буфер і натиснувши Ctrl+ j. Потім перейдіть до піддерева у файлі в режимі org і натисніть Alt+ xдо M-x subtree-to-new-file.

Якщо ви хочете, щоб він стояв на місці щоразу, коли ви використовуєте emacs і абсолютно не знайомий з elisp, найпростіше, можливо, також вставити цей код кудись у .emacsфайл конфігурації та зберегти його. Ви також можете додати рядок до або після функції, щоб надати їй прив'язку клавіш. Найпростіший спосіб зробити це (але , можливо , не найкраще) буде що - щось на кшталт: (global-set-key "\C-xw" 'subtree-to-new-file).


Ну, я дійсно рухався в іншому напрямку звідси, але це робить трюк. Я це запитав давно, і це чудово, щоб побачити відповідь. Дякуємо за повідомлення про це - це працює як шарм. Можливо, я спробую згадати те, що я сподівався досягти тут, і почати використовувати це.
Пітер

5

Щоб занадто додати інші буфери в органічному режимі до списку перезавантаження, вам потрібно буде додати такий файл, як наведено нижче, у файл .emacs. Я взяв це з конфігурації Brent Hansen (Дивіться тут )

; 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)Потрібно лише насправді, інша частина встановлює максимальну кількість рівнів для повторного перегляду.


1
Це дозволяє мені додати дерево до існуючого дерева в новому файлі, але не до порожнього, нещодавно доданого файлу без наявного вмісту. Я думаю, що це може бути наближеним до мене.
Петро

Ви також можете додати (setq org-refile-allow-creating-parent-nodes (quote confirm))посилання на цей самий блок коду від Бернта (див. Посилання вище). Це дозволить додавати їх як батьківські вузли, а не лише як підзаголовки. Я не впевнений, чи можете ви, на жаль, таким чином додати новий файл на ходу.
Джонатан Ліч-Пепін

1
Навіть у цьому рядку файли порядку денного не відображаються як цілі перезавантаження. Здається, я можу перепрофілювати лише існуючий заголовок.
Пітер

1
Що з (setq org-refile-use-outline-path 'file)? Це може зробити файли цільовими.
Брейді Тренер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.