Skip to content

Commit 5c990f0

Browse files
committed
refactor: move nvim-cmp sources from root
1 parent 14e0427 commit 5c990f0

File tree

4 files changed

+25
-12
lines changed

4 files changed

+25
-12
lines changed

lua/cmp_obsidian.lua renamed to lua/obsidian/completion/sources/nvim_cmp/cmp_obsidian.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ source.complete = function(_, request, callback)
3131
return
3232
end
3333

34+
-- Different from cmp_obsidian_new
3435
local in_buffer_only = false
3536

3637
---@type string|?

lua/cmp_obsidian_new.lua renamed to lua/obsidian/completion/sources/nvim_cmp/cmp_obsidian_new.lua

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ local completion = require "obsidian.completion.refs"
33
local obsidian = require "obsidian"
44
local util = require "obsidian.util"
55
local LinkStyle = require("obsidian.config").LinkStyle
6+
local Note = require "obsidian.note"
7+
local Path = require "obsidian.path"
68

79
---@class cmp_obsidian_new.Source : obsidian.ABC
810
local source = abc.new_class()
@@ -15,10 +17,14 @@ source.get_trigger_characters = completion.get_trigger_characters
1517

1618
source.get_keyword_pattern = completion.get_keyword_pattern
1719

18-
source.complete = function(_, request, callback)
20+
---Invoke completion (required).
21+
---@param params cmp.SourceCompletionApiParams
22+
---@param callback fun(response: lsp.CompletionResponse|nil)
23+
source.complete = function(_, params, callback)
1924
local client = assert(obsidian.get_client())
20-
local can_complete, search, insert_start, insert_end, ref_type = completion.can_complete(request)
25+
local can_complete, search, insert_start, insert_end, ref_type = completion.can_complete(params)
2126

27+
-- Different from cmp_obsidian
2228
if search ~= nil then
2329
search = util.lstrip_whitespace(search)
2430
end
@@ -124,11 +130,11 @@ source.complete = function(_, request, callback)
124130
newText = new_text,
125131
range = {
126132
start = {
127-
line = request.context.cursor.row - 1,
133+
line = params.context.cursor.row - 1,
128134
character = insert_start,
129135
},
130136
["end"] = {
131-
line = request.context.cursor.row - 1,
137+
line = params.context.cursor.row - 1,
132138
character = insert_end,
133139
},
134140
},
@@ -146,12 +152,17 @@ source.complete = function(_, request, callback)
146152
}
147153
end
148154

149-
source.execute = function(_, item, callback)
150-
local Note = require "obsidian.note"
151-
local Path = require "obsidian.path"
152-
155+
---Creates a new note using the default template for the completion item.
156+
---Executed after the item was selected.
157+
---@param completion_item lsp.CompletionItem
158+
---@param callback fun(completion_item: lsp.CompletionItem|nil)
159+
source.execute = function(_, completion_item, callback)
153160
local client = assert(obsidian.get_client())
154-
local data = item.data
161+
local data = completion_item.data
162+
163+
if data == nil then
164+
return callback(nil)
165+
end
155166

156167
-- Make sure `data.note` is actually an `obsidian.Note` object. If it gets serialized at some
157168
-- point (seems to happen on Linux), it will lose its metatable.

lua/obsidian/init.lua

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,10 @@ obsidian.setup = function(opts)
103103
if opts.completion.nvim_cmp then
104104
local cmp = require "cmp"
105105

106-
cmp.register_source("obsidian", require("cmp_obsidian").new())
107-
cmp.register_source("obsidian_new", require("cmp_obsidian_new").new())
108-
cmp.register_source("obsidian_tags", require("cmp_obsidian_tags").new())
106+
cmp.register_source("obsidian", require("obsidian.completion.sources.nvim_cmp.cmp_obsidian").new())
107+
cmp.register_source("obsidian_new", require("obsidian.completion.sources.nvim_cmp.cmp_obsidian_new").new())
108+
cmp.register_source("obsidian_tags", require("obsidian.completion.sources.nvim_cmp.cmp_obsidian_tags").new())
109+
end
109110
end
110111

111112
local group = vim.api.nvim_create_augroup("obsidian_setup", { clear = true })

0 commit comments

Comments
 (0)