emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Is function 'org-insert-property-drawer' usable?
@ 2022-12-31 16:24 Alain.Cochard
  2022-12-31 16:36 ` Ruijie Yu via General discussions about Org-mode.
  0 siblings, 1 reply; 12+ messages in thread
From: Alain.Cochard @ 2022-12-31 16:24 UTC (permalink / raw)
  To: emacs-orgmode



The manual says:

   You can interactively insert a drawer at point by calling
   ‘org-insert-drawer’, which is bound to ‘C-c C-x d’. [...]  With a
   prefix argument, this command calls ‘org-insert-property-drawer’,
   which creates a ‘PROPERTIES’ drawer right below the current
   headline.

For me,

   C-u C-c C-x d

does insert a 'PROPERTIES' drawer, but

   M-x org-insert-property-drawer

does not.  In fact 'M-x org-insert-p<TAB>' offers no completion.  I
generally use this kind of information to use my own key bindings, but
here I cannot (don't know how).

-- 
EOST (École et Observatoire des Sciences de la Terre) 
ITE (Institut Terre & Environnement) | alain.cochard@unistra.fr
5 rue René Descartes   [bureau 110]  | Phone: +33 (0)3 68 85 50 44 
F-67084 Strasbourg Cedex, France     | [ slot available for rent ]



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

* Re: Is function 'org-insert-property-drawer' usable?
  2022-12-31 16:24 Is function 'org-insert-property-drawer' usable? Alain.Cochard
@ 2022-12-31 16:36 ` Ruijie Yu via General discussions about Org-mode.
  2023-01-01 13:23   ` Ihor Radchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Ruijie Yu via General discussions about Org-mode. @ 2022-12-31 16:36 UTC (permalink / raw)
  To: alain.cochard; +Cc: emacs-orgmode


Alain.Cochard@unistra.fr writes:

> The manual says:
>
>    You can interactively insert a drawer at point by calling
>    ‘org-insert-drawer’, which is bound to ‘C-c C-x d’. [...]  With a
>    prefix argument, this command calls ‘org-insert-property-drawer’,
>    which creates a ‘PROPERTIES’ drawer right below the current
>    headline.
>
> For me,
>
>    C-u C-c C-x d
>
> does insert a 'PROPERTIES' drawer, but
>
>    M-x org-insert-property-drawer
>
> does not.  In fact 'M-x org-insert-p<TAB>' offers no completion.  I
> generally use this kind of information to use my own key bindings, but
> here I cannot (don't know how).

According to the source code of `org-insert-drawer', I think the manual
is saying that when ARG is non-nil, the function simply calls
`org-insert-property-drawer'.  However, `org-insert-property-drawer' is
not declared interactive, so you wouldn't be able to M-x it.  You could,
however, still run it via elisp:

      M-: (org-insert-property-drawer) RET

Best,


RY


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

* Re: Is function 'org-insert-property-drawer' usable?
  2022-12-31 16:36 ` Ruijie Yu via General discussions about Org-mode.
@ 2023-01-01 13:23   ` Ihor Radchenko
  2023-01-01 16:43     ` Alain.Cochard
  2023-01-04 11:53     ` Max Nikulin
  0 siblings, 2 replies; 12+ messages in thread
From: Ihor Radchenko @ 2023-01-01 13:23 UTC (permalink / raw)
  To: Ruijie Yu; +Cc: alain.cochard, emacs-orgmode

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

Ruijie Yu via "General discussions about Org-mode."
<emacs-orgmode@gnu.org> writes:

> According to the source code of `org-insert-drawer', I think the manual
> is saying that when ARG is non-nil, the function simply calls
> `org-insert-property-drawer'.  However, `org-insert-property-drawer' is
> not declared interactive, so you wouldn't be able to M-x it.

I guess we can just make it into a command. I see no downsides.

See the attached.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-org-insert-property-drawer-Make-into-a-command.patch --]
[-- Type: text/x-patch, Size: 1121 bytes --]

