Classes renamed to better express theit purpose.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 24 Sep 2013 02:14:28 +0100
changeset 101 a300290bf8fc
parent 100 6d2fb43e661b
child 102 538fc4ef040c
Classes renamed to better express theit purpose.
Make.proto
Make.spec
SmallSense__CompletionResultSet.st
SmallSense__Finder.st
SmallSense__ParseNodeVisitor.st
SmallSense__Recognizer.st
SmallSense__ResultSet.st
SmallSense__SmalltalkCompletion.st
SmallSense__SmalltalkInferencer.st
SmallSense__SmalltalkParseNodeFinder.st
SmallSense__SmalltalkParseNodeVisitor.st
abbrev.stc
bc.mak
extensions.st
jv_smallsense.st
libInit.cc
smallsense.rc
--- a/Make.proto	Tue Sep 24 01:53:26 2013 +0100
+++ b/Make.proto	Tue Sep 24 02:14:28 2013 +0100
@@ -163,6 +163,7 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)SmallSense__CodeHighlightingService.$(O) SmallSense__CodeHighlightingService.$(H): SmallSense__CodeHighlightingService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeHighlightingService.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__CodeNavigationService.$(O) SmallSense__CodeNavigationService.$(H): SmallSense__CodeNavigationService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeNavigationService.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__CompletionResultSet.$(O) SmallSense__CompletionResultSet.$(H): SmallSense__CompletionResultSet.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__CompletionWindow.$(O) SmallSense__CompletionWindow.$(H): SmallSense__CompletionWindow.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__CriticsWindow.$(O) SmallSense__CriticsWindow.$(H): SmallSense__CriticsWindow.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__EditService.$(O) SmallSense__EditService.$(H): SmallSense__EditService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -171,18 +172,17 @@
 $(OUTDIR)SmallSense__Manager.$(O) SmallSense__Manager.$(H): SmallSense__Manager.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__PO.$(O) SmallSense__PO.$(H): SmallSense__PO.st $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ParseNodeInspector.$(O) SmallSense__ParseNodeInspector.$(H): SmallSense__ParseNodeInspector.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__ParseNodeVisitor.$(O) SmallSense__ParseNodeVisitor.$(H): SmallSense__ParseNodeVisitor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ParseTreeIndex.$(O) SmallSense__ParseTreeIndex.$(H): SmallSense__ParseTreeIndex.st $(INCLUDE_TOP)/stx/libbasic/SortedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ParseTreeIndexEntry.$(O) SmallSense__ParseTreeIndexEntry.$(H): SmallSense__ParseTreeIndexEntry.st $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__Position.$(O) SmallSense__Position.$(H): SmallSense__Position.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__Recognizer.$(O) SmallSense__Recognizer.$(H): SmallSense__Recognizer.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__ResultSet.$(O) SmallSense__ResultSet.$(H): SmallSense__ResultSet.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SelectorNode.$(O) SmallSense__SelectorNode.$(H): SmallSense__SelectorNode.st $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SettingsAppl.$(O) SmallSense__SettingsAppl.$(H): SmallSense__SettingsAppl.st $(INCLUDE_TOP)/stx/libtool/AbstractSettingsApplication.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkChecker.$(O) SmallSense__SmalltalkChecker.$(H): SmallSense__SmalltalkChecker.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint/SmalllintChecker.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkCompletion.$(O) SmallSense__SmalltalkCompletion.$(H): SmallSense__SmalltalkCompletion.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkLintAnnotation.$(O) SmallSense__SmalltalkLintAnnotation.$(H): SmallSense__SmalltalkLintAnnotation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkLintHighlighter.$(O) SmallSense__SmalltalkLintHighlighter.$(H): SmallSense__SmalltalkLintHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkLintService.$(O) SmallSense__SmalltalkLintService.$(H): SmallSense__SmalltalkLintService.st $(INCLUDE_TOP)/stx/libtool/Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkParseNodeVisitor.$(O) SmallSense__SmalltalkParseNodeVisitor.$(H): SmallSense__SmalltalkParseNodeVisitor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkParser.$(O) SmallSense__SmalltalkParser.$(H): SmallSense__SmalltalkParser.st $(INCLUDE_TOP)/stx/libcomp/SyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkQuickFixer.$(O) SmallSense__SmalltalkQuickFixer.$(H): SmallSense__SmalltalkQuickFixer.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkSyntaxHighlighter.$(O) SmallSense__SmalltalkSyntaxHighlighter.$(H): SmallSense__SmalltalkSyntaxHighlighter.st $(INCLUDE_TOP)/stx/libcomp/SyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -194,13 +194,13 @@
 $(OUTDIR)SmallSense__ClassPO.$(O) SmallSense__ClassPO.$(H): SmallSense__ClassPO.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__PO.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ClassType.$(O) SmallSense__ClassType.$(H): SmallSense__ClassType.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__Type.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ConstantPO.$(O) SmallSense__ConstantPO.$(H): SmallSense__ConstantPO.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__PO.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__Finder.$(O) SmallSense__Finder.$(H): SmallSense__Finder.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__ParseNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__GenericEditSupport.$(O) SmallSense__GenericEditSupport.$(H): SmallSense__GenericEditSupport.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__EditSupport.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__JavaEditSupport.$(O) SmallSense__JavaEditSupport.$(H): SmallSense__JavaEditSupport.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__EditSupport.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__MethodInfo.$(O) SmallSense__MethodInfo.$(H): SmallSense__MethodInfo.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__Info.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__MethodPO.$(O) SmallSense__MethodPO.$(H): SmallSense__MethodPO.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__PO.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkEditSupport.$(O) SmallSense__SmalltalkEditSupport.$(H): SmallSense__SmalltalkEditSupport.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__EditSupport.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__SmalltalkInferencer.$(O) SmallSense__SmalltalkInferencer.$(H): SmallSense__SmalltalkInferencer.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/jv/smallsense/SmallSense__ParseNodeVisitor.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkInferencer.$(O) SmallSense__SmalltalkInferencer.$(H): SmallSense__SmalltalkInferencer.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/jv/smallsense/SmallSense__SmalltalkParseNodeVisitor.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkParseNodeFinder.$(O) SmallSense__SmalltalkParseNodeFinder.$(H): SmallSense__SmalltalkParseNodeFinder.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__SmalltalkParseNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SnippetPO.$(O) SmallSense__SnippetPO.$(H): SmallSense__SnippetPO.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__PO.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__UnionType.$(O) SmallSense__UnionType.$(H): SmallSense__UnionType.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__Type.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__UnknownType.$(O) SmallSense__UnknownType.$(H): SmallSense__UnknownType.st $(INCLUDE_TOP)/jv/smallsense/SmallSense__Type.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Tue Sep 24 01:53:26 2013 +0100
+++ b/Make.spec	Tue Sep 24 02:14:28 2013 +0100
@@ -52,6 +52,7 @@
 COMMON_CLASSES= \
 	SmallSense::CodeHighlightingService \
 	SmallSense::CodeNavigationService \
+	SmallSense::CompletionResultSet \
 	SmallSense::CompletionWindow \
 	SmallSense::CriticsWindow \
 	SmallSense::EditService \
@@ -60,18 +61,17 @@
 	SmallSense::Manager \
 	SmallSense::PO \
 	SmallSense::ParseNodeInspector \
-	SmallSense::ParseNodeVisitor \
 	SmallSense::ParseTreeIndex \
 	SmallSense::ParseTreeIndexEntry \
 	SmallSense::Position \
-	SmallSense::Recognizer \
-	SmallSense::ResultSet \
 	SmallSense::SelectorNode \
 	SmallSense::SettingsAppl \
 	SmallSense::SmalltalkChecker \
+	SmallSense::SmalltalkCompletion \
 	SmallSense::SmalltalkLintAnnotation \
 	SmallSense::SmalltalkLintHighlighter \
 	SmallSense::SmalltalkLintService \
+	SmallSense::SmalltalkParseNodeVisitor \
 	SmallSense::SmalltalkParser \
 	SmallSense::SmalltalkQuickFixer \
 	SmallSense::SmalltalkSyntaxHighlighter \
@@ -83,13 +83,13 @@
 	SmallSense::ClassPO \
 	SmallSense::ClassType \
 	SmallSense::ConstantPO \
-	SmallSense::Finder \
 	SmallSense::GenericEditSupport \
 	SmallSense::JavaEditSupport \
 	SmallSense::MethodInfo \
 	SmallSense::MethodPO \
 	SmallSense::SmalltalkEditSupport \
 	SmallSense::SmalltalkInferencer \
+	SmallSense::SmalltalkParseNodeFinder \
 	SmallSense::SnippetPO \
 	SmallSense::UnionType \
 	SmallSense::UnknownType \
@@ -101,6 +101,7 @@
 COMMON_OBJS= \
     $(OUTDIR_SLASH)SmallSense__CodeHighlightingService.$(O) \
     $(OUTDIR_SLASH)SmallSense__CodeNavigationService.$(O) \
