Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/src/multi_trigger_autocomplete.dart
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ class MultiTriggerAutocompleteState extends State<MultiTriggerAutocomplete> {
final text = _textEditingController.text;

var start = querySelection.baseOffset;
if (!keepTrigger) start -= 1;
if (!keepTrigger) start -= _currentTrigger.trigger.length;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | πŸ”΄ Critical

🧩 Analysis chain

LGTM! Correctly fixes multi-character trigger handling.

The change properly accounts for triggers longer than one character. The previous hardcoded start -= 1 only worked for single-character triggers. Using _currentTrigger.trigger.length ensures the entire trigger is included in the replacement range when keepTrigger is false.

This affects both:

  • The text replacement at line 242: text.replaceRange(start, end, option)
  • The cursor position calculation at line 237: selectionOffset = start + option.length

Consider verifying that tests cover multi-character triggers (e.g., "@@", "###") to prevent regression. You can check if test files exist and validate coverage:


🏁 Script executed:

#!/bin/bash
# Find test files and search for multi-character trigger test cases
fd -e dart -t f test | xargs rg -l "acceptAutocompleteOption|keepTrigger" | head -5

# Check for test cases with multi-character triggers
rg -A 10 "keepTrigger.*false|multi.*character.*trigger" --type dart -g '*test*.dart'

Length of output: 41



🏁 Script executed:

#!/bin/bash
# Read the test file to examine test coverage
cat test/multi_trigger_autocomplete_test.dart | head -200

# Search for test groups or test functions related to acceptAutocompleteOption
rg -n "test|group|acceptAutocompleteOption" test/multi_trigger_autocomplete_test.dart | head -30

Length of output: 8267



🏁 Script executed:

#!/bin/bash
# Search for keepTrigger in test file
echo "=== Searching for keepTrigger usage ==="
rg -n "keepTrigger" test/multi_trigger_autocomplete_test.dart

# Get file length and look for multi-character trigger patterns
echo "=== File statistics and multi-character trigger patterns ==="
wc -l test/multi_trigger_autocomplete_test.dart
rg -n "trigger.*[:=].*['\"][@#]{2,}" test/multi_trigger_autocomplete_test.dart

# List all test functions/groups
echo "=== All test functions in file ==="
rg -n "testWidgets|test\(" test/multi_trigger_autocomplete_test.dart | wc -l
rg -n "testWidgets\|^.*test\(" test/multi_trigger_autocomplete_test.dart | head -20

Length of output: 184


Add tests for multi-character triggers with keepTrigger=false.

The fix correctly updates the trigger offset calculation, but verification shows zero test coverage for this scenario. The test file contains 10 test functions, none of which use the keepTrigger parameter or multi-character triggers.

Add tests covering:

  • Multi-character triggers (e.g., "@@", "###") with keepTrigger=false
  • Correct text replacement range when entire multi-character trigger is removed
  • Cursor position after autocomplete selection


final end = querySelection.extentOffset;

Expand Down