diff --git a/lua/blink-cmp-ghostty.lua b/lua/blink-cmp-ghostty.lua index 5787f24..17f659d 100644 --- a/lua/blink-cmp-ghostty.lua +++ b/lua/blink-cmp-ghostty.lua @@ -67,21 +67,29 @@ local function parse_keys(stdout) return items end ----@return table -local function parse_enums() +---@return string? +function M.bash_completion_path() local bin = vim.fn.exepath('ghostty') if bin == '' then - return {} + return nil end local real = vim.uv.fs_realpath(bin) if not real then - return {} + return nil end local prefix = real:match('(.*)/bin/ghostty$') if not prefix then + return nil + end + return prefix .. '/share/bash-completion/completions/ghostty.bash' +end + +---@return table +local function parse_enums() + local path = M.bash_completion_path() + if not path then return {} end - local path = prefix .. '/share/bash-completion/completions/ghostty.bash' local fd = io.open(path, 'r') if not fd then return {} diff --git a/lua/blink-cmp-ghostty/health.lua b/lua/blink-cmp-ghostty/health.lua new file mode 100644 index 0000000..5db565d --- /dev/null +++ b/lua/blink-cmp-ghostty/health.lua @@ -0,0 +1,47 @@ +local M = {} + +function M.check() + vim.health.start('blink-cmp-ghostty') + + local ok = pcall(require, 'blink.cmp') + if ok then + vim.health.ok('blink.cmp is installed') + else + vim.health.error('blink.cmp is not installed') + end + + local bin = vim.fn.exepath('ghostty') + if bin ~= '' then + vim.health.ok('ghostty executable found: ' .. bin) + else + vim.health.error('ghostty executable not found') + return + end + + local result = vim.system({ 'ghostty', '+show-config', '--docs' }):wait() + if result.code == 0 and result.stdout and result.stdout ~= '' then + vim.health.ok('ghostty +show-config --docs produces output') + else + vim.health.warn( + 'ghostty +show-config --docs failed (config key documentation will be unavailable)' + ) + end + + local source = require('blink-cmp-ghostty') + local path = source.bash_completion_path() + if not path then + vim.health.warn('could not resolve bash completion path (enum completions will be unavailable)') + return + end + local fd = io.open(path, 'r') + if fd then + fd:close() + vim.health.ok('bash completion file found: ' .. path) + else + vim.health.warn( + 'bash completion file not found at ' .. path .. ' (enum completions will be unavailable)' + ) + end +end + +return M