summaryrefslogtreecommitdiff
path: root/config/essentials/nvim/after/plugin/luasnip.lua
blob: 276854c8fde9002c1579a029f06a0ac432475a37 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local isn = ls.indent_snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local d = ls.dynamic_node
local r = ls.restore_node
local events = require("luasnip.util.events")
local ai = require("luasnip.nodes.absolute_indexer")
local extras = require("luasnip.extras")
local l = extras.lambda
local rep = extras.rep
local p = extras.partial
local m = extras.match
local n = extras.nonempty
local dl = extras.dynamic_lambda
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local conds = require("luasnip.extras.expand_conditions")
local postfix = require("luasnip.extras.postfix").postfix
local types = require("luasnip.util.types")
local parse = require("luasnip.util.parser").parse_snippet

-- keymaps
vim.keymap.set({"i", "s"}, "<C-k>", "<Plug>luasnip-expand-or-jump", { noremap = true })
vim.keymap.set({"i", "s"}, "<C-j>", "<Plug>luasnip-jump-prev", { noremap = true })
vim.keymap.set({"i", "s"}, "<C-l>", "<Plug>luasnip-next-choice", { noremap = true })
vim.keymap.set("n", "<leader><leader>s", function()
	ls.cleanup()
	vim.cmd("source ~/.config/nvim/after/plugin/luasnip.lua")
	print("snippets reloaded.")
end, { noremap = true })

ls.add_snippets("lua", {
	-- print
	s("pt", fmt([[print("{}")]], { i(1, "Hello World!") })),
	-- local function
	parse("lf", "local $1 = function($2)\n\t$3\nend$0", {}),
	-- require
	s("lrq", fmt("local {} = require('{}')", { i(1), rep(1) })),
	parse("rq", "require('$1')$0", {}),
	parse("rqs", "require('$1').setup {\n\t$2\n}$0", {}),
	parse("use", "use('$1')$0", {}),
	-- function
	s("fn", fmt(
		[[
		function {}({})
			{}
		end
		]],
    { i(1), i(2), i(3) }
	), i(0)),
})

ls.add_snippets("html", {
	s("<!DOCTYPE>", {
		t({"<!DOCTYPE html>", "<html lang=\"en\">", "\t<head>", "\t\t<title>"}),
		i(1, "title"),
  		t("</title>"), i(2),
		t({"", "\t</head>", "\t<body>", "\t\t<h1>"}),
		i(3, "Header"),
		t("</h1>"), i(4),
		t({"", "\t</body>", "</html>"}), i(0)
	}),
})

ls.add_snippets("java", {
	-- function
	s("fn", fmt(
	[[
	{}static {} {} ({}) {{
		{}
	}}
	]],
	{
		c(1, {t "", t "public ", t "private "}),
		i(2, "type"),
		i(3, "f"),
		i(4), i(0)
	})),
	-- setter function
	s("sfn", fmt(
	[[
	{}void set_{} ({}) {{
		this.{} = {};
	}}
	]],
	{ c(1, {t "", t "public ", t "private "}),
	i(2), rep(2), rep(2), rep(2) })),
	-- getter function
	s("gfn", fmt(
	[[
	{}void get_{} () {{
		return this.{};
	}}
	]],
	{ c(1, {t "", t "public ", t "private "}), i(2), rep(2) })),
	s("psv", fmt(
	[[
	public class Main
	{{
		public static void main (String[] args)
		{{
			{}
		}}
	}}
	]],
	{ i(0) })),
	s("pt", fmt(
	[[
	System.out.{}("{}");
	{}
	]],
	{ c(1, {t "print", t "println", t "printf"}), i(2), i(0) })),
})