joedicastro / dotfiles

My .dotfiles

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

El autocompletado me está devolviendo error y destroza el editor

aaloy opened this issue · comments

Trabajo en un proyecto Django, al intentar hacer un import o bien acceder a un atributo dinámico y lanzarse el autocompletado automático se está generando un error y a partir de ahí el referesco de pantalla se va a la porra. Ya no puedes ver qué estás escribiendo.

La solución temporal sería poder desactivar el autocompletado automático.
img_001

Si, solución rápida: usa el comando :NeoCompleteLock o :NeoCompleteDisable

Por lo que me dices, tiene pinta de ser Rope que anda tocando las narices... le echaré un vistazo...

Puedo hacer una cosa, para evitar esto en el futuro (me temo que Rope a vece hace estas cagadas) que sería usar la misma estrategia que empleo para los números de línea, el usar el mismo atajo para conmutar entre varios estados. En este caso sería algo así:

auto-complete & auto-selection => auto-complete & manual-selection => auto-complete disabled

Usando el mismo atajo que tenemos ahora <Leader>ea

¿Que te parece la idea?

bien, así se evita que si el Rope hace de las suyas el editor se vuelva inusable

Ok, pues miro la forma de hacerlo más idónea y lo implemento.

Implementado en @8737210c3daae32b943c6ebcd427bbec668ac525, pruebalo y dime que tal 😄

Si no hay noticias de lo contrario, doy este tema por solucionado.

Igual sería mejor que el autocompletado esté desactivado al iniciar, poner un from es un suplicio. Esto no pasaba.

img_002

Perdona que no haya dicho nada antes. He tenido un par de días moviditos...

Tranquilo, no pasa nada.

Eso se arregla en un santiamen, voy a probar un par de cosas.

Haz una prueba si puedes, en el fichero .vimrc comenta este linea:
let g:neocomplete#sources#omni#input_patterns.python='\%([^. \t]\.\|^\s*@\|^\s*from\s.\+import \|^\s*from \|^\s*import \)\w*'

y descomenta esta otra (la que esta encima):

" let g:neocomplete#sources#omni#input_patterns.python='[^. \t]\.\w*'

eso es! :)
ahora funciona bien y no da errores de sintaxis

perfecto, hago un commit rapidito en un plis plas!

Listo, solucionado en @35bb1a46602939e199e8c7e3ba91ae8fa1ec6a60

buenas. Se da menos que antes pero se sigue dando. Por ejemplo, añadiendo un punto en un comentario, o cuando la variable no está definida y pones un punto.

Bueno, los métodos los autocompleta usando Rope, así que está más que claro que es un problema con Rope.

Vamos a ver si probamos a solucionarlo de alguna manera, prueba algo de esto:

  • eliminar la carpeta .ropeproject de la raiz del proyecto
  • ejecutar el comando :PymodeRopeRegenerate para regenerar la cache del proyecto
  • ejecutar el comando :PymodeRopeNewProject para crear un nuevo proyecto

A mi Rope me ha dado problemas a veces, y si el proyecto tiene muchos ficheros/lineas de código a veces la cosa es peor. Las refactorizaciones muchas veces fallaban escandalosamente, quizás por eso el autor de Python-mode las limito a las más básicas. Pero aquí el problema lo genera Rope y Vim no tiene nada que ver. Lo único que podemos hacer es mitigar el problema o ignorar el autocompletado cuando se da uno de estos casos. Otra vía es pasar de Rope y optar por algo como YouCompleteMe, que implica la necesidad de instalarlo desde pip (lo que me obliga a dar rodeos para instalar Vim automaticamente desde cero) y que ademas en mis pruebas no se llevaba precisamente de cine con Neocomplete. Quizás cuando acabe con lo del plugin para reStructuredText lo intente otra vez.

no sé si lo has actualizado, pero tras la última actualización (hoy) el autocompletado ha dejado de dar problemas. 👯

Normalmente lo actualizo una vez al día o cada dos... la verdad, a mi no me había dado ese problema esta vez, si que Rope me ha tocado las narices otras veces. Me alegro de que por fin todo funcione bien 😄

Cierro este luego 🆗

again! :(

Prueba una cosa, cárgate la carpeta bundle con todos los plugins y deja que se autoinstalen otra vez.

Puede parecer una gilipollez, pero hace no mucho descubrí un plugin que no funcionaba bien porque aunque estaba actualizado no había borrado ciertas carpetas y archivos del repo. Andaba con prisas y no me pare a mirar si es que había algún conflicto en el repo que no se había resuelto automáticamente o que demonios había pasado, pero me dejo algo mosca. Tendría que mirar eso con mas detenimiento, creo que Neobundle hacia un git pull --rebase para hacer la actualizacion, si no recuerdo mal. Un TODO más para la lista

Antes de enviar el ticket hice una instalación completa de tu repositorio pero no borré los plugins. Lo hago y te comento.
El problema fundamental es que es muy difícil de reproducir. Tan pronto va todo perfecto como empieza a salir el error de marras y a partir de ahí se hace prácticamente imposible la edición con el autocompletado.

Mmmm... a ver, se me ocurre algo, es posible que con la misma configuración, te funcione bien en un proyecto de Django y en otros no o viceversa?

sí, he reisntalado todo y ahora estoy probando proyectos a ver si puedo encontrar un patrón. Por ahora sigo sin poderlo reproducir.

Es que tengo la sospecha de que el problema este en una o varias de las carpetas de configuración que Rope crea en los proyectos, donde almacena una especie de "cache" que emplea para agilizar el autocompletado. Me refiero a los directorios .ropeproject.

La última vez que me pasó miré di había un .ropeproject en el directorio del proyecto o directorios inferiores y no lo había.

Bueno, pues un sospechoso habitual menos, vamos estrechando el cerco! 😄

Yo he probado a reproducirlo, pero no se me ha dado el error. Este es de los puñeteros, los intermitentes.

si, a mi me tiene loco.
Pero bueno, le iremos estrechando el cerco ;)