howmの検索にripgrepを使う

Windows版emacsでhowmを使う場合気をつけることは、文字コードです。howmに限らないですが。

Linux版と併用するためにはUTF-8/LFに統一したほうがトラブルが少ないですが、Windows環境では色々と苦労します。

howmのコンテンツを検索するとき、デフォルトであるelisp版grepでの検索は尋常ではないほど遅く、使い物になりませんのでgrepを使いたいところですが、筆者の環境ではうまく動かなかったのでripgrep (rg)を使うように設定しています。

色々試行錯誤した結果、日本語のテキストも問題なく検索できるようになりました。まだcmigemoが使えていませんが一旦現状の設定を公開します。

(prefer-coding-system 'utf-8-unix)
(set-language-environment 'utf-8)
(setq howm-view-use-grep t) ; grepコマンドで検索する
(setq howm-view-grep-command "rg") ; grepコマンドとしてripgrepを使用する
(setq howm-view-grep-option "-nH --no-heading --color never")
(setq howm-view-grep-extended-option nil)
(setq howm-view-grep-fixed-option "-F")
(setq howm-view-grep-expr-option nil)
(setq howm-view-grep-file-stdin-option nil)
(modify-coding-system-alist 'process "rg.exe" (cons 'utf-8-dos 'cp932))

;; howmの新規ファイル作成時にUTF-8/LFにする
(defun set-custom-new-file-coding-system ()
  (with-current-buffer (current-buffer)
    (cond
     ((string-match "\\.d?howm\\'" buffer-file-name)
      (setq buffer-file-coding-system 'utf-8-unix))
     (t (setq buffer-file-coding-system 'utf-8-unix)))))
(add-hook 'find-file-not-found-functions 'set-custom-new-file-coding-system)

尚、ripgrepはscoopを利用してインストールしました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です