emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Max Nikulin <manikulin@gmail.com>
To: Ignacio Casso <ignaciocasso@hotmail.com>
Cc: c.buhtz@posteo.jp, emacs-orgmode@gnu.org
Subject: Re: [BUG] org-capture autoload bug? [9.5.2 (9.5.2-gfbff08 @ /home/ignacio/.emacs.d/elpa/org-9.5.2/)]
Date: Fri, 11 Mar 2022 17:07:03 +0700	[thread overview]
Message-ID: <c58ae4d5-dd66-0d06-a332-cfdf23e1889e@gmail.com> (raw)
In-Reply-To: <PAXPR06MB7760D5CACCF5F3073F976207C60B9@PAXPR06MB7760.eurprd06.prod.outlook.com>

On 11/03/2022 01:00, Ignacio Casso wrote:
> Max Nikulin writes:
> 
>> On 10/03/2022 19:53, Ignacio Casso wrote:
>>> For example, if we call this:
>>>     (let ((org-capture-templates
>>>            '(("d" "default" entry
>>>               (file+headline org-default-notes-file "Tasks")
>>>               "* %?"))))
>>>       (org-capture nil "d")))
>>> It produces the error:
>>>     (error "No capture template referred to by \"d\" keys")
>>
>> Ignacio, could you, please, try the following?
>>
>>      (custom-set-variables
>>       '(org-capture-templates
>>         '(("d" "default" entry
>>            (file "/tmp/capture-test.org")
>>            "* %?"))))
>>      (org-capture nil "d")
>>
> 
> That works, of course, but it's not suitable to my use case. The example
> I have provided has been reduced from a larger function I wrote that
> relies on org-capture functionality to create new entries in an org
> file, using a template specific for that function which is not relevant
> for any other Elisp code calling org-capture. Thus the function binds
> locally and temporarily org-capture-templates, as I've seen other Elisp
> code snippets do. If org-capture is already loaded it works just fine,
> and I would expect it to work too when it is not and the function
> triggers the autoload, but it doesn't.

Ignacio, I think, you can add (require 'org-capture) inside your 
function just before `let' and it would work almost as lazy loading. I 
am unsure if org-capture is the best approach in your case. Have you 
considered yasnippet or Org specific functions to transform and to 
generate content? Even changing arguments of the `org-capture' function 
or introducing another function that has explicit argument with a 
template might be better then marking the template list variable for 
autoloading.

I have no particular opinion concerning adding autoload cookie to 
`org-capture-templates'. Emacs has enough number of them, but Org has no 
such custom variables. Arguments why autoload should be avoided:

info "(elisp) When to Autoload" 
https://www.gnu.org/software/emacs/manual/html_node/elisp/When-to-Autoload.html
> Don’t autoload a user option just so that a user can set it.

The following thread related to Emacs core and linked from 
https://emacs.stackexchange.com/questions/32859/autoloading-defcustoms-good-practice-or-not 
:

Glenn Morris. Re: master f995fbd: * lisp/server.el (server-name): Add 
autoload cookie. (Bug#23576) Thu, 19 May 2016 12:44:49 -0400
https://lists.gnu.org/archive/html/emacs-devel/2016-05/msg00415.html

Org-specific thread:
Achim Gratz. missing autoload cookies for defcustom? Sun, 09 Oct 2011 
17:20:16 +0200 https://list.orgmode.org/87lisub39r.fsf@Rainer.invalid/T/#u

c.buhtz, I am sorry, despite `org-capture-templates' has the :set 
attribute, this is not a really convincing example why 
`custom-set-variables' should be used. The setter was added to ensure 
compatibility with older template format and this example works with 
`setq' as well.


  reply	other threads:[~2022-03-11 10:08 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-10 12:53 [BUG] org-capture autoload bug? [9.5.2 (9.5.2-gfbff08 @ /home/ignacio/.emacs.d/elpa/org-9.5.2/)] Ignacio Casso
2022-03-10 16:32 ` Max Nikulin
2022-03-10 18:00   ` Ignacio Casso
2022-03-11 10:07     ` Max Nikulin [this message]
2022-03-11 10:38       ` Ignacio Casso
2022-03-11 19:59         ` Tim Cross
2022-03-14 10:42           ` Ignacio Casso
2022-03-14 14:52           ` Max Nikulin
2022-03-14 18:42             ` Tim Cross
2022-03-14 19:43               ` Ignacio Casso
2022-03-14 22:54                 ` Tim Cross
2022-03-15  9:02                   ` Ignacio Casso
2022-03-15 15:59                     ` Ignacio Casso
2022-03-15 12:04                 ` Max Nikulin
2022-03-15 12:26                   ` Ignacio Casso
  -- strict thread matches above, loose matches on Subject: below --
2022-06-11  7:50 Ignacio Casso
2022-06-11 13:32 ` Ihor Radchenko
2022-06-11 17:25   ` Ignacio Casso
2022-06-14  4:02     ` Ihor Radchenko
2022-06-14  7:49       ` Ignacio Casso
2022-06-14 13:58         ` Ihor Radchenko
2022-06-12 12:36   ` Max Nikulin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c58ae4d5-dd66-0d06-a332-cfdf23e1889e@gmail.com \
    --to=manikulin@gmail.com \
    --cc=c.buhtz@posteo.jp \
    --cc=emacs-orgmode@gnu.org \
    --cc=ignaciocasso@hotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).