dired-do-search не использует isearch-face
Как можно с помощью dired-do-search использовать более видимое isearch-лицо или хотя бы выделить весь найденный токен?
Мигающий курсор был бы альтернативой, если бы он не отвлекал при редактировании.
переложение
Если я бегу isearch-forward
в строке "привет" эта строка выделяется во время поиска, как вы видите на изображении ниже.
Если вместо этого я нахожусь в режиме Dired(-x), пометьте файл, как показано на следующем рисунке,
затем запустите dired-do-search для строки "hello", строка найдена, но она не выделена, как вы видите ниже.
Как я могу заставить 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)))