Home

Awesome

blink-search

<p align="center"> <br><strong>In the blink of an eye, the search is complete!</strong> </p> <br>

blink-search is the fastest multi-source search framework for Emacs.

It uses Python's threading technology to search candidates and offloads all the computation to external Python process, hence, the Emacs session itself stays always responsive, as it has very few things to do, such as, render candidates of visible area.

blink-search will provide smooth completion experience without compromise to slow down emacs' performance.

<p align="center"> <br>Show search results in split window </p> <img src="./images/blink-search.png"> <p align="center"> <br>Show search results in popup window </p> <img src="./images/blink-search-posframe.png">

Installation

  1. Install Emacs 28 and above versions
  2. Install Python dependencies: pip3 install epc requests
  3. Install external tools:
  1. Clone or download this repository (path of the folder is the <path-to-blink-search> used below).
  2. Add following code in your ~/.emacs:
(add-to-list 'load-path "<path-to-blink-search>")

(require 'blink-search)

Usage

  1. Start blink-search: M-x blink-search
  2. C-u M-x blink-search to search current symbol
  3. Typed keyword to search from all backends
  4. Search current buffer when keyword starts with #
  5. Search current directory when keyword starts with !
  6. Press Ctrl + m to select candidate or press Alt + QuickKey to select candidate match QuickKey
Grep BufferGrep Directory
<img src="./images/blink-search-grep-buffer.png" width="400"><img src="./images/blink-search-grep-directory.png" width="400">

Keymap

KeyCommandDescription
C + nblink-search-candidate-select-nextSelect next candidate item
C + pblink-search-candidate-select-prevSelect previous candidate item
M + nblink-search-backend-select-nextSelect next backend item
M + pblink-search-backend-select-prevSelect previous backend item
M + jblink-search-candidate-group-select-nextSelect next candidate group item
M + kblink-search-candidate-group-select-prevSelect previous candidate group item
C + jblink-search-parentJump to parent directory of select candidate item
C + lblink-search-continueContinue search new directory of current candidate item
C + mblink-search-doExecute action for selected candidate item
C + M + mblink-search-previewPreview selected candidate item
C + M + nblink-search-preview-nextPreview next candidate item
C + M + pblink-search-preview-nextPreview previous candidate item
M + wblink-search-copyCopy text of selected candidate item
C + gblink-search-quitQuit

Option

Search Backend

blink-search has completed the following search backends:

Report bug

Please use emacs -q and load a minimal setup with only blink-search to verify that the bug is reproducible. If emacs -q works fine, probably something is wrong with your Emacs config.

If the problem still exists, please report it here with *blink-search* buffer content, it contains many clues that can help us locate the problem faster.

If you get a segfault error, please use the following way to collect crash information:

  1. Install gdb and turn on option blink-search-enable-debug
  2. Use the command blink-search-stop-process to stop the current process
  3. Restart blink-search, send issue with *blink-search* buffer content when next crash

Contributor

<a href = "https://github.com/manateelazycat/blink-search/graphs/contributors"> <img src = "https://contrib.rocks/image?repo=manateelazycat/blink-search"/> </a>