emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Capture templates with "function" type
@ 2013-10-26 21:18 Brett Viren
  2013-10-30 22:10 ` Alexander Baier
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Brett Viren @ 2013-10-26 21:18 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 949 bytes --]

Hi,

I'm trying to set up a capture template of type "function" in order to
produce a daily log file named after today's date.

It mostly works.  However, after doing the C-cC-c to close the capture
buffer the window is left holding the daily log file which the capture
just updated instead of going back to whatever buffer I was in when I
initiated the capture.  This returning-to-previous-buffer behavior is
what I see when I use the file+headline capture type.

Can someone say how I might get this behavior for the "function" capture
type as well?  Here is my setup:

(defun bv-daily-log-file ()
  (find-file (concat "~/org/web/notes/" 
                  (format-time-string "%Y-%m-%d") ".org"))
  (goto-char (point-max))
  (newline 2)
)
(setq org-capture-templates 
 (quote 
  (
   ("n" "Note" entry
    (function bv-daily-log-file)
    "\* %U %^{title}\n  %a\n\n%?"
    :empty-lines 1)
   )))


Thanks,
-Brett.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Capture templates with "function" type
  2013-10-26 21:18 Capture templates with "function" type Brett Viren
@ 2013-10-30 22:10 ` Alexander Baier
  2013-11-05 17:25 ` Bastien
  2013-11-06 14:24 ` Bastien
  2 siblings, 0 replies; 7+ messages in thread
From: Alexander Baier @ 2013-10-30 22:10 UTC (permalink / raw)
  To: emacs-orgmode

Brett Viren <bv@bnl.gov> writes:

> Hi,
>
> I'm trying to set up a capture template of type "function" in order to
> produce a daily log file named after today's date.
>
> It mostly works.  However, after doing the C-cC-c to close the capture
> buffer the window is left holding the daily log file which the capture
> just updated instead of going back to whatever buffer I was in when I
> initiated the capture.  This returning-to-previous-buffer behavior is
> what I see when I use the file+headline capture type.
>
> Can someone say how I might get this behavior for the "function" capture
> type as well?  Here is my setup:
>
> (defun bv-daily-log-file ()
>   (find-file (concat "~/org/web/notes/" 
>                   (format-time-string "%Y-%m-%d") ".org"))
>   (goto-char (point-max))
>   (newline 2)
> )
> (setq org-capture-templates 
>  (quote 
>   (
>    ("n" "Note" entry
>     (function bv-daily-log-file)
>     "\* %U %^{title}\n  %a\n\n%?"
>     :empty-lines 1)
>    )))
>
>
> Thanks,
> -Brett.

Hello Bret,

I do not know, how the capture process works internally, but if I had to
guess I would say, that it stores the current window configuration, when
a capture template is invoked that is not of type funcion. This
configuration is restored after finishing or canceling the capture
process.  I would say, when using the function template type, you might
have to roll your own window-configuration management, if that is the
behaviour you want.


Regards,
  Alex

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Capture templates with "function" type
  2013-10-26 21:18 Capture templates with "function" type Brett Viren
  2013-10-30 22:10 ` Alexander Baier
@ 2013-11-05 17:25 ` Bastien
  2013-11-05 18:00   ` Brett Viren
  2013-11-06 14:24 ` Bastien
  2 siblings, 1 reply; 7+ messages in thread
From: Bastien @ 2013-11-05 17:25 UTC (permalink / raw)
  To: Brett Viren; +Cc: emacs-orgmode

Hi Brett,

Brett Viren <bv@bnl.gov> writes:

> (defun bv-daily-log-file ()
>   (find-file (concat "~/org/web/notes/" 
>                   (format-time-string "%Y-%m-%d") ".org"))
>   (goto-char (point-max))
>   (newline 2)
> )

You may try this (not tested myself):

(defun bv-daily-log-file ()
  (save-window-excursion
    (find-file (concat "~/org/web/notes/" 
		       (format-time-string "%Y-%m-%d") ".org"))
    (goto-char (point-max))
    (newline 2)))

The trick is to use `save-window-excursion'.

-- 
 Bastien

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Capture templates with "function" type
  2013-11-05 17:25 ` Bastien
@ 2013-11-05 18:00   ` Brett Viren
  0 siblings, 0 replies; 7+ messages in thread
From: Brett Viren @ 2013-11-05 18:00 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1080 bytes --]

Hi Bastien,

Bastien <bzg@gnu.org> writes:

> You may try this (not tested myself):
>
> (defun bv-daily-log-file ()
>   (save-window-excursion
>     (find-file (concat "~/org/web/notes/" 
> 		       (format-time-string "%Y-%m-%d") ".org"))
>     (goto-char (point-max))
>     (newline 2)))
>
> The trick is to use `save-window-excursion'.

Thanks for the pointer but it looks like this macro runs afoul of the
capture process somehow.  I redefined my function as you have above and
did C-xC-e to reload it and then initiated a capture from a window
showing my GNUS summary.  It fails with:

byte-code: Capture abort: (buffer-read-only #<killed buffer>)

I then tried another capture staring from a read-write buffer.  The
capture succeeds but the captured text is inserted into this starting
buffer instead of the one found by the bv-daily-log-file function.

The Elisp manual mentions that save-selected-window is sometimes a
better alternative but that gives the same behavior.  

Do you maybe have further ideas I could try?  

Thanks,
-Brett.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Capture templates with "function" type
  2013-10-26 21:18 Capture templates with "function" type Brett Viren
  2013-10-30 22:10 ` Alexander Baier
  2013-11-05 17:25 ` Bastien
@ 2013-11-06 14:24 ` Bastien
  2013-11-06 14:53   ` Bastien
  2 siblings, 1 reply; 7+ messages in thread
From: Bastien @ 2013-11-06 14:24 UTC (permalink / raw)
  To: Brett Viren; +Cc: emacs-orgmode

Hi Brett,

Brett Viren <bv@bnl.gov> writes:

> Can someone say how I might get this behavior for the "function" capture
> type as well?

I'm still investigating this bug, but in the meantime you may want to
try using file+function, which does not have the bug.

-- 
 Bastien

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Capture templates with "function" type
  2013-11-06 14:24 ` Bastien
@ 2013-11-06 14:53   ` Bastien
  2013-11-06 16:13     ` Brett Viren
  0 siblings, 1 reply; 7+ messages in thread
From: Bastien @ 2013-11-06 14:53 UTC (permalink / raw)
  To: Brett Viren; +Cc: emacs-orgmode

Hi Brett,

Bastien <bzg@gnu.org> writes:

> I'm still investigating this bug, but in the meantime you may want to
> try using file+function, which does not have the bug.

Capture templates using `function' should now return back to the
correct window location.  Thanks for raising this,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Capture templates with "function" type
  2013-11-06 14:53   ` Bastien
@ 2013-11-06 16:13     ` Brett Viren
  0 siblings, 0 replies; 7+ messages in thread
From: Brett Viren @ 2013-11-06 16:13 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 209 bytes --]

Bastien <bzg@gnu.org> writes:

> Capture templates using `function' should now return back to the
> correct window location.  Thanks for raising this,

Thanks so much for putting time in it!

Regards,
-Brett.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-11-06 16:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-26 21:18 Capture templates with "function" type Brett Viren
2013-10-30 22:10 ` Alexander Baier
2013-11-05 17:25 ` Bastien
2013-11-05 18:00   ` Brett Viren
2013-11-06 14:24 ` Bastien
2013-11-06 14:53   ` Bastien
2013-11-06 16:13     ` Brett Viren

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).