Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

runner为floaterm时出现错误:不允许在弹出窗口中使用 #280

Open
spiedeman opened this issue Nov 24, 2023 · 7 comments
Open

Comments

@spiedeman
Copy link

spiedeman commented Nov 24, 2023

使用 asynctask.vim 时遇到的问题:
自定义 runner: floatermwintype 类型为 float,因此 popup 窗口弹出后始终会获得焦点,而
get(a:opts, 'focus', 1) == 0 条件仍然为真,导致运行 noa wincmd p 命令时会出现错误:不允许在弹出窗口中使用。
wintye=split,则运行良好。

一点不成熟的小建议:若用 popup 窗口显示任务运行结果,可不必调用内置 terminal,直接用 job 运行任务,通过回调函数将运行结果显示到 popup 窗口中,可避免窗口焦点无法切换的问题。

截图_2023-11-24_23-09-38

@skywind3000
Copy link
Owner

那你别加 -focus=0 啊

@spiedeman
Copy link
Author

那你别加 -focus=0 啊

倒也是,但感觉不如加个判断条件,pos=floaterm时,强制 focus=1
原本应该在另一个仓库asynctask下提问的,不过发现这边没法删除issue也就算了。主要是 task.ini文件里并未提供 focus选项,每次想切换 pos 的时候,还要额外修改 vimrc里的配置,甚是麻烦。

@spiedeman
Copy link
Author

而且,pos=floaterm 时,wintype=float是写死了的,vimrctask.ini配置中均未提供自定义选项。因此,在插件里做条件判断if get(a:opts, 'focus', 1)==0 来提供自动关闭结果窗口的功能,根本不起作用。至少在vim下是这样,neovim不太熟悉,不敢说。

@skywind3000
Copy link
Owner

tasks.ini 中可以写 focus 的,看:

https://github.com/skywind3000/asynctasks.vim/wiki/Task-Config#specification

@spiedeman
Copy link
Author

spiedeman commented Nov 25, 2023

看来是我没发现。
但好像发现一个新问题:没有匹配的自动命令:User AsyncRunInit
因为用terminal输出时,貌似不能配置 CursorMoved 事件发生时自动关闭结果窗口,而用floaterm的话,得进插件里改动floaterm.vim,将wintype=float改为wintype=split。所以想自己写几个函数配合 autocmd 来实现,避免改动插件源码。结果搞了半天,似乎 AsyncRunPreAsyncRunStop 被移除了?

截图_2023-11-25_22-19-23

@skywind3000
Copy link
Owner

只有基于 quickfix 的任务才支持这几个 autocmd,其他终端类,不支持,你可以自己添加终端相关 autocmd

@spiedeman
Copy link
Author

只有基于 quickfix 的任务才支持这几个 autocmd,其他终端类,不支持,你可以自己添加终端相关 autocmd

原来如此。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants