helm-org icon indicating copy to clipboard operation
helm-org copied to clipboard

helm-completing-read-handlers-alist: Use "org-set-tags-command" instead of "org-set-tags"

Open NathanNeff opened this issue 5 years ago • 6 comments

I copied this issue from the helm project [0] to the helm-org project:

When using org-mode 9.2 and higher, set-tags was broken. It was displaying the set of tags correctly when a heading had no tags. However, if a heading had 1+ tags already, then Helm was not displaying the list of available tags.

I think I found the issue (it's quite simple). The org-set-tags function is not called by org-mode when pressing C-c C-q. The function is called org-set-tags-command.

Adding the entry (org-set-tags-command . helm-org-completing-read-tags) to helm-completing-read-handlers-alist fixed the problem.

https://github.com/emacs-helm/helm-org/blob/bc27669fdc699e65d5162b6e0a0d1bc1d87250a3/helm-org.el#L38

However, after looking a bit further, the old emacs versions also called "org-set-tags-command" when pressing C-c C-q.

org-set-tags-command calls org-set-tags. So, why does this fix work? Any more insight is appreciated.

I don't know enough about the magic of Helm to know why this fix works (being that org versions 9.1.x and 9.2.x both call org-set-tags-command which calls org-set-tags.

The definitions of org-set-tags-command and org-set-tags changed quite a bit from org 9.1.x to Org 9.2.x. One difference that I notice is that the old version of org-set-tags [1] was an (interactive) function and the new version of org-set-tags is not [2].

Any ideas?

[1] 9.1.14 https://code.orgmode.org/bzg/org-mode/src/release_9.1.14/lisp/org.el#L14883 [2] 9.2.5 https://code.orgmode.org/bzg/org-mode/src/master/lisp/org.el#L12334

Possibly related issues: https://github.com/emacs-helm/helm/issues/2063

Spacemacs issue: syl20bnr/spacemacs#3738

[0] https://github.com/emacs-helm/helm/issues/2183

NathanNeff avatar Aug 11 '19 15:08 NathanNeff

Nathan Neff [email protected] writes:

Hmm, after looking a bit further, the old emacs versions also called "org-set-tags-command" when pressing C-c C-q.

org-set-tags-command calls org-set-tags. So, why does this fix work?

(org-set-tags-command . helm-org-completing-read-tags)

I don't know enough about the magic of Helm to know why this fix works (being that org versions 9.1.x and 9.2.x both call org-set-tags-command which calls org-set-tags.

Because helm is checking the caller which in your case is org-set-tags-command, the helm-buffer in your case should be called "helm-mode-org-set-tags-command" and not "helm-mode-org-set-tags".

-- Thierry

Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997

thierryvolpiatto avatar Aug 11 '19 17:08 thierryvolpiatto

@NathanNeff Your solution works well. Thanks for your work.

jagrg avatar Aug 13 '19 22:08 jagrg

You're welcome! It took me a long time to detect what was wrong but I found out a lot more about the inner workings of Emacs Lisp / Helm and Org-mode.

On Tue, Aug 13, 2019 at 5:29 PM Jonathan Gregory [email protected] wrote:

@NathanNeff Your solution works well. Thanks for your work.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/emacs-helm/helm-org/issues/3?email_source=notifications&email_token=AAADY6HTWMJMWD5PS7TMM5DQEMYUJA5CNFSM4IK4AQJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4HFLPA#issuecomment-521033148, or mute the thread https://github.com/notifications/unsubscribe-auth/AAADY6FGLMCLDAD45KNBDPLQEMYUJANCNFSM4IK4AQJQ .

NathanNeff avatar Aug 14 '19 01:08 NathanNeff

Also, I think the README.md needs to be fixed as well.

NathanNeff avatar Sep 04 '19 19:09 NathanNeff

org-capture: Capture abort: Symbol’s value as variable is void: helm-completing-read-handlers-alist

improve100 avatar Jun 11 '20 01:06 improve100

II was still having this issue with org mode. Because Org uses (completing-read-multiple), helm doesn't read helm-completing-read-handlers-alist for completions. I have written a workaround instead. It's an advice that wraps helm--completion-in-region and checks what commands/modes we're using and changes the separator accordingly.

https://gist.github.com/granitrocky/af86037dcd239a928c10c7fa974f54a3

granitrocky avatar Sep 07 '22 21:09 granitrocky