From 8d1f082793a696d920d26ed4471aeaacc70aa018 Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Thu, 21 Dec 2023 21:14:24 +0100 Subject: [PATCH] exclude invalid selectors No more 'Preferences>>defaultAnnotationRequests' or '*Etoys-examples' as completion selectors! --- .../class/contains.caseSensitive.exclude.do..st | 5 +++-- .../ECSymbols.class/class/isValidSelector..st | 6 ++++++ .../ECSymbols.class/methodProperties.json | 3 ++- .../Autocompletion.package/ECSymbols.class/properties.json | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 packages/Autocompletion.package/ECSymbols.class/class/isValidSelector..st diff --git a/packages/Autocompletion.package/ECSymbols.class/class/contains.caseSensitive.exclude.do..st b/packages/Autocompletion.package/ECSymbols.class/class/contains.caseSensitive.exclude.do..st index 53f08a5..1a72bbd 100644 --- a/packages/Autocompletion.package/ECSymbols.class/class/contains.caseSensitive.exclude.do..st +++ b/packages/Autocompletion.package/ECSymbols.class/class/contains.caseSensitive.exclude.do..st @@ -1,4 +1,4 @@ -as yet unclassified +accessing contains: aString caseSensitive: aBoolean exclude: aCollection do: aBlock | separators | @@ -7,5 +7,6 @@ contains: aString caseSensitive: aBoolean exclude: aCollection do: aBlock separators := CharacterSet separators. Symbol allSymbolTablesDo: [:each | ((each indexOfAnyOf: separators startingAt: 1) = 0 and: [(aCollection includes: each) not] - and: [each includesSubstring: aString caseSensitive: aBoolean]) + and: [(each includesSubstring: aString caseSensitive: aBoolean) + and: [self isValidSelector: each]]) ifTrue: [aBlock value: each]]. \ No newline at end of file diff --git a/packages/Autocompletion.package/ECSymbols.class/class/isValidSelector..st b/packages/Autocompletion.package/ECSymbols.class/class/isValidSelector..st new file mode 100644 index 0000000..b919dae --- /dev/null +++ b/packages/Autocompletion.package/ECSymbols.class/class/isValidSelector..st @@ -0,0 +1,6 @@ +testing +isValidSelector: aSymbol + + "ct: ~24% faster than uncached (58ms vs 75ms for Symbol allSymbols)" + ^ (SymbolValidities ifNil: [SymbolValidities := WeakIdentityKeyDictionary new]) + at: aSymbol ifAbsentPut: [aSymbol isMessageSelector] \ No newline at end of file diff --git a/packages/Autocompletion.package/ECSymbols.class/methodProperties.json b/packages/Autocompletion.package/ECSymbols.class/methodProperties.json index 4e30e58..7dad961 100644 --- a/packages/Autocompletion.package/ECSymbols.class/methodProperties.json +++ b/packages/Autocompletion.package/ECSymbols.class/methodProperties.json @@ -1,6 +1,7 @@ { "class" : { "contains:caseSensitive:do:" : "LM 3/20/2019 15:22", - "contains:caseSensitive:exclude:do:" : "LM 3/20/2019 15:22" }, + "contains:caseSensitive:exclude:do:" : "ct 12/21/2023 21:00", + "isValidSelector:" : "ct 12/21/2023 21:05" }, "instance" : { } } diff --git a/packages/Autocompletion.package/ECSymbols.class/properties.json b/packages/Autocompletion.package/ECSymbols.class/properties.json index e8f1454..ef3d41b 100644 --- a/packages/Autocompletion.package/ECSymbols.class/properties.json +++ b/packages/Autocompletion.package/ECSymbols.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "SymbolValidities" ], "commentStamp" : "", "instvars" : [ ],