aboutsummaryrefslogtreecommitdiff

denote-fzf-lua

Neovim plugin that uses fzf-lua to search a directory of notes formatted with the Emacs Denote package’s file-naming scheme:

DATE==SIGNATURE--TITLE__KEYWORDS.EXTENSION

The nice custom table for Denote files is the only unique feature of this plugin. If you don’t care about that you should just configure fzf-lua alone however you like it.

Installation / Config

Example config via lazy.nvim

{
  "https://git.historia.vg/git/denote-fzf-lua",
  opts = {
    dir = "~/notes",

    search_fields = {
      path     = false,
      date     = true,
      time     = false,
      sig      = false,
      title    = true,
      keywords = true,
      ext      = false,
    },

    fzf_lua_opts = {
      winopts = {
        height = 0.85,
        width  = 0.80,
        row    = 0.35,
        col    = 0.50,
        preview = {
          layout = 'vertical',
          vertical = 'down:45%',
        },
      },
      fzf_opts = {
        ['--reverse']      = true,
        ['--no-info']      = true,
        ['--no-separator'] = true,
        ['--no-hscroll']   = true,
        ['-i']             = true,
      },
    },
  },
},

Dependencies

  • ibhagwan/fzf-lua - Neovim plugin
  • fzf - Fuzzy finder
  • (OPTIONAL) fd - Fast find replacement
  • (OPTIONAL) sd - Fast sed replacement
  • (OPTIONAL) qsv - Fast column replacement
  • (OPTIONAL) bat - Nicer preview than cat
  • (OPTIONAL) ripgrep - Required to search note contents
Arch Linux: sudo pacman -S fzf ripgrep fd sd bat
            yay -S qsv-bin

Debian: sudo apt install fzf ripgrep fd-find sd bat
        export PATH=/usr/lib/cargo/bin/:$PATH (to add `fd` to path)
        Install qsv from Github

If the optional dependencies are missing denote-fzf-lua falls back to standard Unix tools (find, sed, column).

:DenoteSearch command

" Searches filenames in `dir` with fzf and displays results as a table
:DenoteSearch files

" Standard rg search through file contents in `dir`.
" Nothing special about this, it's just a convenient command that uses the same fzf-lua options
:DenoteSearch contents

Multi-Directory Support

When used alongside simple-denote.nvim with multiple directories configured, denote-fzf-lua automatically follows the active directory set by :Denote dir. It reads from vim.g.denote_dir if set, falling back to the configured dir option. No additional configuration is needed.

License

GNU AGPL