"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
"{ Package: 'stx:libtool' }"
"{ NameSpace: Tools }"
CodeViewService subclass:#CodeCompletionService
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Interface-CodeView'
!
!CodeCompletionService class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
! !
!CodeCompletionService class methodsFor:'accessing'!
label
"Answers short label - for UI"
^'Code Completion'
"Created: / 07-03-2010 / 14:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CodeCompletionService class methodsFor:'testing'!
isAvailable
"CodeCompletionService is superseded by SmallSense"
^(Smalltalk at:#SmallSenseService) isNil
"Created: / 03-04-2011 / 23:08:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CodeCompletionService methodsFor:'event handling'!
keyPress: key x:x y:y in: view
"Handles an event in given view (a subview of codeView).
If the method returns true, the event will not be processed
by the view."
(view == textView and:[key == #'CodeCompletion']) ifTrue:
[self complete. ^true].
^false
"Created: / 07-03-2010 / 09:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CodeCompletionService methodsFor:'private'!
complete
|cls
"/ crsrPos interval node checkedNode
"/ char start stop selectorSoFar matchingSelectors
|
codeView languageHolder value == SmalltalkLanguage instance
ifFalse:[^self].
cls := codeView classHolder value.
cls isNil ifTrue:[
self showInfo:'No class'.
^ self.
].
UserInformation handle:[:ex |
codeView showInfo:(ex messageText).
ex proceed.
] do:[
codeView withWaitCursorDo:[
DoWhatIMeanSupport codeCompletionForClass:cls codeView:textView.
]
].
^ self.
"/
"/ interval := self selectedInterval.
"/ interval isEmpty ifTrue:[
"/ crsrPos := codeView characterPositionOfCursor - 1.
"/ char := codeView characterUnderCursor.
"/ [crsrPos > 1 and:[char isSeparator or:['.' includes:char]]] whileTrue:[
"/ crsrPos := crsrPos - 1.
"/ char := codeView characterAtCharacterPosition:crsrPos.
"/ ].
"/ interval := crsrPos to:crsrPos.
"/ ].
"/
"/ node := self findNodeForInterval:interval allowErrors:true.
"/ [node isNil] whileTrue:[
"/ "/ expand to the left ...
"/ interval start > 1 ifFalse:[
"/ self showInfo:'No parseNode found'.
"/ ^ self.
"/ ].
"/ interval start:(interval start - 1).
"/ node := self findNodeForInterval:interval allowErrors:true.
"/ ].
"/
"/ node isVariable ifTrue:[
"/ self codeCompletionForVariable:node inClass:cls.
"/ ^ self.
"/ ].
"/
"/ checkedNode := node.
"/ [checkedNode notNil] whileTrue:[
"/ checkedNode isMessage ifTrue:[
"/ self codeCompletionForMessage:checkedNode inClass:cls.
"/ ^ self
"/ ].
"/ checkedNode isMethod ifTrue:[
"/ self codeCompletionForMethod:checkedNode inClass:cls.
"/ ^ self.
"/ ].
"/ checkedNode := checkedNode parent.
"/ ].
"/
"/ self showInfo:'Node is neither variable nor message.'.
"Modified: / 04-07-2006 / 18:48:26 / fm"
"Modified: / 20-11-2006 / 12:30:59 / cg"
"Created: / 07-03-2010 / 09:37:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CodeCompletionService class methodsFor:'documentation'!
version_CVS
^ '$Header: /cvs/stx/stx/libtool/Tools__CodeCompletionService.st,v 1.1 2011-07-01 13:20:28 cg Exp $'
!
version_SVN
^ '§Id: Tools__CodeCompletionService.st 7695 2011-04-04 20:09:17Z vranyj1 §'
! !