about summary refs log tree commit diff
path: root/lua/config.lua
blob: 999245d6689b5037acf522ce45f38edf2f8281ec (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
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",
    select_template = "<leader>ttn",
    toggle_quick_note = "<leader>qc",
    create_quick_note = "<leader>nq",
    open_entire_quick_note = "<leader>qo",
    commit_notes = "<leader>tgc",
    push_notes = "<leader>tgp", -- New keymap for pushing notes
  },
}

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" }
  )
end

return M