From c05fd0b97602060ea81d506e6e4b0e8a12f22e9e Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Sun, 5 Mar 2017 15:42:11 -0500 Subject: [PATCH] Adds debugging info to CodeLens --- src/gitCodeLensProvider.ts | 5 ++++- src/system/iterable.ts | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/gitCodeLensProvider.ts b/src/gitCodeLensProvider.ts index eb4ac14..acbd085 100644 --- a/src/gitCodeLensProvider.ts +++ b/src/gitCodeLensProvider.ts @@ -232,7 +232,7 @@ export default class GitCodeLensProvider implements CodeLensProvider { const recentCommit = Iterables.first(blame.commits.values()); title = `${recentCommit.author}, ${moment(recentCommit.date).fromNow()}`; if (this._config.advanced.debug && this._config.advanced.output.level === OutputLevel.Verbose) { - title += ` [${recentCommit.sha}, Symbol(${SymbolKind[lens.symbolKind]}), Lines(${lens.blameRange.start.line + 1}-${lens.blameRange.end.line + 1})]`; + title += ` [Commit (${recentCommit.sha}), Symbol (${SymbolKind[lens.symbolKind]}), Lines (${lens.blameRange.start.line + 1}-${lens.blameRange.end.line + 1})]`; } switch (this._config.codeLens.recentChange.command) { @@ -251,6 +251,9 @@ export default class GitCodeLensProvider implements CodeLensProvider { const blame = lens.getBlame(); const count = blame.authors.size; let title = `${count} ${count > 1 ? 'authors' : 'author'} (${Iterables.first(blame.authors.values()).name}${count > 1 ? ' and others' : ''})`; + if (this._config.advanced.debug && this._config.advanced.output.level === OutputLevel.Verbose) { + title += ` [Authors (${Iterables.join(Iterables.map(blame.authors.values(), _ => _.name), ', ')}), Symbol (${SymbolKind[lens.symbolKind]}), Lines (${lens.blameRange.start.line + 1}-${lens.blameRange.end.line + 1})]`; + } switch (this._config.codeLens.authors.command) { case CodeLensCommand.BlameAnnotate: return this._applyBlameAnnotateCommand(title, lens, blame); diff --git a/src/system/iterable.ts b/src/system/iterable.ts index c349539..548bf32 100644 --- a/src/system/iterable.ts +++ b/src/system/iterable.ts @@ -54,6 +54,28 @@ export namespace Iterables { return typeof source[Symbol.iterator] === 'function'; } + export function join(source: Iterable, separator: string): string { + let value: string = ''; + + const iterator = source[Symbol.iterator](); + let next = iterator.next(); + if (next.done) return value; + + while (true) { + const s = next.value.toString(); + + next = iterator.next(); + if (next.done) { + value += s; + break; + } + + value += `${s}${separator}`; + } + + return value; + } + export function last(source: Iterable): T { let item: T; for (item of source) { /* noop */ }