diff --git a/src/NECompletion-Preferences/NECPreferences.class.st b/src/NECompletion-Preferences/NECPreferences.class.st index 8dd07274be8..38872f1a3b0 100644 --- a/src/NECompletion-Preferences/NECPreferences.class.st +++ b/src/NECompletion-Preferences/NECPreferences.class.st @@ -224,6 +224,10 @@ NECPreferences class >> settingsOn: aBuilder [ label: 'Case Sensitive'; default: true; description: 'Decide if you want eCompletion to be case sensitive or not.'. + (aBuilder setting: #expandPrefixes) + label: 'Expand inferred package prefixes'; + default: true; + description: 'Allow suffix-only matching such as Pre -> SpPresenter when a package prefix is implied.'. (aBuilder setting: #smartCharacters) label: 'Smart Characters'; default: true; diff --git a/src/NECompletion/NECEntry.class.st b/src/NECompletion/NECEntry.class.st index 3b6c0327a8a..7c16bf67bd6 100644 --- a/src/NECompletion/NECEntry.class.st +++ b/src/NECompletion/NECEntry.class.st @@ -76,6 +76,12 @@ NECEntry >> browse [ self subclassResponsibility ] +{ #category : 'matching' } +NECEntry >> completionMatchText [ + + ^ self contents +] + { #category : 'accessing' } NECEntry >> contents [ ^ contents diff --git a/src/NECompletion/NECPrefixExpandableGlobalEntry.class.st b/src/NECompletion/NECPrefixExpandableGlobalEntry.class.st new file mode 100644 index 00000000000..8ac14d25f46 --- /dev/null +++ b/src/NECompletion/NECPrefixExpandableGlobalEntry.class.st @@ -0,0 +1,44 @@ +Class { + #name : 'NECPrefixExpandableGlobalEntry', + #superclass : 'NECGlobalEntry', + #instVars : [ + 'implicitPrefix' + ], + #category : 'NECompletion-Model', + #package : 'NECompletion', + #tag : 'Model' +} + +{ #category : 'as yet unclassified' } +NECPrefixExpandableGlobalEntry class >> contents: aString node: aNode implicitPrefix: aPrefix [ + + ^ self new + contents: aString node: aNode; + implicitPrefix: aPrefix; + yourself +] + +{ #category : 'matching' } +NECPrefixExpandableGlobalEntry >> completionMatchText [ + + (NECPreferences expandPrefixes + and: [ implicitPrefix isNotNil + and: [ implicitPrefix notEmpty + and: [ self contents size > implicitPrefix size + and: [ self contents beginsWith: implicitPrefix ] ] ] ]) + ifTrue: [ ^ self contents allButFirst: implicitPrefix size ]. + + ^ super completionMatchText +] + +{ #category : 'matching' } +NECPrefixExpandableGlobalEntry >> implicitPrefix [ + + ^ implicitPrefix +] + +{ #category : 'matching' } +NECPrefixExpandableGlobalEntry >> implicitPrefix: aString [ + + implicitPrefix := aString +]