From a32e4791ee3b0f12d8b9ce006c2ec4cede3829eb Mon Sep 17 00:00:00 2001
Message-Id: <a32e4791ee3b0f12d8b9ce006c2ec4cede3829eb.1672579366.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Sun, 1 Jan 2023 16:21:32 +0300
Subject: [PATCH] org-insert-property-drawer: Make into a command

* lisp/org.el (org-insert-property-drawer): Make interactive.  This
function is mentioned in the manual and may be used by users.

Reported-by: Alain.Cochard@unistra.fr
Link: https://orgmode.org/list/25520.25134.831330.318368@gargle.gargle.HOWL
---
 lisp/org.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lisp/org.el b/lisp/org.el
index db32ec562..6cb326ca0 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -13062,6 +13062,7 @@ (defun org-insert-property-drawer ()
   "Insert a property drawer into the current entry.
 Do nothing if the drawer already exists.  The newly created
 drawer is immediately hidden."
+  (interactive)
   (org-with-wide-buffer
    ;; Set point to the position where the drawer should be inserted.
    (if (or (not (featurep 'org-inlinetask)) (org-inlinetask-in-task-p))
-- 
2.38.1


[-- Attachment #3: Type: text/plain, Size: 224 bytes --]


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

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

* Re: Is function 'org-insert-property-drawer' usable?
  2023-01-01 13:23   ` Ihor Radchenko
@ 2023-01-01 16:43     ` Alain.Cochard
  2023-01-04 11:53     ` Max Nikulin
  1 sibling, 0 replies; 12+ messages in thread
From: Alain.Cochard @ 2023-01-01 16:43 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Ruijie Yu, alain.cochard, emacs-orgmode

Ihor Radchenko writes on Sun  1 Jan 2023 13:23:

 > I guess we can just make it into a command.

For me, that would be ideal.  Otherwise, I think it would help a bit
to change the manual from

   ... this command calls ‘org-insert-property-drawer’ ...

to

   ... this command calls the non interactive
   ‘org-insert-property-drawer’ command ...

With this, I would not have asked the question in the first place, and
might have been able to rebind the command without RY's input
(thanks).




-- 
EOST (École et Observatoire des Sciences de la Terre) 
ITE (Institut Terre & Environnement) | alain.cochard@unistra.fr
5 rue René Descartes   [bureau 110]  | Phone: +33 (0)3 68 85 50 44 
F-67084 Strasbourg Cedex, France     | [ slot available for rent ]



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

* Re: Is function 'org-insert-property-drawer' usable?
  2023-01-01 13:23   ` Ihor Radchenko
  2023-01-01 16:43     ` Alain.Cochard
@ 2023-01-04 11:53     ` Max Nikulin
  2023-01-05  9:41       ` Ihor Radchenko
  2023-01-05 23:13       ` When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?] Alain.Cochard
  1 sibling, 2 replies; 12+ messages in thread
From: Max Nikulin @ 2023-01-04 11:53 UTC (permalink / raw)
  To: emacs-orgmode

On 31/12/2022 23:24, Alain.Cochard@unistra.fr wrote:
> For me,
> 
>    C-u C-c C-x d
> 
> does insert a 'PROPERTIES' drawer, but
> 
>    M-x org-insert-property-drawer
> 
> does not.

I suppose, the idea is to invoke it like

     C-u M-x org-insert-drawer

On 01/01/2023 20:23, Ihor Radchenko wrote:
> Ruijie Yu via writes:
> 
>> According to the source code of `org-insert-drawer', I think the manual
>> is saying that when ARG is non-nil, the function simply calls
>> `org-insert-property-drawer'.  However, `org-insert-property-drawer' is
>> not declared interactive, so you wouldn't be able to M-x it.
> 
> I guess we can just make it into a command. I see no downsides.

At least it was an intentional change:

commit 471ddbd14e2bb3e7689cdca5e6a461e54b8be9d8
Author: Bastien Guerry
Date:   Thu Jan 26 09:18:10 2012 +0100

     Improve `org-insert-drawer' and related documentation.

     * org.el (org-insert-property-drawer): Not an interactive
     command anymore.
     (org-insert-drawer): With a prefix argument, insert a property
     drawer.  Check for headline within the region before inserting
     the drawer.  Don't include special drawers in the completion
     table.
     (org-mode-map): New keybinding `C-c C-x d' for
     `org-insert-drawer'.

     * org.texi (Drawers): How to insert/complete drawers.

     Thanks to Nicolas Goaziou for the discussion and the patch.




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

* Re: Is function 'org-insert-property-drawer' usable?
  2023-01-04 11:53     ` Max Nikulin
@ 2023-01-05  9:41       ` Ihor Radchenko
  2023-01-05 10:15         ` Bastien Guerry
  2023-01-05 23:13       ` When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?] Alain.Cochard
  1 sibling, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2023-01-05  9:41 UTC (permalink / raw)
  To: Max Nikulin, Bastien; +Cc: emacs-orgmode

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

Max Nikulin <manikulin@gmail.com> writes:

>> I guess we can just make it into a command. I see no downsides.
>
> At least it was an intentional change:
>
> commit 471ddbd14e2bb3e7689cdca5e6a461e54b8be9d8
> Author: Bastien Guerry
> Date:   Thu Jan 26 09:18:10 2012 +0100
>
>      Improve `org-insert-drawer' and related documentation.

Thanks for checking!
I still don't understand why it was turned into a function since I
cannot find the relevant discussion.

Bastien?

If not making `org-insert-property-drawer' a command back, we can amend
the manual, as suggested.

See the attached patch.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-org-manual.org-Clarify-that-org-insert-property-draw.patch --]
[-- Type: text/x-patch, Size: 1779 bytes --]

From 3b930ccaf4f53d203cbbe84001d4d861cbcbb262 Mon Sep 17 00:00:00 2001
Message-Id: <3b930ccaf4f53d203cbbe84001d4d861cbcbb262.1672911565.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Thu, 5 Jan 2023 12:38:26 +0300
Subject: [PATCH] org-manual.org: Clarify that `org-insert-property-drawer' is
 not a command

* doc/org-manual.org (Drawers): Emphasize that
`org-insert-property-drawer' is not interactive command, but a
function.

Reported-by: Alain.Cochard@unistra.fr
Link: https://orgmode.org/list/tp3pbi$dk$1@ciao.gmane.io
---
 doc/org-manual.org | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/doc/org-manual.org b/doc/org-manual.org
index f3b77ebad..4466af8e4 100644
--- a/doc/org-manual.org
+++ b/doc/org-manual.org
@@ -1253,11 +1253,12 @@ ** Drawers
 #+findex: org-insert-drawer
 You can interactively insert a drawer at point by calling
 ~org-insert-drawer~, which is bound to {{{kbd(C-c C-x d)}}}.  With an
-active region, this command puts the region inside the drawer.  With
-a prefix argument, this command calls ~org-insert-property-drawer~,
-which creates a =PROPERTIES= drawer right below the current headline.
-Org mode uses this special drawer for storing properties (see
-[[*Properties and Columns]]).  You cannot use it for anything else.
+active region, this command puts the region inside the drawer.  With a
+prefix argument, this command calls non-interactive function
+~org-insert-property-drawer~, which creates a =PROPERTIES= drawer
+right below the current headline.  Org mode uses this special drawer
+for storing properties (see [[*Properties and Columns]]).  You cannot use
+it for anything else.
 
 Completion over drawer keywords is also possible using
 {{{kbd(M-TAB)}}}[fn:6].
-- 
2.38.1


[-- Attachment #3: Type: text/plain, Size: 224 bytes --]


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

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

* Re: Is function 'org-insert-property-drawer' usable?
  2023-01-05  9:41       ` Ihor Radchenko
@ 2023-01-05 10:15         ` Bastien Guerry
  2023-01-06 13:32           ` Ihor Radchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Bastien Guerry @ 2023-01-05 10:15 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Max Nikulin, emacs-orgmode

Hi,

Ihor Radchenko <yantar92@posteo.net> writes:

> I still don't understand why it was turned into a function since I
> cannot find the relevant discussion.

C-u C-c C-x d will call org-insert-property-drawer - I don't think 
this function needs to be a command with its own keybinding.

The discussion is here:

https://list.orgmode.org/87vcnzeo8d.fsf@gmail.com/

> If not making `org-insert-property-drawer' a command back, we can amend
> the manual, as suggested.

Yes, I think amending the manual is good enough!

Thanks,

-- 
 Bastien


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

* When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?]
  2023-01-04 11:53     ` Max Nikulin
  2023-01-05  9:41       ` Ihor Radchenko
@ 2023-01-05 23:13       ` Alain.Cochard
  2023-01-06  4:45         ` Max Nikulin
                           ` (2 more replies)
  1 sibling, 3 replies; 12+ messages in thread
From: Alain.Cochard @ 2023-01-05 23:13 UTC (permalink / raw)
  To: emacs-orgmode

Max Nikulin writes on Wed  4 Jan 2023 18:53:

 > I suppose, the idea is to invoke it like
 > 
 >      C-u M-x org-insert-drawer

Yes, I got it.  

Let me enlarge the scope (hence the new title). The manual says, in
1.5 Typesetting Conventions Used in this Manual (Key bindings and
commands):

   In the manual we will, wherever possible, give the function that is
   internally called by the generic command.

so I was trying to understand if there is a way to deduce whether or
not a particular function is a command.  Based on several examples
such as

   ‘M-<RIGHT>’ (‘org-do-demote’)

I conjectured that, when an interactive function does correspond to a
command, it is just mentioned between parentheses, right after its
corresponding key combination.  I tried to check this in an as much
systematic way as I could and investigated 330 such instances (based
on the manual of version 9.5).

I concluded that, out of the 330, at most 9 of them are counter
examples (and I think even less; see list below).

9 is a very small proportion, which leads me to say that, in my
opinion, it would be nice:

- that this conjecture be transformed into a theorem (i.e., that
  exceptions be removed),

- that this convention be mentioned in the aforementioned section
  1.5,

- that even if a function is _not_ mentioned in that conventional
  form, it be explicitly stated in the manual that it is
  non-interactive (just as was recently proposed for
  'org-insert-property-drawer' by Ihor+Bastien).

(And if that convention is not to be adopted, then all the more reason
to duly mention exceptions to the quasi-rule.)

Regards

PS: as an aside note: during my quest, I met the following unsettling
(to me) cases, of functions that are not interactive "right away", but
appear (to me) to become interactive after "something" has been loaded
(please forgive the informal wording: I don't know the proper
terminology).  They are the 'org-capture-*' and the 'org-attach-*'
functions.

For example, with the cursor on 'org-capture-finalize' in the manual,
'C-h f <RET>' gives nothing right away; 'C-h f org-capture<TAB>' does
not offer 'org-capture-finalize' as a completion; 'C-h f
org-capture-fin<TAB>' does complete and says that
'org-capture-finalize' is interactive; and then it becomes possible to
use it with 'M-x'.

Similarly, as far I as can see, 'M-x org-attach-attach' fails right
away, but works after having been used once with the standard (menu)
way.

I can understand why it is like that, but still find it disconcerting.
If it is to stay this way, perhaps things could be made more explicit
in the manual.

---

List (of non interactive functions that might be thought interactive
to the ignorant):

- ‘C-u C-u <TAB>’ (‘org-set-startup-visibility’)

- ‘S-<RIGHT>’ (‘org-clocktable-try-shift’)

- ‘C-0 C-c C-w’ or ‘C-u C-u C-u C-c C-w’ (‘org-refile-cache-clear’)

- ‘M-<UP>’ (‘org-table-fedit-scroll-up’) 

  It feels strange to me that 'org-table-fedit-scroll-down' be an
  interactive function but not the 'scroll-up' version; in fact: 'C-h
  f org-table-fedit-scroll-up' -> (No matches)

- ‘S-<RIGHT>’ (‘org-property-next-allowed-values’) 

  Shouldn't it be 'org-property-next-allowed-value'?

- ‘U’ (‘org-agenda-bulk-remove-all-marks’) 

  Shouldn't it be 'org-agenda-bulk-unmark-all'?

- ‘C-c C-e’ (‘org-export’) 

  Shouldn't this one be 'org-export-dispatch'?

- ‘C-c '’ (‘org-edit~special’) 

  This must be a typo, right?

- ‘C-c C-e o o’ (‘org-export-to-odt’) 

  Shouldn't it be 'org-odt-export-to-odt'?

-- 
EOST (École et Observatoire des Sciences de la Terre) 
ITE (Institut Terre & Environnement) | alain.cochard@unistra.fr
5 rue René Descartes   [bureau 110]  | Phone: +33 (0)3 68 85 50 44 
F-67084 Strasbourg Cedex, France     | [ slot available for rent ]



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

* Re: When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?]
  2023-01-05 23:13       ` When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?] Alain.Cochard
@ 2023-01-06  4:45         ` Max Nikulin
  2023-01-07 20:33         ` Jean Louis
  2023-02-03 11:23         ` Ihor Radchenko
  2 siblings, 0 replies; 12+ messages in thread
From: Max Nikulin @ 2023-01-06  4:45 UTC (permalink / raw)
  To: emacs-orgmode

On 06/01/2023 06:13, Alain.Cochard wrote:
> For example, with the cursor on 'org-capture-finalize' in the manual,
> 'C-h f <RET>' gives nothing right away; 'C-h f org-capture<TAB>' does
> not offer 'org-capture-finalize' as a completion; 'C-h f
> org-capture-fin<TAB>' does complete and says that
> 'org-capture-finalize' is interactive; and then it becomes possible to
> use it with 'M-x'.

To improve loading speed, Org starts with minimal set of packages, other 
should be loaded on demand. See `org-modules'.

For C-h f (`describe-function') behavior see
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60085
"`help-enable-autoload' is not fully obeyed"

As to `org-capture-finalize', while being interactive, it is of little 
use before capture is started and so org-capture is loaded. That is why 
it is not marked for autoload and unavailable for M-x. In future it 
might be restricted to a specific "capture" mode.

Perhaps there is a way to generate TAGS file for Org files an to 
instruct Emacs to lookup collected symbols there.



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

* Re: Is function 'org-insert-property-drawer' usable?
  2023-01-05 10:15         ` Bastien Guerry
@ 2023-01-06 13:32           ` Ihor Radchenko
  0 siblings, 0 replies; 12+ messages in thread
From: Ihor Radchenko @ 2023-01-06 13:32 UTC (permalink / raw)
  To: Bastien Guerry; +Cc: Max Nikulin, emacs-orgmode

Bastien Guerry <bzg@gnu.org> writes:

>> If not making `org-insert-property-drawer' a command back, we can amend
>> the manual, as suggested.
>
> Yes, I think amending the manual is good enough!

Applied, onto bugfix.
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=28a966484

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?]
  2023-01-05 23:13       ` When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?] Alain.Cochard
  2023-01-06  4:45         ` Max Nikulin
@ 2023-01-07 20:33         ` Jean Louis
  2023-02-03 11:23         ` Ihor Radchenko
  2 siblings, 0 replies; 12+ messages in thread
From: Jean Louis @ 2023-01-07 20:33 UTC (permalink / raw)
  To: Alain.Cochard; +Cc: emacs-orgmode

* Alain.Cochard@unistra.fr <Alain.Cochard@unistra.fr> [2023-01-06 02:16]: :ATTACH:
:PROPERTIES:
:ID:       51b2af8b-b2b1-45a7-ab74-1d8e7d8fce7e
:END:
> so I was trying to understand if there is a way to deduce whether or
> not a particular function is a command.  Based on several examples
> such as
> 
>    ‘M-<RIGHT>’ (‘org-do-demote’)

Function is considered command when it has declaration (interactive)

See: (info "(elisp) Defining Commands")

22.2 Defining Commands
======================

The special form ‘interactive’ turns a Lisp function into a command.
The ‘interactive’ form must be located at top-level in the function
body, usually as the first form in the body; this applies to both lambda
expressions (*note Lambda Expressions::) and ‘defun’ forms (*note
Defining Functions::).  This form does nothing during the actual
execution of the function; its presence serves as a flag, telling the
Emacs command loop that the function can be called interactively.  The
argument of the ‘interactive’ form specifies how the arguments for an
interactive call should be read.

Please note
-----------

The word "interactive" is used in context of Emacs Lisp, and not in
the context of English language.

In the context of the English language any Emacs Lisp function may be
interactive, even if it is not a command.

And to note is that only commands, which are functions with
(interactive) declaration, may be bound to keys.

> I conjectured that, when an interactive function does correspond to a
> command,

Function with (interactive) declaraion IS a command.

But in English language ordinary context in computing, a function may
be interactive but not a command, because it does not have
(interactive) declaration.

> it is just mentioned between parentheses, right after its
> corresponding key combination.  I tried to check this in an as much
> systematic way as I could and investigated 330 such instances (based
> on the manual of version 9.5).

> - that even if a function is _not_ mentioned in that conventional
>   form, it be explicitly stated in the manual that it is
>   non-interactive (just as was recently proposed for
>   'org-insert-property-drawer' by Ihor+Bastien).

When programmer wish to find out if function is interactive, one can
use C-h f function-name-here to see if it is interactive, or one may
jump to it's definition:

(find-function 'org-insert-property-drawer) and see if there is
declaration to be command, 

or to use the test like this:

(commandp 'org-insert-property-drawer) ➜ nil

IMHO, mentioning for each function if it is interactive or
non-interactive in Emacs manual is waste.

And programmers shall observe that commands should appear only in
corresponding modes:

If MODES is present, it should be a list of mode names (symbols) that
this command is applicable for.  The main effect of this is that
‘M-x TAB’ (by default) won’t list this command if the current buffer’s
mode doesn’t match the list.  That is, if either the major mode isn’t
derived from them, or (when it’s a minor mode) the mode isn’t in effect.

> (interactive &optional ARG-DESCRIPTOR &rest MODES)

> If MODES is present, it should be a list of mode names (symbols) that
> this command is applicable for.  The main effect of this is that
> ‘M-x TAB’ (by default) won’t list this command if the current buffer’s
> mode doesn’t match the list.  That is, if either the major mode isn’t
> derived from them, or (when it’s a minor mode) the mode isn’t in
> effect.

And sharp programmers should make sure that their functions that may
be invoked interactively in other modes, recognize what is going on
and don't disturb user's work or data.

> For example, with the cursor on 'org-capture-finalize' in the manual,
> 'C-h f <RET>' gives nothing right away; 'C-h f org-capture<TAB>' does
> not offer 'org-capture-finalize' as a completion; 'C-h f
> org-capture-fin<TAB>' does complete and says that
> 'org-capture-finalize' is interactive; and then it becomes possible to
> use it with 'M-x'.
> 
> Similarly, as far I as can see, 'M-x org-attach-attach' fails right
> away, but works after having been used once with the standard (menu)
> way.

Good inspection!

I find it not right that I can even invoke `M-x og-attach-attach' in
this mail mode.

And I find it out of control that directory was created in ~/data
without asking me or telling me, by using `org-attach'.

We have too many expectations.

> I can understand why it is like that, but still find it disconcerting.
> If it is to stay this way, perhaps things could be made more explicit
> in the manual.

Thanks for observation.

> List (of non interactive functions that might be thought interactive
> to the ignorant):
> 
> - ‘C-u C-u <TAB>’ (‘org-set-startup-visibility’)

Any function without (interactive) declaration may be made a "command"
by adding declaration by using `lambda' like this:

(lambda () (interactive) (org-set-startup-visibility))

and that `lambda' may be bound to key.

> - ‘C-c C-e’ (‘org-export’) 
> 
>   Shouldn't this one be 'org-export-dispatch'?

Right.

> - ‘C-c '’ (‘org-edit~sbpecial’) 
> 
>   This must be a typo, right?

Good observation.

> - ‘C-c C-e o o’ (‘org-export-to-odt’) 
> 
>   Shouldn't it be 'org-odt-export-to-odt'?

That is right.


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/


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

* Re: When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?]
  2023-01-05 23:13       ` When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?] Alain.Cochard
  2023-01-06  4:45         ` Max Nikulin
  2023-01-07 20:33         ` Jean Louis
@ 2023-02-03 11:23         ` Ihor Radchenko
  2 siblings, 0 replies; 12+ messages in thread
From: Ihor Radchenko @ 2023-02-03 11:23 UTC (permalink / raw)
  To: alain.cochard; +Cc: emacs-orgmode

Alain.Cochard@unistra.fr writes:

> For example, with the cursor on 'org-capture-finalize' in the manual,
> 'C-h f <RET>' gives nothing right away; 'C-h f org-capture<TAB>' does
> not offer 'org-capture-finalize' as a completion; 'C-h f
> org-capture-fin<TAB>' does complete and says that
> 'org-capture-finalize' is interactive; and then it becomes possible to
> use it with 'M-x'.

This is Emacs bug.
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60085

> Similarly, as far I as can see, 'M-x org-attach-attach' fails right
> away, but works after having been used once with the standard (menu)
> way.

I guess we can make this function autoloaded.
Are there are any other function that you often try to call via M-x and
miss?

> List (of non interactive functions that might be thought interactive
> to the ignorant):
>
> - ‘C-u C-u <TAB>’ (‘org-set-startup-visibility’)

What about doing something like

- ‘C-u C-u <TAB>’ (‘org-cycle’ ⟶ ‘org-set-startup-visibility’)

There is no reason to make some of the listed functions interactive -
they are not designed to be interactive.

> - ‘S-<RIGHT>’ (‘org-property-next-allowed-values’) 
>
>   Shouldn't it be 'org-property-next-allowed-value'?
>
> - ‘U’ (‘org-agenda-bulk-remove-all-marks’) 
>
>   Shouldn't it be 'org-agenda-bulk-unmark-all'?
>
> - ‘C-c C-e’ (‘org-export’) 
>
>   Shouldn't this one be 'org-export-dispatch'?
>
> - ‘C-c '’ (‘org-edit~special’) 
>
>   This must be a typo, right?
>
> - ‘C-c C-e o o’ (‘org-export-to-odt’) 
>
>   Shouldn't it be 'org-odt-export-to-odt'?

Fixed, on bugfix. Thanks!
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=f33d24108

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

end of thread, other threads:[~2023-02-03 11:24 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-31 16:24 Is function 'org-insert-property-drawer' usable? Alain.Cochard
2022-12-31 16:36 ` Ruijie Yu via General discussions about Org-mode.
2023-01-01 13:23   ` Ihor Radchenko
2023-01-01 16:43     ` Alain.Cochard
2023-01-04 11:53     ` Max Nikulin
2023-01-05  9:41       ` Ihor Radchenko
2023-01-05 10:15         ` Bastien Guerry
2023-01-06 13:32           ` Ihor Radchenko
2023-01-05 23:13       ` When is a function an interactive function? [was Re: Is function 'org-insert-property-drawer' usable?] Alain.Cochard
2023-01-06  4:45         ` Max Nikulin
2023-01-07 20:33         ` Jean Louis
2023-02-03 11:23         ` Ihor Radchenko

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).