fix: autocomplete suggestions for using cursor position

Signed-off-by: ADITYA TIWARI <adityatiwari342005@gmail.com>
pull/17602/head
ADITYA TIWARI 6 months ago
parent d0d2699dc5
commit 02f405692e
  1. 6
      web/ui/module/codemirror-promql/src/complete/hybrid.test.ts
  2. 8
      web/ui/module/codemirror-promql/src/complete/hybrid.ts

@ -299,6 +299,12 @@ describe('analyzeCompletion test', () => {
pos: 33, // cursor is between the bracket after the comma
expectedContext: [{ kind: ContextKind.LabelName, metricName: 'metric_name' }],
},
{
title: 'no label suggestions after closing matcher',
expr: 'up{job="prometheus"}',
pos: 20, // cursor is right after the closing curly bracket
expectedContext: [],
},
{
title: 'continue autocomplete labelName that defined a metric',
expr: '{myL}',

@ -400,12 +400,18 @@ export function analyzeCompletion(state: EditorState, node: SyntaxNode, pos: num
// so we have or to autocomplete any kind of labelName or to autocomplete only the labelName associated to the metric
result.push({ kind: ContextKind.LabelName, metricName: getMetricNameInGroupBy(node, state) });
break;
case LabelMatchers:
case LabelMatchers: {
if (pos >= node.to) {
// Cursor is outside of the label matcher block (e.g. right after `}`),
// so don't offer label-related completions anymore.
break;
}
// In that case we are in the given situation:
// metric_name{} or {}
// so we have or to autocomplete any kind of labelName or to autocomplete only the labelName associated to the metric
result.push({ kind: ContextKind.LabelName, metricName: getMetricNameInVectorSelector(node, state) });
break;
}
case LabelName:
if (node.parent?.type.id === GroupingLabels) {
// In this case we are in the given situation:

Loading…
Cancel
Save