From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: Default directory in org-agenda-mode Date: Wed, 12 Jan 2011 14:12:19 -0500 Message-ID: <23847.1294859539@gamaville.dokosmarshall.org> References: <8739oy3rho.fsf@gmail.com> Reply-To: nicholas.dokos@hp.com Return-path: Received: from [140.186.70.92] (port=45317 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pd67Y-0007mE-1Y for emacs-orgmode@gnu.org; Wed, 12 Jan 2011 14:12:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pd67V-0007tw-4X for emacs-orgmode@gnu.org; Wed, 12 Jan 2011 14:12:35 -0500 Received: from vms173017pub.verizon.net ([206.46.173.17]:44415) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pd67V-0007tZ-10 for emacs-orgmode@gnu.org; Wed, 12 Jan 2011 14:12:33 -0500 Received: from gamaville.dokosmarshall.org ([unknown] [173.76.32.106]) by vms173017.mailsrvcs.net (Sun Java(tm) System Messaging Server 7u2-7.02 32bit (built Apr 16 2009)) with ESMTPA id <0LEX006D5C0JPLB0@vms173017.mailsrvcs.net> for emacs-orgmode@gnu.org; Wed, 12 Jan 2011 13:12:20 -0600 (CST) In-reply-to: Message from niels giesen of "Wed, 12 Jan 2011 19:29:39 +0100." <8739oy3rho.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: niels giesen Cc: nicholas.dokos@hp.com, emacs-orgmode@gnu.org niels giesen 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 ) and for whatever hook variable you are modifying (e.g. C-h v org-agenda-mode-hook : 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