Markdown: Add some tools to work with markdown files
- Add links snippet - Add Telescope picker for headers
This commit is contained in:
parent
6174a9dcbc
commit
04072337f4
3 changed files with 77 additions and 3 deletions
50
ftplugin/markdown.lua
Normal file
50
ftplugin/markdown.lua
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
local keymap = vim.keymap
|
||||||
|
|
||||||
|
-- Picker for markdown headers
|
||||||
|
local pickers = require("telescope.pickers")
|
||||||
|
local finders = require("telescope.finders")
|
||||||
|
local conf = require("telescope.config").values
|
||||||
|
local actions = require("telescope.actions")
|
||||||
|
local action_state = require("telescope.actions.state")
|
||||||
|
|
||||||
|
local function markdown_headings()
|
||||||
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
|
||||||
|
local headings = {}
|
||||||
|
|
||||||
|
for lnum, line in ipairs(lines) do
|
||||||
|
local heading = line:match('^(#+%s+.+)$')
|
||||||
|
if heading then
|
||||||
|
table.insert(headings, {
|
||||||
|
lnum = lnum,
|
||||||
|
text = heading,
|
||||||
|
display = string.format("%4d: %s", lnum, heading)
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
pickers.new({}, {
|
||||||
|
prompt_title = 'Markdown Headings',
|
||||||
|
finder = finders.new_table {
|
||||||
|
results = headings,
|
||||||
|
entry_maker = function(entry)
|
||||||
|
return {
|
||||||
|
value = entry,
|
||||||
|
display = entry.display,
|
||||||
|
ordinal = entry.text,
|
||||||
|
lnum = entry.lnum,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
},
|
||||||
|
sorter = conf.generic_sorter({}),
|
||||||
|
attach_mappings = function(prompt_bufnr, map)
|
||||||
|
actions.select_default:replace(function()
|
||||||
|
actions.close(prompt_bufnr)
|
||||||
|
local selection = action_state.get_selected_entry()
|
||||||
|
vim.api.nvim_win_set_cursor(0, {selection.value.lnum, 0})
|
||||||
|
end)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
}):find()
|
||||||
|
end
|
||||||
|
|
||||||
|
keymap.set("n", "<leader>fdh", markdown_headings, { desc = "Grep: Markdown headings" })
|
||||||
22
lua/custom/snippets/markdown.lua
Normal file
22
lua/custom/snippets/markdown.lua
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
require("luasnip.session.snippet_collection").clear_snippets "markdown"
|
||||||
|
local ls = require "luasnip"
|
||||||
|
local s = ls.snippet
|
||||||
|
local t = ls.text_node
|
||||||
|
local i = ls.insert_node
|
||||||
|
local f = ls.function_node
|
||||||
|
|
||||||
|
ls.add_snippets(
|
||||||
|
"markdown",
|
||||||
|
{
|
||||||
|
s("link", {
|
||||||
|
t("["), i(1, "description"), t("]("),
|
||||||
|
f(function()
|
||||||
|
local clip = vim.fn.getreg("+")
|
||||||
|
if clip == "" then
|
||||||
|
return "url"
|
||||||
|
end
|
||||||
|
return clip
|
||||||
|
end),
|
||||||
|
t(")"), i(0),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
@ -11,11 +11,12 @@ pcall(require("telescope").load_extension, "fzf")
|
||||||
local function live_grep_with_glob()
|
local function live_grep_with_glob()
|
||||||
vim.ui.input({
|
vim.ui.input({
|
||||||
prompt = "Glob pattern: ",
|
prompt = "Glob pattern: ",
|
||||||
default = "", -- Optional default value
|
default = "/home/user/Work/root/ivideon/cloud_analytics/person_detection_node", -- Optional default value
|
||||||
}, function(input)
|
}, function(input)
|
||||||
if input then
|
if input then
|
||||||
require('telescope.builtin').live_grep({
|
require('telescope.builtin').live_grep({
|
||||||
glob_pattern = input
|
-- glob_pattern = input,
|
||||||
|
search_dirs = { input }
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
@ -23,6 +24,7 @@ end
|
||||||
|
|
||||||
local builtin = require("telescope.builtin")
|
local builtin = require("telescope.builtin")
|
||||||
local keymap = vim.keymap
|
local keymap = vim.keymap
|
||||||
|
|
||||||
-- Create a Neovim command
|
-- Create a Neovim command
|
||||||
vim.api.nvim_create_user_command('TelescopeGrepGlob', live_grep_with_glob, {})
|
vim.api.nvim_create_user_command('TelescopeGrepGlob', live_grep_with_glob, {})
|
||||||
|
|
||||||
|
|
@ -33,5 +35,5 @@ keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "FZF: find string in c
|
||||||
keymap.set("n", "<leader>fb", builtin.buffers, { desc = "FZF: display opened buffers" })
|
keymap.set("n", "<leader>fb", builtin.buffers, { desc = "FZF: display opened buffers" })
|
||||||
keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "FZF: display help tags" })
|
keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "FZF: display help tags" })
|
||||||
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "FZF: display TODO comments" })
|
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "FZF: display TODO comments" })
|
||||||
keymap.set("n", "<leader>fds", builtin.lsp_document_symbols, { desc = "FZF: Document symbols" })
|
keymap.set("n", "<leader>fds", builtin.lsp_document_symbols, { desc = "Grep: Document symbols" })
|
||||||
keymap.set('n', '<leader>fp', live_grep_with_glob, { desc = 'Live grep with glob pattern' })
|
keymap.set('n', '<leader>fp', live_grep_with_glob, { desc = 'Live grep with glob pattern' })
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue