2019-06 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
会社で使っている Qiita:Team が esa に移行されることになったので、早速作ってみました。
masutaka/emacs-helm-esa
esa with helm interface (\( ⁰⊖⁰)/)
今回の helm-esa.el は helm-qiita.el [2016-05-06-1] の後継ツールのような気持ちで作り始めました。
最初、Qiita:Team の Stock は、esa だと Watch なのかなーくらいの考えで作っていましたが、やがてそうではないと気づきました。正確な意味で同じものはないと思います。
逆に esa の Watch は、Qiita:Team だと「通知を購読する」の記事全てです(Qiita API では取得できません)。
うーん、どうやって実装しよう?
考えていく中で、Qiita:Team は各個人で記事を Stock する作りであり、esa はみんなで Stock し、文書をみんなで育てていく設計思想だと改めて気づきました。
とは言え、何も考えずに全ての Stock 属性の記事を絞り込み対象とすると、対象記事が無駄に多くなります。
そのため、デフォルトでは汎用性のありそうな "watched:true kind:stock" を検索クエリとしつつ、"watched:true -in:日報" のように好みのクエリも設定できるようにしました。API 制限に達する可能性はありますが、"" を設定すれば全記事を対象とすることも出来ます。
工夫したのはこれだけなんですが、helm-qiita.el と比べてずいぶん柔軟なツールになりました。
ひとえに esa の設計の柔軟さによるものです。
README.md に書いてあるとおり、最小設定はこちらになります。
(setq helm-esa-team-name "Your esa team name") (setq helm-esa-access-token "Your Access Token") (helm-esa-initialize)
helm-esa-team-name は https://feedforce.esa.io/ の場合は "feedforce" を設定して下さい。
helm-esa-access-token は https://{team_name}.esa.io/user/applications から作れます。Read のスコープを付けて下さい。
手前味噌ですが、[2016-05-06-2] で紹介した方法を使うと、init.el にこのようなアクセストークンをべた書きせずに済みます。
M-x helm-esa で使えます。
helm-esa-source も用意しています。好みの helm-source を作っても良いでしょう。
私は esa の他に、自分のはてブ、自分の GitHub リポジトリ、Star を付けた GitHub リポジトリを横串検索出来るようにしています(設定はこちら)。高速に検索できるといろいろ捗ります。
前述のとおり、検索クエリのデフォルト値は "watched:true kind:stock" です。好みの検索クエリに変更しても良いでしょう(ドキュメントはこちら)。esa は検索クエリもだいぶ使いやすい・・・!
私はこのように検索クエリを変更しています。Watch している記事全てから、タイトルが日報から始まる記事を除外しています。
(setq helm-esa-search-query "watched:true -in:日報")
検索クエリに空文字を設定すると、絞り込み対象は全記事になります。
(setq helm-esa-search-query "")
ただし API 制限もあるのでご注意ください。現時点では "429 Too Many Requests" が返った時点で、キャッシュファイル ~/.emacs.d/helm-esa の作成を中止します。
デフォルトでは 1 時間に 1 回、Emacs Timer から非同期で esa の "GET /v1/teams/:team_name/posts" API を叩いて ~/.emacs.d/helm-esa を更新します。M-x helm-esa するとこのファイルが参照されます。
30 分に 1 回に変更したい場合はこのように設定します。こちらも API 制限にはご注意ください。
(setq helm-esa-interval (* 30 60))
複数の esa team を絞り込み対象とすることは出来ません。良い設計を思いついて、気が向いたら実装するかもしれません。
今回は以前と比べてマージまで時間がかかりました。レビューが厳しくなった気がします。
今回は https://github.com/melpa/melpa/pull/6186 を作ったのが 5/26 で、マージされたのが本日 6/10 なので、15 日です。
だいぶ昔になるので単純な比較はできませんが、helm-hatena-bookmark は同日、helm-qiita は翌日でした。
今回は0コメの Checklist を完璧にして PR を作成したら、8 日目に @purcell さんからコメントを頂きました。curl を直接使っているので、Windows 等への移植性が低いとのこと。
もっともな意見ですが、melpa 登録への必須条件ではなさそうだったので、すぐには直せないのでマージしてくれないかと書きましたが、コメントはありませんでした。
このままマージされなさそうだったので、昨日えいやっと request.el を使って修正したら、別な方がマージしてくれました。
レビューは大変ありがたいのですが、以前はここまで厳しくなかったので、少々困惑しました。
@purcell さんはとても忙しいのに親切な人なのは分かっています。レビューにブレがあるのは仕方がないですね。
2019-06 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30