]> code.delx.au - gnu-emacs-elpa/blobdiff - counsel.el
Don't highlight that match in the file name part
[gnu-emacs-elpa] / counsel.el
index a27bc684ca5a0b92e8d2379dec657db79d5462a3..81c9c2565305731b00872aed8639b316c3d571d0 100644 (file)
@@ -144,8 +144,9 @@ Or the time of the last minibuffer update.")
             (ivy--sort-maybe
              cands))
            (setq counsel-grep-last-line nil)
-           (setq counsel--async-duration
-                 (time-to-seconds (time-since counsel--async-start)))
+           (when counsel--async-start
+             (setq counsel--async-duration
+                   (time-to-seconds (time-since counsel--async-start))))
            (let ((re (funcall ivy--regex-function ivy-text)))
              (unless (stringp re)
                (setq re (caar re)))
@@ -1496,6 +1497,29 @@ the command."
       (unless res
         (goto-char init-point)))))
 
+;;** `counsel-grep-or-swiper'
+(defcustom counsel-grep-swiper-limit 300000
+  "When the buffer is larger than this, use `counsel-grep' instead of `swiper'."
+  :type 'integer
+  :group 'ivy)
+
+;;;###autoload
+(defun counsel-grep-or-swiper ()
+  "Call `swiper' for small buffers and `counsel-grep' for large ones."
+  (interactive)
+  (if (and (buffer-file-name)
+           (not (buffer-narrowed-p))
+           (not (ignore-errors
+                  (file-remote-p (buffer-file-name))))
+           (> (buffer-size)
+              (if (eq major-mode 'org-mode)
+                  (/ counsel-grep-swiper-limit 4)
+                counsel-grep-swiper-limit)))
+      (progn
+        (save-buffer)
+        (counsel-grep))
+    (swiper--ivy (swiper--candidates))))
+
 ;;** `counsel-recoll'
 (defun counsel-recoll-function (string)
   "Grep in the current directory for STRING."