From a119fe15da28b166ffef6bf34067e5a7f75bbca9 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Wed, 18 Nov 2020 20:02:44 +0100 Subject: startup: load files from &packpath . '/start/{pluginname}' Quoting the existing docs: Packages are loaded. These are plugins, as above [&runtimepath], but found in the "start" directory of each entry in 'packpath'. Every plugin directory found is added in 'runtimepath' and then the plugins are sourced. Also tj didn't think I could do it. --- test/functional/core/startup_spec.lua | 25 +++++++++++++++++++--- .../start/nvim-leftpad/autoload/leftpad.vim | 3 +++ .../fixtures/start/nvim-leftpad/lua/leftpad.lua | 1 + 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 test/functional/fixtures/start/nvim-leftpad/autoload/leftpad.vim create mode 100644 test/functional/fixtures/start/nvim-leftpad/lua/leftpad.lua (limited to 'test/functional') diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua index 3bfae5f3d7..27793ab936 100644 --- a/test/functional/core/startup_spec.lua +++ b/test/functional/core/startup_spec.lua @@ -313,14 +313,33 @@ describe('startup', function() it("handles &packpath during startup", function() - pack_clear [[ let g:x = bar#test() ]] + pack_clear [[ + let g:x = bar#test() + let g:y = leftpad#pad("heyya") + ]] eq(-3, eval 'g:x') + eq(" heyya", eval 'g:y') - pack_clear [[ lua _G.y = require'bar'.doit() ]] - eq(9003, exec_lua [[ return _G.y ]]) + pack_clear [[ lua _G.y = require'bar'.doit() _G.z = require'leftpad''howdy' ]] + eq({9003, '\thowdy'}, exec_lua [[ return { _G.y, _G.z } ]]) end) it("handles :packadd during startup", function() + -- control group: opt/bonus is not availabe by default + pack_clear [[ + try + let g:x = bonus#secret() + catch + let g:err = v:exception + endtry + ]] + eq('Vim(let):E117: Unknown function: bonus#secret', eval 'g:err') + + pack_clear [[ lua _G.test = {pcall(function() require'bonus'.launch() end)} ]] + eq({false, [[[string ":lua"]:1: module 'bonus' not found:]]}, + exec_lua [[ _G.test[2] = string.gsub(_G.test[2], '[\r\n].*', '') return _G.test ]]) + + -- ok, time to launch the nukes: pack_clear [[ packadd! bonus | let g:x = bonus#secret() ]] eq('halloj', eval 'g:x') diff --git a/test/functional/fixtures/start/nvim-leftpad/autoload/leftpad.vim b/test/functional/fixtures/start/nvim-leftpad/autoload/leftpad.vim new file mode 100644 index 0000000000..2f428f59e0 --- /dev/null +++ b/test/functional/fixtures/start/nvim-leftpad/autoload/leftpad.vim @@ -0,0 +1,3 @@ +function! leftpad#pad(str) + return ' '.a:str +endfunction diff --git a/test/functional/fixtures/start/nvim-leftpad/lua/leftpad.lua b/test/functional/fixtures/start/nvim-leftpad/lua/leftpad.lua new file mode 100644 index 0000000000..866ed2fd30 --- /dev/null +++ b/test/functional/fixtures/start/nvim-leftpad/lua/leftpad.lua @@ -0,0 +1 @@ +return function (str) return '\t' .. str end -- cgit