+    $(OUTDIR_SLASH)SmallSense__CompletionResultSet.$(O) \
     $(OUTDIR_SLASH)SmallSense__CompletionWindow.$(O) \
     $(OUTDIR_SLASH)SmallSense__CriticsWindow.$(O) \
     $(OUTDIR_SLASH)SmallSense__EditService.$(O) \
@@ -109,18 +110,17 @@
     $(OUTDIR_SLASH)SmallSense__Manager.$(O) \
     $(OUTDIR_SLASH)SmallSense__PO.$(O) \
     $(OUTDIR_SLASH)SmallSense__ParseNodeInspector.$(O) \
-    $(OUTDIR_SLASH)SmallSense__ParseNodeVisitor.$(O) \
     $(OUTDIR_SLASH)SmallSense__ParseTreeIndex.$(O) \
     $(OUTDIR_SLASH)SmallSense__ParseTreeIndexEntry.$(O) \
     $(OUTDIR_SLASH)SmallSense__Position.$(O) \
-    $(OUTDIR_SLASH)SmallSense__Recognizer.$(O) \
-    $(OUTDIR_SLASH)SmallSense__ResultSet.$(O) \
     $(OUTDIR_SLASH)SmallSense__SelectorNode.$(O) \
     $(OUTDIR_SLASH)SmallSense__SettingsAppl.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkChecker.$(O) \
+    $(OUTDIR_SLASH)SmallSense__SmalltalkCompletion.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkLintAnnotation.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkLintHighlighter.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkLintService.$(O) \
+    $(OUTDIR_SLASH)SmallSense__SmalltalkParseNodeVisitor.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkParser.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkQuickFixer.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkSyntaxHighlighter.$(O) \
@@ -132,13 +132,13 @@
     $(OUTDIR_SLASH)SmallSense__ClassPO.$(O) \
     $(OUTDIR_SLASH)SmallSense__ClassType.$(O) \
     $(OUTDIR_SLASH)SmallSense__ConstantPO.$(O) \
-    $(OUTDIR_SLASH)SmallSense__Finder.$(O) \
     $(OUTDIR_SLASH)SmallSense__GenericEditSupport.$(O) \
     $(OUTDIR_SLASH)SmallSense__JavaEditSupport.$(O) \
     $(OUTDIR_SLASH)SmallSense__MethodInfo.$(O) \
     $(OUTDIR_SLASH)SmallSense__MethodPO.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkEditSupport.$(O) \
     $(OUTDIR_SLASH)SmallSense__SmalltalkInferencer.$(O) \
+    $(OUTDIR_SLASH)SmallSense__SmalltalkParseNodeFinder.$(O) \
     $(OUTDIR_SLASH)SmallSense__SnippetPO.$(O) \
     $(OUTDIR_SLASH)SmallSense__UnionType.$(O) \
     $(OUTDIR_SLASH)SmallSense__UnknownType.$(O) \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__CompletionResultSet.st	Tue Sep 24 02:14:28 2013 +0100
@@ -0,0 +1,184 @@
+"{ Package: 'jv:smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+Object subclass:#CompletionResultSet
+	instanceVariableNames:'items position objectNameCollection selectedObjectIndex
+		selectedName'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!CompletionResultSet methodsFor:'accessing'!
+
+items
+
+    ^items
+
+    "Created: / 26-11-2011 / 19:06:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+objectCollection
+    ^ items
+!
+
+objectCollection:something
+    items := something.
+
+    "Modified: / 16-03-2011 / 16:42:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+objectNameCollection
+    ^ objectNameCollection
+
+    "Modified: / 06-04-2011 / 16:31:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+objectNameCollection:something
+    objectNameCollection := something.
+!
+
+position
+    ^ position
+!
+
+position:something
+    position := something.
+!
+
+selectedName
+    ^ selectedName
+!
+
+selectedName:something 
+    self findByName:something.
+    selectedName := something.
+
+    "Modified: / 17-03-2011 / 12:10:57 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+selectedObjectDescription
+    ^ (items at:selectedObjectIndex) description.
+
+    "Modified: / 16-03-2011 / 18:17:38 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+selectedObjectIndex
+    ^ selectedObjectIndex
+!
+
+selectedObjectIndex:something
+    selectedObjectIndex := something.
+! !
+
+!CompletionResultSet methodsFor:'adding'!
+
+add:object 
+    "Add senseResultObject to objectCollection and objectNameCollection"
+    
+    |helperIndex|
+
+    self checkCollection.
+    (object notNil) ifTrue:[
+        helperIndex := objectNameCollection indexOf:(object name).
+        (helperIndex = 0) ifTrue:[
+            items add:object.
+            objectNameCollection add:(object name).
+        ].
+    ].
+
+    "Created: / 16-03-2011 / 16:43:10 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 13:48:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+join: collection 
+    "joining two SmallSenseResultCollection"
+    
+    (collection objectCollection isNil) ifTrue: [
+        ^ nil.
+    ].
+    collection objectCollection do: [:each | 
+        self add: each.
+    ].
+
+    "Created: / 17-03-2011 / 12:11:39 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 17:56:06 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 13:49:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 27-11-2011 / 10:05:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CompletionResultSet methodsFor:'checking'!
+
+checkCollection
+    (objectNameCollection isNil) 
+        ifTrue:[ objectNameCollection := SortedCollection new. ].
+    (items isNil) 
+        ifTrue:[ items := SortedCollection sortBlock:[:a :b|a name < b name]].
+
+    "Created: / 16-03-2011 / 16:46:39 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 07-04-2011 / 10:01:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CompletionResultSet methodsFor:'finding'!
+
+findByName:name
+|index|
+index:=1.
+items do:[:each|
+(each asString startsWith:name)ifTrue:[
+    selectedObjectIndex:=index.
+    ^index
+].
+index:=index+1.
+].
+selectedObjectIndex:=1.
+^index.
+
+    "Created: / 16-03-2011 / 17:16:24 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 16-03-2011 / 18:16:55 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!CompletionResultSet methodsFor:'queries'!
+
+isEmpty
+
+    ^items isEmptyOrNil
+
+    "Created: / 27-11-2011 / 10:03:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isEmptyOrNil
+
+    ^items isEmptyOrNil
+
+    "Created: / 24-07-2013 / 11:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+notEmpty
+
+    ^items notEmptyOrNil
+
+    "Created: / 24-07-2013 / 11:51:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 24-07-2013 / 12:53:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+notEmptyOrNil
+
+    ^items notEmptyOrNil
+
+    "Created: / 24-07-2013 / 11:51:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CompletionResultSet class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
+version_SVN
+    ^ '$Id: SmallSenseResultSet.st 7826 2011-11-27 09:48:43Z vranyj1 $'
+! !
+
--- a/SmallSense__Finder.st	Tue Sep 24 01:53:26 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-"{ Package: 'jv:smallsense' }"
-
-"{ NameSpace: SmallSense }"
-
-ParseNodeVisitor subclass:#Finder
-	instanceVariableNames:'position match previous'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SmallSense-Core'
-!
-
-
-!Finder methodsFor:'finding'!
-
-findNodeIn: source tree: tree line: line column: col
-
-    | sourceS |
-    sourceS := source readStream.
-    line - 1 timesRepeat:[
-        (sourceS nextLine) isNil ifTrue:[
-            "No such line"                                
-            ^nil
-        ].        
-    ].
-    ^self findNodeIn: source tree: tree position: sourceS position + col
-
-    "Created: / 26-11-2011 / 15:33:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-findNodeIn: source tree: tree position: pos
-
-    position := pos - 1.
-    self visit: tree.
-    ^Position node: match ? previous position: pos.
-
-    "Created: / 26-11-2011 / 15:37:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!Finder methodsFor:'visiting'!
-
-visit:anObject 
-
-    anObject isNil ifTrue:[^self].
-
-    (anObject endPosition notNil and:[position > anObject endPosition]) ifTrue:[
-        previous := anObject.
-        anObject acceptVisitor: self.
-        ^self.
-    ].
-
-    (anObject startPosition notNil 
-        and:[anObject endPosition notNil 
-        and:[position between: anObject startPosition and: anObject endPosition]]) ifTrue:[
-        match := anObject.
-    ].
-    anObject acceptVisitor: self.
-
-    "Created: / 26-11-2011 / 15:40:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 19-09-2013 / 11:15:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitStatementNode:anObject 
-
-    self visit: anObject expression.
-    self visit: anObject nextStatement.
-
-    "Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Created: / 26-11-2011 / 15:40:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!Finder class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-!
-
-version_SVN
-    ^ '$Id: SmallSenseFinder.st 7823 2011-11-26 16:55:59Z vranyj1 $'
-! !
-
--- a/SmallSense__ParseNodeVisitor.st	Tue Sep 24 01:53:26 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-"{ Package: 'jv:smallsense' }"
-
-"{ NameSpace: SmallSense }"
-
-Object subclass:#ParseNodeVisitor
-	instanceVariableNames:'class'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SmallSense-Core'
-!
-
-!ParseNodeVisitor class methodsFor:'documentation'!
-
-documentation
-"
-    An abstract parse tree visitor. Copied from libcomp
-    as ParseNodeVisitor is autoloaded and we need smallsense
-    to be fully compiled.
-
-    [author:]
-        Jan Vrany <jan.vrany@fit.cvut.cz>
-
-    [instance variables:]
-
-    [class variables:]
-
-    [see also:]
-
-"
-! !
-
-!ParseNodeVisitor class methodsFor:'instance creation'!
-
-new
-    "return an initialized instance"
-
-    ^ self basicNew initialize.
-! !
-
-!ParseNodeVisitor class methodsFor:'processing'!
-
-process: tree in: class
-
-    ^self new process: tree in: class
-
-    "Created: / 26-11-2011 / 13:48:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!ParseNodeVisitor methodsFor:'initialization'!
-
-initialize
-    "Invoked when a new instance is created."
-
-    "/ please change as required (and remove this comment)
-
-    "/ super initialize.   -- commented since inherited method does nothing
-! !
-
-!ParseNodeVisitor methodsFor:'processing'!
-
-process: tree in: cls
-
-    class := cls.
-    self visit: tree
-
-    "Created: / 26-11-2011 / 13:48:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!ParseNodeVisitor methodsFor:'visiting'!
-
-visit:anObject 
-
-    | stmt |
-
-    ^anObject isStatementNode ifTrue:[
-        stmt := anObject.
-        [ stmt isNil ] whileFalse:[
-            stmt acceptVisitor:self.
-            stmt := stmt nextStatement.
-        ]
-    ] ifFalse:[
-        anObject acceptVisitor: self.
-    ]
-
-    "Modified: / 25-07-2011 / 22:33:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitAssignmentNode:anObject
-
-    self visit: anObject variable.
-    self visit: anObject expression.
-
-    "Modified: / 26-11-2011 / 13:20:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitBinaryNode:anObject 
-
-    ^self visitMessageNode: anObject
-
-    "Modified: / 25-07-2011 / 22:30:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitBlockNode:anObject 
-
-    anObject statements ifNotNil:[
-        self visit: anObject statements
-    ].
-
-    "Modified: / 25-07-2011 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitCascadeNode:anObject 
-
-    self visitMessageNode: anObject.
-
-    "Modified: / 25-07-2011 / 22:37:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitConstantNode:anObject
-
-    "Modified: / 25-07-2011 / 22:41:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitECompletionConstantNode:anObject 
-    "dispatched back from the visited eCompletionConstantNode-object (visitor pattern)"
-
-    "fall back to general object-case - please change as required"
-
-    ^ self visitObject:anObject
-!
-
-visitMessageNode:anObject 
-
-    self visit: anObject receiver.
-    anObject arguments do:[:arg|
-        self visit: arg.
-    ]
-
-    "Modified: / 25-07-2011 / 22:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitObject:anObject 
-    "dispatched back from the visited objects (visitor pattern)"
-
-    "general fallBack - please change as required"
-
-    self halt:'not yet implemented'
-!
-
-visitParseErrorNode:anObject
-    anObject children notNil ifTrue:[
-        anObject children do:[:each|self visit: each].
-    ]
-
-    "Modified: / 15-08-2013 / 12:34:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitPrimitiveNode:anObject
-
-    "Modified: / 25-07-2011 / 22:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitReturnNode:anObject 
-
-    self visitStatementNode: anObject
-
-    "Modified: / 25-07-2011 / 22:34:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitSelfNode:anObject
-
-    "Modified: / 25-07-2011 / 22:38:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitStatementNode:anObject 
-
-    self visit: anObject expression.
-
-    "Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitSuperNode:anObject
-
-    "Modified: / 25-07-2011 / 22:38:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitUnaryNode:anObject 
-
-    self visitMessageNode: anObject
-
-    "Modified: / 25-07-2011 / 22:38:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-visitVariableNode:anObject
-
-    "Modified: / 25-07-2011 / 22:38:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!ParseNodeVisitor class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-!
-
-version_SVN
-    ^ '$Id: SmallSenseParseNodeVisitor.st 7823 2011-11-26 16:55:59Z vranyj1 $'
-! !
-
--- a/SmallSense__Recognizer.st	Tue Sep 24 01:53:26 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,343 +0,0 @@
-"{ Package: 'jv:smallsense' }"
-
-"{ NameSpace: SmallSense }"
-
-Object subclass:#Recognizer
-	instanceVariableNames:'resultSet collector'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SmallSense-Core'
-!
-
-
-!Recognizer class methodsFor:'utilities'!
-
-old_resultSetFor: mode source: source class: class row: row column: col 
-
-    | parser tree |
-
-
-    mode == #method ifTrue:[
-        parser := Parser new.
-        parser 
-            parseMethod:source asString
-            in: class
-            ignoreErrors:false
-            ignoreWarnings:false.
-    ] ifFalse:[
-        parser := Parser for: (source asString readStream).
-        "JV@2011-06-13: HACK, use polymorphism"
-        tree := parser
-            parseExpressionWithSelf:nil 
-            notifying:nil 
-            ignoreErrors:false 
-            ignoreWarnings:false 
-            inNameSpace:nil.
-        parser tree: tree.
-    ].
-    ^ self new
-        recognize:row
-        position:col
-        collector:parser
-
-    "Modified: / 07-04-2011 / 22:55:58 / Jakub <zelenja7@fel.cvut.cz>"
-    "Created: / 26-11-2011 / 14:40:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-resultSetFor: mode source: source class: class line: line column: col 
-
-    | inferencer tree |
-
-
-    mode == #method ifTrue:[
-        inferencer := SmalltalkInferencer forClass: class methodSource: source asString.
-        inferencer parserClass: SmalltalkParser.
-        inferencer process.
-    ] ifFalse:[
-        self breakPoint: #jv.
-        ^nil.
-        inferencer := Parser for: (source asString readStream).
-        "JV@2011-06-13: HACK, use polymorphism"
-        tree := inferencer
-            parseExpressionWithSelf:nil 
-            notifying:nil 
-            ignoreErrors:false 
-            ignoreWarnings:false 
-            inNameSpace:nil.
-        inferencer tree: tree.
-    ].
-    ^ self new
-        completeAtLine:line
-        column:col
-        collector:inferencer
-
-    "Modified: / 07-04-2011 / 22:55:58 / Jakub <zelenja7@fel.cvut.cz>"
-    "Created: / 26-11-2011 / 17:53:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 02-09-2013 / 14:43:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!Recognizer methodsFor:'adding'!
-
-addClassVariables
-    | class |
-
-    class := collector klass theNonMetaclass.
-    class classVarNames do:[:nm|
-        resultSet add:(VariablePO classVariable: nm in: class).
-    ].
-
-    "Created: / 24-07-2013 / 17:00:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 30-07-2013 / 23:32:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-addGlobalsStartingWith: prefix
-
-    | class ns cls |
-    class := collector klass.
-    ns := class nameSpace.
-    "nameSpace may return private class, sigh"
-    [ ns isNameSpace ] whileFalse:[ ns := ns nameSpace ].
-    ns keysDo:[:nm|
-        (nm startsWith: prefix) ifTrue:[
-            cls := ns classNamed: nm.
-            cls notNil ifTrue:[
-                cls isBehavior ifTrue:[
-                    resultSet add:(ClassPO new subject: cls; name: nm).
-                ] ifFalse:[
-                    resultSet add:(VariablePO globalVariable: cls).
-                ]
-            ]
-        ].
-    ].
-    ns ~~ Smalltalk ifTrue:[
-        Smalltalk keysDo:[:nm|
-            (nm startsWith: prefix) ifTrue:[
-                cls := Smalltalk classNamed: nm.
-                cls notNil ifTrue:[
-                    cls isBehavior ifTrue:[
-                        resultSet add:(ClassPO new subject: cls; name: nm ).
-                    ] ifFalse:[
-                        resultSet add:(VariablePO globalVariable: cls).
-                    ]
-                ]
-            ]
-        ].
-    ]
-
-    "Created: / 26-11-2011 / 17:29:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 24-07-2013 / 17:00:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-addMethods: type
-
-    type classesDo:[:each|
-        | class |
-
-        class := each.
-        [ class isNil ] whileFalse:[
-            class 
-                selectorsAndMethodsDo:[:selector :met | 
-                    resultSet add:(MethodPO 
-                                name:selector
-                                description:"met source"nil
-                                class:class).
-                ].
-            class := class superclass.
-        ].
-    ].
-
-    "Created: / 26-11-2011 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-addMethodsStartingWith: prefix
-
-    Smalltalk allClassesDo:[:class|
-        class selectorsAndMethodsDo:[:selector :met | 
-            (selector startsWith: prefix) ifTrue:[
-                resultSet add:(MethodPO 
-                            name:selector
-                            description:"met source"nil
-                            class:class).
-            ]
-        ].
-    ].
-
-    "Created: / 24-07-2013 / 13:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-addPools
-    | class |
-
-    class := collector klass theNonMetaclass.
-    class theNonMetaclass sharedPools do:[:pool|
-        pool theNonMetaclass classVarNames do:[:nm|
-            resultSet add:(VariablePO classVariable: nm in: pool).
-        ]
-    ].
-
-    "Created: / 24-07-2013 / 16:59:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 30-07-2013 / 23:32:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-addPrivateClasses
-    | class |
-
-
-    class := collector klass theNonMetaclass.
-    class privateClassesDo:[:pclass|
-        | nm |
-
-        nm := pclass fullName copyFrom: class fullName size + 3.
-        resultSet add:(ClassPO new subject: pclass; name: nm).
-    ]
-
-    "Created: / 06-08-2013 / 12:28:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-addVariablesFor: node
-
-    | n klass |
-
-    "Add Instance variables"
-    klass := collector klass.
-    [ klass notNil ] whileTrue:[
-         klass instVarNames do:[:nm |
-            resultSet add: (VariablePO instanceVariable: nm in: klass).
-         ].
-         klass := klass superclass.
-    ].
-    "Add pseudo variables"
-    #(self super here thisContext) do:[:nm|
-        resultSet add: (VariablePO new name: nm).
-    ].
-    "Add arguments"
-    collector parser methodArgs ? #() do:[:nm|
-        resultSet add: (VariablePO argument: nm).
-    ].
-    "Add temporaries"
-    collector parser methodVars ? #() do:[:nm|
-        resultSet add: (VariablePO variable: nm).
-    ].
-
-    n := node.
-    [ n notNil ] whileTrue:[
-        n isBlockNode ifTrue:[
-            n arguments ? #() do:[:barg|resultSet add: (VariablePO variable: barg name)].
-            n variables ? #() do:[:bvar|resultSet add: (VariablePO variable: bvar name)].
-        ].
-        n := n parent.
-    ]
-
-    "Created: / 31-07-2013 / 00:32:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-09-2013 / 00:28:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!Recognizer methodsFor:'completion'!
-
-completeAtLine:line column:col collector:coll 
-    "find most possible codeCompletion object"
-    
-    | position |
-    resultSet := ResultSet new.
-    collector := coll.
-
-    (collector tree isNil or:[collector tree == #Error]) ifTrue:[ 
-        ^ resultSet 
-    ].
-
-
-    position := Finder new 
-                    findNodeIn: collector source tree: collector tree 
-                    line: line column: col.
-    resultSet position: position.
-
-
-    position isAfterNode ifTrue:[
-        self completeAfter:position node.
-    ] ifFalse:[
-    position isInNode ifTrue:[
-        self completeIn:position node.
-    ] ifFalse:[
-    position isBeforeNode ifTrue:[
-        self completeBefore:position node.
-    ]]].
-
-    resultSet isEmpty ifTrue:[
-        nil "/Only to set breakpoint here
-    ].
-    ^resultSet.
-
-    "Created: / 04-03-2011 / 13:01:14 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 08-04-2011 / 10:52:59 / Jakub <zelenja7@fel.cvut.cz>"
-    "Created: / 26-11-2011 / 17:05:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 24-07-2013 / 16:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!Recognizer methodsFor:'completion-private'!
-
-completeAfter:node
-    "return collection of completion items after given node"
-
-    self addMethods: node inferedType
-
-    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
-    "Created: / 26-11-2011 / 17:07:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-completeBefore:node
-
-    self breakPoint: #jv. "Not yet implemented"
-
-    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
-    "Created: / 26-11-2011 / 17:07:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-completeIn:node
-    "return collection which can be afterNode"
-    
-    node isVariableNode ifTrue:[
-        node name first isUppercase ifTrue:[
-            self addGlobalsStartingWith: node name.
-            self addClassVariables.
-            self addPools.
-            self addPrivateClasses.
-        ] ifFalse:[
-            self addVariablesFor: node
-        ].
-        ^self.
-    ].
-
-    node isMessage ifTrue:[
-        | type |
-
-        type := node receiver inferedType.
-        type isUnknownType ifFalse:[
-            self addMethods:  type
-        ] ifTrue:[
-            self addMethodsStartingWith: node selector
-        ].
-
-        ^self.
-    ].
-
-    self breakPoint: #jv.
-
-    "Created: / 07-03-2011 / 18:59:02 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 08-04-2011 / 09:31:51 / Jakub <zelenja7@fel.cvut.cz>"
-    "Created: / 26-11-2011 / 17:07:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-08-2013 / 12:28:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!Recognizer class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-!
-
-version_SVN
-    ^ '$Id: SmallSenseRecognizer.st 7826 2011-11-27 09:48:43Z vranyj1 $'
-! !
-
--- a/SmallSense__ResultSet.st	Tue Sep 24 01:53:26 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-"{ Package: 'jv:smallsense' }"
-
-"{ NameSpace: SmallSense }"
-
-Object subclass:#ResultSet
-	instanceVariableNames:'items position objectNameCollection selectedObjectIndex
-		selectedName'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SmallSense-Core'
-!
-
-
-!ResultSet methodsFor:'accessing'!
-
-items
-
-    ^items
-
-    "Created: / 26-11-2011 / 19:06:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-objectCollection
-    ^ items
-!
-
-objectCollection:something
-    items := something.
-
-    "Modified: / 16-03-2011 / 16:42:19 / Jakub <zelenja7@fel.cvut.cz>"
-!
-
-objectNameCollection
-    ^ objectNameCollection
-
-    "Modified: / 06-04-2011 / 16:31:19 / Jakub <zelenja7@fel.cvut.cz>"
-!
-
-objectNameCollection:something
-    objectNameCollection := something.
-!
-
-position
-    ^ position
-!
-
-position:something
-    position := something.
-!
-
-selectedName
-    ^ selectedName
-!
-
-selectedName:something 
-    self findByName:something.
-    selectedName := something.
-
-    "Modified: / 17-03-2011 / 12:10:57 / Jakub <zelenja7@fel.cvut.cz>"
-!
-
-selectedObjectDescription
-    ^ (items at:selectedObjectIndex) description.
-
-    "Modified: / 16-03-2011 / 18:17:38 / Jakub <zelenja7@fel.cvut.cz>"
-!
-
-selectedObjectIndex
-    ^ selectedObjectIndex
-!
-
-selectedObjectIndex:something
-    selectedObjectIndex := something.
-! !
-
-!ResultSet methodsFor:'adding'!
-
-add:object 
-    "Add senseResultObject to objectCollection and objectNameCollection"
-    
-    |helperIndex|
-
-    self checkCollection.
-    (object notNil) ifTrue:[
-        helperIndex := objectNameCollection indexOf:(object name).
-        (helperIndex = 0) ifTrue:[
-            items add:object.
-            objectNameCollection add:(object name).
-        ].
-    ].
-
-    "Created: / 16-03-2011 / 16:43:10 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 04-04-2011 / 13:48:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-join: collection 
-    "joining two SmallSenseResultCollection"
-    
-    (collection objectCollection isNil) ifTrue: [
-        ^ nil.
-    ].
-    collection objectCollection do: [:each | 
-        self add: each.
-    ].
-
-    "Created: / 17-03-2011 / 12:11:39 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 17-03-2011 / 17:56:06 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 04-04-2011 / 13:49:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-11-2011 / 10:05:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!ResultSet methodsFor:'checking'!
-
-checkCollection
-    (objectNameCollection isNil) 
-        ifTrue:[ objectNameCollection := SortedCollection new. ].
-    (items isNil) 
-        ifTrue:[ items := SortedCollection sortBlock:[:a :b|a name < b name]].
-
-    "Created: / 16-03-2011 / 16:46:39 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 07-04-2011 / 10:01:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!ResultSet methodsFor:'finding'!
-
-findByName:name
-|index|
-index:=1.
-items do:[:each|
-(each asString startsWith:name)ifTrue:[
-    selectedObjectIndex:=index.
-    ^index
-].
-index:=index+1.
-].
-selectedObjectIndex:=1.
-^index.
-
-    "Created: / 16-03-2011 / 17:16:24 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 16-03-2011 / 18:16:55 / Jakub <zelenja7@fel.cvut.cz>"
-! !
-
-!ResultSet methodsFor:'queries'!
-
-isEmpty
-
-    ^items isEmptyOrNil
-
-    "Created: / 27-11-2011 / 10:03:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-isEmptyOrNil
-
-    ^items isEmptyOrNil
-
-    "Created: / 24-07-2013 / 11:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-notEmpty
-
-    ^items notEmptyOrNil
-
-    "Created: / 24-07-2013 / 11:51:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 24-07-2013 / 12:53:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-notEmptyOrNil
-
-    ^items notEmptyOrNil
-
-    "Created: / 24-07-2013 / 11:51:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!ResultSet class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-!
-
-version_SVN
-    ^ '$Id: SmallSenseResultSet.st 7826 2011-11-27 09:48:43Z vranyj1 $'
-! !
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__SmalltalkCompletion.st	Tue Sep 24 02:14:28 2013 +0100
@@ -0,0 +1,343 @@
+"{ Package: 'jv:smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+Object subclass:#SmalltalkCompletion
+	instanceVariableNames:'resultSet collector'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Smalltalk-Completion'
+!
+
+
+!SmalltalkCompletion class methodsFor:'utilities'!
+
+old_resultSetFor: mode source: source class: class row: row column: col 
+
+    | parser tree |
+
+
+    mode == #method ifTrue:[
+        parser := Parser new.
+        parser 
+            parseMethod:source asString
+            in: class
+            ignoreErrors:false
+            ignoreWarnings:false.
+    ] ifFalse:[
+        parser := Parser for: (source asString readStream).
+        "JV@2011-06-13: HACK, use polymorphism"
+        tree := parser
+            parseExpressionWithSelf:nil 
+            notifying:nil 
+            ignoreErrors:false 
+            ignoreWarnings:false 
+            inNameSpace:nil.
+        parser tree: tree.
+    ].
+    ^ self new
+        recognize:row
+        position:col
+        collector:parser
+
+    "Modified: / 07-04-2011 / 22:55:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 14:40:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+resultSetFor: mode source: source class: class line: line column: col 
+
+    | inferencer tree |
+
+
+    mode == #method ifTrue:[
+        inferencer := SmalltalkInferencer forClass: class methodSource: source asString.
+        inferencer parserClass: SmalltalkParser.
+        inferencer process.
+    ] ifFalse:[
+        self breakPoint: #jv.
+        ^nil.
+        inferencer := Parser for: (source asString readStream).
+        "JV@2011-06-13: HACK, use polymorphism"
+        tree := inferencer
+            parseExpressionWithSelf:nil 
+            notifying:nil 
+            ignoreErrors:false 
+            ignoreWarnings:false 
+            inNameSpace:nil.
+        inferencer tree: tree.
+    ].
+    ^ self new
+        completeAtLine:line
+        column:col
+        collector:inferencer
+
+    "Modified: / 07-04-2011 / 22:55:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:53:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-09-2013 / 14:43:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkCompletion methodsFor:'adding'!
+
+addClassVariables
+    | class |
+
+    class := collector klass theNonMetaclass.
+    class classVarNames do:[:nm|
+        resultSet add:(VariablePO classVariable: nm in: class).
+    ].
+
+    "Created: / 24-07-2013 / 17:00:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-07-2013 / 23:32:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addGlobalsStartingWith: prefix
+
+    | class ns cls |
+    class := collector klass.
+    ns := class nameSpace.
+    "nameSpace may return private class, sigh"
+    [ ns isNameSpace ] whileFalse:[ ns := ns nameSpace ].
+    ns keysDo:[:nm|
+        (nm startsWith: prefix) ifTrue:[
+            cls := ns classNamed: nm.
+            cls notNil ifTrue:[
+                cls isBehavior ifTrue:[
+                    resultSet add:(ClassPO new subject: cls; name: nm).
+                ] ifFalse:[
+                    resultSet add:(VariablePO globalVariable: cls).
+                ]
+            ]
+        ].
+    ].
+    ns ~~ Smalltalk ifTrue:[
+        Smalltalk keysDo:[:nm|
+            (nm startsWith: prefix) ifTrue:[
+                cls := Smalltalk classNamed: nm.
+                cls notNil ifTrue:[
+                    cls isBehavior ifTrue:[
+                        resultSet add:(ClassPO new subject: cls; name: nm ).
+                    ] ifFalse:[
+                        resultSet add:(VariablePO globalVariable: cls).
+                    ]
+                ]
+            ]
+        ].
+    ]
+
+    "Created: / 26-11-2011 / 17:29:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 24-07-2013 / 17:00:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addMethods: type
+
+    type classesDo:[:each|
+        | class |
+
+        class := each.
+        [ class isNil ] whileFalse:[
+            class 
+                selectorsAndMethodsDo:[:selector :met | 
+                    resultSet add:(MethodPO 
+                                name:selector
+                                description:"met source"nil
+                                class:class).
+                ].
+            class := class superclass.
+        ].
+    ].
+
+    "Created: / 26-11-2011 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addMethodsStartingWith: prefix
+
+    Smalltalk allClassesDo:[:class|
+        class selectorsAndMethodsDo:[:selector :met | 
+            (selector startsWith: prefix) ifTrue:[
+                resultSet add:(MethodPO 
+                            name:selector
+                            description:"met source"nil
+                            class:class).
+            ]
+        ].
+    ].
+
+    "Created: / 24-07-2013 / 13:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addPools
+    | class |
+
+    class := collector klass theNonMetaclass.
+    class theNonMetaclass sharedPools do:[:pool|
+        pool theNonMetaclass classVarNames do:[:nm|
+            resultSet add:(VariablePO classVariable: nm in: pool).
+        ]
+    ].
+
+    "Created: / 24-07-2013 / 16:59:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-07-2013 / 23:32:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addPrivateClasses
+    | class |
+
+
+    class := collector klass theNonMetaclass.
+    class privateClassesDo:[:pclass|
+        | nm |
+
+        nm := pclass fullName copyFrom: class fullName size + 3.
+        resultSet add:(ClassPO new subject: pclass; name: nm).
+    ]
+
+    "Created: / 06-08-2013 / 12:28:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addVariablesFor: node
+
+    | n klass |
+
+    "Add Instance variables"
+    klass := collector klass.
+    [ klass notNil ] whileTrue:[
+         klass instVarNames do:[:nm |
+            resultSet add: (VariablePO instanceVariable: nm in: klass).
+         ].
+         klass := klass superclass.
+    ].
+    "Add pseudo variables"
+    #(self super here thisContext) do:[:nm|
+        resultSet add: (VariablePO new name: nm).
+    ].
+    "Add arguments"
+    collector parser methodArgs ? #() do:[:nm|
+        resultSet add: (VariablePO argument: nm).
+    ].
+    "Add temporaries"
+    collector parser methodVars ? #() do:[:nm|
+        resultSet add: (VariablePO variable: nm).
+    ].
+
+    n := node.
+    [ n notNil ] whileTrue:[
+        n isBlockNode ifTrue:[
+            n arguments ? #() do:[:barg|resultSet add: (VariablePO variable: barg name)].
+            n variables ? #() do:[:bvar|resultSet add: (VariablePO variable: bvar name)].
+        ].
+        n := n parent.
+    ]
+
+    "Created: / 31-07-2013 / 00:32:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-09-2013 / 00:28:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkCompletion methodsFor:'completion'!
+
+completeAtLine:line column:col collector:coll 
+    "find most possible codeCompletion object"
+    
+    | position |
+    resultSet := ResultSet new.
+    collector := coll.
+
+    (collector tree isNil or:[collector tree == #Error]) ifTrue:[ 
+        ^ resultSet 
+    ].
+
+
+    position := Finder new 
+                    findNodeIn: collector source tree: collector tree 
+                    line: line column: col.
+    resultSet position: position.
+
+
+    position isAfterNode ifTrue:[
+        self completeAfter:position node.
+    ] ifFalse:[
+    position isInNode ifTrue:[
+        self completeIn:position node.
+    ] ifFalse:[
+    position isBeforeNode ifTrue:[
+        self completeBefore:position node.
+    ]]].
+
+    resultSet isEmpty ifTrue:[
+        nil "/Only to set breakpoint here
+    ].
+    ^resultSet.
+
+    "Created: / 04-03-2011 / 13:01:14 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:52:59 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:05:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 24-07-2013 / 16:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkCompletion methodsFor:'completion-private'!
+
+completeAfter:node
+    "return collection of completion items after given node"
+
+    self addMethods: node inferedType
+
+    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:07:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+completeBefore:node
+
+    self breakPoint: #jv. "Not yet implemented"
+
+    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:07:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+completeIn:node
+    "return collection which can be afterNode"
+    
+    node isVariableNode ifTrue:[
+        node name first isUppercase ifTrue:[
+            self addGlobalsStartingWith: node name.
+            self addClassVariables.
+            self addPools.
+            self addPrivateClasses.
+        ] ifFalse:[
+            self addVariablesFor: node
+        ].
+        ^self.
+    ].
+
+    node isMessage ifTrue:[
+        | type |
+
+        type := node receiver inferedType.
+        type isUnknownType ifFalse:[
+            self addMethods:  type
+        ] ifTrue:[
+            self addMethodsStartingWith: node selector
+        ].
+
+        ^self.
+    ].
+
+    self breakPoint: #jv.
+
+    "Created: / 07-03-2011 / 18:59:02 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 09:31:51 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:07:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-08-2013 / 12:28:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkCompletion class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
+version_SVN
+    ^ '$Id: SmallSenseRecognizer.st 7826 2011-11-27 09:48:43Z vranyj1 $'
+! !
+
--- a/SmallSense__SmalltalkInferencer.st	Tue Sep 24 01:53:26 2013 +0100
+++ b/SmallSense__SmalltalkInferencer.st	Tue Sep 24 02:14:28 2013 +0100
@@ -9,14 +9,14 @@
 	category:'SmallSense-Smalltalk-Types-Inference'
 !
 
-ParseNodeVisitor subclass:#Phase1
+SmalltalkParseNodeVisitor subclass:#Phase1
 	instanceVariableNames:'classInfo sends types'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:SmalltalkInferencer
 !
 
-ParseNodeVisitor subclass:#Phase2
+SmalltalkParseNodeVisitor subclass:#Phase2
 	instanceVariableNames:'classInfo'
 	classVariableNames:''
 	poolDictionaries:''
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__SmalltalkParseNodeFinder.st	Tue Sep 24 02:14:28 2013 +0100
@@ -0,0 +1,81 @@
+"{ Package: 'jv:smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+SmalltalkParseNodeVisitor subclass:#SmalltalkParseNodeFinder
+	instanceVariableNames:'position match previous'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Smalltalk'
+!
+
+
+!SmalltalkParseNodeFinder methodsFor:'finding'!
+
+findNodeIn: source tree: tree line: line column: col
+
+    | sourceS |
+    sourceS := source readStream.
+    line - 1 timesRepeat:[
+        (sourceS nextLine) isNil ifTrue:[
+            "No such line"                                
+            ^nil
+        ].        
+    ].
+    ^self findNodeIn: source tree: tree position: sourceS position + col
+
+    "Created: / 26-11-2011 / 15:33:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+findNodeIn: source tree: tree position: pos
+
+    position := pos - 1.
+    self visit: tree.
+    ^Position node: match ? previous position: pos.
+
+    "Created: / 26-11-2011 / 15:37:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkParseNodeFinder methodsFor:'visiting'!
+
+visit:anObject 
+
+    anObject isNil ifTrue:[^self].
+
+    (anObject endPosition notNil and:[position > anObject endPosition]) ifTrue:[
+        previous := anObject.
+        anObject acceptVisitor: self.
+        ^self.
+    ].
+
+    (anObject startPosition notNil 
+        and:[anObject endPosition notNil 
+        and:[position between: anObject startPosition and: anObject endPosition]]) ifTrue:[
+        match := anObject.
+    ].
+    anObject acceptVisitor: self.
+
+    "Created: / 26-11-2011 / 15:40:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-09-2013 / 11:15:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitStatementNode:anObject 
+
+    self visit: anObject expression.
+    self visit: anObject nextStatement.
+
+    "Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 26-11-2011 / 15:40:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkParseNodeFinder class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
+version_SVN
+    ^ '$Id: SmallSenseFinder.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__SmalltalkParseNodeVisitor.st	Tue Sep 24 02:14:28 2013 +0100
@@ -0,0 +1,209 @@
+"{ Package: 'jv:smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+Object subclass:#SmalltalkParseNodeVisitor
+	instanceVariableNames:'class'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Smalltalk'
+!
+
+!SmalltalkParseNodeVisitor class methodsFor:'documentation'!
+
+documentation
+"
+    An abstract parse tree visitor. Copied from libcomp
+    as ParseNodeVisitor is autoloaded and we need smallsense
+    to be fully compiled.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!SmalltalkParseNodeVisitor class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
+!SmalltalkParseNodeVisitor class methodsFor:'processing'!
+
+process: tree in: class
+
+    ^self new process: tree in: class
+
+    "Created: / 26-11-2011 / 13:48:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkParseNodeVisitor methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
+
+    "/ please change as required (and remove this comment)
+
+    "/ super initialize.   -- commented since inherited method does nothing
+! !
+
+!SmalltalkParseNodeVisitor methodsFor:'processing'!
+
+process: tree in: cls
+
+    class := cls.
+    self visit: tree
+
+    "Created: / 26-11-2011 / 13:48:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkParseNodeVisitor methodsFor:'visiting'!
+
+visit:anObject 
+
+    | stmt |
+
+    ^anObject isStatementNode ifTrue:[
+        stmt := anObject.
+        [ stmt isNil ] whileFalse:[
+            stmt acceptVisitor:self.
+            stmt := stmt nextStatement.
+        ]
+    ] ifFalse:[
+        anObject acceptVisitor: self.
+    ]
+
+    "Modified: / 25-07-2011 / 22:33:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitAssignmentNode:anObject
+
+    self visit: anObject variable.
+    self visit: anObject expression.
+
+    "Modified: / 26-11-2011 / 13:20:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitBinaryNode:anObject 
+
+    ^self visitMessageNode: anObject
+
+    "Modified: / 25-07-2011 / 22:30:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitBlockNode:anObject 
+
+    anObject statements ifNotNil:[
+        self visit: anObject statements
+    ].
+
+    "Modified: / 25-07-2011 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitCascadeNode:anObject 
+
+    self visitMessageNode: anObject.
+
+    "Modified: / 25-07-2011 / 22:37:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitConstantNode:anObject
+
+    "Modified: / 25-07-2011 / 22:41:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitECompletionConstantNode:anObject 
+    "dispatched back from the visited eCompletionConstantNode-object (visitor pattern)"
+
+    "fall back to general object-case - please change as required"
+
+    ^ self visitObject:anObject
+!
+
+visitMessageNode:anObject 
+
+    self visit: anObject receiver.
+    anObject arguments do:[:arg|
+        self visit: arg.
+    ]
+
+    "Modified: / 25-07-2011 / 22:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitObject:anObject 
+    "dispatched back from the visited objects (visitor pattern)"
+
+    "general fallBack - please change as required"
+
+    self halt:'not yet implemented'
+!
+
+visitParseErrorNode:anObject
+    anObject children notNil ifTrue:[
+        anObject children do:[:each|self visit: each].
+    ]
+
+    "Modified: / 15-08-2013 / 12:34:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitPrimitiveNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitReturnNode:anObject 
+
+    self visitStatementNode: anObject
+
+    "Modified: / 25-07-2011 / 22:34:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitSelfNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitStatementNode:anObject 
+
+    self visit: anObject expression.
+
+    "Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitSuperNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitUnaryNode:anObject 
+
+    self visitMessageNode: anObject
+
+    "Modified: / 25-07-2011 / 22:38:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitVariableNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmalltalkParseNodeVisitor class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
+version_SVN
+    ^ '$Id: SmallSenseParseNodeVisitor.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
+
--- a/abbrev.stc	Tue Sep 24 01:53:26 2013 +0100
+++ b/abbrev.stc	Tue Sep 24 02:14:28 2013 +0100
@@ -4,6 +4,7 @@
 SmallSense::BaseTestClass SmallSense__BaseTestClass jv:smallsense 'SmallSense-Tests' 1
 SmallSense::CodeHighlightingService SmallSense__CodeHighlightingService jv:smallsense 'SmallSense-Core-Services' 0
 SmallSense::CodeNavigationService SmallSense__CodeNavigationService jv:smallsense 'SmallSense-Core-Services' 0
+SmallSense::CompletionResultSet SmallSense__CompletionResultSet jv:smallsense 'SmallSense-Core' 0
 SmallSense::CompletionWindow SmallSense__CompletionWindow jv:smallsense 'SmallSense-Core-Interface' 1
 SmallSense::CriticsWindow SmallSense__CriticsWindow jv:smallsense 'SmallSense-Core-Interface' 1
 SmallSense::EditService SmallSense__EditService jv:smallsense 'SmallSense-Core-Services' 0
@@ -13,19 +14,18 @@
 SmallSense::Manager SmallSense__Manager jv:smallsense 'SmallSense-Smalltalk-Types-Info' 0
 SmallSense::PO SmallSense__PO jv:smallsense 'SmallSense-Core-Interface-PO' 0
 SmallSense::ParseNodeInspector SmallSense__ParseNodeInspector jv:smallsense 'SmallSense-Core-Interface' 1
-SmallSense::ParseNodeVisitor SmallSense__ParseNodeVisitor jv:smallsense 'SmallSense-Core' 0
 SmallSense::ParseTreeIndex SmallSense__ParseTreeIndex jv:smallsense 'SmallSense-Core-Index' 0
 SmallSense::ParseTreeIndexEntry SmallSense__ParseTreeIndexEntry jv:smallsense 'SmallSense-Core-Index' 0
 SmallSense::Position SmallSense__Position jv:smallsense 'SmallSense-Core' 0
-SmallSense::Recognizer SmallSense__Recognizer jv:smallsense 'SmallSense-Core' 0
 SmallSense::RecognizerTests SmallSense__RecognizerTests jv:smallsense 'SmallSense-Tests' 1
-SmallSense::ResultSet SmallSense__ResultSet jv:smallsense 'SmallSense-Core' 0
 SmallSense::SelectorNode SmallSense__SelectorNode jv:smallsense 'SmallSense-Core' 0
 SmallSense::SettingsAppl SmallSense__SettingsAppl jv:smallsense 'SmallSense-Core-Interface' 1
 SmallSense::SmalltalkChecker SmallSense__SmalltalkChecker jv:smallsense 'SmallSense-Smalltalk-Lint' 0
+SmallSense::SmalltalkCompletion SmallSense__SmalltalkCompletion jv:smallsense 'SmallSense-Smalltalk-Completion' 0
 SmallSense::SmalltalkLintAnnotation SmallSense__SmalltalkLintAnnotation jv:smallsense 'SmallSense-Smalltalk-Lint' 0
 SmallSense::SmalltalkLintHighlighter SmallSense__SmalltalkLintHighlighter jv:smallsense 'SmallSense-Smalltalk-Lint' 0
 SmallSense::SmalltalkLintService SmallSense__SmalltalkLintService jv:smallsense 'SmallSense-Smalltalk-Lint' 0
+SmallSense::SmalltalkParseNodeVisitor SmallSense__SmalltalkParseNodeVisitor jv:smallsense 'SmallSense-Smalltalk' 0
 SmallSense::SmalltalkParser SmallSense__SmalltalkParser jv:smallsense 'SmallSense-Smalltalk' 3
 SmallSense::SmalltalkParserTests SmallSense__SmalltalkParserTests jv:smallsense 'SmallSense-Tests' 1
 SmallSense::SmalltalkQuickFixer SmallSense__SmalltalkQuickFixer jv:smallsense 'SmallSense-Smalltalk-Lint' 0
@@ -39,13 +39,13 @@
 SmallSense::ClassPO SmallSense__ClassPO jv:smallsense 'SmallSense-Core-Interface-PO' 0
 SmallSense::ClassType SmallSense__ClassType jv:smallsense 'SmallSense-Smalltalk-Types' 0
 SmallSense::ConstantPO SmallSense__ConstantPO jv:smallsense 'SmallSense-Core-Interface-PO' 0
-SmallSense::Finder SmallSense__Finder jv:smallsense 'SmallSense-Core' 0
 SmallSense::GenericEditSupport SmallSense__GenericEditSupport jv:smallsense 'SmallSense-Core-Services' 0
 SmallSense::JavaEditSupport SmallSense__JavaEditSupport jv:smallsense 'SmallSense-Java' 0
 SmallSense::MethodInfo SmallSense__MethodInfo jv:smallsense 'SmallSense-Smalltalk-Types-Info' 0
 SmallSense::MethodPO SmallSense__MethodPO jv:smallsense 'SmallSense-Core-Interface-PO' 0
 SmallSense::SmalltalkEditSupport SmallSense__SmalltalkEditSupport jv:smallsense 'SmallSense-Smalltalk' 0
 SmallSense::SmalltalkInferencer SmallSense__SmalltalkInferencer jv:smallsense 'SmallSense-Smalltalk-Types-Inference' 0
+SmallSense::SmalltalkParseNodeFinder SmallSense__SmalltalkParseNodeFinder jv:smallsense 'SmallSense-Smalltalk' 0
 SmallSense::SnippetPO SmallSense__SnippetPO jv:smallsense 'SmallSense-Core-Interface-PO' 0
 SmallSense::UnionType SmallSense__UnionType jv:smallsense 'SmallSense-Smalltalk-Types' 0
 SmallSense::UnknownType SmallSense__UnknownType jv:smallsense 'SmallSense-Smalltalk-Types' 1
--- a/bc.mak	Tue Sep 24 01:53:26 2013 +0100
+++ b/bc.mak	Tue Sep 24 02:14:28 2013 +0100
@@ -87,6 +87,7 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)SmallSense__CodeHighlightingService.$(O) SmallSense__CodeHighlightingService.$(H): SmallSense__CodeHighlightingService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeHighlightingService.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__CodeNavigationService.$(O) SmallSense__CodeNavigationService.$(H): SmallSense__CodeNavigationService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeNavigationService.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__CompletionResultSet.$(O) SmallSense__CompletionResultSet.$(H): SmallSense__CompletionResultSet.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__CompletionWindow.$(O) SmallSense__CompletionWindow.$(H): SmallSense__CompletionWindow.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__CriticsWindow.$(O) SmallSense__CriticsWindow.$(H): SmallSense__CriticsWindow.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__EditService.$(O) SmallSense__EditService.$(H): SmallSense__EditService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -95,18 +96,17 @@
 $(OUTDIR)SmallSense__Manager.$(O) SmallSense__Manager.$(H): SmallSense__Manager.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__PO.$(O) SmallSense__PO.$(H): SmallSense__PO.st $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ParseNodeInspector.$(O) SmallSense__ParseNodeInspector.$(H): SmallSense__ParseNodeInspector.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__ParseNodeVisitor.$(O) SmallSense__ParseNodeVisitor.$(H): SmallSense__ParseNodeVisitor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ParseTreeIndex.$(O) SmallSense__ParseTreeIndex.$(H): SmallSense__ParseTreeIndex.st $(INCLUDE_TOP)\stx\libbasic\SortedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ParseTreeIndexEntry.$(O) SmallSense__ParseTreeIndexEntry.$(H): SmallSense__ParseTreeIndexEntry.st $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__Position.$(O) SmallSense__Position.$(H): SmallSense__Position.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__Recognizer.$(O) SmallSense__Recognizer.$(H): SmallSense__Recognizer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__ResultSet.$(O) SmallSense__ResultSet.$(H): SmallSense__ResultSet.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SelectorNode.$(O) SmallSense__SelectorNode.$(H): SmallSense__SelectorNode.st $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SettingsAppl.$(O) SmallSense__SettingsAppl.$(H): SmallSense__SettingsAppl.st $(INCLUDE_TOP)\stx\libtool\AbstractSettingsApplication.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkChecker.$(O) SmallSense__SmalltalkChecker.$(H): SmallSense__SmalltalkChecker.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint\SmalllintChecker.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkCompletion.$(O) SmallSense__SmalltalkCompletion.$(H): SmallSense__SmalltalkCompletion.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkLintAnnotation.$(O) SmallSense__SmalltalkLintAnnotation.$(H): SmallSense__SmalltalkLintAnnotation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkLintHighlighter.$(O) SmallSense__SmalltalkLintHighlighter.$(H): SmallSense__SmalltalkLintHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkLintService.$(O) SmallSense__SmalltalkLintService.$(H): SmallSense__SmalltalkLintService.st $(INCLUDE_TOP)\stx\libtool\Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkParseNodeVisitor.$(O) SmallSense__SmalltalkParseNodeVisitor.$(H): SmallSense__SmalltalkParseNodeVisitor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkParser.$(O) SmallSense__SmalltalkParser.$(H): SmallSense__SmalltalkParser.st $(INCLUDE_TOP)\stx\libcomp\SyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkQuickFixer.$(O) SmallSense__SmalltalkQuickFixer.$(H): SmallSense__SmalltalkQuickFixer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkSyntaxHighlighter.$(O) SmallSense__SmalltalkSyntaxHighlighter.$(H): SmallSense__SmalltalkSyntaxHighlighter.st $(INCLUDE_TOP)\stx\libcomp\SyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -118,13 +118,13 @@
 $(OUTDIR)SmallSense__ClassPO.$(O) SmallSense__ClassPO.$(H): SmallSense__ClassPO.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__PO.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ClassType.$(O) SmallSense__ClassType.$(H): SmallSense__ClassType.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__Type.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__ConstantPO.$(O) SmallSense__ConstantPO.$(H): SmallSense__ConstantPO.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__PO.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__Finder.$(O) SmallSense__Finder.$(H): SmallSense__Finder.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__ParseNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__GenericEditSupport.$(O) SmallSense__GenericEditSupport.$(H): SmallSense__GenericEditSupport.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__EditSupport.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__JavaEditSupport.$(O) SmallSense__JavaEditSupport.$(H): SmallSense__JavaEditSupport.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__EditSupport.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__MethodInfo.$(O) SmallSense__MethodInfo.$(H): SmallSense__MethodInfo.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__Info.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__MethodPO.$(O) SmallSense__MethodPO.$(H): SmallSense__MethodPO.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__PO.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SmalltalkEditSupport.$(O) SmallSense__SmalltalkEditSupport.$(H): SmallSense__SmalltalkEditSupport.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__EditSupport.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)SmallSense__SmalltalkInferencer.$(O) SmallSense__SmalltalkInferencer.$(H): SmallSense__SmalltalkInferencer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\jv\smallsense\SmallSense__ParseNodeVisitor.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkInferencer.$(O) SmallSense__SmalltalkInferencer.$(H): SmallSense__SmalltalkInferencer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\jv\smallsense\SmallSense__SmalltalkParseNodeVisitor.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__SmalltalkParseNodeFinder.$(O) SmallSense__SmalltalkParseNodeFinder.$(H): SmallSense__SmalltalkParseNodeFinder.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__SmalltalkParseNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__SnippetPO.$(O) SmallSense__SnippetPO.$(H): SmallSense__SnippetPO.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__PO.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__UnionType.$(O) SmallSense__UnionType.$(H): SmallSense__UnionType.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__Type.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SmallSense__UnknownType.$(O) SmallSense__UnknownType.$(H): SmallSense__UnknownType.st $(INCLUDE_TOP)\jv\smallsense\SmallSense__Type.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/extensions.st	Tue Sep 24 01:53:26 2013 +0100
