首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用前向/后向重复搜索的粘性高亮显示

如何禁用前向/后向重复搜索的粘性高亮显示
EN

Stack Overflow用户
提问于 2013-06-20 01:56:14
回答 2查看 542关注 0票数 1

不用黑源或者创建我自己的搜索-重复.函数,是否可以禁用isearch-repeat-forwardisearch-repeat-backward的默认粘性高亮显示?

我使用的是Emacs的最新开发版本。

以下是一些想法(正在进行中的工作),但它们不能解决这个问题-- isearch-mode-end-hook似乎没有与isearch-repeat-forwardisearch-repeat-backward相关联。如果在退出lawlist-lazy-highlight-cleanup时,任何键盘输入(转义和/或箭头键)都能瞬间链接到isearch-repeat,那就太好了。

代码语言:javascript
复制
(add-hook 'isearch-mode-end-hook 'my-isearch-end)
(defun my-isearch-end ()
  "Custom behaviors for `isearch-mode-end-hook'."
  (when isearch-mode-end-hook-quit
    (lawlist-lazy-highlight-cleanup t)))

(defun lawlist-lazy-highlight-cleanup (&optional force)
  "Stop lazy highlighting and remove extra highlighting from current buffer.
FORCE non-nil means do it whether or not `lazy-highlight-cleanup'
is nil.  This function is called when exiting an incremental search if
`lazy-highlight-cleanup' is non-nil."
  (interactive '(t))
  (if (or force lazy-highlight-cleanup)
      (while isearch-lazy-highlight-overlays
        (delete-overlay (car isearch-lazy-highlight-overlays))
        (setq isearch-lazy-highlight-overlays
              (cdr isearch-lazy-highlight-overlays))))
  (when isearch-lazy-highlight-timer
    (cancel-timer isearch-lazy-highlight-timer)
    (setq isearch-lazy-highlight-timer nil))
(lawlist-isearch-dehighlight))

(defun lawlist-isearch-dehighlight ()
(interactive)
  (when isearch-overlay
    (delete-overlay isearch-overlay)))

(defun lawlist-isearch-repeat-forward ()
  "Repeat incremental search forwards."
  (interactive)
  (isearch-repeat 'forward)
;; need to add something that says sit-for any keyboard input before cleanup occurs.
;; (read-event) ;; read-char-exclusive | read-char | read-event
(sit-for 60)
(lawlist-lazy-highlight-cleanup))

(defun lawlist-isearch-repeat-backward ()
  "Repeat incremental search backwards."
  (interactive)
  (isearch-repeat 'backward)
;; need to add something that says sit-for any keyboard input before cleanup occurs.
;; (read-event) ;; read-char-exclusive | read-char | read-event
(sit-for 60)
(lawlist-lazy-highlight-cleanup))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-20 20:12:21

使用isearch.el的源代码作为指南,下面的OSX附加密钥分配消除了上面问题中概述的粘性突出显示的问题。

代码语言:javascript
复制
(define-key global-map [?\s-f] 'isearch-forward)
(define-key esc-map [?\s-f] 'isearch-forward-regexp)
(define-key minibuffer-local-isearch-map [?\s-f] 'isearch-forward-exit-minibuffer)
(define-key isearch-mode-map [?\s-f] 'isearch-repeat-forward)

(define-key global-map [?\s-F] 'isearch-backward)
(define-key esc-map [?\s-F] 'isearch-backward-regexp)
(define-key minibuffer-local-isearch-map [?\s-F] 'isearch-reverse-exit-minibuffer)
(define-key isearch-mode-map [?\s-F] 'isearch-repeat-backward)
票数 0
EN

Stack Overflow用户

发布于 2013-06-21 07:16:15

虽然这并没有回答你的问题,但它可能会做你最终想要解决的事情:

代码语言:javascript
复制
(define-key isearch-mode-map [(control up)]   'isearch-ring-retreat)
(define-key isearch-mode-map [(control down)] 'isearch-ring-advance)

输入C后,可以使用C-up和C-down移动搜索历史记录.所以C-S C-up会做你想做的事情:重复最后一次搜索,而不留下“粘性”覆盖。

还请参阅搜索-环更新,以进一步定制此如果您愿意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17204127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档