Recientemente hemos trabajado un poco con la compatibilidad con ventanas flotantes / ventanas emergentes, pero aún queda mucho trabajo por hacer.
Las nuevas funciones de diálogo funcionan en neovim> = 0.4.0 o vim> = 8.2.750
Borde y título tanto en vim como en neovim, como un nuevo menú de acción:
Ingrese el número para seleccionar o use j
k
G
para navegar y <CR>
para confirmar, use <esc>
para cancelar.
El nuevo mensaje de entrada evita la necesidad de mover los ojos.
Puede usar claves que incluyen <c-u>
<c-e>
<c-a>
, está usando un búfer normal en neovim y un búfer de terminal en vim, por lo que la experiencia podría ser un poco diferente.
Funciones para la ventana flotante de desplazamiento y las ventanas emergentes, pago :h coc#float#has_scroll()
, se han mejorado las nuevas funciones para:
La configuración signature.floatMaxWidth
cambió a signature.maxWindowWidth
con detalle 80.
Crear soporte de diálogo:
Use la api de vim como: call coc#float#create_dialog(['你好', 'vim'], #{close: 0, title: 'hello world', buttons: ['yes', 'no']})
O use window.showDiaglog(config)
Los botones aceptan hacer clic con el mouse solo en neovim, los usuarios de vim deben escribir claves específicas.
Notificaciones:
Planes:
strdisplaywidth
Se cambiarían algunos APis internos y probablemente tenga algo cableado, envíenos sus comentarios.
Funciona tanto en modo inserto como en modo normal.
Oh, solo me di cuenta de eso ahora. Recientemente fusioné un pull para que el modo de inserción se desplazara en nvim, si esto cubre eso, simplemente elimine el anterior. Probaré este nuevo ahora.
pago
:h coc#float#has_scroll()
Cuando intento desplazarme como se sugiere, obtengo muchos <Ignore><Ignore><Ignore><Ignore><Ignore>
en el búfer, en neovim 0.4.4. Mi mapeo actual es:
inoremap <silent><expr> <c-j> coc#float#has_scroll() ? coc#float#scroll(1) : "\<c-j>"
inoremap <silent><expr> <c-k> coc#float#has_scroll() ? coc#float#scroll(0) : "\<c-k>"
vnoremap <silent><expr> <c-j> coc#float#has_scroll() ? coc#float#scroll(1) : "\<c-j>"
vnoremap <silent><expr> <c-k> coc#float#has_scroll() ? coc#float#scroll(0) : "\<c-k>"
coc#util#float_scroll_i
tiene un desplazamiento más suave, así que volví a cambiarlo. Sugeriría usar el argumento de desplazamiento para dar una cantidad, en lugar de la dirección únicamente, como se hizo para coc#util#float_scroll_i
, para que los usuarios puedan controlar cuánto se desplaza en cada paso. Tal vez check arg es flotante o número para desplazarse por porcentaje de ventana o recuento de líneas.
Estoy recibiendo un montón de
en el tampón, en neovim 0.4.4.
<Ignore>
se requiere cuando necesitamos un temporizador, funciona en neovim> = 0.5.0
Hice algunas correcciones para coc#float#has_scroll()
, ahora funciona en neovim> = 0.4.3.
La mala noticia es que es necesario cambiar las asignaciones de claves.
" Note coc#float#scroll works on neovim >= 0.4.3 or vim >= 8.2.0750
nnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
nnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
inoremap <nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
@chemzqm
Lo probé, pero no se está portando bien:
"quickfixes"
action en InsertLeave
, si el diagnóstico cambia, puedo compartir el código si es necesario
Error on request (CocAutocmd): Vim(return):Error invoking 'CocAutocmd' on channel 3 (coc):
ch 3 returned a response with an unknown request id. Ensure the client is properly synchronized
Error on request (quickfixes): Vim(return):Error invoking 'quickfixes' on channel 3 (coc):
[coc] server connection lost
Lo siento, lo cerré por error.
este error no ocurre en la rama de lanzamiento
Quiero reformular eso, veo que la rama de la versión se actualizó, por lo que ahora todos estos problemas también están sucediendo en la rama de la versión. La última confirmación de versión de trabajo es 9ba22e4aa390bc0b7955352c00f0b76db2a9a016.
¿Puedo saber cómo puedo tener asignaciones consistentes de Ctrl-j / k o S- / Tab para ventanas flotantes (por ejemplo, acciones) y ventanas emergentes?
@ Frederick888 por favor pregunte en gitter ya que puede descarrilar el tema.
¿Puedo saber cómo puedo tener asignaciones consistentes de Ctrl-j / k o S- / Tab para ventanas flotantes (por ejemplo, acciones) y ventanas emergentes?
La configuración del menú de acciones aún no está disponible, se recomienda simplemente escribir el número.
@oblitum No puedo reproducir ninguno de sus problemas en neovim 0.4.4 y neovim 0.4.3, abra un nuevo problema con un mínimo de vimrc.
No estoy seguro de si esto está relacionado, pero las terminaciones ahora no se limpian correctamente de vez en cuando cuando se usan ventanas divididas.
Puedo abrir una nueva edición si es necesario.
@ Frederick888 podría suceder cuando no esté usando neovim 0.5.0 y la ventana flotante no esté cerrada por coc.nvim, proporcione la versión de vim con vimrc mínimo.
@chemzqm Gracias por la respuesta rápida y sí, estoy usando neovim v0.4.4, así que esta es probablemente la razón.
Actualmente puedo reproducir este problema usando el vimrc mínimo en la plantilla de informe de errores.
set nocompatible
set runtimepath^=/home/frederick/.vim/plugged/coc.nvim
filetype plugin indent on
syntax on
set hidden
@chemzqm En realidad, acabo de instalar neovim v0.5.0 y todavía tengo este problema al usar el vimrc mínimo de la plantilla de informe de error:
NVIM v0.5.0-765-g75996a2cd
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
Compilation: /usr/bin/gcc-5 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -O2 -g -Og -g -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -I/home/travis/build/neovim/bot-ci/build/neovim/build/config -I/home/travis/build/neovim/bot-ci/build/neovim/src -I/home/travis/build/neovim/bot-ci/build/neovim/.deps/usr/include -I/usr/include -I/home/travis/build/neovim/bot-ci/build/neovim/build/src/nvim/auto -I/home/travis/build/neovim/bot-ci/build/neovim/build/include
Compiled by travis@travis-job-3016a55c-515c-44fe-9085-50cddd40396e
Features: +acl +iconv +tui
See ":help feature-compile"
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/share/nvim"
@ Frederick888 No puedo reproducir.
@chemzqm Han pasado 15 minutos y he estado haciendo repetidamente:
Y sucedió ... una vez lol. Supongo que tendré que contactarte más tarde cuando tenga una forma estable de reproducir esto.
@ Frederick888 prueba la última rama de la versión.
@chemzqm
@fannheyward debería ser arreglado
Estoy usando esta configuración para reemplazar el uso de coc#util#float_scroll_i
:
let g:coc_snippet_next = '<c-l>'
let g:coc_snippet_prev = '<c-h>'
inoremap <silent><nowait><expr> <c-j> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1, 1)\<cr>" : "\<c-j>"
inoremap <silent><nowait><expr> <c-k> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0, 1)\<cr>" : "\<c-k>"
vnoremap <silent><nowait><expr> <c-j> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1, 1)\<cr>" : "\<c-j>"
vnoremap <silent><nowait><expr> <c-k> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0, 1)\<cr>" : "\<c-k>"
Y está funcionando muy bien ahora que los problemas que tenía desaparecieron. Sin embargo, parece que queda una cosa, las asignaciones de modo visual no funcionan (ya sea "\<c-r>=coc#float#scroll(1, 1)\<cr>"
o coc#float#scroll(1, 1)
). ¿Hay alguna forma de respaldar eso, ya que funciona bien en coc#util#float_scroll_i
? De lo contrario, perderá una característica excelente que es desplazarse por la ayuda de firma en la expansión del fragmento y saltar el marcador de posición.
Si hay alguna forma de que eso funcione, entonces creo que coc#util#float_scroll_i
simplemente podría quedar obsoleto o eliminarse, ya que coc#float#scroll
puede hacer todo lo que el otro puede hacer.
Nuevo mensaje de entrada en neovim> = 0.4.3 evita la necesidad de mover los ojos.
Recibo :=coc#float#close_i(1004)
en la línea de comando después de salir del indicador sin cambiar el nombre de la variable.
Puedes usar <silent>
@chemzqm ya es <silent>
, aparece únicamente al salir del indicador sin cambiar el nombre de la variable, lo que ocurre mucho después de la asignación.
@chemzqm Con la última rama de lanzamiento y neovim 0.5.0, todavía puedo ver los restos de la ventana de finalización usando mi vimrc, pero no el mínimo. Pero para probar esto correctamente, probablemente debería revisar AutoKey, etc. (dejó de funcionar en Arch atm ...).
Pero ahora veo algo similar a # 2491 casi todas las veces (sin usar ventanas divididas esta vez):
Después de las últimas confirmaciones, parece que "signature.maxWindowHeight"
dejó de ser respetado y las ventanas de ayuda de firmas pueden volverse muy grandes.
Debe comentar que los nombres no son consistentes. Si bien tiene signature.maxWindowHeight
para la altura, hay signature.floatMaxWidth
para el ancho (este último aún se está respetando).
Lo he estado usando durante los últimos días y, aunque a veces se necesita un poco de paciencia, los artefactos se pueden limpiar eventualmente. Mi último comentario mencionó que 'todavía puedo ver las sobras de la ventana de finalización usando mi vimrc', pero supongo que es simplemente porque no le di suficiente tiempo.
Gracias por el buen trabajo.
Esta es una gran mejora, pero la nueva solicitud de entrada no me funciona. La entrada de texto se borra e ignora cada vez que presiono Enter (estoy presionando constantemente <CR>
en el elenco de abajo). Estoy en Neovim 0.4.4 por cierto.
Otra cosa (menor) que noté es que el título de la solicitud se trunca si (por ejemplo) la variable que está cambiando de nombre está en la primera línea de un búfer:
La entrada de texto se borra y se ignora cada vez que presiono Enter
No puedo reproducir, intente vimRc mínimo.
Oh, resulta que esto solo sucede cuando tengo habilitado tmsvg / pear-tree . 🤦♂️
Actualización: el mensaje de entrada también funciona en vim.
Solía ctrl-f
para abrir la ventana de la línea de comandos cuando _renaming_. ¿Es posible configurar la nueva ventana flotante _rename_ para recuperar el comportamiento anterior?
Solía
ctrl-f
para abrir la ventana de la línea de comandos cuando _renaming_. ¿Es posible configurar la nueva ventana flotante _rename_ para recuperar el comportamiento anterior?
coc.preferences.promptInput
Actualización: coc#float#scroll
ahora admite todos los modos, incluido el modo visual, coc#float#nvim_scroll
está en desuso.
Actualización: agregar soporte de notificaciones, aún no en la rama de lanzamiento.
Comentario más útil
coc.preferences.promptInput