+++ b/extensions.st	Tue Sep 24 02:14:28 2013 +0100
@@ -56,44 +56,49 @@
 
 !DoWhatIMeanSupport methodsFor:'code completion - smallsense'!
 
-smallSenseCodeCompletionForClass:classOrNilArg context:contextOrNil codeView:codeViewArg
+smallSenseCodeCompletionForClass: classOrNilArg context: contextOrNil codeView: codeViewArg 
+    <swizzle: #codeCompletionForClass:context:codeView:>
     "SmallSense version of #codeCompletionForClass:context:codeView:.
 
      When SmallSense is loaded, this method is swizzled as #codeCompletionForClass:context:codeView:.
-     into DoWhatIMeanSupport.
-    "
-
-    <swizzle: #codeCompletionForClass:context:codeView:>
-
-    | p node text items mode |
+     into DoWhatIMeanSupport."
+    
+    | p  node  text  items  mode |
 
     codeView := codeViewArg.
-     "/ The respondsTo: hack is because CVS CodeView2 has no #mode method.
-    mode := (codeView respondsTo:#mode) ifTrue:[codeView mode] ifFalse:[#method].         
-    contextOrNil notNil ifTrue:[
+    
+    "/ The respondsTo: hack is because CVS CodeView2 has no #mode method.
+    
+    mode := (codeView respondsTo: #mode) ifTrue: [
+            codeView mode
+        ] ifFalse: [ #method ].
+    contextOrNil notNil ifTrue: [
         mode := #method.
     ].
-    items := SmallSense::Recognizer
-                            resultSetFor: mode
-                            source: codeView contents
-                            class: classOrNilArg
-                            line: codeView cursorLine
-                            column: codeView cursorCol.
-
-    items notEmptyOrNil ifTrue:[
-        (p := items position) notNil ifTrue:[
-            node := p node.                    
-            node notNil ifTrue:[
-                (node isVariable and:[p isInNode]) ifTrue:[
+    items := SmallSense::SmalltalkCompletion 
+            resultSetFor: mode
+            source: codeView contents
+            class: classOrNilArg
+            line: codeView cursorLine
+            column: codeView cursorCol.
+    items notEmptyOrNil ifTrue: [
+        (p := items position) notNil ifTrue: [
+            node := p node.
+            node notNil ifTrue: [
+                (node isVariable and: [ p isInNode ]) ifTrue: [
                     text := node name
-                ] ifFalse:[node isMessage ifTrue:[
-                    text := node selector
-                ]].
-            ].            
+                ] ifFalse: [
+                    node isMessage ifTrue: [
+                        text := node selector
+                    ]
+                ].
+            ].
         ].
-    ].    
-
-    SmallSense::CompletionWindow openForView: codeView text: text items: items.
+    ].
+    SmallSense::CompletionWindow 
+        openForView: codeView
+        text: text
+        items: items.
 
     "Created: / 19-08-2013 / 15:01:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 02-09-2013 / 12:52:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
--- a/jv_smallsense.st	Tue Sep 24 01:53:26 2013 +0100
+++ b/jv_smallsense.st	Tue Sep 24 02:14:28 2013 +0100
@@ -158,6 +158,7 @@
         (#'SmallSense::BaseTestClass' autoload)
         #'SmallSense::CodeHighlightingService'
         #'SmallSense::CodeNavigationService'
+        #'SmallSense::CompletionResultSet'
         #'SmallSense::CompletionWindow'
         #'SmallSense::CriticsWindow'
         #'SmallSense::EditService'
@@ -167,19 +168,18 @@
         #'SmallSense::Manager'
         #'SmallSense::PO'
         #'SmallSense::ParseNodeInspector'
-        #'SmallSense::ParseNodeVisitor'
         #'SmallSense::ParseTreeIndex'
         #'SmallSense::ParseTreeIndexEntry'
         #'SmallSense::Position'
-        #'SmallSense::Recognizer'
         (#'SmallSense::RecognizerTests' autoload)
-        #'SmallSense::ResultSet'
         #'SmallSense::SelectorNode'
         #'SmallSense::SettingsAppl'
         #'SmallSense::SmalltalkChecker'
+        #'SmallSense::SmalltalkCompletion'
         #'SmallSense::SmalltalkLintAnnotation'
         #'SmallSense::SmalltalkLintHighlighter'
         #'SmallSense::SmalltalkLintService'
+        #'SmallSense::SmalltalkParseNodeVisitor'
         #'SmallSense::SmalltalkParser'
         (#'SmallSense::SmalltalkParserTests' autoload)
         #'SmallSense::SmalltalkQuickFixer'
@@ -193,13 +193,13 @@
         #'SmallSense::ClassPO'
         #'SmallSense::ClassType'
         #'SmallSense::ConstantPO'
-        #'SmallSense::Finder'
         #'SmallSense::GenericEditSupport'
         #'SmallSense::JavaEditSupport'
         #'SmallSense::MethodInfo'
         #'SmallSense::MethodPO'
         #'SmallSense::SmalltalkEditSupport'
         #'SmallSense::SmalltalkInferencer'
+        #'SmallSense::SmalltalkParseNodeFinder'
         #'SmallSense::SnippetPO'
         #'SmallSense::UnionType'
         #'SmallSense::UnknownType'
--- a/libInit.cc	Tue Sep 24 01:53:26 2013 +0100
+++ b/libInit.cc	Tue Sep 24 02:14:28 2013 +0100
@@ -29,6 +29,7 @@
 __BEGIN_PACKAGE2__("libjv_smallsense", _libjv_smallsense_Init, "jv:smallsense");
 _SmallSense__CodeHighlightingService_Init(pass,__pRT__,snd);
 _SmallSense__CodeNavigationService_Init(pass,__pRT__,snd);
+_SmallSense__CompletionResultSet_Init(pass,__pRT__,snd);
 _SmallSense__CompletionWindow_Init(pass,__pRT__,snd);
 _SmallSense__CriticsWindow_Init(pass,__pRT__,snd);
 _SmallSense__EditService_Init(pass,__pRT__,snd);
@@ -37,18 +38,17 @@
 _SmallSense__Manager_Init(pass,__pRT__,snd);
 _SmallSense__PO_Init(pass,__pRT__,snd);
 _SmallSense__ParseNodeInspector_Init(pass,__pRT__,snd);
-_SmallSense__ParseNodeVisitor_Init(pass,__pRT__,snd);
 _SmallSense__ParseTreeIndex_Init(pass,__pRT__,snd);
 _SmallSense__ParseTreeIndexEntry_Init(pass,__pRT__,snd);
 _SmallSense__Position_Init(pass,__pRT__,snd);
-_SmallSense__Recognizer_Init(pass,__pRT__,snd);
-_SmallSense__ResultSet_Init(pass,__pRT__,snd);
 _SmallSense__SelectorNode_Init(pass,__pRT__,snd);
 _SmallSense__SettingsAppl_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkChecker_Init(pass,__pRT__,snd);
+_SmallSense__SmalltalkCompletion_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkLintAnnotation_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkLintHighlighter_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkLintService_Init(pass,__pRT__,snd);
+_SmallSense__SmalltalkParseNodeVisitor_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkParser_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkQuickFixer_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkSyntaxHighlighter_Init(pass,__pRT__,snd);
@@ -60,13 +60,13 @@
 _SmallSense__ClassPO_Init(pass,__pRT__,snd);
 _SmallSense__ClassType_Init(pass,__pRT__,snd);
 _SmallSense__ConstantPO_Init(pass,__pRT__,snd);
-_SmallSense__Finder_Init(pass,__pRT__,snd);
 _SmallSense__GenericEditSupport_Init(pass,__pRT__,snd);
 _SmallSense__JavaEditSupport_Init(pass,__pRT__,snd);
 _SmallSense__MethodInfo_Init(pass,__pRT__,snd);
 _SmallSense__MethodPO_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkEditSupport_Init(pass,__pRT__,snd);
 _SmallSense__SmalltalkInferencer_Init(pass,__pRT__,snd);
+_SmallSense__SmalltalkParseNodeFinder_Init(pass,__pRT__,snd);
 _SmallSense__SnippetPO_Init(pass,__pRT__,snd);
 _SmallSense__UnionType_Init(pass,__pRT__,snd);
 _SmallSense__UnknownType_Init(pass,__pRT__,snd);
--- a/smallsense.rc	Tue Sep 24 01:53:26 2013 +0100
+++ b/smallsense.rc	Tue Sep 24 02:14:28 2013 +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", "Tue, 24 Sep 2013 00:52:17 GMT\0"
+      VALUE "ProductDate", "Tue, 24 Sep 2013 01:13:45 GMT\0"
     END
 
   END