emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Default directory in org-agenda-mode


From: Nick Dokos
Subject: Re: [Orgmode] Default directory in org-agenda-mode
Date: Wed, 12 Jan 2011 14:12:19 -0500

niels giesen <address@hidden> wrote:

> Hi all,
> 
> I would like `default-directory' in `org-agenda-mode' to be the
> value of `org-directory'. This is because I tend to start my
> working day by opening the Agenda view, and then decide to open
> some org file (which I all have inside `org-directory' and that
> may or may not have items present in the specific Agenda view). 
> 
> To this end I tried doing the following:
> 
> #+begin_src emacs-lisp
>   (add-to-list
>    'default-directory-alist
>    `(org-agenda-mode
>      ,org-directory))
> #+end_src    
> 
> But this does not work. Any ideas?
> 

AFAIK, there is no variable default-directory-alist - at least, my
emacs does not know anything about it.

What you want is to change the default directory of the agenda buffer.
When the agenda buffer is created, org-agenda-mode is called to set
the major mode. Most major modes (including org-agenda-mode) define
hooks: a hook is a variable that holds a list of functions. The mode
calls each function in the hook when it is enabled. So the trick
is to add a function to the appropriate hook. Typically something
like this will suffice:

   (add-hook 'org-agenda-mode-hook (function (lambda () (setq default-directory 
org-directory))))

The only problem is where to add this line of code: if you add it to .emacs
or some other initialization file, you might get an error because
org-agenda-mode-hook is not defined yet. One way to get out of the
chicken/egg situation is to load org-agenda before you add the function
to the hook. Another way is to eval the above "on demand" when org
agenda is loaded:

   (eval-after-load "org-agenda"
     (quote
       (progn 
          ...
          (add-hook 'org-agenda-mode-hook (function (lambda () (setq 
default-directory org-directory)))))))

(the progn is there in case you have to do more than one thing when
loading the agenda: if you only have one thing, just remove the
ellipsis).  This can safely be put into an initialization file like
.emacs.

You should also read the doc for add-hook (C-h f add-hook <RET>) and for
whatever hook variable you are modifying (e.g. C-h v
org-agenda-mode-hook <RET>: there are some fine points in add-hook that
I have not gone into above - otoh, org-agenda-mode-hook is bog-standard.

HTH,
Nick





reply via email to

[Prev in Thread] Current Thread [Next in Thread]