Comments (111)
Так оно и есть. Проверьте.
from vim-xkbswitch.
Не работает, если:
- два таба, в которых два разных буфера;
- оба буфера в инсерт моде;
- в одном буфере EN раскладка, в другом RU;
- при переключении табов не выходя из инсерта раскладка не меняется;
On Thu, Apr 18, 2013 at 11:55 PM, lyokha [email protected] wrote:
Так оно и есть. Проверьте.
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16609365
.
from vim-xkbswitch.
Поправил, проверьте пожалуйста. Теперь раскладка должна переключаться при любых изменениях текущего окна или таба (в т.ч. в консольном vim). Спасибо за идею!
from vim-xkbswitch.
- Раньше было так: если в normal mode переключился на RU, потом включил
insert mode и потом опять вышел в normal - раскладка автоматически менялась
на EN, вне зависимости от того, какая до этого была в normal. Сейчас, если
в normal переключил на RU, то она запоминается для этого режима и
включается при переходе в него. Это неудобно, раньше было логичнее, в
нормале RU не нужна. - Есть баг. Открываем два файла в табах. В первом файле включаем инсерт и
меняем раскладку на РУ, не выходя из инсерта переключаем таб на второй
файл, там тоже РУ, хотя для него РУ не ставилась, должна быть ЕН. И для
второго файла РУ и в нормале и в инсерте выставляется. - В остальном вроде работает, еще потестирую.
from vim-xkbswitch.
- Эта фича появилась после фикса issue #6. - Что если исходная раскладка была us(dvp), а после переключения оказалась us? Это плохо. К тому же, новое поведение мне наоборот кажется более логичным - если вы включили русскую раскладку в нормальном режиме, то значит для чего-то это было вам нужно. Почему плагин должен самовольно менять ее на us? В принципе можно ввести какую-нибудь новую переменную, типа
let g:XkbSwitchNLayout = 'us'
и, если она определена в .vimrc, то всегда в нормальном режиме переключаться на эту раскладку. Могу добавить. - Это не баг. Дело в том, что настройки XkbSwitch загружаются в буфер только после того, как вы вошли в режим Инсерт, Реплэйс и т.п. Вы открыли второй буфер и вошли в нем в режим Инсерт, в первом буфере при этом XkbSwitch еще не загружен. Но как только вы смените раскладку в первом буфере раскладки станут независимы и табы запомнят свои раскладки. Кстати мне такое поведение кажется тоже более логичным - плагин не должен думать за вас, он должен учиться вслед за вашими действиями.
from vim-xkbswitch.
- Лучше сделать эту фичу конфигурируемой. Обычно РУ включается в нормале
для того, чтобы, например, ввести текст в строку поиска. Это используется
реже, чем, остальные команды на инглише. Большинство инпута в нормале идет
на инглише, и практически весь инпут начинается с комманд на английском.
Ну, или сделать, чтобы запоминало только варианты EN раскладки для нормала
и переключалась в них. - Для пользователя это нелогично. Я не выставлял для конкретного буфера РУ
раскладку, почему она наследуется от другого буфера. Хотя тут не понятно,
какую раскладку считать дефолтной. Можно также добавить переменную вроде
default_layout = 'EN', тогда все новые буфера в инсерте использую эту
раскладу, если для них не была запомнена определена через конфиг.
переменную, если не определена - оставить функционал, как сейчас.
2013/4/19 lyokha [email protected]
Эта фича появилась после фикса issue #6#6.
Что если исходная раскладка была us(dvp), а после переключения оказалась
us? Это плохо. К тому же, новое поведение мне наоборот кажется более
логичным - если вы включили русскую раскладку в нормальном режиме, то
значит для чего-то это было вам нужно. Почему плагин должен самовольно
менять ее на us? В принципе можно ввести какую-нибудь новую переменную,
типа let g:XkbSwitchNLayout = 'us' и, если она определена в .vimrc, то
всегда в нормальном режиме переключаться на эту раскладку. Могу добавить.
2.Это не баг. Дело в том, что настройки XkbSwitch загружаются в буфер
только после того, как вы вошли в режим Инсерт, Реплэйс и т.п. Вы открыли
второй буфер и вошли в нем в режим Инсерт, в первом буфере при этом
XkbSwitch еще не загружен. Но как только вы смените раскладку в первом
буфере раскладки станут независимы и табы запомнят свои раскладки.
Кстати мне такое поведение кажется тоже более логичным - плагин не должен
думать за вас, он должен учиться вслед за вашими действиями.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16649434
.
from vim-xkbswitch.
Попробуйте сейчас, в .vimrc нужно добавить
let g:XkbSwitchNLayout = 'us'
let g:XkbSwitchILayout = 'us'
(может у вас дефолтная не us - вставьте вашу дефолтную). Первая строка фиксит возвращение в Normal mode, вторая - исходную раскладку для Insert mode.
Если все ок, я закрою баг.
from vim-xkbswitch.
2013/4/19 lyokha [email protected]
let g:XkbSwitchNLayout = 'us'
let g:XkbSwitchILayout = 'us'
БАГ
open1 -> insert -> RU -> open2 -> insert -> switch_to_1 -> insert = EN,
ERROR, должно быть RU
open1 -> insert -> RU -> open2 -> switch_to_1 -> insert = EN, ERROR, должно
быть RU
open1 -> insert -> RU -> NORMAL -> open2 -> insert -> switch_to_1 -> insert
= RU, OK
open1 -> insert -> RU -> NORMAL -> open2 -> switch_to_1 -> insert = RU, OK
В общем, если после изменения раскладки в первом файле не переключаясь в
normal открыть второй и вернуться в первый, то для инсерта в первом файле
раскладка не запоминается и не восстанавливается. Где-то у тебя в коде с
логикой проблема.
Больше проблем не нет.
from vim-xkbswitch.
Похоже на то, что раскладка инсерт режима запоминается только при выходе из
него. Надо запоминать в момент изменения.
2013/4/19 lyokha [email protected]
Попробуйте сейчас, в .vimrc нужно добавить
let g:XkbSwitchNLayout = 'us'
let g:XkbSwitchILayout = 'us'(может у вас дефолтная не us - вставьте вашу дефолтную). Первая строка
фиксит возвращение в Normal mode, вторая - исходную раскладку для Insert
mode.
Если все ок, я закрою баг.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16654472
.
from vim-xkbswitch.
Хм, а у меня все правильно работает. Раскладка запоминается при покидании буфера тоже. Используете gvim?
from vim-xkbswitch.
дело в том, что когда открываешь первый файл меняешь раскладку в инсерте и
не выходя из инсерта открываешь второй - вим автоматически выходит в
нормал, и наверное не срабатывает событие, раскладка для инсерта первого не
запоминается.
2013/4/19 lyokha [email protected]
Хм, а у меня все правильно работает. Раскладка запоминается при покидании
буфера тоже. Используете gvim?—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16657749
.
from vim-xkbswitch.
Как переключаете табы? Я из меню наверху, у меня этот тест проходит. В консольном вим если мышкой щелкать в другое окно - тоже все хорошо
from vim-xkbswitch.
Метод переключения табов не играет роли. Работает все нормально и когда
хоткеями переключаешь и когда кликами.
Единственная проблема - это, то что я описал. Когда вим открывает файл в
новом табе, переклюачется на него и автоматом выходит в нормал. Тогда
раскладка для инсерта не сохраняется в старом табе.
Если в старом табе хотябы раз переключиться из инсерта в нормал - все
работает как надо. Если только зайти в инсерт, сменить раскладку и не
выходя в нормал открыть новый файл в новом табе - раскладка теряется.
2013/4/19 lyokha [email protected]
Как переключаете табы? Я из меню наверху, у меня этот тест проходит. В
консольном вим если мышкой щелкать в другое окно - тоже все хорошо—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16658238
.
from vim-xkbswitch.
В том то и прикол, что у меня обе описанные вами процедуры прекрасно работают - раскладка восстанавливается, если буфер был оставлен в инсерт режиме. Правда, только сейчас понял, что у меня есть важное отличие по сравнению c описанной вами схемы - при открытии нового буфера в новом табе у меня он переходит в режим Инсерт, если текущий буфер находится в режиме Инсерт.
Мой gvim:
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 12 2012 14:43:48)
Заплатки: 1-415, 417-712
С изменениями, внесёнными <[email protected]>
Скомпилирован <[email protected]>
Огромная версия с графическим интерфейсом GTK2. Включённые (+) и отключённые (-) особенности:
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui +diff
+digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi
+file_in_path +find_in_path +float +folding -footer +fork() +gettext
-hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall
+linebreak +lispindent +listcmds +localmap -lua +menu +mksession +modify_fname
+mouse +mouseshape +mouse_dec +mouse_gpm -mouse_jsbterm +mouse_netterm
+mouse_sgr -mouse_sysmouse +mouse_urxvt +mouse_xterm +multi_byte +multi_lang
-mzscheme +netbeans_intg +path_extra +perl +persistent_undo +postscript
+printer +profile +python/dyn -python3 +quickfix +reltime +rightleft +ruby/dyn
+scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop
+syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse
+textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup
+X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save
общесистемный файл vimrc: "/etc/vimrc"
пользовательский файл vimrc: "$HOME/.vimrc"
пользовательский файл exrc: "$HOME/.exrc"
общесистемный файл gvimrc: "/etc/gvimrc"
пользовательский файл gvimrc: "$HOME/.gvimrc"
общесистемный файл меню: "
$VIMRUNTIME/menu.vim"
значение $VIM по умолчанию: "/etc"
значение $VIMRUNTIME по умолчанию: "/usr/share/vim/vim73
"
Параметры компиляции: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -I/usr/include/harfbuzz -I/usr/local/include -O2 -g -pipe -Wall -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Сборка: gcc -L. -Wl,-z,relro -rdynamic -Wl,-export-dynamic -Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE -Wl,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -lSM -lICE -lXpm -lXt -lX11 -lSM -lICE -lm -lnsl -lselinux -lncurses -lacl -lattr -lgpm -ldl -Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE -fstack-protector -L/usr/lib64/perl5/CORE -lperl -lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
from vim-xkbswitch.
В общем дело как раз в этом.
При открытии новой вкладки событие BufLeave не срабатывает, и xkb_save
не вызывается. После этого вим сам переходит в нормал и раскладка для
инсерта первого таба теряется.
Вообще, логичнее чтобы раскладка запоминалась при ее изменении а не при
выходе из буфера. Это решило бы все проблемы.
Смотри сам на счет этого фикса.
У нас у всех при открытии нового таба / буфера переходит в нормал. Это тоже
ожидаемое поведение.
От autocmd BufLeave * call xkb_save() можно отказаться.
Вызов call xkb_save() перенести туда, где раскладка переключилась.
2013/4/19 lyokha [email protected]
В том то и прикол, что у меня обе описанные вами процедуры прекрасно
работают - раскладка восстанавливается, если буфер был оставлен в инсерт
режиме. Правда, только сейчас понял, что у меня есть важное отличие по
сравнению c описанной вами схемы - при открытии нового буфера в новом табе
у меня он переходит в режим Инсерт, если текущий буфер находится в режиме
Инсерт.Мой gvim:
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 12 2012 14:43:48)
Заплатки: 1-415, 417-712
С изменениями, внесёнными [email protected]
Скомпилирован [email protected]
Огромная версия с графическим интерфейсом GTK2. Включённые (+) и отключённые (-) особенности:
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui +diff
+digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi
+file_in_path +find_in_path +float +folding -footer +fork() +gettext
-hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall
+linebreak +lispindent +listcmds +localmap -lua +menu +mksession +modify_fname
+mouse +mouseshape +mouse_dec +mouse_gpm -mouse_jsbterm +mouse_netterm
+mouse_sgr -mouse_sysmouse +mouse_urxvt +mouse_xterm +multi_byte +multi_lang
-mzscheme +netbeans_intg +path_extra +perl +persistent_undo +postscript
+printer +profile +python/dyn -python3 +quickfix +reltime +rightleft +ruby/dyn
+scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop
+syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse
+textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup
+X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save
общесистемный файл vimrc: "/etc/vimrc"
пользовательский файл vimrc: "$HOME/.vimrc"
пользовательский файл exrc: "$HOME/.exrc"
общесистемный файл gvimrc: "/etc/gvimrc"
пользовательский файл gvimrc: "$HOME/.gvimrc"
общесистемный файл меню: "
$VIMRUNTIME/menu.vim"
значение $VIM по умолчанию: "/etc"
значение $VIMRUNTIME по умолчанию: "/usr/share/vim/vim73
"
Параметры компиляции: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -I/usr/include/harfbuzz -I/usr/local/include -O2 -g -pipe -Wall -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Сборка: gcc -L. -Wl,-z,relro -rdynamic -Wl,-export-dynamic -Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE -Wl,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -lSM -lICE -lXpm -lXt -lX11 -lSM -lICE -lm -lnsl -lselinux -lncurses -lacl -lattr -lgpm -ldl -Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE -fstack-protector -L/usr/lib64/perl5/CORE -lperl -lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16659711
.
from vim-xkbswitch.
Наверное можно и так, сделаю - напишу
from vim-xkbswitch.
Нет, нельзя скорее всего. Как я буду ловить событие изменения раскладки? Не уверен, что вим это может.
from vim-xkbswitch.
Вим это точно не может.
А, я понял.
Тебе нужен еще TabLeave event.
2013/4/19 lyokha [email protected]
Нет, нельзя скорее всего. Как я буду ловить событие изменения раскладки?
Не уверен, что вим это может.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16660974
.
from vim-xkbswitch.
Я не уверен, что TabLeave здесь адекватен - все наши настройки связаны c буфером, а покидание таба к буферу не приязано. Только что собрал последний снапшот vim c меркуриала - работает так же, как и мой стандартный, т.е. новое окно включается в режиме ввода и при переходе в старое раскладки переключаются правильно. Не понятно, почему у тебя не так, может вим старый? Может дело в настройках, но вряд ли для конфигурации такого поведения есть настройки.
from vim-xkbswitch.
вим последний
проверю сейас
2013/4/19 lyokha [email protected]
Я не уверен, что TabLeave здесь адекватен - все наши настройки связаны c
буфером, а покидание таба к буферу не приязано. Только что собрал последний
снапшот vim c меркуриала - работает так же, как и мой стандартный, т.е.
новое окно включается в режиме ввода и при переходе в старое раскладки
переключаются правильно. Не понятно, почему у тебя не так, может вим
старый? Может дело в настройках, но вряд ли для конфигурации такого
поведения есть настройки.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16661559
.
from vim-xkbswitch.
ты что-то заливал? есть что тестить?
2013/4/19 lyokha [email protected]
Я не уверен, что TabLeave здесь адекватен - все наши настройки связаны c
буфером, а покидание таба к буферу не приязано. Только что собрал последний
снапшот vim c меркуриала - работает так же, как и мой стандартный, т.е.
новое окно включается в режиме ввода и при переходе в старое раскладки
переключаются правильно. Не понятно, почему у тебя не так, может вим
старый? Может дело в настройках, но вряд ли для конфигурации такого
поведения есть настройки.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16661559
.
from vim-xkbswitch.
В последний час - ничего, я в дороге был.
19.04.2013 21:03 пользователь "zdm" [email protected] написал:
ты что-то заливал? есть что тестить?
2013/4/19 lyokha [email protected]
Я не уверен, что TabLeave здесь адекватен - все наши настройки связаны c
буфером, а покидание таба к буферу не приязано. Только что собрал
последний
снапшот vim c меркуриала - работает так же, как и мой стандартный, т.е.
новое окно включается в режиме ввода и при переходе в старое раскладки
переключаются правильно. Не понятно, почему у тебя не так, может вим
старый? Может дело в настройках, но вряд ли для конфигурации такого
поведения есть настройки.Reply to this email directly or view it on GitHub<
https://github.com/lyokha/vim-xkbswitch/issues/7#issuecomment-16661559>
.Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16665081
.
from vim-xkbswitch.
вот рабочий код
2013/4/19 lyokha [email protected]
В последний час - ничего, я в дороге был.
19.04.2013 21:03 пользователь "zdm" [email protected] написал:ты что-то заливал? есть что тестить?
2013/4/19 lyokha [email protected]
Я не уверен, что TabLeave здесь адекватен - все наши настройки связаны
c
буфером, а покидание таба к буферу не приязано. Только что собрал
последний
снапшот vim c меркуриала - работает так же, как и мой стандартный,
т.е.
новое окно включается в режиме ввода и при переходе в старое раскладки
переключаются правильно. Не понятно, почему у тебя не так, может вим
старый? Может дело в настройках, но вряд ли для конфигурации такого
поведения есть настройки.Reply to this email directly or view it on GitHub<
https://github.com/lyokha/vim-xkbswitch/issues/7#issuecomment-16661559>
.Reply to this email directly or view it on GitHub<
https://github.com/lyokha/vim-xkbswitch/issues/7#issuecomment-16665081>
.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16665219
.
from vim-xkbswitch.
Залил на vim.org. Я надеюсь ты с github изменения проверял, а не с vim.org? Что за рабочий код, не понял.
from vim-xkbswitch.
с гитхаб
исправлен баг о котором мы говорили сегодня
2013/4/19 lyokha [email protected]
Залил на vim.org. Я надеюсь ты с github изменения проверял, а не с vim.org?
Что за рабочий код, не понял.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16678316
.
from vim-xkbswitch.
В общем работает все? ты просто не обновился тогда что-ли?
from vim-xkbswitch.
или исправлен в виме?
from vim-xkbswitch.
внес изменения в твой код, чтобы сохранялась раскладка для инсерта если
открывается новый таб
посмотри изменения - все станет ясно, там 5 строк
On Fri, Apr 19, 2013 at 10:29 PM, lyokha [email protected] wrote:
или исправлен в виме?
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16678824
.
from vim-xkbswitch.
Дык, смотреть то где? Ты же никакой ссылки не дал.
from vim-xkbswitch.
там вложенный файл в письме был))
On Fri, Apr 19, 2013 at 10:36 PM, lyokha [email protected] wrote:
Дык, смотреть то где? Ты же никакой ссылки не дал.
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16679580
.
from vim-xkbswitch.
не там вложенного файла, ты изменения покажи
from vim-xkbswitch.
--- a/plugin/xkbswitch.vim
+++ b/plugin/xkbswitch.vim
@@ -12,6 +12,7 @@ if exists('g:loaded_XkbSwitch') && g:loaded_XkbSwitch
endif
let g:loaded_XkbSwitch = 1
+let s:last_insert_enter_bufnr = 0
if !exists('g:XkbSwitchLib')
if has('unix')
@@ -272,7 +273,7 @@ fun! xkb_switch(mode,...)
endif
endfun
-fun! xkb_save()
+fun! xkb_save(...)
for ft in g:XkbSwitchSkipFt
if ft == &ft
return
@@ -285,13 +286,18 @@ fun! xkb_save()
return
endif
let cur_layout = libcall(g:XkbSwitch['backend'], g:XkbSwitch['get'],
'')
- if mode() =~ '^[iR]'
-
let b:xkb_ilayout = cur_layout
- else
-
if g:XkbSwitchNLayout == ''
-
let b:xkb_nlayout = cur_layout
-
endif
- endif
- if exists("a:1")
-
call setbufvar(a:1, 'xkb_ilayout', cur_layout)
- else
-
if mode() =~ '^[iR]'
-
let b:xkb_ilayout = cur_layout
-
else
-
if g:XkbSwitchNLayout == ''
-
let b:xkb_nlayout = cur_layout
-
endif
-
endif
- endif
endfun
fun! enable_xkb_switch(force)
@@ -301,7 +307,7 @@ fun! enable_xkb_switch(force)
if filereadable(g:XkbSwitch['backend']) == 1
augroup XkbSwitch
au!
-
autocmd InsertEnter \* call <SID>xkb_switch(1)
-
bufnr('%') | call xkb_switch(1)
autocmd InsertEnter \* let s:last_insert_enter_bufnr =
for item in g:XkbSwitchPostIEnterAuto
exe "autocmd InsertEnter ".item[0]['pat']."
".item[0]['cmd'].
\ " | if ".item[1].
@@ -310,14 +316,14 @@ fun! enable_xkb_switch(force)
autocmd InsertLeave * call xkb_switch(0)
" BEWARE: Select modes are not supported well when navigating
" between windows or tabs due to vim restrictions -
autocmd BufEnter \* call <SID>xkb_switch(mode() =~ '^[iR]', 2)
-
autocmd BufLeave \* call <SID>xkb_save()
-
xkb_switch(mode() =~ '^[iR]', 2)
autocmd BufEnter \* let s:last_insert_enter_bufnr = 0 | call
-
xkb_save()
autocmd BufLeave \* let s:last_insert_enter_bufnr = 0 | call
-
xkb_save(s:last_insert_enter_bufnr) | endif
autocmd TabLeave \* if s:last_insert_enter_bufnr != 0 | call
augroup END
endif
let g:XkbSwitchEnabled = 1
endfun
On Fri, Apr 19, 2013 at 10:39 PM, lyokha [email protected] wrote:
не там вложенного файла, ты изменения покажи
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16679980
.
from vim-xkbswitch.
блин, форматирование съехало, щас гляну в чем изменения
from vim-xkbswitch.
Пояснение
- BufLeave не вызывается, когда открывается файл в новом табе. Это
особенность вима. - Когда входим в инсерт - сохраняем номер данного буфера в спец. переменной
- по событию BufLeave - обнуляем эту переменную, по событию TabLeave -
проверяем ее значение, если не 0 - значит произошло переключение табов, но
BufLeave не был вызван, тогда для буфера, номер которого в переменной
принудительно сохраняем раскладку insert.
On Fri, Apr 19, 2013 at 10:43 PM, zdm [email protected] wrote:
--- a/plugin/xkbswitch.vim
+++ b/plugin/xkbswitch.vim
@@ -12,6 +12,7 @@ if exists('g:loaded_XkbSwitch') && g:loaded_XkbSwitch
endiflet g:loaded_XkbSwitch = 1
+let s:last_insert_enter_bufnr = 0if !exists('g:XkbSwitchLib')
if has('unix')
@@ -272,7 +273,7 @@ fun! xkb_switch(mode,...)
endif
endfun-fun! xkb_save()
+fun! xkb_save(...)
for ft in g:XkbSwitchSkipFt
if ft == &ft
return
@@ -285,13 +286,18 @@ fun! xkb_save()
return
endif
let cur_layout = libcall(g:XkbSwitch['backend'], g:XkbSwitch['get'],
'')
- if mode() =~ '^[iR]'
let b:xkb_ilayout = cur_layout
- else
if g:XkbSwitchNLayout == ''
let b:xkb_nlayout = cur_layout
endif
- endif
- if exists("a:1")
call setbufvar(a:1, 'xkb_ilayout', cur_layout)
- else
if mode() =~ '^[iR]'
let b:xkb_ilayout = cur_layout
else
if g:XkbSwitchNLayout == ''
let b:xkb_nlayout = cur_layout
endif
endif
- endif
endfunfun! enable_xkb_switch(force)
@@ -301,7 +307,7 @@ fun! enable_xkb_switch(force)
if filereadable(g:XkbSwitch['backend']) == 1
augroup XkbSwitch
au!
autocmd InsertEnter \* call <SID>xkb_switch(1)
bufnr('%') | call xkb_switch(1)autocmd InsertEnter \* let s:last_insert_enter_bufnr =
for item in g:XkbSwitchPostIEnterAuto
exe "autocmd InsertEnter ".item[0]['pat']."
".item[0]['cmd'].
\ " | if ".item[1].
@@ -310,14 +316,14 @@ fun! enable_xkb_switch(force)
autocmd InsertLeave * call xkb_switch(0)
" BEWARE: Select modes are not supported well when navigating
" between windows or tabs due to vim restrictionsautocmd BufEnter \* call <SID>xkb_switch(mode() =~ '^[iR]', 2)
autocmd BufLeave \* call <SID>xkb_save()
xkb_switch(mode() =~ '^[iR]', 2)autocmd BufEnter \* let s:last_insert_enter_bufnr = 0 | call
xkb_save()autocmd BufLeave \* let s:last_insert_enter_bufnr = 0 | call
xkb_save(s:last_insert_enter_bufnr) | endifautocmd TabLeave \* if s:last_insert_enter_bufnr != 0 | call
augroup END
endif
let g:XkbSwitchEnabled = 1
endfunOn Fri, Apr 19, 2013 at 10:39 PM, lyokha [email protected] wrote:
не там вложенного файла, ты изменения покажи
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16679980
.
from vim-xkbswitch.
А, ты с гитхаба пишешь, я а с почты, поэтому ты моих почтовых аттачей не
видишь
Pull request делать лень.
http://www.sendspace.com/file/a7aq42 - выложил сюда
On Fri, Apr 19, 2013 at 10:48 PM, lyokha [email protected] wrote:
блин, форматирование съехало, щас гляну в чем изменения
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16681042
.
from vim-xkbswitch.
ок, я сейчас твой код смотрю, кстати, может имеет смысл тогда уж заменить TabLeave на WinLeave? Перед TabLeave всегда WinLeave вызывается - и более общий тогда случай будет. Только одного понять я не могу - почему у меня работает, а у тебя нет.
from vim-xkbswitch.
http://www.sendspace.com/file/a7aq42 - выложил сюда
не знаю, но BufLeave точно не вызывается при откоытии нового таба. Протестил и на юниксе и на винде. Как у тебя может работать - не представляю.
from vim-xkbswitch.
щас проверю у себя - если будет работать правильно, то закоммичу
from vim-xkbswitch.
а у меня это наоборот не работает (( Буду уже завтра смотреть, как с этим бороться. Еще было бы интересно узнать, как это у других пользователь проявляется.
from vim-xkbswitch.
У меня вызывается BufLeave при открытии нового таба в режиме ввода: я добавил трейс
autocmd BufLeave * echoerr "LEAVE"
открыл файл в gvim, перешел в режим ввода, изменил язык на русский, кликнул меню Файл - выбрал Open tab
- в попап-меню выбрал файл - открылся новый файл, внизу показалось сообщение LEAVE на красном фоне. Может ты как-то по-другому его открываешь? Причем в консольном виме тоже все прекрасно работает.
from vim-xkbswitch.
я открываю ерез коммандную строку
gvim.exe -p --remote-tab-silent
from vim-xkbswitch.
так открывается через total comander например
from vim-xkbswitch.
/*
* Prepare for leaving the current tab page.
* When autocomands change "curtab" we don't leave the tab page and return
* FAIL.
* Careful: When OK is returned need to get a new tab page very very soon!
*/
static int
leave_tabpage(new_curbuf)
buf_T *new_curbuf UNUSED; /* what is going to be the new curbuf,
NULL if unknown */
{
tabpage_T *tp = curtab;
#ifdef FEAT_VISUAL
reset_VIsual_and_resel(); /* stop Visual mode */
#endif
#ifdef FEAT_AUTOCMD
if (new_curbuf != curbuf)
{
apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
if (curtab != tp)
return FAIL;
}
apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
if (curtab != tp)
return FAIL;
apply_autocmds(EVENT_TABLEAVE, NULL, NULL, FALSE, curbuf);
if (curtab != tp)
return FAIL;
#endif
#if defined(FEAT_GUI)
/* Remove the scrollbars. They may be added back later. */
if (gui.in_use)
gui_remove_scrollbars();
#endif
tp->tp_curwin = curwin;
tp->tp_prevwin = prevwin;
tp->tp_firstwin = firstwin;
tp->tp_lastwin = lastwin;
tp->tp_old_Rows = Rows;
tp->tp_old_Columns = Columns;
firstwin = NULL;
lastwin = NULL;
return OK;
}
это кусок кода из vim (текущего): в функции leave_tabpage() есть вызов apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf)
from vim-xkbswitch.
попробуй gvim.exe -p --remote-tab-silent FILENAME
я все отключил, vimrc, плагины, оставил только трасировку, подобную твоей
BufLeave не вызывается
from vim-xkbswitch.
Так тоже работает без проблем. Меня смущает .exe в твоем gvim )) Ты на винде? Я то на ней проверить не могу
from vim-xkbswitch.
сейчас на винде
from vim-xkbswitch.
а в linux пробовал?
from vim-xkbswitch.
при открытии таба твоим методом - все как ты писал, и мой фикс не работает
при открытии моим - все наоборот
надо доделать и заканчивать с этим
from vim-xkbswitch.
строка 290 в моем исходнике, заменить на:
if exists("a:1") && a:1 != bufnr('%')
все, проверяй
from vim-xkbswitch.
луше так, заменить TabLeave autocmd:
autocmd TabLeave * if s:last_insert_enter_bufnr != 0 && s:last_insert_enter_bufnr != bufnr('%') | call xkb_save(s:last_insert_enter_bufnr) | endif
from vim-xkbswitch.
у меня оба способа работают правильно - с вызовом BufLeave, щас проверю твое изменение. Но все таки было бы неплохо проверить последний vim для винды и линукс
from vim-xkbswitch.
я на вмнде, вим самы последний, проверил оба способа
если открывать таб через меню - bufleave работает, в нормал не переходит сам из инсерта
если открывать таб gvim.exe -p --remote-tab-silent - bufleave не работает, всегда переходит в нормал
from vim-xkbswitch.
на линуксе сейчас протестить не могу, есть только консоль - это не то
from vim-xkbswitch.
с моим последним фиксом должно работать везде, там все варианты учтены
from vim-xkbswitch.
ок, у меня работает, сейчас немного подрехтую и выложу
from vim-xkbswitch.
ну слава аллаху
from vim-xkbswitch.
попробуй сейчас - я немного переделал - добавил возможность отключать TabLeave - c помощью let g:XkbSwitchFixNoBufLeave = 0
(по умолчанию фикс включен), если все ок, то я закрываю баг ))
from vim-xkbswitch.
только этого и не хватало для достижения гармонии
работает, закрывай
from vim-xkbswitch.
ок, гут ))
from vim-xkbswitch.
Мне удалось воспроизвести проблему с изменением раскладки в режиме Ввода если вим открывает еще один файл из другой программы (ЭТО ВАЖНО!), например из терминала с помощью gvim --remote-tab-silent file2
. Оказывается, проблема не в BufLeave и InsertLeave - они вызываются, проблема в том, что при выходе из режима Ввода в первом табе раскладка клавиатуры соответствует раскладке окна, из которого был запущен вим! На моем десктопе раскладка следует за окнами, при этом xkb-switch показывает раскладку глобально, отсюда проблема. Видимо в Винде что-то похожее.
from vim-xkbswitch.
не совсем так.
например я запускаю вим из тоталкоммандера по f4. раскладка тотала - en,
раскладка вима - ru, запоминается ру
вроде все работает нормально
2013/4/20 lyokha [email protected]
Мне удалось воспроизвести проблему с изменением раскладки в режиме Ввода
если вим открывает еще один файл из другой программы (ЭТО ВАЖНО!), например
из терминала с помощью gvim --remote-tab-silent file2. Оказывается,
проблема не в BufLeave и InsertLeave - они вызываются, проблема в том, что
при выходе из режима Ввода в первом табе раскладка клавиатуры соответствует
раскладке окна, из которого был запущен вим! На моем десктопе раскладка
следует за окнами, при этом xkb-switch показывает раскладку глобально,
отсюда проблема. Видимо в Винде что-то похожее.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16708786
.
from vim-xkbswitch.
bufleave действительно не выполняется
2013/4/20 zdm [email protected]
не совсем так.
например я запускаю вим из тоталкоммандера по f4. раскладка тотала - en,
раскладка вима - ru, запоминается ру
вроде все работает нормально2013/4/20 lyokha [email protected]
Мне удалось воспроизвести проблему с изменением раскладки в режиме Ввода
если вим открывает еще один файл из другой программы (ЭТО ВАЖНО!), например
из терминала с помощью gvim --remote-tab-silent file2. Оказывается,
проблема не в BufLeave и InsertLeave - они вызываются, проблема в том, что
при выходе из режима Ввода в первом табе раскладка клавиатуры соответствует
раскладке окна, из которого был запущен вим! На моем десктопе раскладка
следует за окнами, при этом xkb-switch показывает раскладку глобально,
отсюда проблема. Видимо в Винде что-то похожее.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16708786
.
from vim-xkbswitch.
просто я понял, что ты вчера запускал и второй файл из внешней программы, я второй файл запускал уже из вима. Твой кейс у меня в линукс не работает с текущей версией. У меня раскладка меняется от окна к окну и это вносит дополнительные проблемы, xkb-switch смотрит раскладку глобально
from vim-xkbswitch.
да, все запускал из вне.
по линуксом сейчас проверить не могу.
2013/4/20 lyokha [email protected]
просто я понял, что ты вчера запускал и второй файл из внешней программы,
я второй файл запускал уже из вима. Твой кейс у меня в линукс не работает с
текущей версией. У меня раскладка меняется от окна к окну и это вносит
дополнительные проблемы, xkb-switch смотрит раскладку глобально—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16709131
.
from vim-xkbswitch.
вообще все должно работать, ведь в момент вызова библиотеки окно вима
является активным, значит для него и вернется раскладка.
2013/4/20 zdm [email protected]
да, все запускал из вне.
по линуксом сейчас проверить не могу.2013/4/20 lyokha [email protected]
просто я понял, что ты вчера запускал и второй файл из внешней программы,
я второй файл запускал уже из вима. Твой кейс у меня в линукс не работает с
текущей версией. У меня раскладка меняется от окна к окну и это вносит
дополнительные проблемы, xkb-switch смотрит раскладку глобально—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16709131
.
from vim-xkbswitch.
Я немного переделал. Дело в том, что у меня текущий фикс не работает. У меня специфичная настройка переключения раскладки и фокусов окон (обе следуют за курсором - такое можно сделать в Linux десктопах). В новом фиксе только для gvim и только когда он скомпилирован c опцией +clientserver раскладка регулярно запоминается в режиме ввода в моменты простоя (используется autocommand CursorHoldI) и только если gvim имеет фокус (это как раз из-за плавающей фокусировки и раскладки). Моменты простоя определяются updatetime (по умолчанию 1 сек.). У тебя тоже должно работать, но есть тонкость при тестировании - если войти в режим ввода, переключить раскладку и тут же открыть новый файл - работать не будет, так как не сработает CursorHoldI. Нужно что-то поделать в буфере - что-то ввести или просто перевести курсор - тогда все будет работать. (Случай, когда пользователь просто переключает раскладку и больше ничего не делает мне кажется неправдоподобным, а потому на него можно забить).
from vim-xkbswitch.
потестирую - отпишу
2013/4/22 lyokha [email protected]
Я немного переделал. Дело в том, что у меня текущий фикс не работает. У
меня специфичная настройка переключения раскладки и фокусов окон (обе
следуют за курсором - такое можно сделать в Linux десктопах). В новом фиксе
только для gvim и только когда он скомпилирован c опцией +clientserver
раскладка регулярно запоминается в режиме ввода в моменты простоя
(используется autocommand CursorHoldI) и только если gvim имеет фокус (это
как раз из-за плавающей фокусировки и раскладки). Моменты простоя
определяются updatetime (по умолчанию 1 сек.). У тебя тоже должно работать,
но есть тонкость при тестировании - если войти в режим ввода, переключить
раскладку и тут же открыть новый файл - работать не будет, так как не
сработает CursorHoldI. Нужно что-то поделать в буфере - что-то ввести или
просто перевести курсор - тогда все будет работать. (Случай, когда
пользователь просто переключает раскладку и больше ничего не делает мне
кажется неправдоподобным, а потому на него можно забить).—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16758764
.
from vim-xkbswitch.
да, все поломалось. буду разбираться.
2013/4/22 zdm [email protected]
потестирую - отпишу
2013/4/22 lyokha [email protected]
Я немного переделал. Дело в том, что у меня текущий фикс не работает. У
меня специфичная настройка переключения раскладки и фокусов окон (обе
следуют за курсором - такое можно сделать в Linux десктопах). В новом фиксе
только для gvim и только когда он скомпилирован c опцией +clientserver
раскладка регулярно запоминается в режиме ввода в моменты простоя
(используется autocommand CursorHoldI) и только если gvim имеет фокус (это
как раз из-за плавающей фокусировки и раскладки). Моменты простоя
определяются updatetime (по умолчанию 1 сек.). У тебя тоже должно работать,
но есть тонкость при тестировании - если войти в режим ввода, переключить
раскладку и тут же открыть новый файл - работать не будет, так как не
сработает CursorHoldI. Нужно что-то поделать в буфере - что-то ввести или
просто перевести курсор - тогда все будет работать. (Случай, когда
пользователь просто переключает раскладку и больше ничего не делает мне
кажется неправдоподобным, а потому на него можно забить).—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16758764
.
from vim-xkbswitch.
Проверь прежде всего, что CursorHoldI срабатывает - вставь туда echoerr
from vim-xkbswitch.
срабатывает
On Mon, Apr 22, 2013 at 11:41 AM, lyokha [email protected] wrote:
Проверь прежде всего, что CursorHoldI срабатывает - вставь туда echoerr
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16766948
.
from vim-xkbswitch.
тогда он должен сохранять b:xkb_ilayout ... А сейчас, одну простую штуку переделаю, забыл ...
from vim-xkbswitch.
проверь сейчас
from vim-xkbswitch.
- сейчас если новый файл открываешь всегда для него дублируется предидущая
раскладка, не зависимо от let g:XkbSwitchNLayout = 'US' или let
g:XkbSwitchILayout = 'US'; - думаю TabLeave надо вернуть в каком-то виде, сохранение по холду курсора
- это хорошо, но не всегда срабатывает;
On Mon, Apr 22, 2013 at 11:49 AM, lyokha [email protected] wrote:
проверь сейчас
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16768386
.
from vim-xkbswitch.
а он у тебя сразу в Insert режиме открывается что-ли?
from vim-xkbswitch.
Вообще там уже много накрутилось всего. Надо выписать всю логику с
описанием отдельно и зависимость от конфигурационных параметров, а потом
реализовать заново, по коду видно, что бессистемно баг закрывается, так еще
больше запутаешься, одно фиксишь - другое отваливается. Мне в коде мало то
понятно, при вызовах используются флаги 1, 0 - за что они отвечают не ясно.
2013/4/22 zdm [email protected]
- сейчас если новый файл открываешь всегда для него дублируется
предидущая раскладка, не зависимо от let g:XkbSwitchNLayout = 'US' или let
g:XkbSwitchILayout = 'US';- думаю TabLeave надо вернуть в каком-то виде, сохранение по холду
курсора - это хорошо, но не всегда срабатывает;On Mon, Apr 22, 2013 at 11:49 AM, lyokha [email protected] wrote:
проверь сейчас
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16768386
.
from vim-xkbswitch.
вот например:
autocmd BufEnter * call xkb_switch(mode() =~ '^[iR]', 2)
и тут же в коде xkb_switch:
let imode = mode() =~ '^[iR]'
зачем это дублирование?
в общем, надо выписать логику, она уже должна быть понятна окончательно,
вроде ты за эти дни все кейсы тестил.
Потом функции xkb_save и enable_xkb_switch написать заново и все будет
гарно)
2013/4/22 zdm [email protected]
Вообще там уже много накрутилось всего. Надо выписать всю логику с
описанием отдельно и зависимость от конфигурационных параметров, а потом
реализовать заново, по коду видно, что бессистемно баг закрывается, так еще
больше запутаешься, одно фиксишь - другое отваливается. Мне в коде мало то
понятно, при вызовах используются флаги 1, 0 - за что они отвечают не ясно.2013/4/22 zdm [email protected]
- сейчас если новый файл открываешь всегда для него дублируется
предидущая раскладка, не зависимо от let g:XkbSwitchNLayout = 'US' или let
g:XkbSwitchILayout = 'US';- думаю TabLeave надо вернуть в каком-то виде, сохранение по холду
курсора - это хорошо, но не всегда срабатывает;On Mon, Apr 22, 2013 at 11:49 AM, lyokha [email protected]:
проверь сейчас
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16768386
.
from vim-xkbswitch.
let imode - в другой функции xkb_save() - туда mode не передается. Так у тебя файлы сразу в режиме Insert открываются?
from vim-xkbswitch.
нет, файлы всгда в нормале открываются, мы ж это тестили 3 дня назад.
у меня, при запуске вима из внешней программы, файлы всегда в нормале, если
был в инсерте - переходит сам в нормал. Событие BufLeave не срабатывает.
если открывать новый таб через меню - тогда вим не меняет текущий режим
(insert / normal), BufLeave срабатывает.
Надо все это выписать, положить перед глазами и за 5 минут разобраться,
какие события как обрабатывать.
Ты тестируешь под иксами на линуксе? опиши, как оно там работает.
Для винды я тебе написал выше.
2013/4/22 lyokha [email protected]
let imode - в другой функции xkb_save() - туда mode не передается. Так у
тебя файлы сразу в режиме Insert открываются?—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16773862
.
from vim-xkbswitch.
А ты последнее изменение взял с let s:XkbSwitchFocused = 1
? Если да, то непонятно, почему let g:XkbSwitchILayout = 'US'
не срабатывает.
from vim-xkbswitch.
Ок, постараюсь описать, для нашей конкретной проблемы есть две важных функции: xkb_switch() и xkb_save(). Параметры xkb_switch(): mode и безымянный флаг, mode означает - это режим ввода (i, R а также 3 режима Select), флаг - если равен 1, то это значит, что переключение находится в режиме ожидания (pending) - это нужно для обеспечения Select режимов и к нашей проблеме не относится, если он равен 2 - то раскладки предыдущего режима запоминаться не будут - это используется только в автокоманде BufEnter для того, чтобы не затереть настройки g:XkbSwitchILayout текущим значением раскладки.
Функция xkb_save() вызывается из BufLeave и CursorHoldI для сохранения раскладки. У нее единственный параметр - безымянный флаг - если он присутствует, то функция должна сразу же вернуться, если окно gvim не сфокусировано - это сделано для того, чтобы не запоминать неверную раскладку, если она следует за мышью.
from vim-xkbswitch.
В моем случае TabLeave не имеет смысла, так как будет вызван из окна c другой раскладкой - и в b:xkb_ilayout сохранится неправильное значение, я не понимаю как у тебя это работает, может виндовая библиотека возвращает раскладку для конкретного окна? - тогда здесь должно быть все ок. Версия xkb-switch для UNIX возвращает текущую глобальную раскладку
from vim-xkbswitch.
блин, так и есть, и это может быть источником проблем
from vim-xkbswitch.
в винде раскладки для окон разделяются.
On Mon, Apr 22, 2013 at 3:51 PM, lyokha [email protected] wrote:
блин, так и есть, и это может быть источником проблем
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16783740
.
from vim-xkbswitch.
да, сейчас добавлю стратегию в s:XkbSwitchDict и верну настройки для винды, у меня в Linux все работает сейчас идеально
from vim-xkbswitch.
Все, внес обратно твои изменения (TabLeave и т.д.) путем разделения стратегий свитчера на глобальную и локальную (per Window) - теперь должно заработать у тебя так как было, у меня тоже все ок. Мог накосячить при переносе, но вроде все ок.
from vim-xkbswitch.
смотрю
2013/4/22 lyokha [email protected]
Все, внес обратно твои изменения (TabLeave и т.д.) путем разделения
стратегий свитчера на глобальную и локальную (per Window) - теперь должно
заработать у тебя так как было, у меня тоже все ок. Мог накосячить при
переносе, но вроде все ок.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16786321
.
from vim-xkbswitch.
не срабатывает, смотрю код
2013/4/22 zdm [email protected]
смотрю
2013/4/22 lyokha [email protected]
Все, внес обратно твои изменения (TabLeave и т.д.) путем разделения
стратегий свитчера на глобальную и локальную (per Window) - теперь должно
заработать у тебя так как было, у меня тоже все ок. Мог накосячить при
переносе, но вроде все ок.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16786321
.
from vim-xkbswitch.
вроде нет косяков, проверил
from vim-xkbswitch.
есть тот-же баг, с которым раньше возились под виндой, когда при открытии
нового файла раскладка для инсерта не сохранялась
On Mon, Apr 22, 2013 at 5:07 PM, lyokha [email protected] wrote:
вроде нет косяков, проверил
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16789033
.
from vim-xkbswitch.
ща исправлю, отвлекают
2013/4/22 zdm [email protected]
есть тот-же баг, с которым раньше возились под виндой, когда при открытии
нового файла раскладка для инсерта не сохраняласьOn Mon, Apr 22, 2013 at 5:07 PM, lyokha [email protected] wrote:
вроде нет косяков, проверил
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16789033
.
from vim-xkbswitch.
Когда вызывается xkb_save из TabLeave, до строки 314:
if s:XkbSwitchSaveILayout && a:0 && g:XkbSwitch['local']
call setbufvar(a:1, 'xkb_ilayout', cur_layout)
не доходит, из - за того, что выходит по условию в строке 310:
if !exists('b:xkb_mappings_loaded')
return
endif
2013/4/22 zdm [email protected]
ща исправлю, отвлекают
2013/4/22 zdm [email protected]
есть тот-же баг, с которым раньше возились под виндой, когда при открытии
нового файла раскладка для инсерта не сохраняласьOn Mon, Apr 22, 2013 at 5:07 PM, lyokha [email protected] wrote:
вроде нет косяков, проверил
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16789033
.
from vim-xkbswitch.
тут ты сам должен поправить
from vim-xkbswitch.
ок, значит оно и раньше не работало
from vim-xkbswitch.
в том то и дело, что раньше работало, сейчас до сохранений раскладки по
TabLeave не доходит, раньше доходило и сохраняло.
On Mon, Apr 22, 2013 at 6:09 PM, lyokha [email protected] wrote:
ок, значит оно и раньше не работало
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16793534
.
from vim-xkbswitch.
странно, во-первых эта строка здесь уже давно, во-вторых InsertEnter запускает xkb_switch(1), который вызывает xkb_mappings_load(), который устанавливает переменную b:xkb_mappings_loaded
from vim-xkbswitch.
т.е. Если ты входил в режим ввода (а это должно было произойти), то эта переменная уже установлена, и это условие (return) не сработает
from vim-xkbswitch.
что делает эта строка?
exe "autocmd InsertEnter " . item[0]['pat'] . " " . item[0]['cmd'] . " | if
" . item[1] . " | let b:xkb_ilayout_managed = 1 | endif"
2013/4/22 lyokha [email protected]
т.е. Если ты входил в режим ввода (а это должно было произойти), то эта
переменная уже установлена, и это условие (return) не сработает—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16794664
.
from vim-xkbswitch.
массив g:XkbSwitchPostIEnterAuto всегда пустой, значит эти autocmd не
устанавливаются
2013/4/22 zdm [email protected]
что делает эта строка?
exe "autocmd InsertEnter " . item[0]['pat'] . " " . item[0]['cmd'] . " |
if " . item[1] . " | let b:xkb_ilayout_managed = 1 | endif"2013/4/22 lyokha [email protected]
т.е. Если ты входил в режим ввода (а это должно было произойти), то эта
переменная уже установлена, и это условие (return) не сработает—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16794664
.
from vim-xkbswitch.
if !exists('g:XkbSwitchPostIEnterAuto')
let g:XkbSwitchPostIEnterAuto = []
endif
2013/4/22 zdm [email protected]
массив g:XkbSwitchPostIEnterAuto всегда пустой, значит эти autocmd не
устанавливаются2013/4/22 zdm [email protected]
что делает эта строка?
exe "autocmd InsertEnter " . item[0]['pat'] . " " . item[0]['cmd'] . " |
if " . item[1] . " | let b:xkb_ilayout_managed = 1 | endif"2013/4/22 lyokha [email protected]
т.е. Если ты входил в режим ввода (а это должно было произойти), то эта
переменная уже установлена, и это условие (return) не сработает—
Reply to this email directly or view it on GitHubhttps://github.com//issues/7#issuecomment-16794664
.
from vim-xkbswitch.
это описано в доке - для реализации кастомных правил переключения внутри режима ввода - она не должна мешать
from vim-xkbswitch.
Related Issues (20)
- Disable dot (repeat last command) in non-english layouts in normal mode HOT 3
- Cannot switch layout while searching + cannot use shortcuts with modifier keys in insert mode HOT 6
- [question] how to change input method in insert mode? HOT 6
- xkb-switch triggered by neoclide Coc documentation float window HOT 2
- vim-xkbswitch does not remember the layout HOT 1
- Windows 10, gvim/nvim-qt, stopped working - how to debug/diagnose? HOT 3
- Unexpected output to textarea HOT 2
- Появление ошибок во время открытия файла HOT 15
- Switch layout when in normal mode HOT 5
- Sway support HOT 1
- Question. How can I get current layout? HOT 2
- How to use vim-xkbswitch with i3wm? HOT 2
- Bspwm Support HOT 1
- Не находит бинарник xkb-switch HOT 1
- Can't restore Normal mode keyboard layout when leaving search '/' mode HOT 6
- mapping duplicate for script local mapping HOT 10
- Keymap assistance in Normal mode not working HOT 8
- Не удается заставить работать на Ubuntu 22.10 HOT 5
- Does not work with lazy.nvim HOT 8
- Doesn't switch language when exiting Insert mode HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vim-xkbswitch.