Marcin Borkowski <mb...@wmi.amu.edu.pl> writes: > I have an Org-mode file with notes concerning a large project connected > with teaching at my university. One of the headlines is dedicated to > one particular course, where I am part of a group developing a concept > of this course. So, one subheadline is devoted to that. Yet another > (subsub)headline is a list if my proposals of things that should be > covered during that course, and now it needs 3 more levels down. > Summing it up: I have 5 levels of headlines and now I need a sixth > one. So, my question is: what are good practices of other Org-moders? > Do you push such a monster to an external file and just include a link > to it?
If a file grows to large, I simply create a new one. In this instance, I would recommend creating a separate file for each course. Below you'll find a very hackish helper function that I use to generate a new file from a headline. It leaves a link to the new file in the original location. Best, Matt --8<---------------cut here---------------start------------->8--- (defun my-org-file-from-headline (file) (interactive (list (completing-read "File: " (mapcar 'file-name-nondirectory (file-expand-wildcards "~/org/*.org")) nil nil))) (unless (string-match "\\.org$" file) (error "Not an org file")) (save-excursion (beginning-of-line) (unless (org-at-heading-p) (error "Not on a headline"))) (let* ((exists (file-exists-p file)) (ftags (append (list (file-name-sans-extension file)) (mapcar 'substring-no-properties org-file-tags))) (headline (nth 4 (org-heading-components))) (org-archive-reversed-order t) (org-archive-location (concat file "::")) (org-archive-save-context-info nil)) (org-archive-subtree) (save-excursion (insert "* [[file:" file "][" file "]] - " headline "\n")) (find-file file) (goto-char (point-min)) (save-excursion (if (re-search-forward "#\\+FILETAGS:\\(.*\\)$" nil t) (progn (save-match-data (setq ftags (mapconcat 'identity (org-uniquify (append ftags (split-string (substring-no-properties (match-string 1))))) " "))) (replace-match (concat "#+FILETAGS: " ftags))) (insert "#+FILETAGS: " (mapconcat 'identity ftags " ") "\n")) (goto-char (point-min)) (unless (re-search-forward "#\\+CATEGORY:\\(.*\\)$" nil t) (insert "#+CATEGORY: " (file-name-sans-extension file) "\n")) (goto-char (point-min)) (when (re-search-forward "^Archived entries from file.+\n" nil t) (replace-match "")))) (write-file file)) --8<---------------cut here---------------end--------------->8---