2 files changed,
55 insertions(+),
0 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2026-02-07 22:35:55 +0200
Parent:
636c0bc
jump to
| M | lua/plugins/completion.lua |
| A | lua/scratch/ledger.lua |
M
lua/plugins/completion.lua
@@ -24,12 +24,17 @@ sources = {
default = { "lsp", "path", "snippets", "buffer" }, per_filetype = { lua = { inherit_defaults = true, "lazydev" }, + ledger = { inherit_defaults = true, "ledger" }, }, providers = { lazydev = { name = "LazyDev", module = "lazydev.integrations.blink", score_offset = 100, + }, + ledger = { + name = "ledger", + module = "scratch.ledger", }, }, },
A
lua/scratch/ledger.lua
@@ -0,0 +1,50 @@
+local t = require("blink.cmp.types").CompletionItemKind + +---@module 'blink.cmp' +---@class blink.cmp.Source +local source = {} + +function source.new(opts) + local self = setmetatable({}, { __index = source }) + self.opts = opts + self.items = {} + return self +end + +function source:enabled() + return vim.bo.filetype == "ledger" +end + +function source:get_trigger_characters() + return { " ", ":", "as", "eq", "li", "in", "ex" } +end + +function source:get_completions(_, callback) + local rs = vim + .system({ "hledger", "accounts", "--flat" }, { text = true }) + :wait() + assert(rs.code == 0, "Failed to run hledger accounts: " .. rs.stderr) + + ---@type lsp.CompletionItem[] + local items = vim + .iter(vim.split(rs.stdout, "\n")) + :map(function(acc) + ---@type lsp.CompletionItem + return { + label = acc, + kind = t.Property, + insertTextFormat = vim.lsp.protocol.InsertTextFormat.PlainText, + } + end) + :totable() + + callback { + items = items, + is_incomplete_backward = false, + is_incomplete_forward = false, + } + + return function() end +end + +return source