consult-ripgrepのmigemo化

consult-ripgrepmigemo化に取り組んだ方がいらっしゃった。 www.yewton.net

しかしながら、上記の記事で紹介されている設定では手元の環境でうまく動かなかったので、少し修正してみたという話。

(require 'consult)
(defvar consult--migemo-regexp "")
(defun consult--migemo-regexp-compiler (input type ignore-case)
  (setq consult--migemo-regexp
        (mapcar #'migemo-get-pattern (consult--split-escaped input)))
  (cons (mapcar (lambda (x) (consult--convert-regexp x type))
                consult--migemo-regexp)
        (lambda (str)
          (consult--highlight-regexps consult--migemo-regexp str))))
(setq consult--regexp-compiler #'consult--migemo-regexp-compiler)

ひとまずこれで動くようになった。ただし以下のmigemo関連の設定を事前にしておくこと。

(require 'migemo)
(setq migemo-directory "/usr/share/cmigemo/utf-8")
(setq migemo-command (executable-find "cmigemo"))
(setq migemo-options '("-q" "--emacs" "--nonewline"))
(setq migemo-dictionary (expand-file-name "migemo-dict" migemo-directory))
(setq migemo-coding-system 'utf-8-unix) ;この指定が極めて重要
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(add-hook 'after-init-hook #'migemo-init)