Re: "Bad template" when creating org-capture for table-line without '|'

2024-03-27 Thread Ihor Radchenko
Rens Oliemans  writes:

> ...
> However, I did not know that the _template_ also has to start with '|', and 
> org-capture
> still inserts the string "| Bad template |", which does not suggest in any 
> way that the
> lacking '|' would be the problem (after all, it is smart enough to prepend a 
> '|').
> ...
> however, is this also what's ideal? I would suggest one of the following 
> alternatives:
>
> - An error is signalled to the user with the root cause of the error: no '|' 
> at start of
>   template. In addition, the org-capture-templates variable documentation 
> string and the
>   manual would be updated. I am happy to create a patch for this.
>
> - org-capture could pre- and suffix a '|' if the user did not supply it in 
> their template.
>
> What are your thoughts on this?

Org mode is inconsistent here.

`org-capture-place-entry' uses `org-capture-verify-tree' and throws an
error when the template does not start from a headline or contains
headings with lower level after higher level.

Yet, `org-capture-place-item' prepends "-" when the template does not
start from a list item.

And, as you noticed, `org-capture-place-table-line' replaces the
template with "Bad template".

I think that the best course of action would be automatically fixing the
templates, as you propose in option (2), changing
`org-capture-place-entry' to automatically prepend "* " if necessary
(still leaving the subtree check though).

>   I am also happy to create a patch for this, however that would be my first 
> so such a
>   patch would perhaps have a few iterations ;)

That would be welcome. We can take as many iterations as necessary.
You may refer to
https://orgmode.org/worg/org-contribute.html#first-patch for instructions.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



"Bad template" when creating org-capture for table-line without '|'

2024-03-27 Thread Rens Oliemans
Hi,

I was trying to create an org-capture for a table-line type, and I noticed that
org-capture inserts the string "| Bad template |" when the template does not 
start with
'|'. This could make sense, since a line is (only) considered part of a table 
when it
starts with '|'.

However, I did not know that the _template_ also has to start with '|', and 
org-capture
still inserts the string "| Bad template |", which does not suggest in any way 
that the
lacking '|' would be the problem (after all, it is smart enough to prepend a 
'|').

Use this template to reproduce the behaviour, present on 9.7-pre
(release_9.6.23-1318-g990b89):

(setq org-capture-templates '(("t" "Test" table-line (file "test.org")
   "%^t")))

I did not see this documented anywhere: this was quite confusing, and the only 
way I got a
hint at what I did wrong was to see the default template for table-line: "| %? 
|". It
seems that this behaviour is intended, looking at org-capture.el:1358 @ 
990b89d3:

...
 (pcase (org-trim (org-capture-get :template))
   ((pred (string-match-p org-table-border-regexp))
"| %?Bad template |")
   (text (concat text "\n"
...

however, is this also what's ideal? I would suggest one of the following 
alternatives:

- An error is signalled to the user with the root cause of the error: no '|' at 
start of
  template. In addition, the org-capture-templates variable documentation 
string and the
  manual would be updated. I am happy to create a patch for this.

- org-capture could pre- and suffix a '|' if the user did not supply it in 
their template.
  I am also happy to create a patch for this, however that would be my first so 
such a
  patch would perhaps have a few iterations ;)

What are your thoughts on this?

Best