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

Does not work with lazy.nvim #66

Closed
appomsk opened this issue Jul 8, 2023 · 8 comments
Closed

Does not work with lazy.nvim #66

appomsk opened this issue Jul 8, 2023 · 8 comments

Comments

@appomsk
Copy link

appomsk commented Jul 8, 2023

Ок, я понимаю, что neovim и проблема в lazy - плагин-менеджере, но я просто пытаюсь понять, почему не работает.

Почти чистый init.lua neovim (в выходные начал пробовать перейти на lua) c таким обрывком:

require('lazy').setup {

+--- 11 lines: UI········································································
-- {{{2 Rus
  {
    'https://github.com/lyokha/vim-xkbswitch',
    lazy = false,
    init = function()
      vim.g.XkbSwitchEnabled = 1
    end,
  },
-- 2}}}

После старта :echo g:XkbSwitchEnabled показывает единичку, :echo &rtp показывает, что vim-xkbswitch в путях, :au InsertLeave - call s:xkb_switch(0).

:EnableXkbSwitch не дает никакого эффекта. При этом, если устанавливать ваш плагин с vim-plug, то все работает. Я понимаю, какое очевидное решение)), но просто пытаюсь перейти на луа (на vim что-то даже tpope перестал почти плагины разрабатывать, практически все остальные перестали развиваться, насколько я, сегодня пробежавшись по самым популярным плагинам, могу судить).

Lazy очень быстро набирает популярность, было бы неплохо разобраться в чем причина. Наверное))

@lyokha
Copy link
Owner

lyokha commented Jul 8, 2023

А что говорит :echo g:XkbSwitchLib после установки в lazy?

@lyokha
Copy link
Owner

lyokha commented Jul 8, 2023

А так же интересно, что скажет :echo g:loaded_XkbSwitch.

@lyokha
Copy link
Owner

lyokha commented Jul 8, 2023

См. здесь: https://github.com/folke/lazy.nvim/blob/5af331ea65418dc9361769891921fdee4bcc837a/lua/lazy/core/loader.lua#L87

Lazy сначала сорсит плагин, а только затем выполняется ваш init в котором выполняется let g:XkbSwitchEnabled = 1, нужно как-то сделать, чтобы было наоборот, то есть функция init здесь не подходит.

@lyokha
Copy link
Owner

lyokha commented Jul 8, 2023

Похоже что в вашем конфиге надо просто заменить init = ... на config = ....

@lyokha
Copy link
Owner

lyokha commented Jul 8, 2023

А нет, видимо я неправ и init() наоборот, вызывается до загрузки плагина, а config() после.

init() is always called during startup, before even loading start plugins. That's not supposed to contain code that depends on any plugin.

(отсюда: folke/lazy.nvim#283).

Тогда возвращаюсь к вопросу что говорят :echo g:XkbSwitchLib и g:loaded_XkbSwitch?

@appomsk
Copy link
Author

appomsk commented Jul 9, 2023

Доброго дня.

В общем, покопавшись с утра, обнаружил, что (как обычно) во всем виноват я. До маппингов я еще не дошел, а уже багрепорты строчить начал :). Я никогда ESC не использую для выхода в нормальный режим, привык Ctrl-C, который у меня в моем старом .vimrc замаппен в insert mode на ЕSC (наверное есть какие-то минусы в этом, но вроде нормально).

Сегодня, решив продолжить разбираться, установил совершенно чистую версию init.lua, где только lazy и ваш плагин, случайно это обнаружил - по ESC все нормально, по Ctrl-C не работает. Не знаю, насколько это можно считать багом и можно ли пофиксить, но все-таки было бы хорошо, чтоб работало и по этой клавише. В любом случае, если посчитаете нужным, закрывайте issue.

Понятно, что lazy тут не при чем. Прошу прощения, что ввел в заблуждение (c vim.plug у меня была другая экспериментальная папка конфига для neovim, где маппинги присутствовали).

По init - да, это была уже перестраховка, lazy = false должно было быть, вроде, достаточно.

Пользуясь случаем, хочу вам сказать огромное спасибо за ваш плагин, которым пользуюсь уже не менее десятка лет. Благодарю от души!

PS. Хм... Кстати, решил проверить про config и init - с config не работает, только init подавай. Причем с config, :echo g:XkbSwitchLib показывает правильный путь к библиотеке, а g:loaded_XkbSwitch - 1, но не работает и :EnableXkbSwitch не дает эффекта. Странно, может lazy не так уж и "невиновата". В любом случае, я пока на neovim, наверное, переходить в ближайшие дни не буду. Пока поэкспериментирую, когда время будет.

На всякий случай - вот мой чистый сегодняшний ~/.config/nvim/init.lua:

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
    vim.fn.system({
        "git",
        "clone",
        "--filter=blob:none",
        "https://github.com/folke/lazy.nvim.git",
        "--branch=stable", -- latest stable release
        lazypath,
    })
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup({
    {
        'https://github.com/lyokha/vim-xkbswitch',
        lazy = false,
       -- init = function()
        config = function()
            vim.g.XkbSwitchEnabled = 1
        end,
    },
})

@lyokha
Copy link
Owner

lyokha commented Jul 9, 2023

Сегодня, решив продолжить разбираться, установил совершенно чистую версию init.lua, где только lazy и ваш плагин, случайно это обнаружил - по ESC все нормально, по Ctrl-C не работает. Не знаю, насколько это можно считать багом и можно ли пофиксить, но все-таки было бы хорошо, чтоб работало и по этой клавише. В любом случае, если посчитаете нужным, закрывайте issue.

Если проблема в отсутствии маппинга на Esc, то это не баг. Багом это будет если вы вернете маппинг, а плагин не будет работать. Но по идее все будет хорошо, так как действия плагина привязаны не к сочетаниям клавиш, а к событиям типа InsertLeave / InsertEnter.

Пользуясь случаем, хочу вам сказать огромное спасибо за ваш плагин, которым пользуюсь уже не менее десятка лет. Благодарю от души!

И вам спасибо за оценку!

PS. Хм... Кстати, решил проверить про config и init - с config не работает, только init подавай. Причем с config, :echo g:XkbSwitchLib показывает правильный путь к библиотеке, а g:loaded_XkbSwitch - 1, но не работает и :EnableXkbSwitch не дает эффекта. Странно, может lazy не так уж и "невиновата".

То что вы описываете работает правильно. Из того что я увидел в lazy.nvim, последовательность загрузки сейчас такова: init() -> source plugins (загрузка в т.ч. плагина vim-kbswitch) -> config(). В плагине предусмотрено, что установка let g:XkbSwitchEnabled = 1 должна проходить до загрузки плагина. Поэтому с config() это не работает.

В любом случае, я пока на neovim, наверное, переходить в ближайшие дни не буду. Пока поэкспериментирую, когда время будет.

Я сам на neovim уже два года и только положительные впечатления. Не из-за lua (мне все равно какой там язык), а в основном из-за встроенного LSP и tree-sitter, а также из-за огромного выбора новых плагинов. Конфиг адаптировал из старого vim, поэтому он на vim script и находится в файле init.vim. Вот он: https://github.com/lyokha/dotfiles/blob/master/.config/nvim/init.vim. Возможно вам будет интересно, но он большой и на lua там только некоторые настройки.

@lyokha
Copy link
Owner

lyokha commented Jul 9, 2023

Вот что я обнаружил в :help i_CTRL-C:

CTRL-C Quit insert mode, go back to Normal mode. Do not check for
abbreviations. Does not trigger the |InsertLeave| autocommand
event.

Событие InsertLeave не триггерится, а значит действительно, vim-xkbswitch не сработает и нужен маппинг на Esc.

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