From 5571414f5b3557da613ce6556a88907d9367a804 Mon Sep 17 00:00:00 2001 From: Heyward Fann Date: Thu, 31 Aug 2023 14:15:15 +0800 Subject: [PATCH] feat(diagnostic): add target to diagnosticInfo (#4642) closes #4633 --- src/__tests__/modules/diagnosticBuffer.test.ts | 2 +- src/diagnostic/buffer.ts | 9 +++++---- src/diagnostic/manager.ts | 4 ++-- src/plugin.ts | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/__tests__/modules/diagnosticBuffer.test.ts b/src/__tests__/modules/diagnosticBuffer.test.ts index f15629102f8..c0735d9c414 100644 --- a/src/__tests__/modules/diagnosticBuffer.test.ts +++ b/src/__tests__/modules/diagnosticBuffer.test.ts @@ -45,7 +45,7 @@ describe('diagnostic buffer', () => { helper.updateConfiguration('diagnostic.messageTarget', 'echo') let buf = await createDiagnosticBuffer() let diagnostics = [createDiagnostic('foo')] - let res = await buf.showFloat(diagnostics) + let res = await buf.showFloat(diagnostics, 'echo') expect(res).toBe(false) }) diff --git a/src/diagnostic/buffer.ts b/src/diagnostic/buffer.ts index 7233513c60c..1f4e47e2216 100644 --- a/src/diagnostic/buffer.ts +++ b/src/diagnostic/buffer.ts @@ -282,10 +282,11 @@ export class DiagnosticBuffer implements SyncItem { /** * Echo diagnostic message under cursor. */ - public async echoMessage(truncate = false, position: Position): Promise { + public async echoMessage(truncate = false, position: Position, target?: string): Promise { const config = this.config if (!config.enable || config.enableMessage === 'never' || config.displayByAle) return false - let useFloat = config.messageTarget == 'float' + if (!target) target = config.messageTarget + let useFloat = target == 'float' let diagnostics = this.getDiagnosticsAtPosition(position) if (config.messageLevel) { diagnostics = diagnostics.filter(diagnostic => { @@ -316,8 +317,8 @@ export class DiagnosticBuffer implements SyncItem { return true } - public async showFloat(diagnostics: Diagnostic[]): Promise { - if (this.config.messageTarget !== 'float') return false + public async showFloat(diagnostics: Diagnostic[], target = 'float'): Promise { + if (target !== 'float') return false if (!floatFactory) floatFactory = window.createFloatFactory({ modes: ['n'], autoHide: true }) if (diagnostics.length == 0) { floatFactory.close() diff --git a/src/diagnostic/manager.ts b/src/diagnostic/manager.ts index c82328f27b5..649e39857e1 100644 --- a/src/diagnostic/manager.ts +++ b/src/diagnostic/manager.ts @@ -423,11 +423,11 @@ class DiagnosticManager implements Disposable { return res[0].getDiagnosticsAtPosition(res[1]) } - public async echoCurrentMessage(): Promise { + public async echoCurrentMessage(target?: string): Promise { let res = await this.getBufferAndPosition() if (!res) return let [item, position] = res - await item.echoMessage(false, position) + await item.echoMessage(false, position, target) } public async jumpRelated(): Promise { diff --git a/src/plugin.ts b/src/plugin.ts index 62a271c4760..09b83aa81ed 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -97,7 +97,7 @@ export default class Plugin { this.addAction('refreshSource', name => sources.refresh(name)) this.addAction('toggleSource', name => sources.toggleSource(name)) this.addAction('diagnosticRefresh', bufnr => diagnosticManager.refresh(bufnr)) - this.addAction('diagnosticInfo', () => diagnosticManager.echoCurrentMessage()) + this.addAction('diagnosticInfo', target => diagnosticManager.echoCurrentMessage(target)) this.addAction('diagnosticToggle', enable => diagnosticManager.toggleDiagnostic(enable)) this.addAction('diagnosticToggleBuffer', (bufnr, enable) => diagnosticManager.toggleDiagnosticBuffer(bufnr, enable)) this.addAction('diagnosticNext', severity => diagnosticManager.jumpNext(severity))