首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在isearch- Update -post-hook中更新minibuffer

在isearch- Update -post-hook中更新minibuffer
EN

Stack Overflow用户
提问于 2014-08-24 04:11:49
回答 1查看 80关注 0票数 0

在寻找比找到"1 of n" result for Emacs search更简单的解决方案时,我想出了以下包

https://github.com/nordlow/elisp/blob/master/mine/indexed-isearch.el

但是所显示的信息被延迟了一个击键。如何解决这个问题?我的猜测是,我应该调用某个函数来更新isearch-cound-message末尾的微型缓冲区,或者在显示微型缓冲区中的信息的isearch逻辑之前将更新注入到isearch-message-suffix。

有人知道吗?

EN

回答 1

Stack Overflow用户

发布于 2014-08-24 05:22:21

代码语言:javascript
复制
(defun isearch-count-message ()
  (when isearch-success
   (let* ((string isearch-string))
     (when (>= (length string) 1)
       (let ((before (count-matches string (point-min) (point)))
             (after (count-matches string (point) (point-max))))
         (setq isearch-message-suffix-add
               (propertize (format " (%d of %d)"
                                   before
                                   (+ before
                                      after))
                           'face 'shadow)))))))

(add-hook 'isearch-update-post-hook 'isearch-count-message)

初始消息是由isearch-string提供的,它在输入之前就是您上次使用的消息。这就是为什么在重新输入之前,你会看到一个错误的号码。这可以很容易地纠正。

最初的坏消息可以通过在名为isearch-exit-mode的钩子中重置isearch-message-suffix-add的值来纠正。

更新:

这段代码是最好的。我今天看过了。编辑字符串与isearch-string不同,但它被延迟了1个字符。为了有一个正确的显示,需要键入C-s或C-r两次,以使edit-string与isearch-string相同。Isearch不会在外部环境中导出值为edit-string的变量。

代码语言:javascript
复制
(defun isearch-display-count-matches ()
  (if isearch-just-started
      (setq isearch-message-suffix-add "")
      (let ((before (count-matches isearch-string (point-min) (point)))
            (after (count-matches isearch-string (point) (point-max))))
        (setq isearch-message-suffix-add
              (propertize (format " -%s- (%d of %d)" isearch-string
                                  before (+ before after))
                          'face 'isearch-face)))))

(add-hook 'isearch-update-post-hook 'isearch-display-count-matches 'end t)

isearch-mode-end-hook中,我插入了如下内容:

代码语言:javascript
复制
(setq isearch-message-suffix-add "")
(remove-hook 'isearch-update-post-hook 'isearch-display-count-matches t)

这对我来说很好--它显示isearch-string,以了解在每个时刻要期待什么。

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

https://stackoverflow.com/questions/25465944

复制
相关文章

相似问题

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