helm-org
helm-org copied to clipboard
helm-completing-read-handlers-alist: Use "org-set-tags-command" instead of "org-set-tags"
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
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
@NathanNeff Your solution works well. Thanks for your work.
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 .
Also, I think the README.md needs to be fixed as well.
org-capture: Capture abort: Symbol’s value as variable is void: helm-completing-read-handlers-alist
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