diff --git a/public/app/plugins/datasource/prometheus/components/monaco-query-field/MonacoQueryField.tsx b/public/app/plugins/datasource/prometheus/components/monaco-query-field/MonacoQueryField.tsx index 24989fa9ab7..2d832a6e736 100644 --- a/public/app/plugins/datasource/prometheus/components/monaco-query-field/MonacoQueryField.tsx +++ b/public/app/plugins/datasource/prometheus/components/monaco-query-field/MonacoQueryField.tsx @@ -4,7 +4,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { css } from '@emotion/css'; import { useLatest } from 'react-use'; import { promLanguageDefinition } from 'monaco-promql'; -import { getCompletionProvider } from './monaco-completion-provider'; +import { getCompletionProvider, getSuggestOptions } from './monaco-completion-provider'; import { Props } from './MonacoQueryFieldProps'; import { getOverrideServices } from './getOverrideServices'; @@ -35,6 +35,7 @@ const options: monacoTypes.editor.IStandaloneEditorConstructionOptions = { horizontalScrollbarSize: 0, }, scrollBeyondLastLine: false, + suggest: getSuggestOptions(), suggestFontSize: 12, wordWrap: 'on', }; diff --git a/public/app/plugins/datasource/prometheus/components/monaco-query-field/monaco-completion-provider/index.ts b/public/app/plugins/datasource/prometheus/components/monaco-query-field/monaco-completion-provider/index.ts index e9ceecbc3fa..4685390705a 100644 --- a/public/app/plugins/datasource/prometheus/components/monaco-query-field/monaco-completion-provider/index.ts +++ b/public/app/plugins/datasource/prometheus/components/monaco-query-field/monaco-completion-provider/index.ts @@ -4,6 +4,27 @@ import { getSituation } from './situation'; import { getCompletions, DataProvider, CompletionType } from './completions'; import { NeverCaseError } from './util'; +export function getSuggestOptions(): monacoTypes.editor.ISuggestOptions { + return { + // monaco-editor sometimes provides suggestions automatically, i am not + // sure based on what, seems to be by analyzing the words already + // written. + // to try it out: + // - enter `go_goroutines{job~` + // - have the cursor at the end of the string + // - press ctrl-enter + // - you will get two suggestions + // those were not provided by grafana, they are offered automatically. + // i want to remove those. the only way i found is: + // - every suggestion-item has a `kind` attribute, + // that controls the icon to the left of the suggestion. + // - items auto-generated by monaco have `kind` set to `text`. + // - we make sure grafana-provided suggestions do not have `kind` set to `text`. + // - and then we tell monaco not to show suggestions of kind `text` + showWords: false, + }; +} + function getMonacoCompletionItemKind(type: CompletionType, monaco: Monaco): monacoTypes.languages.CompletionItemKind { switch (type) { case 'DURATION':