Java/Groovy simple completion: better behaviour for completing local variable declaration
Inhibit completion of locals/fields.
--- a/SmallSense__AbstractJavaCompletionEngine.st Mon May 19 11:25:44 2014 +0100
+++ b/SmallSense__AbstractJavaCompletionEngine.st Mon May 19 12:49:07 2014 +0100
@@ -6,7 +6,7 @@
instanceVariableNames:'class method'
classVariableNames:''
poolDictionaries:''
- category:'SmallSense-Java-Abstract'
+ category:'SmallSense-Java'
!
!AbstractJavaCompletionEngine class methodsFor:'queries'!
--- a/SmallSense__AbstractJavaCompletionEngineSimple.st Mon May 19 11:25:44 2014 +0100
+++ b/SmallSense__AbstractJavaCompletionEngineSimple.st Mon May 19 12:49:07 2014 +0100
@@ -4,12 +4,12 @@
AbstractJavaCompletionEngine subclass:#AbstractJavaCompletionEngineSimple
instanceVariableNames:''
- classVariableNames:''
+ classVariableNames:'PatternPrimitiveType PatternReferenceType'
poolDictionaries:''
- category:'SmallSense-Java-Abstract'
+ category:'SmallSense-Java'
!
-AbstractJavaCompletionEngineSimple class instanceVariableNames:'CompletionPatterns AnalysisPatterns'
+AbstractJavaCompletionEngineSimple class instanceVariableNames:'PatternsForCompletion PatternsForAnalysis'
"
No other class instance variables are inherited by this class.
@@ -19,37 +19,75 @@
!AbstractJavaCompletionEngineSimple class methodsFor:'initialization'!
-initializeCompletionPatterns
- CompletionPatterns := Dictionary new.
-
- #(
- '[[:import:]] ( [[:Identifier:]](\.[[:Identifier:]])*\.? )? [[:CARET:]]' #completeImport:
- '[[:new:]] ( [[:Identifier:]](\.[[:Identifier:]])*\.?)? [[:CARET:]]' #completeNew:
+initialize
+ "Invoked at system start or when the class is dynamically loaded."
- ) pairWiseDo:[:pattern :action |
- CompletionPatterns at: (TokenPatternParser parse: pattern) put: action
- ].
- "
- self allSubclassesDo:[ :cls|
- cls initializeCompletionPatterns.
- ].
+ PatternPrimitiveType := '( [[:byte:]] | [[:short:]] | [[:int:]] | [[:long:]] | [[:float:]] | [[:double:]] | [[:char:]] | [[:boolean:]] )'.
+ PatternReferenceType := '( [[:Identifier:]]( \. [[:Identifier:]] )* )'
- Expecco::SmallSenseBridgedGroovyCompletionEngine initializeCompletionPatterns; completionPatterns
- "
-
- "Created: / 14-05-2014 / 16:51:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 18-05-2014 / 20:54:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-05-2014 / 12:31:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!AbstractJavaCompletionEngineSimple class methodsFor:'accessing'!
-completionPatterns
- CompletionPatterns isNil ifTrue:[
- self initializeCompletionPatterns.
+patternsForAnalysis
+ PatternsForAnalysis isNil ifTrue:[
+ PatternsForAnalysis := self patternsFrom: self patternDefinitionsForAnalysis
].
- ^ CompletionPatterns
+ ^ PatternsForAnalysis
+
+ "Created: / 19-05-2014 / 11:56:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+patternsForCompletion
+ PatternsForCompletion isNil ifTrue:[
+ PatternsForCompletion := self patternsFrom: self patternDefinitionsForCompletion.
+ ].
+ ^ PatternsForCompletion
"Created: / 14-05-2014 / 16:55:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-05-2014 / 11:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+patternsFrom: anArray
+ | patterns |
+
+ patterns := Dictionary new.
+ anArray pairWiseDo:[:key :def |
+ patterns at: key put: (TokenPatternParser parse: def)
+ ].
+ ^ patterns
+
+ "Created: / 19-05-2014 / 11:55:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractJavaCompletionEngineSimple class methodsFor:'accessing-definitions'!
+
+patternDefinitionsForAnalysis
+ ^ #(
+"/ #completeImport: '[[:import:]] ( [[:Identifier:]](\.[[:Identifier:]])*\.? )? [[:CARET:]]'
+"/ #completeNew: '[[:new:]] ( [[:Identifier:]](\.[[:Identifier:]])*\.?)? [[:CARET:]]'
+ )
+
+ "
+ self flush
+ "
+
+ "Created: / 19-05-2014 / 11:56:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+patternDefinitionsForCompletion
+ ^ {
+ #completeImport: . '[[:import:]] ( [[:Identifier:]](\.[[:Identifier:]])*\.? )? [[:CARET:]]' .
+ #completeNew: . '[[:new:]] ( [[:Identifier:]](\.[[:Identifier:]])*\.?)? [[:CARET:]]' .
+ #completeLocalDef: . '( ', PatternPrimitiveType , ' | ' , PatternReferenceType , ') [[:Identifier:]] [[:CARET:]]' .
+ }
+
+ "
+ self flush
+ "
+
+ "Created: / 19-05-2014 / 11:51:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!AbstractJavaCompletionEngineSimple class methodsFor:'queries'!
@@ -64,10 +102,19 @@
"Modified: / 19-05-2014 / 11:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!AbstractJavaCompletionEngineSimple class methodsFor:'utilities'!
+
+flush
+ PatternsForAnalysis := PatternsForCompletion := nil.
+ self subclassesDo:[:each | each flush ].
+
+ "Created: / 19-05-2014 / 11:57:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!AbstractJavaCompletionEngineSimple methodsFor:'accessing'!
-completionPatterns
- ^ self class completionPatterns
+patternsForCompletion
+ ^ self class patternsForCompletion
"Created: / 14-05-2014 / 17:02:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
@@ -112,7 +159,7 @@
stream := TokenStream on: (self scannerClass for: line string) cursor: col - 1.
anyMatched := false.
- self completionPatterns keysAndValuesDo:[ :pattern :action |
+ self patternsForCompletion keysAndValuesDo:[ :action :pattern |
| matcher |
stream position: 0. "/ Reset the position
@@ -160,7 +207,7 @@
^ result
"Created: / 02-10-2013 / 13:55:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 18-05-2014 / 10:53:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-05-2014 / 11:46:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
completeImport: match
@@ -176,6 +223,12 @@
"Modified: / 18-05-2014 / 21:39:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+completeLocalDef: match
+ "Nothing to so here. Mainly to inhibit local variable/field completion here"
+
+ "Created: / 19-05-2014 / 12:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
completeLocalOrFieldIn: tokens before: caretTokenIndex
self addVariables
@@ -377,3 +430,5 @@
^ '$Changeset: <not expanded> $'
! !
+
+AbstractJavaCompletionEngineSimple initialize!
--- a/SmallSense__GroovyCompletionEngineSimple.st Mon May 19 11:25:44 2014 +0100
+++ b/SmallSense__GroovyCompletionEngineSimple.st Mon May 19 12:49:07 2014 +0100
@@ -10,6 +10,22 @@
!
+!GroovyCompletionEngineSimple class methodsFor:'accessing-definitions'!
+
+patternDefinitionsForCompletion
+
+ ^super patternDefinitionsForCompletion , {
+ #completeLocalDef: . '( ', PatternPrimitiveType , ' | ' , PatternReferenceType , ' | [[:def:]] ) [[:Identifier:]] [[:CARET:]]' .
+ }
+
+ "
+ self flush.
+ self patternsForCompletion
+ "
+
+ "Created: / 19-05-2014 / 12:32:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!GroovyCompletionEngineSimple methodsFor:'accessing-class'!
scannerClass
--- a/abbrev.stc Mon May 19 11:25:44 2014 +0100
+++ b/abbrev.stc Mon May 19 12:49:07 2014 +0100
@@ -37,7 +37,7 @@
SmallSense::Type SmallSense__Type jv:smallsense 'SmallSense-Smalltalk-Types' 0
SmallSense::TypeHolder SmallSense__TypeHolder jv:smallsense 'SmallSense-Smalltalk-Types' 0
jv_smallsense jv_smallsense jv:smallsense '* Projects & Packages *' 3
-SmallSense::AbstractJavaCompletionEngine SmallSense__AbstractJavaCompletionEngine jv:smallsense 'SmallSense-Java-Abstract' 0
+SmallSense::AbstractJavaCompletionEngine SmallSense__AbstractJavaCompletionEngine jv:smallsense 'SmallSense-Java' 0
SmallSense::ClassInfo SmallSense__ClassInfo jv:smallsense 'SmallSense-Smalltalk-Types-Info' 0
SmallSense::ClassPO SmallSense__ClassPO jv:smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::ClassType SmallSense__ClassType jv:smallsense 'SmallSense-Smalltalk-Types' 0
@@ -55,16 +55,16 @@
SmallSense::UnionType SmallSense__UnionType jv:smallsense 'SmallSense-Smalltalk-Types' 0
SmallSense::UnknownType SmallSense__UnknownType jv:smallsense 'SmallSense-Smalltalk-Types' 1
SmallSense::VariablePO SmallSense__VariablePO jv:smallsense 'SmallSense-Core-Interface-PO' 0
-SmallSense::AbstractJavaCompletionEngineSimple SmallSense__AbstractJavaCompletionEngineSimple jv:smallsense 'SmallSense-Java-Abstract' 2
+SmallSense::AbstractJavaCompletionEngineSimple SmallSense__AbstractJavaCompletionEngineSimple jv:smallsense 'SmallSense-Java' 2
SmallSense::GroovyEditSupport SmallSense__GroovyEditSupport jv:smallsense 'SmallSense-Groovy' 0
SmallSense::JavaCompletionEngine SmallSense__JavaCompletionEngine jv:smallsense 'SmallSense-Java' 0
SmallSense::JavaConstructorPO SmallSense__JavaConstructorPO jv:smallsense 'SmallSense-Java-Interface-PO' 0
SmallSense::MethodKeywordRestPO SmallSense__MethodKeywordRestPO jv:smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::JavaCompletionEngineSimple SmallSense__JavaCompletionEngineSimple jv:smallsense 'SmallSense-Java' 2
SmallSense::GroovyCompletionEngineSimple SmallSense__GroovyCompletionEngineSimple jv:smallsense 'SmallSense-Groovy' 2
+SmallSense::TestCase SmallSense__TestCase jv:smallsense 'SmallSense-Tests' 1
SmallSense::BaseTestClass SmallSense__BaseTestClass jv:smallsense 'SmallSense-Tests' 1
SmallSense::FinderTests SmallSense__FinderTests jv:smallsense 'SmallSense-Tests' 1
SmallSense::RecognizerTests SmallSense__RecognizerTests jv:smallsense 'SmallSense-Tests' 1
SmallSense::SmalltalkParserTests SmallSense__SmalltalkParserTests jv:smallsense 'SmallSense-Tests' 1
-SmallSense::TestCase SmallSense__TestCase jv:smallsense 'SmallSense-Tests' 1
SmallSense::TokenPatternMatcherTests SmallSense__TokenPatternMatcherTests jv:smallsense 'SmallSense-Tests' 1
--- a/jv_smallsense.st Mon May 19 11:25:44 2014 +0100
+++ b/jv_smallsense.st Mon May 19 12:49:07 2014 +0100
@@ -196,13 +196,15 @@
#'SmallSense::MethodKeywordRestPO'
#'SmallSense::JavaCompletionEngineSimple'
#'SmallSense::GroovyCompletionEngineSimple'
+ (#'SmallSense::TestCase' autoload)
(#'SmallSense::BaseTestClass' autoload)
(#'SmallSense::FinderTests' autoload)
(#'SmallSense::RecognizerTests' autoload)
(#'SmallSense::SmalltalkParserTests' autoload)
- (#'SmallSense::TestCase' autoload)
(#'SmallSense::TokenPatternMatcherTests' autoload)
)
+
+ "Modified: / 19-05-2014 / 12:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
extensionMethodNames
--- a/smallsense.rc Mon May 19 11:25:44 2014 +0100
+++ b/smallsense.rc Mon May 19 12:49:07 2014 +0100
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\0"
VALUE "ProductName", "Smalltalk/X\0"
VALUE "ProductVersion", "6.2.3.0\0"
- VALUE "ProductDate", "Mon, 19 May 2014 10:24:19 GMT\0"
+ VALUE "ProductDate", "Mon, 19 May 2014 11:45:35 GMT\0"
END
END