トップ
追記 RSS

ワタタツの日記


2021 年 6 月 15 日 (火)

consultをmigemoizeしたい (未完→だいたいできた)

consultがとてもいい感じなので @rocktakey さんのivy-migemoでcounsel系をやるようにmigemo化したいです。 まずは調査調査。

ちなみに、consult, vertico, orderless, embark などの便利な組み合わせの紹介についてはとんさんのEmacsの次世代ミニバッファ補完UI | 日々、とんは語る。がおすすめです。

ivy

まずivy-migemoがなぜ適用できるかで、counsel系に使われている ivy-read 関数を見てみます。

https://github.com/abo-abo/swiper/blob/040d458bce4a88f37359192061bcea5ebe87007c/ivy.el#L2019

re-builder というのが設定できるようになっていて、入力したクエリをさらに関数でいじることができます。

ivy-migemo では ivy-re-builders-alist(counsel-hogehoge . ivy-migemo--regex-plus) などと ivy-migemo--regex-plus を突っ込むことで各種 counsel-*:re-builder に渡ってきます。

consult

一方 consult系はどうなっているでしょうか。 ivy-read にあたるものはたぶん consult--read とそのマルチ版 consult--multi です。

それで、こ consult--readconsult--multi には re-builder にあたるものが、 なさそう ということまで調査しました。

現状

根元の関数 re-builder(っぽいもの)
ivy-read ある
consult--read ない

という感じです。 ( ˃ ⌑ ˂ഃ )

追記: 2021-06-16

だいたいできました。 emacs-jp の Slackで orderless のソースでも読んでみようかと書いていたら、なんと orderless そのものから忍び込めることを教えていただきました。

orderless は、標準の completion-category-overrides を定義すればカテゴリごとに補完スタイルを設定できるように作られています。標準のものを使うようにうまく出来ていますねえ。

カテゴリというのは metadata として提供されていて Emacs 28 からはたくさんついているらしいです。27以前は marginaliaが頑張ってくれるみたいです

そこでまず command カテゴリに設定する例を教えてもらい、ちゃんと動くことがわかりました。

あとはどのコマンドがどのカテゴリで実行されるのかを調べればだいたい良いということがわかりました。

ソースコードリーディングをしたところ、次のことがわかりました。

コマンド カテゴリ
execute-extended-command (M-x) command
find-file file
consult--multiを呼ぶコマンド (consult-bufferなど) consult-multi
consult-lineなど consult-location

あとは最近使っている org-roam の org-roam-find-file はどのカテゴリになっているのかがわかりませんでした。

なんとなく marginalia を見ていたところ marginalia-prompt-categories という変数にいろいろカテゴリが書いてあることがわかりました。 なんとプロンプトに書いてある文字列にヒットしてカテゴリを設定してしまおうというもののようです(たぶん。たぶんね。)。なので、

