トップ 最新 追記

活動日誌


2022-05-30

[Emacs] consult-buffer + recentf のプレビューで、特定ファイルのみ自動プレビューしない

consult-bufferではrecentfと組み合わせることで 「最近開いたファイル」を補完対象とすることができますが、このときこのファイルにカーソルを合わせると 自動プレビューがなされます。

これは便利なのですが、EasyPGを使って*.gpgファイルを開いていると、gpgファイルにカーソルが合わさった瞬間にパスフレーズ入力が要求され、操作を阻害されてしまいます。

gpgファイルは自動プレビュー対象としないようにするにはどうしたらよいか調べていたのですが、 以下のようにすることで解決できました。

(defun my/consult-preview-exclude-by-file-name (orig-fun name)
  (let ((excluded (and name
                       (string-match-p "\.gpg$"
                                       (abbreviate-file-name (expand-file-name name))))))
    (if excluded
        (progn
          (message "not previewed")
          nil)
      (apply orig-fun (list name)))))

(advice-add 'consult--find-file-temporarily :around #'my/consult-preview-exclude-by-file-name)

consult-preview-max-sizeの設定で自動プレビュー可否の判定がされることはわかっていたので、 同じように処理をするにはどうしたらよいかと考えた結果、adviceでconsult--find-file-temporarilyをスキップすればよさそう というところに行きつきました。


2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ 最新