I am a heavy user of https://github.com/yuya373/emacs-slack, and I noticed a weird behavior of auth-source-search
: If I call this function multiple times, querying the second info always returns nil
.
This is my slack configuration:
(let ((auth1 (car (auth-source-search :host "team1.slack.com")))
(auth2 (car (auth-source-search :host "team2.slack.com"))))
(slack-register-team
:name "Team 1"
:user "some_email1@example1.com"
:token (funcall (plist-get auth1 :secret)))
(slack-register-team
:name "Team 2"
:user "some_email2@example2.com"
:token (funcall (plist-get auth2 :secret)))
And the second call to auth-source-search
fails, making auth2
nil
. So, Emacs cannot evaluate the expression (funcall (plist-get auth2 :secret))
since (plist-get auth2 :secret)
is nil
.
I am certain that auth-source-search
is somehow broken, and have found a prior question to this: `auth-source-search` returns nil for valid queries . A comment to this question suggested to add :port
keyword argument to auth-source-search
, but in this case I cannot because the Slack auth info does not contain any port
fields.
How can I solve this issue?
Edit: My .authinfo
looks roughly like this:
host team1.slack.com user some_email1@example1.com password ...
machine imap.gmail.com login ... port ... password ...
machine smtp.gmail.com login ... port ... password ...
host team2.slack.com user some_email2@example2.com password ...
That is, the entry of team1.slack.com
comes before that of team2.slack.com
.
My Emacs is of version 27.1, configured with Spacemacs at the develop branch's latest commit.