aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2024-12-13 14:22:59 +0000
committerLewis Russell <me@lewisr.dev>2024-12-16 16:05:08 +0000
commit47f2769b462eb6bd1c10efec3c32ed55134ce628 (patch)
tree67194cdaa67e06e1f52288dc5abbd724db8f0286
parentb5c0290803508c0dc996a9bed70f5fa9ceb93c44 (diff)
downloadrneovim-47f2769b462eb6bd1c10efec3c32ed55134ce628.tar.gz
rneovim-47f2769b462eb6bd1c10efec3c32ed55134ce628.tar.bz2
rneovim-47f2769b462eb6bd1c10efec3c32ed55134ce628.zip
fix(Man): completion on Mac
Problem: `man -w` does not work on recent versions of MacOs. Solution: Make it so an empty result is interpreted as an error unless silent=true
-rw-r--r--runtime/lua/man.lua9
-rw-r--r--test/functional/plugin/man_spec.lua10
-rw-r--r--test/testutil.lua11
3 files changed, 27 insertions, 3 deletions
diff --git a/runtime/lua/man.lua b/runtime/lua/man.lua
index 114c94f9e5..bf2cc477fd 100644
--- a/runtime/lua/man.lua
+++ b/runtime/lua/man.lua
@@ -21,9 +21,12 @@ end
local function system(cmd, silent, env)
local r = vim.system(cmd, { env = env, timeout = 10000 }):wait()
- if r.code ~= 0 and not silent then
- local cmd_str = table.concat(cmd, ' ')
- man_error(string.format("command error '%s': %s", cmd_str, r.stderr))
+ if not silent then
+ if r.code ~= 0 then
+ local cmd_str = table.concat(cmd, ' ')
+ man_error(string.format("command error '%s': %s", cmd_str, r.stderr))
+ end
+ assert(r.stdout ~= '')
end
return assert(r.stdout)
diff --git a/test/functional/plugin/man_spec.lua b/test/functional/plugin/man_spec.lua
index 8906e60dce..e3f3de6252 100644
--- a/test/functional/plugin/man_spec.lua
+++ b/test/functional/plugin/man_spec.lua
@@ -263,4 +263,14 @@ describe(':Man', function()
{ '1', 'other_man' },
}, get_search_history('other_man(1)'))
end)
+
+ it('can complete', function()
+ t.skip(t.is_os('mac') and t.is_arch('x86_64'), 'not supported on intel mac')
+ eq(
+ true,
+ exec_lua(function()
+ return #require('man').man_complete('f', 'Man g') > 0
+ end)
+ )
+ end)
end)
diff --git a/test/testutil.lua b/test/testutil.lua
index 00b30d74d5..007e017ac6 100644
--- a/test/testutil.lua
+++ b/test/testutil.lua
@@ -409,6 +409,17 @@ function M.is_os(s)
)
end
+local architecture = uv.os_uname().machine
+
+--- @param s 'x86_64'|'arm64'
+--- @return boolean
+function M.is_arch(s)
+ if not (s == 'x86_64' or s == 'arm64') then
+ error('unknown architecture: ' .. tostring(s))
+ end
+ return s == architecture
+end
+
local tmpname_id = 0
local tmpdir = os.getenv('TMPDIR') or os.getenv('TEMP')
local tmpdir_is_local = not not (tmpdir and tmpdir:find('Xtest'))