From a677c42528baf945814129da2af420d606aff735 Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Mon, 10 Mar 2025 18:20:25 +0100 Subject: [PATCH 1/3] fix breakpoint issue by forcing the uninstallation of all --- src/Pyramid-Bloc/PyramidBreakpoint.class.st | 20 ++++++++++++++++--- .../PyramidPluginEditOnRunning.class.st | 9 +++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Pyramid-Bloc/PyramidBreakpoint.class.st b/src/Pyramid-Bloc/PyramidBreakpoint.class.st index f251f990..af3771cc 100644 --- a/src/Pyramid-Bloc/PyramidBreakpoint.class.st +++ b/src/Pyramid-Bloc/PyramidBreakpoint.class.st @@ -7,10 +7,24 @@ Class { #category : #'Pyramid-Bloc-plugin-edit-on-running' } -{ #category : #accessing } -PyramidBreakpoint class >> removeBreakpoint: aBreakpoint [ +{ #category : #removing } +PyramidBreakpoint class >> removeAllPyramidBreakpoint [ + + + | pyramidBreakpoints | + pyramidBreakpoints := self all select: [ :each | each class = self ]. + pyramidBreakpoints ifEmpty: [ ^ self ]. + pyramidBreakpoints do: [ :each | each remove ] +] + +{ #category : #removing } +PyramidBreakpoint class >> removeAllPyramidBreakpointExceptOne [ - "Do nothing" + + | pyramidBreakpoints | + pyramidBreakpoints := self all select: [ :each | each class = self ]. + pyramidBreakpoints ifEmpty: [ ^ self ]. + pyramidBreakpoints allButFirstDo: [ :each | each remove ] ] { #category : #api } diff --git a/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st b/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st index 0f63398f..6a5d4978 100644 --- a/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st +++ b/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st @@ -29,7 +29,7 @@ PyramidPluginEditOnRunning class >> breakpoint [ ^ breakpoint ] -{ #category : #testing } +{ #category : #'as yet unclassified' } PyramidPluginEditOnRunning class >> canEditSpace: aSpace [ aSpace ifNil:[ ^ false ]. @@ -67,13 +67,13 @@ PyramidPluginEditOnRunning class >> doShortcutAction: anEvent [ named: 'Pyramid edit-on-running plugin shortcut' ] -{ #category : #accessing } +{ #category : #'as yet unclassified' } PyramidPluginEditOnRunning class >> editOnRunning [ ^ editOnRunning ifNil: [ editOnRunning := true ] ] -{ #category : #accessing } +{ #category : #'as yet unclassified' } PyramidPluginEditOnRunning class >> editOnRunning: aBoolean [ editOnRunning := aBoolean @@ -133,5 +133,6 @@ PyramidPluginEditOnRunning class >> shortcut [ PyramidPluginEditOnRunning class >> uninstall [ "Undo some stuff here when the plugin used class oriented behavior" - self breakpoint ifNotNil: [ :b | b remove ] + PyramidBreakpoint removeAllPyramidBreakpoint. + breakpoint := nil. ] From 30cf0342b613d0cc4467e13c9bb6851039658f6c Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Thu, 14 Aug 2025 17:41:25 +0200 Subject: [PATCH 2/3] update the install plugin method + TU --- src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st | 4 +++- .../PyramidPluginEditOnRunningTest.class.st | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st b/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st index 6a5d4978..6c9f5d17 100644 --- a/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st +++ b/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st @@ -90,11 +90,13 @@ PyramidPluginEditOnRunning class >> install [ PyramidPluginEditOnRunning class >> installBreakpoint [ | node | + PyramidBreakpoint removeAllPyramidBreakpoint. node := (BlParallelUniverse methodNamed: #openSpace:) ast. breakpoint := PyramidBreakpoint new. breakpoint node: node. - breakpoint whenHitDo: [ :context | self addShortcutInSpace: context arguments first ]. + breakpoint whenHitDo: [ :context | + self addShortcutInSpace: context arguments first ]. breakpoint install ] diff --git a/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st b/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st index 8eb964c0..dca44a28 100644 --- a/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st +++ b/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st @@ -96,6 +96,18 @@ PyramidPluginEditOnRunningTest >> testKeyCombination [ ] +{ #category : #tests } +PyramidPluginEditOnRunningTest >> testOnlyOnePyramidBreakpoint [ + + PyramidPluginEditOnRunning install. + PyramidPluginEditOnRunning install. + PyramidPluginEditOnRunning install. + Smalltalk image garbageCollect. + Smalltalk image garbageCollect. + Smalltalk image garbageCollect. + self assert: PyramidBreakpoint allInstances size equals: 1. +] + { #category : #tests } PyramidPluginEditOnRunningTest >> testShortcut [ From 967facd76dc57235ae8274ff952577a3d99aa2cc Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Thu, 14 Aug 2025 17:46:34 +0200 Subject: [PATCH 3/3] Better unit test --- src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st b/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st index dca44a28..026f73e2 100644 --- a/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st +++ b/src/Pyramid-Tests/PyramidPluginEditOnRunningTest.class.st @@ -105,7 +105,7 @@ PyramidPluginEditOnRunningTest >> testOnlyOnePyramidBreakpoint [ Smalltalk image garbageCollect. Smalltalk image garbageCollect. Smalltalk image garbageCollect. - self assert: PyramidBreakpoint allInstances size equals: 1. + self assert: (PyramidBreakpoint allInstances select: #isInstalled) size equals: 1 ] { #category : #tests }