Quite often I'm trying to find something that I jotted down in one of my many org-mode files somewhere. This usually amounts to something like
M-x rgreg RET foo RET *.org RET ~/ RET
Then I wait until grep has finished rummaging trough my home directory. Wouldn't it be nice if there was something like fulltext search for org-mode files, i.e. if there was a tool that would index all my files and provide for a fast search capability?
Well, enter Code Search
sudo apt install codesearch
Then build an index of all your org-mode files
find . -type f \( -name \*.org \) -print | xargs cindex
When searching I'm old school. I want the tool to behave just like
rgrep : give me a buffer where I can navigate through the hits.
That's why I invoke
rgrep in a round-about way:
C-u C-u M-x rgrep RET C-a csearch -n foo RET
This will basically re-use all of the
rgrep functionality but use
csearch as the actual program to execute.
I'm sure this could be improved with a tiny bit of elisp or you could explore a dedicated package named emacs-codesearch. I haven't tried it but from reading the source it doesn't seem to provide that standard grep mode buffer.
In the end I came up with the following snippet in my Emacs
config. This gives me a new function
cgrep that simply invokes
csearch with the right options and dumps the result in a compilation
buffer, just like
(defun cgrep (regexp) (interactive (list (grep-read-regexp))) (compilation-start (format "csearch -n %s" regexp) 'grep-mode))
codesearch you get blazingly fast search, that's for sure.
There is a downside however: The list of files that you will be
searching is fixed at the time you create the index. So if you want to
search only a part of your org-mode files you will have to re-create
the index before searching, which of course makes the search much
slower than just using plain old