Ocompletion

ECClassVarEntry
An ECClassVarEntry is xxxxxxxxx.
Instance Variables
guessTypeWith:
label
ECClassVarTypeGuesser
An ECClassVarTypeGuesser is xxxxxxxxx.
Instance Variables
methodRefs
popIntoLiteralVariable:
Remove Top Of Stack And Store Into Literal Variable bytecode.
popIntoReceiverVariable:
Remove Top Of Stack And Store Into Instance Variable bytecode.
send:super:numArgs:
Send Message With Selector, selector, bytecode. The argument,
supered, indicates whether the receiver of the message is specified with
'super' in the source method. The arguments of the message are found
in
the top numArguments locations on the stack and the receiver just
below them.
ECContext
A completion is started by the ECController. The controller creates me to compute the context of the completion. The most important information about the context are the receiverClass and the completionToken. I create a ECModel or subclass when requested by the 'model' method.
I use SHParser and SHRange to parse the text input.
blockTemporaries
checkForZeroPosition
checkImpossibleReceiver
completionToken
compute
computeIndexOfPosition
computeReceiverClass
configureSelectorsAndVariables
configureSelectorsOnly
configureVariablesOnly
controller:class:source:position:
convertBlocksToVariables:
createEmptyRangeAtTail
createEmptyRangeForGapAt:
createModel
createRanges
findSourceRangeFor:
guessArgument:
guessCascadeReceiver:
guessClassVarClass:
guessGlobal:
guessInstVarClass:
guessTempVarClass:
guessTempVarClass:type:
guessTypeOf:
guessWithRoelTyper:class:
handleBlockStack:with:
initialize
Subclasses should redefine this method to perform initializations on instance creation
insertEmptyRangeAt:start:end:
isSelectorsAndVariables
isSelectorsOnly
isVariablesOnly
model
narrowWith:
receiverClass
setController:class:source:position:
sourceOf:
sourceOf:stopAt:
switchToUntyped
temporaries
theClass
typeInfosFor:
ECController
I live as an instance variable in a Browser, Debugger, Workspace or other window. I'm the glue between all participants of the completion system. I create the ECContext and pass myself to the ECMenuMorph. I process the keyboard events and pass them to the ECMenuMorph or close the morph if needed.
additionals
allowModel:
checkBackspace:
checkNeedlesCharacter:
closeMenu
context
editor
guessTypeFor:
handleKeystrokeAfter:editor:
handleKeystrokeBefore:editor:
I return a boolean. true when I have handled the event and no futher
processing
is needed by the caller.
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializePreferences
initializeSmartCharacters
initialized
invalidateEditorMorph
isEnabled
isMenuOpen
menuClosed
model
model:
openMenuFor:
setModel:
shouldInsertSmartCharacter
smartBackspace
smartCharInput:
smartCharacters
workspace
ECDetailMorph
I display some detail information for a selected ECEntry in the ECMenuMorph.
The content I show, is provided by an ECDetailContentProvider subclass.
bounds
Return the bounds of this morph.
contentBounds
defaultColor
answer the default color/fill style for the receiver
descriptionBounds
drawArrowOn:
drawMessageOn:
drawOn:
entryDescription:
height
initialize
initialize the state of the receiver
itemHeight
position:menuWidth:
positionOnLeft:
tightened up the positioning. MAD
titleBounds
width
ECEntry
I represent a completion entry that is management by a ECModel and shown in the ECMenuMorph as a menu entry.
<=
browseWith:
completion
contents
contents:type:
contentsAsSymbol
createDescriptionWith:
descriptionWith:
guessTypeWith:
isInstance
isLocal
isSelector
label
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
setContents:type:
type
ECEntryDescription
An ECEntryDescription is xxxxxxxxx.
Instance Variables
description: <Object>
label: <Object>
title: <Object>
description
- xxxxx
label
- xxxxx
title
- xxxxx
description
label
label:
label:title:description:
setLabel:title:description:
title
ECGlobalEntry
An ECGlobalEntry is xxxxxxxxx.
Instance Variables
guessTypeWith:
label
ECHelpMorph
I am a system window that displays the keybindings of eCompletion. The text is static and generated in the class methods.
contents
defaultColor
answer the default color/fill style for the receiver
explanationAttributes
helpText
initialize
textMorph _ TextMorph new contents: self class helpText;
yourself.
self addMorph: textMorph
section:on:
sectionAttributes
shortcut:text:on:
shortcutAttributes
ECInstVarEntry
An ECInstVarEntry is xxxxxxxxx.
Instance Variables
guessTypeWith:
isInstance
label
ECInstVarTypeGuesser
I'm a simple InstructionClient that tries to guess the type of a given instance variable name of a class.
methodRefs
popIntoReceiverVariable:
Remove Top Of Stack And Store Into Instance Variable bytecode.
prepare:
ECLocalEntry
An ECLocalEntry is xxxxxxxxx.
Instance Variables
guessTypeWith:
isLocal
label
ECMenuMorph
I show the possible completions in a menu like appearance. The user may choose an entry from my list and complete the word he was typing in the editor. I'm showed with the Tab key and will be deleted when with ESC key or when a successful completion occurs. The following keystrokes are supported:
Ctrl-Space or Tab: Open a new morph. Tab requires at least one character in front of the cursor. When already open complete the selected entry.
Esc: Close me
Ctrl+u: Change to untyped mode, so I show all selectors of all classes in the system and the variables that are accessible to the current context.
Arrow Up: Move one entry up.
Arrow Down: Move one entry down
Enter: (like Ctrl-Space and Tab): Complete with the selected item and close the morph
any letter or digit: Narrow the completion further
Ctrl+t: Toggle the expand flag. When expand is disabled, you don't see selectors belonging to Object and ProtoObject.
backgroundColor
borderColor
browse
controller:position:
convertToSHSymbol:
createTitle
currentPage
delete
Remove the receiver as a submorph of its owner and make its
new owner be nil.
detailMessage
detailPosition:
drawBottomScrollArrowOn:
drawMessageOn:in:
drawModelMessageOn:in:
drawOn:
drawPageCountMessageOn:in:
drawTitleOn:
| morphicTransform angle |
angle := 90 degreesToRadians.
morphicTransform := MorphicTransform offset: self position angle: angle scale: 1.0.
aCanvas
transformBy: morphicTransform
clippingTo: self owner innerBounds
during: [:myCanvas | myCanvas drawString:'Ruben' at: self position font: self class titleFont color: Color blue]
smoothing: 1.
drawTopScrollArrowOn:
end
expand
firstVisible
gotoPage:
handleMouseEnter:
System level event handling.
hasMessage
height
help
helpText
hideDetail
home
initialize
initialize the state of the receiver
insertCompletion:
insertSelected
isClosed
itemHeight
cached to minimise recalculation
itemWidth
itemsCount
lastVisible
listFont
maxLength
messageFont
messageHeight
moveDown
moveUp
narrowCompletion
pageCount
pageCountString
pageDown
pageHeight
pageUp
prepareRectForNextRow:
removeTitle
scrollArrowSize
scrollColor
selectColor:
selectColorFor:
selectFont:
selectFontFor:
selected
Answer the value of selected
selected:
Set the value of selected
selectedEntry
setController:position:
show
Make sure this morph is on-stage.
showDetail
switchToUntyped
titleFont
titleHeight
updateDetail
visibleItemsCount
ECModel
I'm an abstract class that stores the entries to be completed.
addToEntries:
at:
Primitive. Assumes receiver is indexable. Answer the value of an
indexable element in the receiver. Fail if the argument index is not an
Integer or is out of bounds. Essential. See Object documentation
whatIsAPrimitive.
class:
completionAt:
entries
entriesOfType:
entryCount
hasMessage
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializeSelectors
isEmpty
message
narrowString:
narrowWith:
notEmpty
reset
resetEntries
resetSelectors
setClass:
theClass
title
toggleExpand
ECOverrideModel
I'm used when completing a method override. I contain all selectors of the superclass minus the already implemented selectors of the current class. When a completion occurs I complete a method template with a send to super.
completionAt:
computeReturn:
initializeSelectors
methodSourceAt:
title
ECPreferences
An ECPreferences is xxxxxxxxx.
Instance Variables
caseSensitive
enabled
initialize
Subclasses should redefine this method to perform initializations on instance creation
setCaseSensitiveness:
ECSelectorEntry
An ECSelectorEntry is xxxxxxxxx.
Instance Variables
browseWith:
createDescriptionWith:
findMethodWith:do:ifAbsent:
implementorsDescription:
label
lookupSelector:class:
Look up the given selector in my methodDictionary.
Return the corresponding method if found.
Otherwise chase the superclass chain and try again.
Return nil if no method is found.
methodSourceDescription:method:
methodSourceOn:
ECSelfEntry
An ECSelfEntry is xxxxxxxxx.
Instance Variables
guessTypeWith:
label
ECSuperEntry
An ECSuperEntry is xxxxxxxxx.
Instance Variables
guessTypeWith:
label
ECSymbols
An ECSymbols is xxxxxxxxx.
Instance Variables
contains:caseSensitive:do:
startsWith:caseSensitive:do:
ECToolSet
An ECToolSet is xxxxxxxxx.
Instance Variables
codeCompletionAround:textMorph:keyStroke:
register
ECTypeInfo
I'm used in ECInstVarTypeGuesser to store found type informations.
definedByLiteral:
definedByMessageSend:
definedByTemporaryVar:
isDefinedByMessageSend
isDefinedByTemporary
priority
setType:kind:
temporaryOffset
temporaryOffset:
type
type:
ECTypedModel
I'm the model for a typed completion, that means when a receiver class is known. I only have selectors. I have an expand toggle: When false I filter out Object and ProtoObject selectors. The default value is true.
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializeSelectors
initializeSelectorsFor:
narrowWith:
theClass
title
toggleExpand
ECUnseparatedModel
An ECUnseparatedModel is xxxxxxxxx.
Instance Variables
completionAt:
ECUntypedModel
When no receiver class is known, I'm the right model. I store all temporary variables, instance variables of the selected class and all selectors in system. For performance reasons I only collect selectors when at least one character is known.
addAdditionals:
addSelectors
addVariables
class:temporaries:
class:temporaries:additionals:variables:selectors:
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializeClassVars
initializeInstVars
initializeSelectors
message
narrowString:
narrowWith:
noVariables
setClass:temporaries:additionals:variables:selectors:
ECVarTypeGuesser
I'm an InstructionClient that tries to guess the type of a given instance variable name of a class.
blockReturnTop
Return Top Of Stack bytecode.
computeVarType
getClassFromTypeSuggestingName:
initialize
Subclasses should redefine this method to perform initializations on instance creation
interpretNextInstructionUsing:
methodRefs
perform
popIntoLiteralVariable:
Remove Top Of Stack And Store Into Literal Variable bytecode.
popIntoTemporaryVariable:
Remove Top Of Stack And Store Into Temporary Variable bytecode.
prepare:
pushActiveContext
Push Active Context On Top Of Its Own Stack bytecode.
pushConstant:
Push Constant, value, on Top Of Stack bytecode.
pushLiteralVariable:
Push Contents Of anAssociation On Top Of Stack bytecode.
pushTemporaryVariable:
Push Contents Of Temporary Variable Whose Index Is the
argument, offset, On Top Of Stack bytecode.
reset
send:super:numArgs:
Send Message With Selector, selector, bytecode. The argument,
supered, indicates whether the receiver of the message is specified with
'super' in the source method. The arguments of the message are found
in
the top numArguments locations on the stack and the receiver just
below them.
setVariableName:source:class:
typeOfVarIn:
Answer whether the receiver references an instance variable.
variableName:class:
variableName:source:class:
ECWorkspaceController
I'm a specialized controller, that works with Workspaces.
additionals
workspace
OCompletionTable
An OCompletionTable is xxxxxxxxx.
Instance Variables
numberofEntries: <Object>
table: <Object>
numberofEntries
- xxxxx
table
- xxxxx
addEntry:
addEntry:date:
classes
classesInCategory:
compiled:in:date:
default
entriesMatching:
entriesPerPrefix:
fillRate
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializeTable
initializeWithInlinedMessages
initializeWithPackages
initializeWithRecentChanges
justCompiled:in:
listForPrefix:
listsForPrefix:
lookForOB
maxNumberOfEntries
methodChanged:
numberOfEntries
quickFillWithCategoriesMatching:
quickFillWithCategoryOf:
quickFillWithClass:
reset
totalNumberOfEntries
OContext
An OContext is xxxxxxxxx.
Instance Variables
createModel
initialize
Subclasses should redefine this method to perform initializations on instance creation
OController
An OController is xxxxxxxxx.
Instance Variables
contextClass: <Object>
expanded: <Object>
contextClass
- xxxxx
expanded
- xxxxx
closeMenu
contextClass
contextClass:
expand
expanded
handleKeystrokeBefore:editor:
I return a boolean. true when I have handled the event and no futher processing is needed by the caller.
initialize
Subclasses should redefine this method to perform initializations on instance creation
menuMorph
openMenuFor:
openXMenuFor:
retract
ODatedEntry
An ODatedEntry is xxxxxxxxx.
Instance Variables
date: <Object>
date
- xxxxx
<=
date
date:
matches:
now
OEmptyModel
An OEmptyModel is xxxxxxxxx.
Instance Variables
entries
entryCount
narrowString:
narrowWith:
OEntryList
An OEntryList is xxxxxxxxx.
Instance Variables
entries: <Object>
size: <Object>
entries
- xxxxx
size
- xxxxx
addEntry:
addEntry:date:
entriesMatching:
first
firstEntry
last
lastEntry
numEntries
ofSize:
setSize:
OMenuMorph
An OMenuMorph is xxxxxxxxx.
Instance Variables
backgroundColor
context
context:
createTitle
drawOn:
drawTopScrollArrowOn:
hasMessage
height
initialize
initialize the state of the receiver
itemWidth
narrowCompletion
scrollColor
selectFontFor:
OModel
An OModel is xxxxxxxxx.
Instance Variables
cachedEntries: <Object>
ctable: <Object>
expand: <Object>
nextModel: <Object>
table: <Object>
cachedEntries
- xxxxx
ctable
- xxxxx
expand
- xxxxx
nextModel
- xxxxx
table
- xxxxx
addEntry:
addSelectors
addToEntries:
at:
Primitive. Assumes receiver is indexable. Answer the value of an
indexable element in the receiver. Fail if the argument index is not an
Integer or is out of bounds. Essential. See Object documentation
whatIsAPrimitive.
completionAt:
when an entry is selected, update its date (for inlined messages which do not appear in the method's body
contract
entries
entryCount
expand
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializeSelectors
narrowWith:
nextModel
noNextModel
resetEntries
table
tableForEntry:
useUniqueTable
ORecentChanges
An ORecentChanges is xxxxxxxxx.
Instance Variables
records: <Object>
records
- xxxxx
fillCompletionTable
fillCompletionTable:withRecord:
readRecentChanges
OXMenuMorph
An OXMenuMorph is xxxxxxxxx.
Instance Variables
context
context:
delete
Remove the receiver as a submorph of its owner and make its
new owner be nil.
hasMessage
height
initialize
initialize the state of the receiver
insertCompletion:
narrowCompletion
scrollColor
selectFontFor: