summaryrefslogtreecommitdiffstats
path: root/plugin/50-lorem.lua
blob: 5bed13ea79120124fada1cc0e99eb802275daa46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
--
-- 50-lorem.lua
--
-- * Defines a command to insert a "lorem ipsum" string of a given word count, cycling through a
--   fixed pool of words.
--
-- User commands:
--   `Lorem {n}`: put an n-words long "lorem ipsum" string
--

local lorem_words = vim.split(
	vim.trim([[
		lorem ipsum dolor sit amet consectetur adipiscing elit morbi vestibulum sem risus vitae
		pulvinar sem rhoncus vel vestibulum non nisl varius luctus ex in facilisis mauris nam non ex
		nisi suspendisse posuere fringilla dictum vestibulum id dignissim eros etiam vulputate mi
		nisi aliquam rutrum libero tempor sed fusce nec blandit dui integer et tincidunt velit etiam
		lacinia tortor eu viverra malesuada ut vitae libero pharetra sollicitudin urna nec dignissim
		libero donec ex neque iaculis eget volutpat id faucibus vel urna nullam egestas felis dolor
		ac dignissim ligula ultricies et integer molestie rhoncus ante maximus bibendum vestibulum
		luctus turpis eu commodo mollis quam nunc dictum nunc et iaculis justo erat ullamcorper nulla
		aenean ac magna dui sed vitae viverra tortor hendrerit sagittis sem
	]]),
	"%s+",
	{ trimempty = true }
)

-- Returns an n-words long "lorem ipsum" string, cycling through `lorem_words`.
local function get_lorem(n)
	local words = {}
	for i = 1, n do
		words[i] = lorem_words[(i - 1) % #lorem_words + 1]
	end
	return table.concat(words, " ")
end

----------------------------------------------------------------------------------------------------

vim.api.nvim_create_user_command("Lorem", function(opts)
	vim.api.nvim_put({ get_lorem(tonumber(opts.args)) }, "c", true, true)
end, { desc = "Put lorem ipsum string", nargs = 1 })