Tengo entradas duplicadas en la lista de finalización. Las duplicaciones no están en todas partes, pero es decir, para env::args().
todas las funciones estarán presentes 3 veces.
Aquí hay un gif con demostración:
VSCode: 1.31.1
Versión de extensión: 0.5.3
No se instala ninguna otra extensión de terminación RLS o Rust.
Bien, entonces parece que el problema en el propio RLS. Lo que entendí de la descripción: usa corredor para proporcionar terminaciones. Intenté invocar al corredor manualmente. Aquí está el resultado:
λ racer complete 3 16 src/main.rs | rg collect
MATCH collect,1476,7,/Users/rpeshkov/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/../libcore/iter/iterator.rs,Function,fn collect<B: FromIterator<Self::Item>>(self) -> B where Self: Sized
Entonces, collect
ocurre solo una vez en el resultado del corredor.
Además, lanzó el inspector LSP de Microsoft para verificar qué idioma envía el servidor a VSCode y encontró 3 apariciones de la función collect
y otras funciones también. Archivo de registro:
rust.log .
No logré configurar el entorno depurable rls
. Soy un novato en óxido. Espero tener éxito mañana :)
Ok, resolví el problema. El premio es para el corredor. Probé la finalización del corredor mientras tenía la versión 2.0. RLS se basa en la versión 2.1. Cuando verifiqué lo que sucede cuando invoco racer complete 3 16 src/main.rs
en racer 2.1, me devuelve entradas duplicadas. Ocurre porque antes de la deduplicación de coincidencias, las coincidencias no se ordenan y la función dedup_by
elimina solo los elementos consecutivos.
Se corrigió este comportamiento en Racer y se abrió PR https://github.com/racer-rust/racer/pull/1021
Corregido en https://github.com/rust-lang/rls/pull/1402 , debería estar disponible en la cadena de herramientas nocturna más nueva en 1-2 días.
Cerrando esto como fijo (recuerde que está disponible desde Rust 1.35 )
@Xanewok Supongo que este problema continúa.
$ racer complete 16 9 src/main.rs
PREFIX 289,289,
MATCH username,2,4,src/main.rs,StructField,String
MATCH email,3,4,src/main.rs,StructField,String
MATCH sign_in_count,4,4,src/main.rs,StructField,u64
MATCH active,5,4,src/main.rs,StructField,bool
END
Sin embargo, en VS Code, se ve así:
Avíseme si necesita alguna otra información de depuración.
Comentario más útil
@Xanewok Supongo que este problema continúa.
Sin embargo, en VS Code, se ve así:
Avíseme si necesita alguna otra información de depuración.