From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Julian M. Burgos" Subject: Re: Seeking advice on structuring my org-mode file Date: Thu, 23 May 2013 11:57:50 +0000 Message-ID: References: <20130522204329.6532e03c@aga-netbook> <87y5b68y46.fsf@fastmail.fm> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([208.118.235.92]:44041) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfV4A-0004V1-IC for emacs-orgmode@gnu.org; Thu, 23 May 2013 08:56:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfV44-0007zO-Ln for emacs-orgmode@gnu.org; Thu, 23 May 2013 08:56:22 -0400 Received: from hafgarpur.hafro.is ([130.208.64.48]:53813) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfU9j-0003Yd-67 for emacs-orgmode@gnu.org; Thu, 23 May 2013 07:58:03 -0400 In-reply-to: <87y5b68y46.fsf@fastmail.fm> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Matt Lundin Cc: Org-mode mailing list , Marcin Borkowski Matt, this is very useful! I agree with you, I also tend to create several org-mode files for a project that is becoming too large. For example, I keep a separate org-file for each paper or report, another with notes, another with analysis (with R code blocks), etc. One issue is that I use lots of TODO statemens in my files, and when org-mode files multiply it starts to become difficult to keep the agenda files list updated. To do this I use this snippet that I found somewhere (I do not remember exactly where). This includes all org-files in a specific directory (in my case my "Documents" directory) in the agenda files list. #+begin_src lisp ;;-----------------------------------------------------------------------= ------- ;; Load org agenda files ;;-----------------------------------------------------------------------= ------- ; Do not add agenda files "by hand" (add-hook 'org-mode-hook (lambda () (org-defkey org-mode-map "\C-c[" 'undefined) (org-defkey org-mode-map "\C-c]" 'undefined)) 'append) (load-library "find-lisp") (add-hook 'org-agenda-mode-hook (lambda ()=20 (setq org-agenda-files=20 (find-lisp-find-files "/home/julian/Documents" "\.org$")) )) #+end_src With this I can create org-files to my heart's content and I know that all TODOs statements will show up in the agenda. All the best, Julian --=20 Julian Mariano Burgos, PhD Hafranns=C3=B3knastofnunin/Marine Research Institute Sk=C3=BAlagata 4, 121 Reykjav=C3=ADk, Iceland S=C3=ADmi/Telephone : +354-5752037 Br=C3=A9fs=C3=ADmi/Telefax: +354-5752001 Netfang/Email: julian@hafro.is Matt Lundin writes: > Marcin Borkowski writes: > >> I have an Org-mode file with notes concerning a large project connecte= d >> 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? =20 > > 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---