From 651e05c30a762dbcd3377a8915b4e57b99cc154e Mon Sep 17 00:00:00 2001 From: Jidbo Date: Thu, 14 Apr 2022 20:38:59 +0200 Subject: [PATCH] add telescope functions for notes --- nvim/init.lua | 1 + nvim/lua/mappings.lua | 22 ++++---------------- nvim/lua/notes.lua | 47 +++++++++++++++++++++++++++++++++++++++++++ nvim/lua/utils.lua | 21 +++++++++++++++++++ 4 files changed, 73 insertions(+), 18 deletions(-) create mode 100644 nvim/lua/notes.lua create mode 100644 nvim/lua/utils.lua diff --git a/nvim/init.lua b/nvim/init.lua index 1653d35..3b5e55b 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -10,3 +10,4 @@ require('autocompletion') require('treesitterconfig') require('filemanager') require('statusline') +require('notes') diff --git a/nvim/lua/mappings.lua b/nvim/lua/mappings.lua index e7ee251..5f2c6b2 100644 --- a/nvim/lua/mappings.lua +++ b/nvim/lua/mappings.lua @@ -1,21 +1,4 @@ -local map = function(key) - -- get the extra options - local opts = {noremap = true} - for i, v in pairs(key) do - if type(i) == 'string' then opts[i] = v end - end - - -- basic support for buffer-scoped keybindings - local buffer = opts.buffer - opts.buffer = nil - - if buffer then - vim.api.nvim_buf_set_keymap(0, key[1], key[2], key[3], opts) - else - vim.api.nvim_set_keymap(key[1], key[2], key[3], opts) - end -end - +local map = require("utils").map -- search for visual selection map {'v', '//', 'y/"'} map {'n', 'H', '^'} @@ -44,6 +27,9 @@ map {'n', 'f', 'Telescope find_files'} map {'n', 'l', 'Telescope live_grep'} map {'n', ' gy', 'Telescope treesitter'} +map {'n', 'wm', 'lua require("notes").list()'} +map {'n', 'wt', 'lua require("notes").tags()'} + -- neo formatter map {'n', 'p', ':Neoformat'} diff --git a/nvim/lua/notes.lua b/nvim/lua/notes.lua new file mode 100644 index 0000000..839507b --- /dev/null +++ b/nvim/lua/notes.lua @@ -0,0 +1,47 @@ +local finders = require "telescope.finders" +local make_entry = require "telescope.make_entry" +local pickers = require "telescope.pickers" +local sorters = require "telescope.sorters" +local conf = require("telescope.config").values +local flatten = vim.tbl_flatten + +local M = {} + +function M.list() + require("telescope.builtin").find_files { + prompt_title = "Notes", + cwd = "~/.notes" + } +end + +function M.tags() + local opts = {} + + local vimgrep_arguments = conf.vimgrep_arguments + opts.cwd = vim.fn.expand("~/.notes") + + local additional_args = {} + if opts.additional_args ~= nil and type(opts.additional_args) == "function" then + additional_args = opts.additional_args(opts) + end + + local live_grepper = finders.new_job(function(prompt) + if not prompt or prompt == "" then + prompt = "#[A-z]+" + else + prompt = "#" .. prompt + end + + local command = flatten { vimgrep_arguments, additional_args, "--", prompt } + return command + end, make_entry.gen_from_vimgrep(opts), opts.max_results, opts.cwd) + + pickers.new(opts, { + prompt_title = "Note Tags", + finder = live_grepper, + previewer = conf.grep_previewer(opts), + sorter = sorters.highlighter_only(opts), + }):find() +end + +return M diff --git a/nvim/lua/utils.lua b/nvim/lua/utils.lua new file mode 100644 index 0000000..080a58a --- /dev/null +++ b/nvim/lua/utils.lua @@ -0,0 +1,21 @@ + +local M = {} +function M.map(key) + -- get the extra options + local opts = {noremap = true} + for i, v in pairs(key) do + if type(i) == 'string' then opts[i] = v end + end + + -- basic support for buffer-scoped keybindings + local buffer = opts.buffer + opts.buffer = nil + + if buffer then + vim.api.nvim_buf_set_keymap(0, key[1], key[2], key[3], opts) + else + vim.api.nvim_set_keymap(key[1], key[2], key[3], opts) + end +end + +return M