about summary refs log tree commit diff
path: root/lua/sketchbook/config.lua
blob: 102161f675ae810d4459c16c1a838a77d4135dd6 (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
local M = {}

-- Default configuration
M.defaults = {
	notes_directory = "~/notes",
	templates_directory = "~/notes/templates/",
	keymaps = {
		create_note = "<leader>tnn",
		update_index = "<leader>tui",
		search_notes = "<leader>tns",
		list_notes = "<leader>tnl",
		select_template = "<leader>tmp",
		toggle_quick_note = "<leader>qc",
		create_quick_note = "<leader>nq",
		open_entire_quick_note = "<leader>qo",
		commit_notes = "<leader>tgc",
		push_notes = "<leader>tgp",
	},
}

M.config = {}

function M.setup(user_config)
	M.config = vim.tbl_deep_extend("force", {}, M.defaults, user_config or {})
	vim.g.notes_directory = M.config.notes_directory
	vim.g.notes_templates_dir = M.config.templates_directory
	M.set_keymaps()
end

function M.set_keymaps()
	local keymaps = M.config.keymaps

	vim.api.nvim_set_keymap(
		"n",
		keymaps.create_note,
		':lua require("sketchbook.create_note").create_new_note()<CR>',
		{ noremap = true, silent = true, desc = "Create a new note" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.update_index,
		':lua require("sketchbook.update_index").update_index()<CR>',
		{ noremap = true, silent = true, desc = "Update notes index" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.search_notes,
		':lua require("sketchbook.search_notes").search_notes()<CR>',
		{ noremap = true, silent = true, desc = "Search notes" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.select_template,
		':lua require("sketchbook.select_template").select_template()<CR>',
		{ noremap = true, silent = true, desc = "Select a note template" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.create_quick_note,
		':lua require("sketchbook.quick_note").create_quick_note_window()<CR>',
		{ noremap = true, silent = true, desc = "Create a quick note buffer" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.toggle_quick_note,
		':lua require("sketchbook.quick_note").toggle_quick_note_window()<CR>',
		{ noremap = true, silent = true, desc = "Toggle quick note window" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.open_entire_quick_note,
		':lua require("sketchbook.quick_note").open_entire_quick_note()<CR>',
		{ noremap = true, silent = true, desc = "Open entire quick note" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.commit_notes,
		':lua require("sketchbook.git_sync").commit_notes()<CR>',
		{ noremap = true, silent = true, desc = "Commit notes to Git" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.push_notes,
		':lua require("sketchbook.git_sync").push_notes()<CR>',
		{ noremap = true, silent = true, desc = "Push notes to remote Git repository" }
	)
	vim.api.nvim_set_keymap(
		"n",
		keymaps.list_notes,
		':lua require("plugins.sketchbook.list_notes").list_all_notes()<CR>',
		{ noremap = true, silent = true, desc = "List all notes" }
	)
end

return M