lsimmons2 / debounce-grep

program that searches files like grep but debounces the search as user types

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Debounce Grep

This is a program that lets the user search files like with grep but debounces the search as the user types the search term. I wrote it to help me quickly find terms in files of notes that I take but it can be used for code as well.

The UI is terminal-based and is somewhat React-inspired as the different "elements"- paths of the files with matches, text in the files that contain the matches - are represented in the program by objects that are passed their state from "parent" elements and that each have a render() method.

Installation

  1. go get github.com/lsimmons2/debounce-grep

  2. cd $GOPATH/src/github.com/lsimmons2/debounce-grep/debounce-grep

  3. go install

Usage

$debounce_grep (or whatever alias you like - I use dg)

As you type, files that contain the search term will appear below the prompt where the search term is being typed. You then navigate them by using Ctrl+J (down) and Ctrl+K (up) and open and close them with Ctrl+Space to see the matches highlighted in the file text. The search term being typed can be traversed with Ctrl+F (forward) and Ctrl+B (backwards). These keyboard controls are vim/emacs-inspired and are currently hard-coded.

Demo

screencast

Config options

Each config option can be specified with flags or environmental variables. Flags will override environmental variables and if neither a flag nor an environmental variable is specified for an option a default value will be used. For config options that can take multiple values you can either pass multiple flags (--ignore .git --ignore *.pyc) or have multiple values in an environmental variable separated by : (export DEBOUNCE_GREP_PATTERNS_TO_IGNORE=".git:*.pyc). Flags can be specified in any of the following, equivalent, syntaxes: -ignore=*.pyc, -ignore *.pyc, --ignore=*.pyc, or --ignore *.pyc.

Option Environmental Variable Flag Default value Multiple Values Description
Debounce Time (ms) DEBOUNCE_GREP_DEBOUNCE_TIME_MS ms 200 No Time that program will wait after last character is typed before searching files.
Max Lines to Print Per Matched File DEBOUNCE_GREP_MAX_LINES_PER_FILE lines 5 No Maximum number of lines with matches that will be shown for each file.
Directories to Search DEBOUNCE_GREP_DIRS_TO_SEARCH dir Current working directory Yes Directories to search.
File Shebangs DEBOUNCE_GREP_FILE_SHEBANGS shebang None - files do not need a shebang to be searched Yes "Shebangs" that files will need to be searched. I put in because I store a lot of my notes in files with a *study shebang at the top of the file and often use this program for searching just these files.
Patterns of Files/Directories to Ignore DEBOUNCE_GREP_PATTERNS_TO_IGNORE ignore .git, venv, node_modules, bower_components, *.png, *.jpg, *.jpeg, and *.pyc Yes Glob patterns to specify files and directories not to search. Follows standard described here.
Should Print Whole Lines DEBOUNCE_GREP_PRINT_WHOLE_LINES whole-lines false No Whether to print the entire length of each file line with a match in it. If false, text will be cut off at the end of the terminal window.

About

program that searches files like grep but debounces the search as user types


Languages

Language:Go 100.0%