Archived
1
0
Fork 0
This repository has been archived on 2024-10-19. You can view files and clone it, but cannot push or open issues or pull requests.
emacs/org/xeft
2022-08-25 08:41:17 -04:00
..
module add xeft ; unused config -- kept for posterity and safety while evaluating search options 2022-08-25 08:41:17 -04:00
gitignore add xeft ; unused config -- kept for posterity and safety while evaluating search options 2022-08-25 08:41:17 -04:00
Makefile add xeft ; unused config -- kept for posterity and safety while evaluating search options 2022-08-25 08:41:17 -04:00
README.md add xeft ; unused config -- kept for posterity and safety while evaluating search options 2022-08-25 08:41:17 -04:00
xapian-lite.dll add xeft ; unused config -- kept for posterity and safety while evaluating search options 2022-08-25 08:41:17 -04:00
xeft.el add xeft ; unused config -- kept for posterity and safety while evaluating search options 2022-08-25 08:41:17 -04:00

Demo gif

Usage

To use Xeft the note searching interface, install it and type M-x xeft RET to bring up the panel. If the dynamic module doesnt already exists, you are prompted to download or compile it automatically. If you choose to download the module, no more action is required. If you want to compile the module locally, refer to the next section for prerequisites for compiling the module.

Once the xeft buffer is up, type the search phrase in the first line. Press C-n and C-p to go through each file. You can preview a file in another window by pressing SPC on a file, or click the file with the mouse. Press RET to open the file in the current window.

Directory xeft-directory stores note files, directory xeft-database stores the database. Xeft uses xeft-default-extension to create new files, and it ignores files with xeft-ignore-extension.

By default, Xeft only searches for first level files in xeft-directory, to make it search recursively, set xeft-recursive to t.

See the “xeft” customize group for more custom options and faces.

Queries

On search queries:

Since Xeft uses Xapian, it supports the query syntax Xapian supports:

AND, NOT, OR, XOR and parenthesizes
+word1 -word2      which matches documents that contains WORD1 but not
                   WORD2.
word1 NEAR word2   which matches documents in where word1 is near word2.
word1 ADJ word2    which matches documents in where word1 is near word2
                   and word1 comes before word2
"word1 word2"      which matches exactly “word1 word2”

Xeft deviates from Xapian in one aspect: consecutive phrases have implied AND between them. So word1 word2 word3 is actually seen as word1 AND word2 AND word3.

See https://xapian.org/docs/queryparser.html for Xapians official documentation on query syntax.

building the dynamic module

To build the module, you need to have Xapian installed. On Mac, it can be installed with macports by

sudo port install xapian-core

Then, build the module by

make PREFIX=/opt/local

Here /opt/local is the default prefix of macports, which is what I used to install Xapian. Homebrew and Linux users probably can leave it empty.

I cant test it but on windows you can get msys2 and mingw-w64-x86_64-xapian-core and make should just work. Thanks to pRot0ta1p for reporting this.

notdeft

I owe many thanks to the author of notdeft. I dont really know C++ or Xapian, without reading his code I wouldnt be able to write Xeft.

Also, if you want a more powerful searching experience, you will be happier using notdeft instead.

Xapian dynamic module

I wrote a xapian dynamic module that you can use too. Check it out at https://github.com/casouri/xapian-lite.