--- a/AbstractLauncherApplication.st Wed Sep 28 07:09:57 2016 +0200
+++ b/AbstractLauncherApplication.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1997 by eXept Software AG
All Rights Reserved
@@ -5679,8 +5681,8 @@
list2 list:nil.
- l := Array new.
- handles := Array new.
+ l := #().
+ handles := #().
(showModules value or:[showBuiltIn value]) ifTrue:[
allModules := ObjectMemory binaryModuleInfo asOrderedCollection.
--- a/BrowserView.st Wed Sep 28 07:09:57 2016 +0200
+++ b/BrowserView.st Mon Oct 03 15:15:56 2016 +0100
@@ -3897,7 +3897,7 @@
self doClassMenu:[:currentClass |
|s|
- s := WriteStream on:(String new).
+ s := WriteStream on:''.
currentClass class fileOutClassInstVarDefinitionOn:s withNameSpace:true.
codeView contents:(s contents); modified:false.
codeModified := false.
--- a/ChangesBrowser.st Wed Sep 28 07:09:57 2016 +0200
+++ b/ChangesBrowser.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1990 by Claus Gittinger
All Rights Reserved
@@ -5181,7 +5183,7 @@
get a prototype snapshot record (to be independent of
the actual format ..
"
- str := WriteStream on:String new.
+ str := WriteStream on:''.
Class addChangeRecordForSnapshot:'foo' to:str.
snapshotProto := str contents.
snapshotPrefix := snapshotProto copyTo:10.
--- a/Diff.st Wed Sep 28 07:09:57 2016 +0200
+++ b/Diff.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
Copyright (c) 2009-2010 eXept Software AG
@@ -25,6 +27,8 @@
"
"{ Package: 'stx:libtool' }"
+"{ NameSpace: Smalltalk }"
+
Object subclass:#Diff
instanceVariableNames:'equivMax heuristic nodiscards xvec yvec fdiag bdiag fdiagoff
bdiagoff filevec cost snakeLimit inhibit'
@@ -120,23 +124,23 @@
documentation_czech
"
-první fáze:
+prvnĂ fĂĄze:
#############################################################################################################################
first := #('prvni' 'druhy' 'treti' 'treti' 'paty' 'zeleny' 'ruzovy' ).
second := #('prvni' 'treti' 'zeleny' 'ruzovy' 'treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
############################################################################################################################
-First a second představujou dvě pole, které chceme porovnávat. Jednotlivé poloky v poli si lze představit jako řádky, případně jako slova v řádku.
-Podle toho, co je potřeba porovnávat.
+First a second pøedstavujou dvĂŹ pole, kterĂŠ chceme porovnĂĄvat. JednotlivĂŠ poloÂky v poli si lze pøedstavit jako øådky, pøĂpadnĂŹ jako slova v øådku.
+Podle toho, co je potøeba porovnåvat.
*****************************************************************************************************************************
diff := FelDiff new felDiff.
*****************************************************************************************************************************
-Zde probíhá inicializace defaultníh proměnných. Funguje to jako konstruktor.
+Zde probĂhĂĄ inicializace defaultnĂh promĂŹnnĂ˝ch. Funguje to jako konstruktor.
############################################################################################################################
diff diff: first b: second
############################################################################################################################
-První fáze nutná pro porovnávání polí. Vzniknou dvě instance tříde filedata uloené do pole. Tyto instance budou obsahovat následující údaje:
+PrvnĂ fĂĄze nutnĂĄ pro porovnĂĄvĂĄnĂ polĂ. Vzniknou dvĂŹ instance tøĂde filedata uloÂenĂŠ do pole. Tyto instance budou obsahovat nĂĄsledujĂcĂ Ăşdaje:
filevec[1].equivs=#(1 2 3 3 4 5 6)
filevec[1].bufferedLines=7
@@ -146,17 +150,17 @@
filevec[2].bufferedLines=16
filevec[2].changedFlag=#()
-V zásadě se vytvořila structura Dictionary, která jednotlivé řádky(slova) převedla na čísla. Pole equvs pak představuje číselně slova(řádky).
-čísla, která se nalézají v obou dbou polí equivs značí, e soubory sdílí alespoň nějaké slovo(řádek).
+V zĂĄsadĂŹ se vytvoøila structura Dictionary, kterĂĄ jednotlivĂŠ øådky(slova) pøevedla na èĂsla. Pole equvs pak pøedstavuje èĂselnĂŹ slova(øådky).
+èĂsla, kterĂĄ se nalĂŠzajĂ v obou dbou polĂ equivs znaèĂ, Âe soubory sdĂlĂ alespoò nĂŹjakĂŠ slovo(øådek).
*****************************************************************************************************************************
change:= diff diff2: true.
*****************************************************************************************************************************
-Zde ji dochází k porovnání obou dvou polí s řádky(slovy). Lze si vybrat mezi forwardscriptem a reversescriptem.
+Zde ji dochåzà k porovnånà obou dvou polàs øådky(slovy). Lze si vybrat mezi forwardscriptem a reversescriptem.
1) metoda discardconfusinglines
-výsledek:
+výsledek:
filevec[1].undiscardeded=#(1 3 3 5 6 0 0)
filevec[1].realIndexes= #(0 2 3 5 6 0 0)
filevec[1].nondiscardedLines=5
@@ -166,15 +170,15 @@
filevec[2].realIndexes= #(0 1 2 3 4 0 0 0 0 0 0 0 0 0 0 0)
filevec[2].nondiscardedLines=5
-Undiscarded- Řádky soubory, které jsou shodné.
-RealIndexes - indexy řádků v poli(je potřeba přičíst jedna)
- - to znamená e index prvního 3->3 pozice v prvním vstupním poli
- - index druhého 3->2 pozice v druhém vstupním poli a 3->5 pozice v druhém vstupním poli
-NondiscardedLines- značí kolik čádků(slov) je shodných v obou polích.
+Undiscarded- ĂĂĄdky soubory, kterĂŠ jsou shodnĂŠ.
+RealIndexes - indexy øådkĂš v poli(je potøeba pøièĂst jedna)
+ - to znamenĂĄ Âe index prvnĂho 3->3 pozice v prvnĂm vstupnĂm poli
+ - index druhĂŠho 3->2 pozice v druhĂŠm vstupnĂm poli a 3->5 pozice v druhĂŠm vstupnĂm poli
+NondiscardedLines- znaèà kolik èådkĂš(slov) je shodnĂ˝ch v obou polĂch.
-2)Následuje porovnávání jednotlivých polí a vytvoření výsledku
+2)Nåsleduje porovnåvånà jednotlivých polà a vytvoøenà výsledku
-3)Výsledek Reverse skript
+3)Výsledek Reverse skript
inserted=12('treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa')
deleted=0
@@ -182,43 +186,43 @@
line1=4('ruzovy')
link=next
-inserted- kolik znaků bylo vloeno
-deleted - kolik znaků bylo smazáno
-line0 - pořadí znaku za kterým bylo něco vloeno(smazáno) v prvním poli(poslední znak který je shodný v obou polích)
-line1 - pořadí znaku za kterým bylo něco smazáno(vloeno) v prvním poli(poslední znak který je shodný v obou polích)
+inserted- kolik znakĂš bylo vloÂeno
+deleted - kolik znakĂš bylo smazĂĄno
+line0 - poøadĂ znaku za kterĂ˝m bylo nĂŹco vloÂeno(smazĂĄno) v prvnĂm poli(poslednĂ znak kterĂ˝ je shodnĂ˝ v obou polĂch)
+line1 - poøadĂ znaku za kterĂ˝m bylo nĂŹco smazĂĄno(vloÂeno) v prvnĂm poli(poslednĂ znak kterĂ˝ je shodnĂ˝ v obou polĂch)
-Take po znaku na pozici 4, je 12 vloených znaků oproti prvnímu
+TakÂe po znaku na pozici 4, je 12 vloÂenĂ˝ch znakĂš oproti prvnĂmu
-Zbytek pole vypadá takto:
+Zbytek pole vypadĂĄ takto:
first := #('prvni' 'druhy' 'treti' 'treti' 'paty' 'zeleny' 'ruzovy' ).
second := #('prvni' 'treti' 'zeleny' 'ruzovy').
-link není null a tudí odkazuje na dalí informace o změnách.
+link nenĂ null a tudĂÂ odkazuje na dalÂĂ informace o zmĂŹnĂĄch.
inserted=0
deleted=2('treti' 'paty')
line0=3('treti')
line1=2('treti')
link=next
-zbytek pole vypadá takto:
+zbytek pole vypadĂĄ takto:
first := #('prvni' 'druhy' 'treti' 'zeleny' 'ruzovy' ).
second := #('prvni' 'treti' 'zeleny' 'ruzovy').
-link není null a tudí odkazuje na dalí informace o změnách.
+link nenĂ null a tudĂÂ odkazuje na dalÂĂ informace o zmĂŹnĂĄch.
inserted=0
deleted=1('druhy')
line0=1('prvni')
line1=1('prvni')
link=nil
-zbytek pole vypadá takto:
+zbytek pole vypadĂĄ takto:
first := #('prvni' 'treti' 'zeleny' 'ruzovy' ).
second := #('prvni' 'treti' 'zeleny' 'ruzovy').
-link je nil. Neexistuje ádná změna a tato pole jsou shodná.
+link je nil. Neexistuje ÂĂĄdnĂĄ zmĂŹna a tato pole jsou shodnĂĄ.
-4)Výsledek Forward skript
+4)Výsledek Forward skript
inserted=0
deleted=1('druhy')
@@ -226,22 +230,22 @@
line1=1('prvni')
link=next
-zbytek pole vypadá takto:
+zbytek pole vypadĂĄ takto:
first := #('prvni' 'treti' 'treti' 'paty' 'zeleny' 'ruzovy' ).
second := #('prvni' 'treti' 'zeleny' 'ruzovy' 'treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
-link není nil jdeme na odkaz:
+link nenĂ nil jdeme na odkaz:
inserted=0
deleted=2('treti' 'paty')
line0=3('treti')
line1=2('treti')
link=next
-zbytek pole vypadá takto:
+zbytek pole vypadĂĄ takto:
first := #('prvni' 'treti' 'zeleny' 'ruzovy' ).
second := #('prvni' 'treti' 'zeleny' 'ruzovy' 'treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
-link není nil jdeme na odkaz:
+link nenĂ nil jdeme na odkaz:
inserted=12('treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa')
deleted=0
@@ -249,7 +253,7 @@
line1=4('ruzovy')
link=nil
-zbytek pole vypadá takto:
+zbytek pole vypadĂĄ takto:
first := #('prvni' 'treti' 'zeleny' 'ruzovy' ).
second := #('prvni' 'treti' 'zeleny' 'ruzovy').
@@ -384,10 +388,10 @@
equivMax := 1.
heuristic := false.
nodiscards := false.
- xvec := Array new.
- yvec := Array new.
- fdiag := Array new.
- bdiag := Array new.
+ xvec := #().
+ yvec := #().
+ fdiag := #().
+ bdiag := #().
filevec := Array new:2.
snakeLimit := 20.
inhibit := false.
@@ -914,11 +918,11 @@
fileData
"konstruktor"
- equivs := Array new.
- undiscarded := Array new.
- realindexes := Array new.
+ equivs := #().
+ undiscarded := #().
+ realindexes := #().
nondiscardedLines := 0.
- changedFlag := Array new.
+ changedFlag := #().
!
fileData: data hashTable: h felDiff:fellDiffClass
@@ -1242,7 +1246,7 @@
!Diff class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Diff.st,v 1.4 2013-04-19 09:39:05 cg Exp $'
+ ^ '$Header$'
!
version_HG
@@ -1251,6 +1255,6 @@
!
version_SVN
- ^ '§Id: Diff.st 7567 2010-04-17 10:59:53Z vranyj1 §'
+ ^ '$Id$'
! !
--- a/InspectorView.st Wed Sep 28 07:09:57 2016 +0200
+++ b/InspectorView.st Mon Oct 03 15:15:56 2016 +0100
@@ -23,7 +23,7 @@
holderChangeInterest sortOrderHolder'
classVariableNames:'DefaultIcon DefaultIntegerDisplayRadix ExpandArraysInAllLists
IdDictionary LastExtent NextSequentialID SortOrderAlphabetical
- SortOrderInstvarOrder'
+ SortOrderInstvarOrder DefaultHideMessages DefaultHideHashes'
poolDictionaries:''
category:'Interface-Inspector'
!
@@ -310,6 +310,22 @@
"Modified: / 7.9.1998 / 14:15:38 / cg"
!
+defaultHideHashes
+ ^ DefaultHideHashes? true
+!
+
+defaultHideHashes:aBoolean
+ DefaultHideHashes := aBoolean
+!
+
+defaultHideMessages
+ ^ DefaultHideMessages ? true
+!
+
+defaultHideMessages:aBoolean
+ DefaultHideMessages := aBoolean
+!
+
defaultIcon
"return the browsers default window icon"
@@ -1702,7 +1718,9 @@
super initialize.
displayStringMessage := #displayString.
- hideReceiver := hideMessages := hideHashes := false.
+ hideReceiver := false.
+ hideHashes := self class defaultHideHashes.
+ hideMessages := self class defaultHideMessages.
integerDisplayRadix := (DefaultIntegerDisplayRadix ? 10).
sortOrder := SortOrderInstvarOrder.
sortOrderHolder := sortOrder asValue.
--- a/MemoryUsageView.st Wed Sep 28 07:09:57 2016 +0200
+++ b/MemoryUsageView.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1992 by Claus Gittinger
All Rights Reserved
@@ -422,7 +424,7 @@
"
put a describing string into the dictionary
"
- s := WriteStream on:String new.
+ s := WriteStream on:''.
s nextPutAll:'references in: '.
set do:[:name |
name isString ifTrue:[
--- a/PerforceSourceCodeManagerUtilities.st Wed Sep 28 07:09:57 2016 +0200
+++ b/PerforceSourceCodeManagerUtilities.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
@@ -2481,111 +2483,111 @@
localRevision resultSource definitionClass descriptionInfo resolveFiles depotPath localPath checkInDefinition fileStatDict|
self temporaryWorkSpace isNil ifTrue:[
- self perforceError raiseErrorString:('Error getting temporary workspace when try to merge or resolve conflicts for ', aNumber printString, '.').
- ^false.
+ self perforceError raiseErrorString:('Error getting temporary workspace when try to merge or resolve conflicts for ', aNumber printString, '.').
+ ^false.
].
descriptionInfo := (self getChangeDespriptionInfoFor:aNumber printString).
descriptionInfo isNil ifTrue:[
- ^false.
+ ^false.
].
resolveFiles := descriptionInfo at:#Files ifAbsent:nil.
resolveFiles isNil ifTrue:[
- ^false.
+ ^false.
].
resolveFiles do:[:aFileLine|
- depotPath := (aFileLine copyTo:((aFileLine lastIndexOf:$#) - 1 )) withoutTrailingSeparators.
- localPath := self temporaryWorkSpace getLocalPathForDepotPath:depotPath.
- fileStatDict := self temporaryWorkSpace getFileStatForPathname:localPath.
- (fileStatDict includesKey:'unresolved') ifTrue:[
- definitionClass := Smalltalk at:(localPath asFilename withoutSuffix baseName asSymbol) ifAbsent:nil.
- checkInDefinition := PerforceSourceCodeManager getCheckInDefinitionForClass:definitionClass.
- localRevision := checkInDefinition getLocalRevisionNumber.
- tmpFilename := localPath asFilename.
- perforceCommand := ('resolve -af "' , tmpFilename pathName, '"').
- outputStream := ReadWriteStream on:''.
- errorStream := ReadWriteStream on:''.
- result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
- inputFrom:nil outputTo:outputStream
- errorTo:errorStream
- logHeader:('resolving ', tmpFilename pathName, '.').
- result ifFalse:[
- ^ false
- ].
- "check for conflicts"
- changesAsLogged := StringCollection new.
- inStream := ReadStream on:(outputStream contents).
-
- [inStream atEnd not] whileTrue:[
- line:= inStream nextLine.
- line notNil ifTrue:[
- (line startsWith:'Diff chunks:') ifTrue:[
- changesAsLogged add:line.
- changesDict := Dictionary new.
- chunksPart := line copyFrom:('Diff chunks:' size + 1).
- (chunksPart asCollectionOfSubstringsSeparatedBy:$+) do:[:eachElement|
- words := eachElement asCollectionOfWords.
- changesDict at:words second asSymbol put:words first asNumber.
- ].
- ].
- ].
- ].
- s := WriteStream on:String new.
- PerforceSourceCodeManager fileOutSourceCodeOf:definitionClass on:s.
- mergedSource := tmpFilename readStream contents asString.
- mySource := s contents asString.
- resultSource := self askForMergedSource:mergedSource
- localSource:mySource
- changesDict:changesDict
- haveRevision:(fileStatDict at:'haveRev' ifAbsent:nil)
- changesAsLogged:changesAsLogged
- pathName:tmpFilename pathName
- definitionClass:definitionClass.
- resultSource isNil ifTrue:[
- ^false.
- ].
- "now we have a merge - lets get latest revision and write on it "
- perforceCommand := ('revert "' , tmpFilename pathName, '"').
- outputStream := ReadWriteStream on:''.
- errorStream := ReadWriteStream on:''.
- result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
- inputFrom:nil outputTo:outputStream
- errorTo:errorStream
- logHeader:('revert after resolving ', tmpFilename pathName, '.').
- result ifFalse:[
- ^ false
- ].
-
- tmpFilename remove.
-
- perforceCommand := ('sync -f "' , tmpFilename pathName, '"').
- outputStream := ReadWriteStream on:''.
- errorStream := ReadWriteStream on:''.
- result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
- inputFrom:nil outputTo:outputStream
- errorTo:errorStream
- logHeader:('sync after resolving ', tmpFilename pathName, '.').
- result ifFalse:[
- ^ false
- ].
-
- perforceCommand := ('edit -c ', aNumber printString, ' "' , tmpFilename pathName, '"').
- outputStream := ReadWriteStream on:''.
- errorStream := ReadWriteStream on:''.
- result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
- inputFrom:nil outputTo:outputStream
- errorTo:errorStream
- logHeader:('edit after resolving ', tmpFilename pathName, '.').
- result ifFalse:[
- ^ false
- ].
-
- "write my result"
- resultSource notNil ifTrue:[
- s := tmpFilename writeStream.
- s nextPutAll:resultSource.
- s close.
- ].
- ].
+ depotPath := (aFileLine copyTo:((aFileLine lastIndexOf:$#) - 1 )) withoutTrailingSeparators.
+ localPath := self temporaryWorkSpace getLocalPathForDepotPath:depotPath.
+ fileStatDict := self temporaryWorkSpace getFileStatForPathname:localPath.
+ (fileStatDict includesKey:'unresolved') ifTrue:[
+ definitionClass := Smalltalk at:(localPath asFilename withoutSuffix baseName asSymbol) ifAbsent:nil.
+ checkInDefinition := PerforceSourceCodeManager getCheckInDefinitionForClass:definitionClass.
+ localRevision := checkInDefinition getLocalRevisionNumber.
+ tmpFilename := localPath asFilename.
+ perforceCommand := ('resolve -af "' , tmpFilename pathName, '"').
+ outputStream := ReadWriteStream on:''.
+ errorStream := ReadWriteStream on:''.
+ result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
+ inputFrom:nil outputTo:outputStream
+ errorTo:errorStream
+ logHeader:('resolving ', tmpFilename pathName, '.').
+ result ifFalse:[
+ ^ false
+ ].
+ "check for conflicts"
+ changesAsLogged := StringCollection new.
+ inStream := ReadStream on:(outputStream contents).
+
+ [inStream atEnd not] whileTrue:[
+ line:= inStream nextLine.
+ line notNil ifTrue:[
+ (line startsWith:'Diff chunks:') ifTrue:[
+ changesAsLogged add:line.
+ changesDict := Dictionary new.
+ chunksPart := line copyFrom:('Diff chunks:' size + 1).
+ (chunksPart asCollectionOfSubstringsSeparatedBy:$+) do:[:eachElement|
+ words := eachElement asCollectionOfWords.
+ changesDict at:words second asSymbol put:words first asNumber.
+ ].
+ ].
+ ].
+ ].
+ s := WriteStream on:''.
+ PerforceSourceCodeManager fileOutSourceCodeOf:definitionClass on:s.
+ mergedSource := tmpFilename readStream contents asString.
+ mySource := s contents asString.
+ resultSource := self askForMergedSource:mergedSource
+ localSource:mySource
+ changesDict:changesDict
+ haveRevision:(fileStatDict at:'haveRev' ifAbsent:nil)
+ changesAsLogged:changesAsLogged
+ pathName:tmpFilename pathName
+ definitionClass:definitionClass.
+ resultSource isNil ifTrue:[
+ ^false.
+ ].
+ "now we have a merge - lets get latest revision and write on it "
+ perforceCommand := ('revert "' , tmpFilename pathName, '"').
+ outputStream := ReadWriteStream on:''.
+ errorStream := ReadWriteStream on:''.
+ result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
+ inputFrom:nil outputTo:outputStream
+ errorTo:errorStream
+ logHeader:('revert after resolving ', tmpFilename pathName, '.').
+ result ifFalse:[
+ ^ false
+ ].
+
+ tmpFilename remove.
+
+ perforceCommand := ('sync -f "' , tmpFilename pathName, '"').
+ outputStream := ReadWriteStream on:''.
+ errorStream := ReadWriteStream on:''.
+ result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
+ inputFrom:nil outputTo:outputStream
+ errorTo:errorStream
+ logHeader:('sync after resolving ', tmpFilename pathName, '.').
+ result ifFalse:[
+ ^ false
+ ].
+
+ perforceCommand := ('edit -c ', aNumber printString, ' "' , tmpFilename pathName, '"').
+ outputStream := ReadWriteStream on:''.
+ errorStream := ReadWriteStream on:''.
+ result := self temporaryWorkSpace executePerforceCommand:perforceCommand inDirectory:self temporaryWorkSpace root
+ inputFrom:nil outputTo:outputStream
+ errorTo:errorStream
+ logHeader:('edit after resolving ', tmpFilename pathName, '.').
+ result ifFalse:[
+ ^ false
+ ].
+
+ "write my result"
+ resultSource notNil ifTrue:[
+ s := tmpFilename writeStream.
+ s nextPutAll:resultSource.
+ s close.
+ ].
+ ].
].
^true
!
--- a/SmalltalkCodeGeneratorTool.st Wed Sep 28 07:09:57 2016 +0200
+++ b/SmalltalkCodeGeneratorTool.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2002 by eXept Software AG
All Rights Reserved
@@ -501,7 +503,7 @@
(val ? maxSoFar) max:maxSoFar
].
- initCode := WriteStream on: String new.
+ initCode := WriteStream on:''.
initCode nextPutLine:'initialize'.
runValue := maxValue + 1.
enumValues keysAndValuesDo:[:idx :eachVariableName |
@@ -796,7 +798,7 @@
poolVars := nonMetaClass classVarNames.
- initCode := WriteStream on: String new.
+ initCode := WriteStream on:''.
initCode nextPutLine:'initialize'.
poolVars do:[:eachVariableName |
--- a/Tools__ChangeList.st Wed Sep 28 07:09:57 2016 +0200
+++ b/Tools__ChangeList.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
All Rights Reserved
@@ -1573,37 +1575,7 @@
!ChangeList::ListEntry methodsFor:'displaying'!
displayLabel:aLabel h:lH on:aGC x:newX y:y h:h
- | list cx icon |
-
- list := self application.
- cx := x := newX.
- (list allowRemoveHolder value and:[list showRemovedHolder value]) ifTrue: [
- (icon := self iconRemoved) notNil ifTrue:[
- icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
- ].
- cx := cx + 22."experimental value - this looks good"
- ].
- (icon := self iconDelta) notNil ifTrue:[
- icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
- ].
- cx := cx + 16."12 + 2px gap"
-
- super displayLabel:aLabel h:lH on:aGC x:cx y:y h:h.
-
-"/ "Now, display additional columns..."
-"/ (list showColumn: #timestamp) ifTrue:[
-"/ cx := cx + (aLabel widthOn: aGC) + 5."px - padding"
-"/ colS := change timeOfChangeIfKnown notNil
-"/ ifTrue:[change timeOfChangeIfKnown printString]
-"/ ifFalse:['???'].
-"/ [ (colW := colS widthOn: aGC) > (aGC width - cx - 5) ] whileTrue:[
-"/ colS = '...' ifTrue:[ ^ self ].
-"/ colS := '...' , (colS copyFrom: 6).
-"/ ].
-"/ super displayLabel:colS h:lH on:aGC x: (aGC width - 5 - colW) y:y h:h.
-"/ ].
-
- "Modified: / 27-07-2012 / 17:13:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ self displayLabel:aLabel h:lH on:aGC x:newX y:y h:h isHighlightedAsSelected:false
!
displayLabel:aLabel h:lH on:aGC x:newX y:y h:h isHighlightedAsSelected:isHighlightedAsSelected
--- a/Tools__ClassList.st Wed Sep 28 07:09:57 2016 +0200
+++ b/Tools__ClassList.st Mon Oct 03 15:15:56 2016 +0100
@@ -1329,7 +1329,7 @@
privateClassesPerClass notEmpty ifTrue:[
|stream action|
- stream := WriteStream on:(Array new).
+ stream := WriteStream on:#().
action :=
[:eachClass |
@@ -1455,7 +1455,7 @@
privateClassesPerClass notEmpty ifTrue:[
|stream action|
- stream := WriteStream on:(Array new).
+ stream := WriteStream on:#().
action := [:eachClass |
|bucket|
@@ -1499,91 +1499,84 @@
nameListForClasses:aClassList
|orgMode namespaces showNamespaces fullNameList nameList
filteredPackages filteredNameSpaces classesInRemoteChangeSet
- classNamesInChangeSet classNamesInRemoteChangeSet javaClassCountsByBame |
+ classNamesInChangeSet classNamesInRemoteChangeSet javaClassCountsByBname|
showNamespaces := false.
+ filteredNameSpaces := nameSpaceFilter value.
+ orgMode := organizerMode value.
- filteredNameSpaces := nameSpaceFilter value.
(filteredNameSpaces isNil
- and:[self organizerMode value ~~ OrganizerCanvas organizerModeNamespace]) ifTrue:[
+ and:[orgMode ~~ OrganizerCanvas organizerModeNamespace]) ifTrue:[
showNamespaces := true. "/ if no filter, always show the namespace.
] ifFalse:[
- (filteredNameSpaces size > 1
- or:[(filteredNameSpaces size > 0)
- and:[filteredNameSpaces includes:(self class nameListEntryForALL)]]) ifTrue:[
+ (filteredNameSpaces size ~~ 0
+ and:[(filteredNameSpaces size > 1)
+ or:[filteredNameSpaces includes:(self class nameListEntryForALL)]]) ifTrue:[
showNamespaces := true
] ifFalse:[
"/ if there are classes from multiple namespaces,
"/ show the full name
-
namespaces := IdentitySet new.
fullNameList := OrderedCollection new.
- aClassList
- do:[:cls | |nm|
- nm := cls nameInBrowser.
- fullNameList add:nm.
- namespaces add:cls topNameSpace.
- ].
- showNamespaces := namespaces size > 1
+ aClassList do:[:eachClass |
+ namespaces add:eachClass topNameSpace.
+ fullNameList add:eachClass nameInBrowser.
+ ].
+ showNamespaces := namespaces size > 1.
].
].
- orgMode := organizerMode value.
filteredPackages := packageFilter value value.
classNamesInChangeSet := ChangeSet current changedClasses
collect:[:each | each theNonMetaclass name].
-
classesInRemoteChangeSet := SmallTeam isNil ifTrue:[#()] ifFalse:[ SmallTeam changedClasses ].
classNamesInRemoteChangeSet := classesInRemoteChangeSet collect:[:each | each theNonMetaclass name].
- javaClassCountsByBame := Dictionary new.
- aClassList do:[:cls |
- cls isJavaClass ifTrue:[
- javaClassCountsByBame
- at: cls binaryName
- put: (javaClassCountsByBame at: cls ifAbsent:[0]) + 1
+ javaClassCountsByBname := Dictionary new.
+ aClassList do:[:eachClass |
+ eachClass isJavaClass ifTrue:[
+ javaClassCountsByBname
+ at:eachClass binaryName
+ put:(javaClassCountsByBname at:eachClass ifAbsent:[0]) + 1
]
].
nameList := aClassList
- collect:[:cls |
+ collect:[:eachClass |
+ |className nm pkg emPkg hasExtensions
+ isInChangeSet isInRemoteChangeSet icon clr|
- |className nm pkg emPkg hasExtensions isInChangeSet isInRemoteChangeSet icon
- clr|
-
- className := cls theNonMetaclass name.
+ className := eachClass theNonMetaclass name.
isInChangeSet := classNamesInChangeSet includes:className.
- "/ Java classes are never in changeset, so check their sourceString (if not nil, they has
- "/ been modified/edited. Kludgy...
- cls isJavaClass ifTrue:[
- isInChangeSet := cls sourceString notNil.
- ].
-
isInRemoteChangeSet := classNamesInRemoteChangeSet includes:className.
- nm := self nameListEntryFor:cls withNameSpace:showNamespaces.
- cls isJavaClass ifTrue:[
- (javaClassCountsByBame at: cls binaryName) > 1 ifTrue:[
+ nm := self nameListEntryFor:eachClass withNameSpace:showNamespaces.
+
+ eachClass isJavaClass ifTrue:[
+ "/ Java classes are never in changeset, so check their sourceString
+ "/ (if not nil, they have been modified/edited. Kludgy...
+ isInChangeSet := eachClass sourceString notNil.
+
+ (javaClassCountsByBname at:eachClass binaryName) > 1 ifTrue:[
| cl clstring |
- cl := cls classLoader.
+ cl := eachClass classLoader.
"/ Do not mark classes loaded by primordial, ext or system class loader...
(cl notNil
- and:[JavaVM systemClassLoader isNil
- or:[cl ~~ JavaVM systemClassLoader
- and:[cl ~~ (JavaVM systemClassLoader instVarNamed:#parent)]]])
- ifTrue:[
- clstring := ' [', cl displayString , ']'.
- nm := nm , (clstring withColor: Color gray)
- ]
- ]
+ and:[JavaVM systemClassLoader isNil
+ or:[cl ~~ JavaVM systemClassLoader
+ and:[cl ~~ (JavaVM systemClassLoader instVarNamed:#parent)]]]
+ ) ifTrue:[
+ clstring := ' [', cl displayString , ']'.
+ nm := nm , (clstring withColor:Color gray).
+ ].
+ ].
].
-
self showCoverageInformation value ifTrue:[
- clr := self colorForCoverageInformationOfClass:cls.
+ clr := self colorForCoverageInformationOfClass:eachClass.
clr notNil ifTrue:[
nm := self colorize:nm with:#color -> clr
].
@@ -1596,16 +1589,21 @@
nm := (self colorizeForChangedCodeInSmallTeam:'!! '),nm
].
].
+ nm isText ifTrue:[
+ "in some fonts, bold spaces are larger than normal spaces.
+ remove emphasis from leading spaces"
+ nm emphasisFrom:1 to:(nm leftIndent) remove:#bold.
+ ].
- pkg := cls package ? '-'.
- hasExtensions := cls hasExtensions.
+ pkg := eachClass package ? '-'.
+ hasExtensions := eachClass hasExtensions.
hasExtensions ifTrue:[
emPkg := self emphasizeForDifferentPackage:'+'. "/ self emphasizeForDifferentPackage:pkg.
].
orgMode == OrganizerCanvas organizerModeProject ifTrue:[
(filteredPackages notNil
- and:[(filteredPackages includes:cls package) not]) ifTrue:[
+ and:[(filteredPackages includes:eachClass package) not]) ifTrue:[
"/ class is in another packae;
"/ however, class is listed due to methods
"/ in the filtered package
@@ -1644,18 +1642,17 @@
isInChangeSet ifTrue:[
nm := nm , self class markForBeingInChangeList
].
-"/ cls isVisualStartable ifTrue:[
-"/ nm := LabelAndIcon icon:((SystemBrowser visualStartableClassIcon)
-"/ onDevice:self window device)
-"/ string:nm
-"/ ].
- markApplicationsHolder value== true ifTrue:[
- icon := self iconForClass:cls theNonMetaclass.
+"/ eachClass isVisualStartable ifTrue:[
+"/ nm := LabelAndIcon icon:((SystemBrowser visualStartableClassIcon)
+"/ onDevice:self window device)
+"/ string:nm
+"/ ].
+ markApplicationsHolder value == true ifTrue:[
+ icon := self iconForClass:eachClass theNonMetaclass.
icon isNil ifTrue:[
icon := SystemBrowser emptyIcon
].
nm := LabelAndIcon icon:icon string:nm
-
].
nm
].
@@ -1996,10 +1993,6 @@
unloadedClassesColor notNil ifTrue:[
nm := nm withColor:unloadedClassesColor
]
- ].
-
- aClass isLoaded ifFalse:[
- "/ nm := nm,(' (?) ' colorizeAllWith:Color grey).
] ifTrue:[
| instMethodCount classMethodCount |
@@ -2008,7 +2001,7 @@
classMethodCount := aClass class methodsCount.
(instMethodCount notNil or:[ classMethodCount notNil ]) ifTrue:[
- nm := nm,((' (%1+%2) ' bindWith:(instMethodCount ? '?') with:(classMethodCount ? '?'))
+ nm := nm, ((' (%1+%2) ' bindWith:(instMethodCount ? '?') with:(classMethodCount ? '?'))
withColor:self class pseudoEntryForegroundColor).
]
].
@@ -2054,8 +2047,7 @@
"/ full name required if owner is not in the list
owner := aClass owningClass.
(owner isNil
- or:[(self classList value includesIdentical:owner) not]) ifFalse:[
-
+ or:[(self classList value includesIdentical:owner) not]) ifFalse:[
"/ namespace
indent := (nm count:[:char | char == $:]) // 2.
indent > 0 ifTrue:[
@@ -2076,33 +2068,30 @@
"Modified: / 27-03-2015 / 16:23:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-nameListIndentStringFor:aClass withNameSpace:useFullName
- | indent indentString cls |
+nameListIndentStringFor:aClass withNameSpace:useFullName
+ |indent indentString cls|
indent := 0.
indentString := ''.
cls := aClass superclass.
- [self classList value includesIdentical:cls]
- whileTrue:
- [indent := indent + 1.
- cls := cls superclass].
-
+ [self classList value includesIdentical:cls] whileTrue:[
+ indent := indent + 1.
+ cls := cls superclass
+ ].
indent == 0 ifFalse:[
indent <= 5 ifTrue:[
- indentString := #(
- ''
- ' '
- ' '
- ' '
- ' '
- ' '
- ) at:indent+1.
+ indentString := #(
+ ''
+ ' '
+ ' '
+ ' '
+ ' '
+ ' ' ) at:indent + 1.
] ifFalse:[
- indentString := String new:indent*2 withAll:Character space.
+ indentString := String new:indent * 2 withAll:Character space.
].
-
].
- ^indentString
+ ^ indentString
"Modified: / 24-02-2000 / 17:52:28 / cg"
"Created: / 21-01-2008 / 19:02:07 / janfrog"
--- a/Tools__LintRuleList.st Wed Sep 28 07:09:57 2016 +0200
+++ b/Tools__LintRuleList.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
Copyright (c) 2009-2010 eXept Software AG
@@ -472,7 +474,9 @@
^ Iterator
on: [:whatToDo|
self listSelection value ? #() do:[:each|
- each failedClasses do:whatToDo
+ "/ classes removed (in the meanwhile), but still referenced by name in the lintResults
+ "/ may lead to nil being enumerated here...
+ each failedClasses nonNilElementsDo:whatToDo
]
]
].
@@ -620,7 +624,16 @@
]
]
].
- newList sort:[:a :b | a name < b name].
+ newList
+ sort:[:a :b |
+ |sevA sevB|
+
+ sevA := a rule severityAsInteger.
+ sevB := b rule severityAsInteger.
+ (sevA > sevB)
+ or:[ (sevA == sevB) and:[a rule name < b rule name]].
+ ].
+ "/ newList sort:[:a :b | a name < b name].
self listHolder value:newList.
self setListValid:true.
@@ -784,8 +797,19 @@
!
label
-
- ^rule displayString.
+ |s severity|
+
+ s := rule displayString.
+ (severity := rule severity) == #warning ifTrue:[
+ ^ s withColor:Color orange.
+ ].
+ severity == #error ifTrue:[
+ ^ s withColor:Color red.
+ ].
+ severity == #information ifFalse:[
+ self halt.
+ ].
+ ^ s
"Modified: / 15-04-2010 / 18:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -829,29 +853,7 @@
!LintRuleList::ListEntry methodsFor:'displaying'!
displayLabel:aLabel h:lH on:aGC x:newX y:y h:h
- | cx icon app mode |
-
- cx := x := newX.
- app := self application.
- mode := app mode.
- mode ~~ #display ifTrue:[
- mode == #select ifTrue:[
- icon := self checked
- ifTrue:[app class checkedIcon]
- ifFalse:[app class uncheckedIcon].
- ] ifFalse:[
- icon := self checked
- ifTrue:[app class checkedIconDisabled]
- ifFalse:[app class uncheckedIconDisabled].
- ].
- icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2).
- cx := cx + 22."experimental value - this looks good"
- ].
-
- super displayLabel:aLabel h:lH on:aGC x:cx y:y h:h
-
- "Modified (format): / 07-03-2012 / 20:08:02 / cg"
- "Modified: / 08-10-2014 / 22:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ self displayLabel:aLabel h:lH on:aGC x:newX y:y h:h isHighlightedAsSelected:false
!
displayLabel:aLabel h:lH on:aGC x:newX y:y h:h isHighlightedAsSelected:isHighlightedAsSelected
--- a/Tools__NewSystemBrowser.st Wed Sep 28 07:09:57 2016 +0200
+++ b/Tools__NewSystemBrowser.st Mon Oct 03 15:15:56 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2000 by eXept Software AG
All Rights Reserved
@@ -28628,13 +28630,13 @@
"configure a just created smallLint browser"
|selectedClassesHolder selectedMethodHolder methodGenerator
- ruleGenerator prevSelectedClasses prevMeta|
+ ruleGenerator "prevSelectedClasses" "prevMeta"|
selectedClassesHolder := browser selectedClasses.
selectedMethodHolder := browser selectedMethods.
ruleGenerator :=
- Iterator on:[:whatToDo|
+ Iterator on:[:whatToDo|
result failedRules do:whatToDo
].
@@ -31363,7 +31365,7 @@
"/ Cyclomatic complexity.
"/ Total cyclomatic complexity.
- resultStream := WriteStream on:String new.
+ resultStream := WriteStream on:''.
self
selectedClassesDo:[:eachClass |
@@ -43179,7 +43181,7 @@
"/ Cyclomatic complexity.
"/ Total cyclomatic complexity.
- resultStream := WriteStream on:String new.
+ resultStream := WriteStream on:''.
self
projectMenuWithAllClassesLoadedDo:[:module :package :classesInProject |
@@ -47113,7 +47115,7 @@
self activityNotification:nil.
browser := (UserPreferences current changeSetBrowserClass) openOn:previousMethods.
- browser window label:(resources string:'Revisions of %1 %2' with:mclass name with:mselector).
+ browser window label:(resources string:'Revisions of %1 Âť %2' with:mclass name with:mselector).
browser readOnly:true.
].
@@ -48209,7 +48211,8 @@
(methodSelection contains:[:method | |sel|
sel := method selector.
((sel startsWith:'has') and:[sel size > 3 and:[ (sel at:4) isUppercase ]])
- or:[ ((sel startsWith:'can') and:[sel size > 3 and:[ (sel at:4) isUppercase ]]) ]]) ifTrue:[
+ or:[ ((sel startsWith:'can') and:[sel size > 3 and:[ (sel at:4) isUppercase ]])
+ or:[ ((sel startsWith:'is') and:[sel size > 2 and:[ (sel at:3) isUppercase ]]) ]]]) ifTrue:[
someCategories add:'queries'.
goodCandidates add:'queries'.
].
@@ -48217,6 +48220,14 @@
someCategories add:'enumeration'.
goodCandidates add:'enumeration'.
].
+ (methodSelection contains:[:method | method selector startsWith:'init']) ifTrue:[
+ someCategories add:'initialization'.
+ goodCandidates add:'initialization'.
+ ].
+ (methodSelection contains:[:method | method selector startsWith:'new']) ifTrue:[
+ someCategories add:'instance creation'.
+ goodCandidates add:'instance creation'.
+ ].
goodCandidates size == 1 ifTrue:[
initialAnswer := goodCandidates anElement
@@ -48263,7 +48274,7 @@
].
someCategories := someCategories asOrderedCollection sort.
-
+
newCategory := self
askForMethodCategory:'Move to which protocol ?'
title:'Change MethodCategory'
@@ -51691,7 +51702,7 @@
label:[:chg |
|lbl|
"/ lbl := chg printString
- lbl := (chg className ? '???') , ' ' , (chg selector ? '???') allBold.
+ lbl := (chg className ? '???') , ' Âť ' , (chg selector ? '???') allBold.
(chg isMethodChange and:[chg changeMethod isNil]) ifTrue:[
lbl := lbl asText allStrikedOut,' ','(removed)' allItalic.
].
@@ -59053,7 +59064,6 @@
^ selectorCompletion
! !
-
!NewSystemBrowser methodsFor:'private-semantic checks'!
checkAcceptedMethod:aMethod inClass:aClass