dired-do-search не использует isearch-face

Как можно с помощью dired-do-search использовать более видимое isearch-лицо или хотя бы выделить весь найденный токен?

Мигающий курсор был бы альтернативой, если бы он не отвлекал при редактировании.

переложение

Если я бегу isearch-forward в строке "привет" эта строка выделяется во время поиска, как вы видите на изображении ниже.

image1

Если вместо этого я нахожусь в режиме Dired(-x), пометьте файл, как показано на следующем рисунке,

image2

затем запустите dired-do-search для строки "hello", строка найдена, но она не выделена, как вы видите ниже.

image3

Как я могу заставить dired-do-search использовать то же лицо, что и isearch-forward? В этом примере легко определить курсор, но на большом дисплее с интенсивным использованием font-lock, и после выбора более мягкого, ненавязчивого лица для курсора, довольно трудно определить местоположение поиска строка.

Обновить

Является ли ответ ниже кратчайшим путем для решения этой проблемы?

1 ответ

Возможно, вы ищете dired-do-isearch или же dired-do-isearch-regexp

Если вы хотите такое же чувство dired-do-searchпохоже, вы могли бы также сделать defun, который вызывает tags-loop-continue с обычаем tags-loop-operate а также tags-loop-scan операции.

Вот что я придумал:

(defvar dired-do-search-overlay nil)
(defvar dired-do-search-region nil)
(defun dired-do-search (regexp)
  "Search through all marked files for a match for REGEXP.
Stops when a match is found.
To continue searching for next match, use command \\[tags-loop-continue]."
  (interactive "sSearch marked files (regexp): ")
  (setq 
   tags-loop-operate `(progn 
            (if dired-do-search-overlay
                (delete-overlay dired-do-search-overlay))
            (setq dired-do-search-overlay 
                  (make-overlay (car dired-do-search-region)
                        (cadr dired-do-search-region)))
            (overlay-put dired-do-search-overlay
                     'face isearch-face)
            (overlay-put dired-do-search-overlay
                     'priority 1001)    
            nil)
   tags-loop-scan `(progn
             (if (re-search-forward ',regexp nil t)
             (setq dired-do-search-region 
                   (list (match-beginning 0)
                     (match-end 0)))
               (if dired-do-search-overlay 
               (delete-overlay dired-do-search-overlay))
               nil)))
  (tags-loop-continue 
   (or '(dired-get-marked-files nil nil 'dired-nondirectory-p) t)))
Другие вопросы по тегам