首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从自动命令或user_command调用新from中的lua函数

如何从自动命令或user_command调用新from中的lua函数
EN

Stack Overflow用户
提问于 2022-08-28 20:35:53
回答 2查看 984关注 0票数 1

我想把一些旧的病毒脚本迁移到lua。我有一堆“散文”的设置,现在在. .config/nvim/plugin/functions.lua中有这些设置:

代码语言:javascript
复制
function prose()
vim.o.fdo:append('search')
vim.bo.virtualedit = block
-- more commands
end

然后在prose.lua中:

代码语言:javascript
复制
local textedit = vim.api.nvim_create_augroup('textedit', {clear = true})
vim.api.nvim_create_autocmd({"BufEnter", "BufNew"}, {
  group = "textedit",
  pattern = {"*.adoc", "*.md", "*.tex"},
  callback = "prose",
})

vim.api.nvim_create_user_command(
  'Prose',
  "call prose()",
  {nargs = 0, desc = 'Apply prose settings'}
)````

But either the autocommand on opening an .adoc file or running :Prose on the command line will return:
 
````E117: Unknown function: prose````

我怎样才能使我的“散文”功能可用?

代码语言:javascript
复制
EN

回答 2

Stack Overflow用户

发布于 2022-08-28 23:05:22

首先,您的functions.lua文件必须位于.config/nvim/lua/目录中。

对于自动命令,修改回调以要求functions.lua和函数prose

代码语言:javascript
复制
callback = require('functions').prose()

对于您的用户命令:

代码语言:javascript
复制
vim.api.nvim_create_user_command('Prose', function()
    require('functions').prose()
  end,                                                                                                                                  
  {nargs = 0, desc = 'Apply prose settings'}                                                                                                       
)      
票数 0
EN

Stack Overflow用户

发布于 2022-10-20 16:15:39

对Icheylus的答复的评论。

通过像这样分配回调

代码语言:javascript
复制
callback = require('functions').prose()

您正在尝试将函数的输出分配给回调。如果您的函数返回了一个函数,但是您的函数没有返回任何内容,这将是可行的。

因此,一个简单的调整就是只删除()

代码语言:javascript
复制
callback = require('functions').prose

或者,如果函数在自动命令的回调中非常简单,甚至可以创建函数。

代码语言:javascript
复制
local textedit = vim.api.nvim_create_augroup('textedit', {clear = true})
vim.api.nvim_create_autocmd({"BufEnter", "BufNew"}, {
  group = "textedit",
  pattern = {"*.adoc", "*.md", "*.tex"},
  callback = function()
      vim.o.fdo:append('search')
      vim.bo.virtualedit = block
      -- more commands
  end,
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73522082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档