From 02be403185b855d6c63987686dfc680bb749120e Mon Sep 17 00:00:00 2001 From: Aldo Nogueira Date: Thu, 1 Mar 2018 11:59:26 -0300 Subject: [PATCH 1/2] Test code provided by alexheretic to filter variable type --- lib/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/index.js b/lib/index.js index 2ee6be9..a4b2f9d 100644 --- a/lib/index.js +++ b/lib/index.js @@ -577,6 +577,20 @@ class RustLanguageClient extends AutoLanguageClient { throw new Error("failed to start server: " + e) } } + + provideOutlines() { + let provide = super.provideOutlines() + let superOutline = provide.getOutline + + provide.getOutline = async (...args) => { + let outline = await superOutline.apply(this, args) + outline.outlineTrees = outline.outlineTrees + .filter(o => o.icon !== "type-variable") + return outline + } + + return provide + } } module.exports = new RustLanguageClient() From 5aa2ca9c3b93656d4102f1594ab4e5f7cbeaefef Mon Sep 17 00:00:00 2001 From: Aldo Nogueira Date: Tue, 6 Mar 2018 11:34:53 -0300 Subject: [PATCH 2/2] Explanation to the filtering of local variables --- lib/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/index.js b/lib/index.js index a4b2f9d..cd9dfd7 100644 --- a/lib/index.js +++ b/lib/index.js @@ -578,6 +578,9 @@ class RustLanguageClient extends AutoLanguageClient { } } + // Extends the outline provider by filtering the type variable, which is s + // only used for local variables by RLS. This makes the outline view + // cleaner and more useful. provideOutlines() { let provide = super.provideOutlines() let superOutline = provide.getOutline