(add-to-list 'marginalia-prompt-categories
             '("\\<File\\>" . file))

と設定しました! すると動きました! org-roam-find-file のプロンプトには "File" と出ているからです!

勝ちました!

勝った様子

勝った様子です。 https://github.com/Nyoho/.emacs.d/blob/ae7af9e48c20b0ab9bcf10601824cfaede1761d7/config/50-search-replace.el#L207-L247

(leaf consult
  :ensure t
  :bind* (("M-m" . consult-buffer))
  :bind (
         ("M-s"   . consult-line)
         ("M-g ." . consult-ripgrep))
  :config
  (autoload 'projectile-project-root "projectile")
  (setq consult-project-root-function #'projectile-project-root))

(leaf orderless
  :ensure t
  :init
  (icomplete-mode)
  (defun orderless-migemo (component)
    (let ((pattern (migemo-get-pattern component)))
      (condition-case nil
          (progn (string-match-p pattern "") pattern)
        (invalid-regexp nil))))

  (orderless-define-completion-style orderless-default-style
    (orderless-matching-styles '(orderless-literal
                                 orderless-regexp)))

  (orderless-define-completion-style orderless-migemo-style
    (orderless-matching-styles '(orderless-literal
                                 orderless-regexp
                                 orderless-migemo)))

  (setq completion-category-overrides
        '((command (styles orderless-default-style))
          (file (styles orderless-migemo-style))
          (buffer (styles orderless-migemo-style))
          (symbol (styles orderless-default-style))
          (consult-location (styles orderless-migemo-style)) ; category `consult-location' は `consult-line' などに使われる
          (consult-multi (styles orderless-migemo-style)) ; category `consult-multi' は `consult-buffer' などに使われる
          (unicode-name (styles orderless-migemo-style))
          (variable (styles orderless-default-style))))

  ;; (setq orderless-matching-styles '(orderless-literal orderless-regexp orderless-migemo))

  :custom
  (completion-styles . '(orderless)))

(leaf marginalia
  :ensure t
  :init
  (marginalia-mode)
  :config
  (add-to-list 'marginalia-prompt-categories
               '("\\<File\\>" . file)))
Tags: Emacs

2021 年 5 月 20 日 (木)

昔買ったiBooksの本が開けなかったがiBooksを再起動したら治った

昔買ったiBooksの本が

このブックは開けません。iTunesに問題がありました(−−42408)。iTunesを再インストールしてからやり直してください。

というメッセージでエラーになりました。iTunesはもう無くなってから久しいです。iBooksで開いています。 一旦ダウンロードを削除して開いても同様です。

しかし iBooks cannot open any book with High Sie… - Apple Community のように、iBooksを再起動したら治りました。

  1. ダウンロードされている本を削除
  2. iBooks を再起動
  3. 再びダウンロードすると正常に開ける
Tags: Apple

2020 年 7 月 3 日 (金)

またしてもカープの選手 広島弁吹き替えシリーズのNyoho氏「CV: Nyoho」眼鏡市場新テレビCMはクリス・ジョンソンの声(広島弁)

photo

広島弁吹き替えシリーズの Nyoho氏は、一昨年のエルドレッド選手、昨年のフランスア選手に続いて「CV: Nyoho」の活動が、本日 (7/3) よりクリス・ジョンソン選手の声 (広島弁) として継続となりました。眼鏡市場の広島県限定テレビCMです。広島県限定テレビCMと言いながらYouTubeでも見られます。今年は特にコロナ禍により、リモートワークも重要なトピックとなっており、

の2バージョンが公開されています。

また、眼鏡市場による特設サイト「広島限定の特設サイトじゃ。見ていきんさい。」もオープンしています。

Nyoho氏の眼鏡市場のテレビCM担当はこれで4年連続です。

Nyoho氏は「今回はクリス・ジョンソン選手の演技がぶちくそええけえ、わしも録音スタジオでのりのりゆきのりになってしもうたわ。「知っちょんでわし」いうところは、アクションにおうとるけえ、ぶちしっくりくるようなわ。」などとコメントしています。

photo


2019 年 12 月 9 日 (月)

何らかの忘年会に参加した

某集合の忘年会に参加しました。なかなか貴重な機会でした。

その中でナルホーの方だったか、じゃがビーとじゃがりこの開発秘話みたいなのがあると伺ったのですが、もう何だったか忘れてしまいました。

じゃがビー じゃがりこ 息子 開発 」と検索した履歴がiPhoneに残っています。 親子関係というのがこの開発の何かのキーワードだったのですが、忘れました。

Tags: 生活

2019 年 8 月 16 日 (金)

Web Audio APIでファイルから音を鳴らすためにSafariだけユーザ交流が必要

Web Audio APIAudioContextcreateBufferSource() にファイルからバッファを読み込んで再生しようとしていたんですけど、click などのイベントを一度挟まないと音が出ませんでした。

調べると Safari だけは user interaction がないと音が出ないようにしてあるとかなんとか。しまったソースを忘れた。確かに Chrome (Vivaldi) や Firefox では何もしなくてもそのまま JavaScript だけ(?)自動的に音を鳴らし始められました。


2019 年 6 月 3 日 (月)

広島市内で情報収集

某番組の後に、久々に某野球統計の人と飲み会をしました。

あ、関係ないですけどスタジオの後ろに小さなスピーカがありました。調べるとたぶん CODA AUDIO D5-Cube。8万円ぐらいのスピーカでした。

まず、野球の統計情報が豊富なサイトを教えてもらいました。1.02 - Essence of Baseball | DELTA Inc. です。月1000円の支払いをすると詳細なデータが見られます。

いきなり鈴木と大瀬良がすごいことがわかります。

あとなんでメモったのかわからないのですが、 アカボシマシマシというのをメモしていました。飲みながらなので覚えていないことがあります(笑) 食レポの話をしていたのかも知れません。

次に、HIPPY Official Website をメモしていました。HIPPYさんは広島出身の歌手の方です。ライブをされたりしています。

次に、カープオネエというメモをしていました。広島で活躍されている方のようです。

以上、飲み会メモ放出企画でした。なんのこっちゃ!

Tags: 生活

2019 年 4 月 28 日 (日)

岩国ジャズストリートに行ってきた

photo

第5回岩国ジャズストリートに行ってきました。岩国駅の西側のいろんなお店やアーケードを使った、ジャズのフェスティバルです。

ふと、「行ける」と思って、開始から2時間ほど遅れて到着。

本当に岩国はジャズが盛んだなあと思いました。

ミトラバ!

いくつか回りましたが、中でもミトラバという、トランペットとピアノのユニットのトランペッタ松木理三郎(@risabro)さんを知ることができたのがものすごくでかい収穫でした。めちゃくちゃよかった。明日(4/29)下松でクリニック&ライブをするそうです。

アドリブもこなしながら、とてもきれいな音で、低い音から高い音まで自在に操る演奏に聴き惚れました。

あと、「ここにいる方は誰も知らないであろうアニソン」をやると言われて、なんと「トップをねらえ!」のメドレーを演奏されました。これがまた素晴らしい演奏でした。

photo

Cominの人たち

これは岩国駅のステージでやっていた Jazzlive Comin のよく出られているメンバによるバンド。

photo

チケット

チケットがコースタになっていて、後で使えるという面白いアイディア。アイディアを持っている人がたくさん関わっているんでしょうね。

Tags: 生活 音楽

トップ
Copyright © 2021 KITADAI, Yukinori. All rights reserved.