From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philip Hudson Subject: Re: export to ics a specific buffer every X hours Date: Wed, 13 Jul 2016 16:27:36 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36252) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNM4s-0007uD-2W for emacs-orgmode@gnu.org; Wed, 13 Jul 2016 11:27:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bNM4q-0008LP-NJ for emacs-orgmode@gnu.org; Wed, 13 Jul 2016 11:27:57 -0400 Received: from mail-vk0-x235.google.com ([2607:f8b0:400c:c05::235]:34763) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNM4q-0008LJ-If for emacs-orgmode@gnu.org; Wed, 13 Jul 2016 11:27:56 -0400 Received: by mail-vk0-x235.google.com with SMTP id o63so70437220vkg.1 for ; Wed, 13 Jul 2016 08:27:56 -0700 (PDT) In-Reply-To: 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" To: Xebar Saram Cc: org mode You have _two_ concerns here. First is what to do when you save "meetings.org", second is what to do every half hour. Your code handles both of them, essentially correctly, but in the wrong place. On 13 July 2016 at 09:41, Xebar Saram wrote: > Thx > > i do have this now > > (defun z/save-meeting-to-ics () > "If the current file is in '~/.dotfiles', the code blocks are tangled" > (when (equal (buffer-file-name) > (expand-file-name "/home/zeltak/org/files/agenda/meetings.org")) This means the code will only execute if the current buffer is "meetings.org" when it executes. That _is_ what you want when you save meetings.org, but it _is not_ what you want when the timer executes. Break out the body of the `when' form into its own function, and call that function from the timer, instead of `z/save-meeting-to-ics'. > (rename-file (org-icalendar-export-to-ics) > "/home/zeltak/org/files/export/kcal.ics") > (message "exported to ics"))) > > ;;run every 30 minutes > > (run-with-timer 0 (* 30 60) 'z/save-meeting-to-ics) > ;;(run-with-idle-timer 600 t #'org-agenda-redo) ;; to rebuild it every 600 > second > ;; (add-hook 'after-save-hook #'z/save-meeting-to-ics) > > yet i cant get the ics file to be created niether when i save the > meeting.org file For this, you need to add `z/save-meeting-to-ics' to the Emacs global variable `after-save-hook' using function `add-hook'. > nor every 600 seconds. You mean 1800 seconds, I think. > what am i missing here? > > thx > > Z > > On Sun, Jun 26, 2016 at 9:49 PM, Philip Hudson > wrote: >> >> On 26 June 2016 at 16:38, Xebar Saram wrote: >> > Hi all >> > >> > so i have pathetic coding skill but managed somehow to come up with this >> > >> > (defun z/save-meeting-to-ics () >> > "If the current file is in '~/.dotfiles', the code blocks are >> > tangled" >> > (when (equal (buffer-file-name) >> > (expand-file-name >> > "/home/zeltak/org/files/agenda/meetings.org")) >> > (org-icalendar-export-to-ics) >> > (message "exported to ics"))) >> > >> > this does save the org file "meetings.org" to an ICS file in the same >> > folder >> > as the file. but i want to do 2 additional things: >> > 1)save the resulting ICS file to a different directory >> > 2)run this function every X hours (lets say every 2 hours) >> > >> > any clue guys? >> > >> > thx! >> > >> > Z >> >> For 1), change: >> >> (org-icalendar-export-to-ics) >> >> to something like this: >> >> (rename-file (org-icalendar-export-to-ics) your-preferred-pathname) >> >> For 2), evaluate this: >> >> (info "(elisp) Timers") >> >> -- >> Phil Hudson http://hudson-it.ddns.net >> @UWascalWabbit PGP/GnuPG ID: 0x887DCA63 > > -- Phil Hudson http://hudson-it.ddns.net @UWascalWabbit PGP/GnuPG ID: 0x887DCA63