I can't tell exactly what you have in mind. Can't you just add (find-file " meetings.org") to the function? or wrap the whole thing like this: (defun z/export-to-ics () (interactive) (with-current-buffer (find-file-noselect "meetings.org") (rename-file (org-icalendar-export-to-ics) "/home/zeltak/org/files/export/kcal.ics") (message "exported to ics"))) John ----------------------------------- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu On Tue, Aug 30, 2016 at 9:39 AM, Xebar Saram wrote: > anyone? kinda stuck here :) > > thx! > > > z > > On Thu, Aug 25, 2016 at 10:32 AM, Xebar Saram wrote: > >> Hi again all >> >> so i have a related question so ill continue in this thread. i have been >> using this command succesfully in the last few weeks >> >> (defun z/export-to-ics () >> (interactive) >> (rename-file (org-icalendar-export-to-ics) >> "/home/zeltak/org/files/export/kcal.ics") >> (message "exported to ics")) >> >> >> this forces me to first open the file i want (meetings.org) and then >> launch the above command. is there a way to auto make the above function to >> auto export meeting.org each time without opening it first? >> >> thx >> >> Z >> >> On Wed, Jul 13, 2016 at 6:27 PM, Philip Hudson >> wrote: >> >>> 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 >>> >> >> >