The Inbox: Morphic-ct.1586.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
35 messages Options
12
Reply | Threaded
Open this post in threaded view
|

The Inbox: Morphic-ct.1586.mcz

commits-2
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
  | oldEditor |
  textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
  model: model.  "For, eg, evaluateSelection"
  textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
  [:result |
  selectionInterval := oldEditor selectionInterval.
  textMorph installEditorToReplace: oldEditor.
+ textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+ (oldEditor printTextFor: result)].
- textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
  selectionInterval := oldEditor selectionInterval.
 
  textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
  self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+ self insertAndSelect: aStringOrText at: self stopIndex !
- self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+ aStringOrText isString ifTrue: [
+ ^ self
+ insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+ at: anInteger].
- self closeTypeIn.
 
+ self closeTypeIn.
  self selectInvisiblyFrom: anInteger to: anInteger - 1.
  self openTypeIn.
 
  self
  replace: self selectionInterval
+ with: (Text string: ' ' attributes: emphasisHere), aStringOrText
- with: (Text string: (' ', aString) attributes: emphasisHere)
  and: [].
-
  self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
  self evaluateSelectionAndDo: [:result |
  (model respondsTo: #printIt:result:)
  ifTrue: [model
  perform: #printIt:result:
  with: self selection
  with: result]
+ ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
- ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+ ^ Text
+ string: anObject printString
+ attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

marcel.taeumel
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede

Only drawback: If you copy the result to use it for another computation, you spread the link formatting all over your code ...


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 10:36:07
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

marcel.taeumel
Is it because you do not append "emphasisHere" after your custom emphasis?

Am 12.11.2019 13:15:43 schrieb Thiede, Christoph <[hidden email]>:

Only drawback: If you copy the result to use it for another computation, you spread the link formatting all over your code ...


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 10:36:07
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede

Hi Marcel,


Thanks for the hint, I played a bit around with emphasisHere. But if I am not mistaken, you cannot set emphasisHere for the next character to be typed while another text (the printIt result) is currently selected?


This is also only one half of the problem. Personally, I often copy one printIt result to use it at another place. (I know, variables would be a better option, however, I feel convenient to do this.) It looks kind of weird if this link is spread all over your workspace:



So unless someone has a great idea to avoid this (a special RunArray of attributes that are private to an editor? a TextAttribute that cannot be copied?), I would rather tend to withdraw my proposal ...


(Btw: A somehow related issue is that the search bar accepts formatted text from clipboard but does not style it, so in my image, it often looks kind of missstyled:

)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 14:05:23
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Is it because you do not append "emphasisHere" after your custom emphasis?

Am 12.11.2019 13:15:43 schrieb Thiede, Christoph <[hidden email]>:

Only drawback: If you copy the result to use it for another computation, you spread the link formatting all over your code ...


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 10:36:07
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

marcel.taeumel
> ... spread all over your workspace ...

What do you mean by that? Copy-and-paste of text should always carry those attributes. With "spreading" I thought you mean you would unintentionally extend those text links to other characters.

What about this style after a print-it :

World extent 3840@2004 [explore]

Tricky. We want to preserve to preserve the actual #printString ... Does [cmd]+[0] still work?

Best,
Marcel

Am 13.11.2019 18:06:48 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


Thanks for the hint, I played a bit around with emphasisHere. But if I am not mistaken, you cannot set emphasisHere for the next character to be typed while another text (the printIt result) is currently selected?


This is also only one half of the problem. Personally, I often copy one printIt result to use it at another place. (I know, variables would be a better option, however, I feel convenient to do this.) It looks kind of weird if this link is spread all over your workspace:



So unless someone has a great idea to avoid this (a special RunArray of attributes that are private to an editor? a TextAttribute that cannot be copied?), I would rather tend to withdraw my proposal ...


(Btw: A somehow related issue is that the search bar accepts formatted text from clipboard but does not style it, so in my image, it often looks kind of missstyled:

)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 14:05:23
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Is it because you do not append "emphasisHere" after your custom emphasis?

Am 12.11.2019 13:15:43 schrieb Thiede, Christoph <[hidden email]>:

Only drawback: If you copy the result to use it for another computation, you spread the link formatting all over your code ...


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 10:36:07
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede

Hi Marcel,


yes, <cmd>0 still works. It is an interesting idea to put the link aside to the actual print string, but I have to admit that both approaches would make the usual workflow of copying and reusing the printIt string more complicated, unfortunately ...


Another idea, should we maybe consider some kind of TextMorph/editor extension that is indeed not affected by clipboard? Visually, something like:




Such a text attachment would need to be laid out like regular TextAnchors, however, they must not be selected by the cursor. One could describe the idea as an extension to the TextAnchor that prohibits an editor to select it.


***


BTW: Another related problem is that unless you delete the printed-it string, all following commands in a workspace will be miss-styled (see above). Someone recently mentioned that Pharo restarts styling after #codeExcess in each new line, which sounds great. Should we maybe add a similar feature to Shout?


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 14. November 2019 09:28:58
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
> ... spread all over your workspace ...

What do you mean by that? Copy-and-paste of text should always carry those attributes. With "spreading" I thought you mean you would unintentionally extend those text links to other characters.

What about this style after a print-it :

World extent 3840@2004 [explore]

Tricky. We want to preserve to preserve the actual #printString ... Does [cmd]+[0] still work?

Best,
Marcel

Am 13.11.2019 18:06:48 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


Thanks for the hint, I played a bit around with emphasisHere. But if I am not mistaken, you cannot set emphasisHere for the next character to be typed while another text (the printIt result) is currently selected?


This is also only one half of the problem. Personally, I often copy one printIt result to use it at another place. (I know, variables would be a better option, however, I feel convenient to do this.) It looks kind of weird if this link is spread all over your workspace:



So unless someone has a great idea to avoid this (a special RunArray of attributes that are private to an editor? a TextAttribute that cannot be copied?), I would rather tend to withdraw my proposal ...


(Btw: A somehow related issue is that the search bar accepts formatted text from clipboard but does not style it, so in my image, it often looks kind of missstyled:

)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 14:05:23
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Is it because you do not append "emphasisHere" after your custom emphasis?

Am 12.11.2019 13:15:43 schrieb Thiede, Christoph <[hidden email]>:

Only drawback: If you copy the result to use it for another computation, you spread the link formatting all over your code ...


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 10:36:07
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

timrowledge
If you're wanting the result of a printit to be easily inspectable I see a couple of easy options -
a) the printit is already highlighted so all you have to do is cmd-i
b) if that isn't good enough - maybe you clicked somewhere else and want to go back, and it's too much work to select the relevant text - how about adding another text attribute for 'inspect this'? We already have 'do it', 'print it' and 'link', and I assume you're intending to add 'code style it' sometime soon.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Florida: more red in the face



Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

marcel.taeumel
In reply to this post by Christoph Thiede
> ... the usual workflow of copying and reusing the printIt string more complicated ...

Note that print-it does not always produce a "store string" and is thus not always executable. ;-)

Best,
Marcel

Am 14.11.2019 12:58:22 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


yes, <cmd>0 still works. It is an interesting idea to put the link aside to the actual print string, but I have to admit that both approaches would make the usual workflow of copying and reusing the printIt string more complicated, unfortunately ...


Another idea, should we maybe consider some kind of TextMorph/editor extension that is indeed not affected by clipboard? Visually, something like:




Such a text attachment would need to be laid out like regular TextAnchors, however, they must not be selected by the cursor. One could describe the idea as an extension to the TextAnchor that prohibits an editor to select it.


***


BTW: Another related problem is that unless you delete the printed-it string, all following commands in a workspace will be miss-styled (see above). Someone recently mentioned that Pharo restarts styling after #codeExcess in each new line, which sounds great. Should we maybe add a similar feature to Shout?


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 14. November 2019 09:28:58
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
> ... spread all over your workspace ...

What do you mean by that? Copy-and-paste of text should always carry those attributes. With "spreading" I thought you mean you would unintentionally extend those text links to other characters.

What about this style after a print-it :

World extent 3840@2004 [explore]

Tricky. We want to preserve to preserve the actual #printString ... Does [cmd]+[0] still work?

Best,
Marcel

Am 13.11.2019 18:06:48 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


Thanks for the hint, I played a bit around with emphasisHere. But if I am not mistaken, you cannot set emphasisHere for the next character to be typed while another text (the printIt result) is currently selected?


This is also only one half of the problem. Personally, I often copy one printIt result to use it at another place. (I know, variables would be a better option, however, I feel convenient to do this.) It looks kind of weird if this link is spread all over your workspace:



So unless someone has a great idea to avoid this (a special RunArray of attributes that are private to an editor? a TextAttribute that cannot be copied?), I would rather tend to withdraw my proposal ...


(Btw: A somehow related issue is that the search bar accepts formatted text from clipboard but does not style it, so in my image, it often looks kind of missstyled:

)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 14:05:23
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Is it because you do not append "emphasisHere" after your custom emphasis?

Am 12.11.2019 13:15:43 schrieb Thiede, Christoph <[hidden email]>:

Only drawback: If you copy the result to use it for another computation, you spread the link formatting all over your code ...


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 10:36:07
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede

I know, but sometimes it is executable, and I would not like to miss this possibility :-)


@tim: Such a TextPrintIt (subclass of TextDoIt) sounds interesting! However, it does not solve the problem that you are not able to copy the plain text even longer, I think.


Just another idea (I seem to have too many of them :D): Some kind of UnderlyingObjectAttribute (with a better name, of course) an editor can check the selection before compiling it when inspectIt/exploreIt is pressed?


Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor checks for UnderylingObjectAttribute -> none found, so the string is compilaed as usual.

Example 2: (Text string: '2 + 3' attributes: (UnderylingObjectAttribute for: 5)) -> User presses inspectIt -> Editor finds an UnderylingObjectAttribute -> instead of compiling the selection, the cached result is reused for the inspector.

We would not even need to display this Attribute visually if it works reliably.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 15. November 2019 09:25:12
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
> ... the usual workflow of copying and reusing the printIt string more complicated ...

Note that print-it does not always produce a "store string" and is thus not always executable. ;-)

Best,
Marcel

Am 14.11.2019 12:58:22 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


yes, <cmd>0 still works. It is an interesting idea to put the link aside to the actual print string, but I have to admit that both approaches would make the usual workflow of copying and reusing the printIt string more complicated, unfortunately ...


Another idea, should we maybe consider some kind of TextMorph/editor extension that is indeed not affected by clipboard? Visually, something like:




Such a text attachment would need to be laid out like regular TextAnchors, however, they must not be selected by the cursor. One could describe the idea as an extension to the TextAnchor that prohibits an editor to select it.


***


BTW: Another related problem is that unless you delete the printed-it string, all following commands in a workspace will be miss-styled (see above). Someone recently mentioned that Pharo restarts styling after #codeExcess in each new line, which sounds great. Should we maybe add a similar feature to Shout?


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Donnerstag, 14. November 2019 09:28:58
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
> ... spread all over your workspace ...

What do you mean by that? Copy-and-paste of text should always carry those attributes. With "spreading" I thought you mean you would unintentionally extend those text links to other characters.

What about this style after a print-it :

World extent 3840@2004 [explore]

Tricky. We want to preserve to preserve the actual #printString ... Does [cmd]+[0] still work?

Best,
Marcel

Am 13.11.2019 18:06:48 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


Thanks for the hint, I played a bit around with emphasisHere. But if I am not mistaken, you cannot set emphasisHere for the next character to be typed while another text (the printIt result) is currently selected?


This is also only one half of the problem. Personally, I often copy one printIt result to use it at another place. (I know, variables would be a better option, however, I feel convenient to do this.) It looks kind of weird if this link is spread all over your workspace:



So unless someone has a great idea to avoid this (a special RunArray of attributes that are private to an editor? a TextAttribute that cannot be copied?), I would rather tend to withdraw my proposal ...


(Btw: A somehow related issue is that the search bar accepts formatted text from clipboard but does not style it, so in my image, it often looks kind of missstyled:

)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 14:05:23
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Is it because you do not append "emphasisHere" after your custom emphasis?

Am 12.11.2019 13:15:43 schrieb Thiede, Christoph <[hidden email]>:

Only drawback: If you copy the result to use it for another computation, you spread the link formatting all over your code ...


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Dienstag, 12. November 2019 10:36:07
An: John Pfersich via Squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
+1

Best,
Marcel

Am 10.11.2019 16:07:23 schrieb Thiede, Christoph <[hidden email]>:



Von: Squeak-dev <[hidden email]> im Auftrag von [hidden email] <[hidden email]>
Gesendet: Sonntag, 10. November 2019 16:06:26
An: [hidden email]
Betreff: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1586.mcz

==================== Summary ====================

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
         | oldEditor |
         textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
                                                 model: model.  "For, eg, evaluateSelection"
         textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
                 [:result |
                 selectionInterval := oldEditor selectionInterval.
                 textMorph installEditorToReplace: oldEditor.
+                textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+                        (oldEditor printTextFor: result)].
-                textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
                 selectionInterval := oldEditor selectionInterval.
        
                 textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
                 self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+        self insertAndSelect: aStringOrText at: self stopIndex !
-        self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+        aStringOrText isString ifTrue: [
+                ^ self
+                        insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+                        at: anInteger].
-        self closeTypeIn.
        
+        self closeTypeIn.
         self selectInvisiblyFrom: anInteger to: anInteger - 1.
         self openTypeIn.
 
         self
                 replace: self selectionInterval
+                with: (Text string: ' ' attributes: emphasisHere), aStringOrText
-                with: (Text string: (' ', aString) attributes: emphasisHere)
                 and: [].
-
         self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
         self evaluateSelectionAndDo: [:result |
                 (model respondsTo: #printIt:result:)
                         ifTrue: [model
                                 perform: #printIt:result:
                                 with: self selection
                                 with: result]
+                        ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
-                        ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+        ^ Text
+                string: anObject printString
+                attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Jakob Reschke
Thiede, Christoph <[hidden email]> schrieb am Fr., 15. Nov. 2019, 09:38:


Just another idea (I seem to have too many of them :D): Some kind of UnderlyingObjectAttribute (with a better name, of course) an editor can check the selection before compiling it when inspectIt/exploreIt is pressed?


Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor checks for UnderylingObjectAttribute -> none found, so the string is compilaed as usual.

Example 2: (Text string: '2 + 3' attributes: (UnderylingObjectAttribute for: 5)) -> User presses inspectIt -> Editor finds an UnderylingObjectAttribute -> instead of compiling the selection, the cached result is reused for the inspector.

We would not even need to display this Attribute visually if it works reliably.


Make sure it is transient in some way because it would be quite annoying if the hidden object were out of date with regards to the text.


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

marcel.taeumel
Hi all!

It is now in Trunk. You can opt-out via the preference browser. Still, you will be asked the first time when you update your image. CI scripts will default to "true".

Best,
Marcel

Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:

Thiede, Christoph <[hidden email]> schrieb am Fr., 15. Nov. 2019, 09:38:


Just another idea (I seem to have too many of them :D): Some kind of UnderlyingObjectAttribute (with a better name, of course) an editor can check the selection before compiling it when inspectIt/exploreIt is pressed?


Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor checks for UnderylingObjectAttribute -> none found, so the string is compilaed as usual.

Example 2: (Text string: '2 + 3' attributes: (UnderylingObjectAttribute for: 5)) -> User presses inspectIt -> Editor finds an UnderylingObjectAttribute -> instead of compiling the selection, the cached result is reused for the inspector.

We would not even need to display this Attribute visually if it works reliably.


Make sure it is transient in some way because it would be quite annoying if the hidden object were out of date with regards to the text.


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede

Hi Marcel, it's great that you have found a solution to this idea! :-)


+        ^ (self class interactivePrintIt and: [(anObject isString or: [anObject isNumber]) not])


Is this necessary? I know that an inspector for a literal object like these does not make great sense, but this just feels like an unnecessary heuristic and limitation for me and adds complexity. I would like to be able to open an inspector always. Also consider this snippet where the print-link does not exist for an MCVersionName: :-)

MCRepository inbox allFileNames first


CI scripts will default to "true".


Unfortunately, no, mine just timed out while preparing the image. Also, my server images for @SqueakSmalltalkBot were interrupted. I'd opt for keeping preamble/postscript content in the update stream strictly non-interactive. :-)


Best,

Christoph



Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 16. April 2021 17:27:54
An: squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Hi all!

It is now in Trunk. You can opt-out via the preference browser. Still, you will be asked the first time when you update your image. CI scripts will default to "true".

Best,
Marcel

Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:

Thiede, Christoph <[hidden email]> schrieb am Fr., 15. Nov. 2019, 09:38:


Just another idea (I seem to have too many of them :D): Some kind of UnderlyingObjectAttribute (with a better name, of course) an editor can check the selection before compiling it when inspectIt/exploreIt is pressed?


Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor checks for UnderylingObjectAttribute -> none found, so the string is compilaed as usual.

Example 2: (Text string: '2 + 3' attributes: (UnderylingObjectAttribute for: 5)) -> User presses inspectIt -> Editor finds an UnderylingObjectAttribute -> instead of compiling the selection, the cached result is reused for the inspector.

We would not even need to display this Attribute visually if it works reliably.


Make sure it is transient in some way because it would be quite annoying if the hidden object were out of date with regards to the text.


Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

marcel.taeumel
Hi Christoph,

I think that this clickable link is a compromise between printString and storeString. For mouse navigation, you can always choose "inspect it" from the context menu on that text selection. ;-) I also found the link color annyoing for simple literals.

Also consider this snippet where the print-link does not exist for an MCVersionName

Looks fine. ^__^ I am certain that we will collect more feedback on this feature during the next weeks and months. Let's refine it then.

Best,
Marcel

Am 16.04.2021 18:39:10 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel, it's great that you have found a solution to this idea! :-)


+        ^ (self class interactivePrintIt and: [(anObject isString or: [anObject isNumber]) not])


Is this necessary? I know that an inspector for a literal object like these does not make great sense, but this just feels like an unnecessary heuristic and limitation for me and adds complexity. I would like to be able to open an inspector always. Also consider this snippet where the print-link does not exist for an MCVersionName: :-)

MCRepository inbox allFileNames first


CI scripts will default to "true".


Unfortunately, no, mine just timed out while preparing the image. Also, my server images for @SqueakSmalltalkBot were interrupted. I'd opt for keeping preamble/postscript content in the update stream strictly non-interactive. :-)


Best,

Christoph



Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 16. April 2021 17:27:54
An: squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Hi all!

It is now in Trunk. You can opt-out via the preference browser. Still, you will be asked the first time when you update your image. CI scripts will default to "true".

Best,
Marcel

Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:

Thiede, Christoph <[hidden email]> schrieb am Fr., 15. Nov. 2019, 09:38:


Just another idea (I seem to have too many of them :D): Some kind of UnderlyingObjectAttribute (with a better name, of course) an editor can check the selection before compiling it when inspectIt/exploreIt is pressed?


Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor checks for UnderylingObjectAttribute -> none found, so the string is compilaed as usual.

Example 2: (Text string: '2 + 3' attributes: (UnderylingObjectAttribute for: 5)) -> User presses inspectIt -> Editor finds an UnderylingObjectAttribute -> instead of compiling the selection, the cached result is reused for the inspector.

We would not even need to display this Attribute visually if it works reliably.


Make sure it is transient in some way because it would be quite annoying if the hidden object were out of date with regards to the text.


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede

Hi Marcel,


I still stumble upon this edge case for some print-it results that do not support click-to-inspect. Why do we need this exception? :-)


> Also consider this snippet where the print-link does not exist for an MCVersionName
> Looks fine.

I don't think it looks fine, why do you think so? :-)

Best,
Christoph

Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 16. April 2021 19:52:16
An: squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Hi Christoph,

I think that this clickable link is a compromise between printString and storeString. For mouse navigation, you can always choose "inspect it" from the context menu on that text selection. ;-) I also found the link color annyoing for simple literals.

Also consider this snippet where the print-link does not exist for an MCVersionName

Looks fine. ^__^ I am certain that we will collect more feedback on this feature during the next weeks and months. Let's refine it then.

Best,
Marcel

Am 16.04.2021 18:39:10 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel, it's great that you have found a solution to this idea! :-)


+        ^ (self class interactivePrintIt and: [(anObject isString or: [anObject isNumber]) not])


Is this necessary? I know that an inspector for a literal object like these does not make great sense, but this just feels like an unnecessary heuristic and limitation for me and adds complexity. I would like to be able to open an inspector always. Also consider this snippet where the print-link does not exist for an MCVersionName: :-)

MCRepository inbox allFileNames first


CI scripts will default to "true".


Unfortunately, no, mine just timed out while preparing the image. Also, my server images for @SqueakSmalltalkBot were interrupted. I'd opt for keeping preamble/postscript content in the update stream strictly non-interactive. :-)


Best,

Christoph



Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 16. April 2021 17:27:54
An: squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Hi all!

It is now in Trunk. You can opt-out via the preference browser. Still, you will be asked the first time when you update your image. CI scripts will default to "true".

Best,
Marcel

Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:

Thiede, Christoph <[hidden email]> schrieb am Fr., 15. Nov. 2019, 09:38:


Just another idea (I seem to have too many of them :D): Some kind of UnderlyingObjectAttribute (with a better name, of course) an editor can check the selection before compiling it when inspectIt/exploreIt is pressed?


Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor checks for UnderylingObjectAttribute -> none found, so the string is compilaed as usual.

Example 2: (Text string: '2 + 3' attributes: (UnderylingObjectAttribute for: 5)) -> User presses inspectIt -> Editor finds an UnderylingObjectAttribute -> instead of compiling the selection, the cached result is reused for the inspector.

We would not even need to display this Attribute visually if it works reliably.


Make sure it is transient in some way because it would be quite annoying if the hidden object were out of date with regards to the text.


Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

marcel.taeumel
Hi Christoph, hi all.

I think that we should not highlight the following kinds of Objects to reserve this feature for really interesting structures that are worth inspecting without an extra evaluate. The kinds to ignore are:

ByteString
ByteSymbol
Number
Boolean
UndefinedObject

So, we can use both (1) visuals and (2) interactivity to let the more complex objects say: "Hey, I have interesting structure! Did you mix up print-it with inspect-it? No worries, just click on me."

This effect will not be if any stoopid literal gets this treatment. :-)

Best,
Marcel

Am 19.04.2021 13:21:53 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel,


I still stumble upon this edge case for some print-it results that do not support click-to-inspect. Why do we need this exception? :-)


> Also consider this snippet where the print-link does not exist for an MCVersionName
> Looks fine.

I don't think it looks fine, why do you think so? :-)

Best,
Christoph

Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 16. April 2021 19:52:16
An: squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Hi Christoph,

I think that this clickable link is a compromise between printString and storeString. For mouse navigation, you can always choose "inspect it" from the context menu on that text selection. ;-) I also found the link color annyoing for simple literals.

Also consider this snippet where the print-link does not exist for an MCVersionName

Looks fine. ^__^ I am certain that we will collect more feedback on this feature during the next weeks and months. Let's refine it then.

Best,
Marcel

Am 16.04.2021 18:39:10 schrieb Thiede, Christoph <[hidden email]>:

Hi Marcel, it's great that you have found a solution to this idea! :-)


+        ^ (self class interactivePrintIt and: [(anObject isString or: [anObject isNumber]) not])


Is this necessary? I know that an inspector for a literal object like these does not make great sense, but this just feels like an unnecessary heuristic and limitation for me and adds complexity. I would like to be able to open an inspector always. Also consider this snippet where the print-link does not exist for an MCVersionName: :-)

MCRepository inbox allFileNames first


CI scripts will default to "true".


Unfortunately, no, mine just timed out while preparing the image. Also, my server images for @SqueakSmalltalkBot were interrupted. I'd opt for keeping preamble/postscript content in the update stream strictly non-interactive. :-)


Best,

Christoph



Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 16. April 2021 17:27:54
An: squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
Hi all!

It is now in Trunk. You can opt-out via the preference browser. Still, you will be asked the first time when you update your image. CI scripts will default to "true".

Best,
Marcel

Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:

Thiede, Christoph <[hidden email]> schrieb am Fr., 15. Nov. 2019, 09:38:


Just another idea (I seem to have too many of them :D): Some kind of UnderlyingObjectAttribute (with a better name, of course) an editor can check the selection before compiling it when inspectIt/exploreIt is pressed?


Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor checks for UnderylingObjectAttribute -> none found, so the string is compilaed as usual.

Example 2: (Text string: '2 + 3' attributes: (UnderylingObjectAttribute for: 5)) -> User presses inspectIt -> Editor finds an UnderylingObjectAttribute -> instead of compiling the selection, the cached result is reused for the inspector.

We would not even need to display this Attribute visually if it works reliably.


Make sure it is transient in some way because it would be quite annoying if the hidden object were out of date with regards to the text.


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

K K Subbu
All,

How about:

  Object>>isInspectable ^true
  ByteString>>isInspectable ^false
  Number>>isInspectable ^false
  ...

so inspectors can skip unitary objects?

Just a thought .. Subbu

On 19/04/21 8:36 pm, Marcel Taeumel wrote:

> Hi Christoph, hi all.
>
> I think that we should not highlight the following kinds of Objects to
> reserve this feature for really interesting structures that are worth
> inspecting without an extra evaluate. The kinds to ignore are:
>
> ByteString
> ByteSymbol
> Number
> Boolean
> UndefinedObject
>
> So, we can use both (1) visuals and (2) interactivity to let the more
> complex objects say: "Hey, I have interesting structure! Did you mix up
> print-it with inspect-it? No worries, just click on me."
>
> This effect will not be if any stoopid literal gets this treatment. :-)
>
> Best,
> Marcel
>>
>> Am 19.04.2021 13:21:53 schrieb Thiede, Christoph
>> <[hidden email]>:
>>
>> Hi Marcel,
>>
>>
>> I still stumble upon this edge case for some print-it results that do
>> not support click-to-inspect. Why do we need this exception? :-)
>>
>>
>> > > Also consider this snippet where the print-link does not exist for
>> an MCVersionName
>> >
>> > Looks fine.
>>
>> I don't think it looks fine, why do you think so? :-)
>>
>> Best,
>> Christoph
>> ------------------------------------------------------------------------
>> *Von:* Squeak-dev <[hidden email]> im
>> Auftrag von Taeumel, Marcel
>> *Gesendet:* Freitag, 16. April 2021 19:52:16
>> *An:* squeak-dev
>> *Betreff:* Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
>> Hi Christoph,
>>
>> I think that this clickable link is a compromise between printString
>> and storeString. For mouse navigation, you can always choose "inspect
>> it" from the context menu on that text selection. ;-) I also found the
>> link color annyoing for simple literals.
>>
>> > Also consider this snippet where the print-link does not exist for
>> an MCVersionName
>>
>> Looks fine. ^__^ I am certain that we will collect more feedback on
>> this feature during the next weeks and months. Let's refine it then.
>>
>> Best,
>> Marcel
>>>
>>> Am 16.04.2021 18:39:10 schrieb Thiede, Christoph
>>> <[hidden email]>:
>>>
>>> Hi Marcel, it's great that you have found a solution to this idea! :-)
>>>
>>>
>>> > +        ^ (self class interactivePrintIt and: [(anObject isString
>>> or: [anObject isNumber]) not])
>>>
>>>
>>> Is this necessary? I know that an inspector for a literal object like
>>> these does not make great sense, but this just feels like an
>>> unnecessary heuristic and limitation for me and adds complexity. I
>>> would like to be able to open an inspector always. Also consider this
>>> snippet where the print-link does not exist for an MCVersionName: :-)
>>>
>>>     MCRepository inbox allFileNames first
>>>
>>>
>>> > CI scripts will default to "true".
>>>
>>>
>>> Unfortunately, no, mine just timed out while preparing the image.
>>> Also, my server images for @SqueakSmalltalkBot were interrupted. I'd
>>> opt for keeping preamble/postscript content in the update stream
>>> strictly non-interactive. :-)
>>>
>>>
>>> Best,
>>>
>>> Christoph
>>>
>>>
>>> ------------------------------------------------------------------------
>>> *Von:* Squeak-dev <[hidden email]> im
>>> Auftrag von Taeumel, Marcel
>>> *Gesendet:* Freitag, 16. April 2021 17:27:54
>>> *An:* squeak-dev
>>> *Betreff:* Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
>>> Hi all!
>>>
>>> It is now in Trunk. You can opt-out via the preference browser.
>>> Still, you will be asked the first time when you update your image.
>>> CI scripts will default to "true".
>>>
>>> Best,
>>> Marcel
>>>>
>>>> Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:
>>>>
>>>> Thiede, Christoph <[hidden email]
>>>> <mailto:[hidden email]>> schrieb am
>>>> Fr., 15. Nov. 2019, 09:38:
>>>>
>>>>
>>>>     Just another idea (I seem to have too many of them :D): Some
>>>>     kind of UnderlyingObjectAttribute (with a better name, of
>>>>     course) an editor can check the selection before compiling it
>>>>     when inspectIt/exploreIt is pressed?
>>>>
>>>>
>>>>     Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor
>>>>     checks for UnderylingObjectAttribute -> none found, so the
>>>>     string is compilaed as usual.
>>>>
>>>>     Example 2: (Text string: '2 + 3' attributes:
>>>>     (UnderylingObjectAttribute for: 5)) -> User presses inspectIt ->
>>>>     Editor finds an UnderylingObjectAttribute -> instead of
>>>>     compiling the selection, the cached result is reused for
>>>>     the inspector.
>>>>
>>>>     We would not even need to display this Attribute visually if it
>>>>     works reliably.
>>>>
>>>>
>>>> Make sure it is transient in some way because it would be quite
>>>> annoying if the hidden object were out of date with regards to the text.
>
>


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Christoph Thiede

Hi Marcel, hi all,


I keeping considering this type check as something bad and unexpected. :-)


First, as I have mentioned earlier, subclasses of ByteString can be indeed non-trivial. This applies to MCVersionName, for example. Second, even a string can be non-trivial, for instance, "String value: 1234", where I only will see a question mark unless I inspect the result. Yes, in the second example, I could also trouble the Compiler again for a new inspect-it, but I just don't see why we should restrict these useful links for certain types of results. Also, in all situations where you do some experiments concerning identity, an inspector would be very helpful to track individual instances. Re-evaluating the expression would not be a solution here.


To summarize, I just would not say that any object in Squeak can have a boring structure. It's just the other way around, these clickable results are a great way to make the inspector more visible in the system.


PS: We should also consider making the new links available for print-its in the search bar.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von K K Subbu <[hidden email]>
Gesendet: Montag, 19. April 2021 18:23:22
An: [hidden email]
Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
 
All,

How about:

  Object>>isInspectable ^true
  ByteString>>isInspectable ^false
  Number>>isInspectable ^false
  ...

so inspectors can skip unitary objects?

Just a thought .. Subbu

On 19/04/21 8:36 pm, Marcel Taeumel wrote:
> Hi Christoph, hi all.
>
> I think that we should not highlight the following kinds of Objects to
> reserve this feature for really interesting structures that are worth
> inspecting without an extra evaluate. The kinds to ignore are:
>
> ByteString
> ByteSymbol
> Number
> Boolean
> UndefinedObject
>
> So, we can use both (1) visuals and (2) interactivity to let the more
> complex objects say: "Hey, I have interesting structure! Did you mix up
> print-it with inspect-it? No worries, just click on me."
>
> This effect will not be if any stoopid literal gets this treatment. :-)
>
> Best,
> Marcel
>>
>> Am 19.04.2021 13:21:53 schrieb Thiede, Christoph
>> <[hidden email]>:
>>
>> Hi Marcel,
>>
>>
>> I still stumble upon this edge case for some print-it results that do
>> not support click-to-inspect. Why do we need this exception? :-)
>>
>>
>> > > Also consider this snippet where the print-link does not exist for
>> an MCVersionName
>> >
>> > Looks fine.
>>
>> I don't think it looks fine, why do you think so? :-)
>>
>> Best,
>> Christoph
>> ------------------------------------------------------------------------
>> *Von:* Squeak-dev <[hidden email]> im
>> Auftrag von Taeumel, Marcel
>> *Gesendet:* Freitag, 16. April 2021 19:52:16
>> *An:* squeak-dev
>> *Betreff:* Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
>> Hi Christoph,
>>
>> I think that this clickable link is a compromise between printString
>> and storeString. For mouse navigation, you can always choose "inspect
>> it" from the context menu on that text selection. ;-) I also found the
>> link color annyoing for simple literals.
>>
>> > Also consider this snippet where the print-link does not exist for
>> an MCVersionName
>>
>> Looks fine. ^__^ I am certain that we will collect more feedback on
>> this feature during the next weeks and months. Let's refine it then.
>>
>> Best,
>> Marcel
>>>
>>> Am 16.04.2021 18:39:10 schrieb Thiede, Christoph
>>> <[hidden email]>:
>>>
>>> Hi Marcel, it's great that you have found a solution to this idea! :-)
>>>
>>>
>>> > +        ^ (self class interactivePrintIt and: [(anObject isString
>>> or: [anObject isNumber]) not])
>>>
>>>
>>> Is this necessary? I know that an inspector for a literal object like
>>> these does not make great sense, but this just feels like an
>>> unnecessary heuristic and limitation for me and adds complexity. I
>>> would like to be able to open an inspector always. Also consider this
>>> snippet where the print-link does not exist for an MCVersionName: :-)
>>>
>>>     MCRepository inbox allFileNames first
>>>
>>>
>>> > CI scripts will default to "true".
>>>
>>>
>>> Unfortunately, no, mine just timed out while preparing the image.
>>> Also, my server images for @SqueakSmalltalkBot were interrupted. I'd
>>> opt for keeping preamble/postscript content in the update stream
>>> strictly non-interactive. :-)
>>>
>>>
>>> Best,
>>>
>>> Christoph
>>>
>>>
>>> ------------------------------------------------------------------------
>>> *Von:* Squeak-dev <[hidden email]> im
>>> Auftrag von Taeumel, Marcel
>>> *Gesendet:* Freitag, 16. April 2021 17:27:54
>>> *An:* squeak-dev
>>> *Betreff:* Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
>>> Hi all!
>>>
>>> It is now in Trunk. You can opt-out via the preference browser.
>>> Still, you will be asked the first time when you update your image.
>>> CI scripts will default to "true".
>>>
>>> Best,
>>> Marcel
>>>>
>>>> Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:
>>>>
>>>> Thiede, Christoph <[hidden email]
>>>> <[hidden email]>> schrieb am
>>>> Fr., 15. Nov. 2019, 09:38:
>>>>
>>>>
>>>>     Just another idea (I seem to have too many of them :D): Some
>>>>     kind of UnderlyingObjectAttribute (with a better name, of
>>>>     course) an editor can check the selection before compiling it
>>>>     when inspectIt/exploreIt is pressed?
>>>>
>>>>
>>>>     Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor
>>>>     checks for UnderylingObjectAttribute -> none found, so the
>>>>     string is compilaed as usual.
>>>>
>>>>     Example 2: (Text string: '2 + 3' attributes:
>>>>     (UnderylingObjectAttribute for: 5)) -> User presses inspectIt ->
>>>>     Editor finds an UnderylingObjectAttribute -> instead of
>>>>     compiling the selection, the cached result is reused for
>>>>     the inspector.
>>>>
>>>>     We would not even need to display this Attribute visually if it
>>>>     works reliably.
>>>>
>>>>
>>>> Make sure it is transient in some way because it would be quite
>>>> annoying if the hidden object were out of date with regards to the text.
>
>




Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-ct.1586.mcz

Tobias Pape
Hi Christoph


> On 19. Apr 2021, at 19:29, Thiede, Christoph <[hidden email]> wrote:
>
> Hi Marcel, hi all,
>
> I keeping considering this type check as something bad and unexpected. :-)

Note that in this instance, 'isInspectable' is actually a plain behavior check, not a type check at all.
It's not "isMorph" or something. While "is*" is often used/misused/abused as type check, this kind here is actually not one of these :

Best regards
        -Tobias

>
> First, as I have mentioned earlier, subclasses of ByteString can be indeed non-trivial. This applies to MCVersionName, for example. Second, even a string can be non-trivial, for instance, "String value: 1234", where I only will see a question mark unless I inspect the result. Yes, in the second example, I could also trouble the Compiler again for a new inspect-it, but I just don't see why we should restrict these useful links for certain types of results. Also, in all situations where you do some experiments concerning identity, an inspector would be very helpful to track individual instances. Re-evaluating the expression would not be a solution here.
>
> To summarize, I just would not say that any object in Squeak can have a boring structure. It's just the other way around, these clickable results are a great way to make the inspector more visible in the system.
>
> PS: We should also consider making the new links available for print-its in the search bar.
>
> Best,
> Christoph
> Von: Squeak-dev <[hidden email]> im Auftrag von K K Subbu <[hidden email]>
> Gesendet: Montag, 19. April 2021 18:23:22
> An: [hidden email]
> Betreff: Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
>  
> All,
>
> How about:
>
>   Object>>isInspectable ^true
>   ByteString>>isInspectable ^false
>   Number>>isInspectable ^false
>   ...
>
> so inspectors can skip unitary objects?
>
> Just a thought .. Subbu
>
> On 19/04/21 8:36 pm, Marcel Taeumel wrote:
> > Hi Christoph, hi all.
> >
> > I think that we should not highlight the following kinds of Objects to
> > reserve this feature for really interesting structures that are worth
> > inspecting without an extra evaluate. The kinds to ignore are:
> >
> > ByteString
> > ByteSymbol
> > Number
> > Boolean
> > UndefinedObject
> >
> > So, we can use both (1) visuals and (2) interactivity to let the more
> > complex objects say: "Hey, I have interesting structure! Did you mix up
> > print-it with inspect-it? No worries, just click on me."
> >
> > This effect will not be if any stoopid literal gets this treatment. :-)
> >
> > Best,
> > Marcel
> >>
> >> Am 19.04.2021 13:21:53 schrieb Thiede, Christoph
> >> <[hidden email]>:
> >>
> >> Hi Marcel,
> >>
> >>
> >> I still stumble upon this edge case for some print-it results that do
> >> not support click-to-inspect. Why do we need this exception? :-)
> >>
> >>
> >> > > Also consider this snippet where the print-link does not exist for
> >> an MCVersionName
> >> >
> >> > Looks fine.
> >>
> >> I don't think it looks fine, why do you think so? :-)
> >>
> >> Best,
> >> Christoph
> >> ------------------------------------------------------------------------
> >> *Von:* Squeak-dev <[hidden email]> im
> >> Auftrag von Taeumel, Marcel
> >> *Gesendet:* Freitag, 16. April 2021 19:52:16
> >> *An:* squeak-dev
> >> *Betreff:* Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
> >> Hi Christoph,
> >>
> >> I think that this clickable link is a compromise between printString
> >> and storeString. For mouse navigation, you can always choose "inspect
> >> it" from the context menu on that text selection. ;-) I also found the
> >> link color annyoing for simple literals.
> >>
> >> > Also consider this snippet where the print-link does not exist for
> >> an MCVersionName
> >>
> >> Looks fine. ^__^ I am certain that we will collect more feedback on
> >> this feature during the next weeks and months. Let's refine it then.
> >>
> >> Best,
> >> Marcel
> >>>
> >>> Am 16.04.2021 18:39:10 schrieb Thiede, Christoph
> >>> <[hidden email]>:
> >>>
> >>> Hi Marcel, it's great that you have found a solution to this idea! :-)
> >>>
> >>>
> >>> > +        ^ (self class interactivePrintIt and: [(anObject isString
> >>> or: [anObject isNumber]) not])
> >>>
> >>>
> >>> Is this necessary? I know that an inspector for a literal object like
> >>> these does not make great sense, but this just feels like an
> >>> unnecessary heuristic and limitation for me and adds complexity. I
> >>> would like to be able to open an inspector always. Also consider this
> >>> snippet where the print-link does not exist for an MCVersionName: :-)
> >>>
> >>>     MCRepository inbox allFileNames first
> >>>
> >>>
> >>> > CI scripts will default to "true".
> >>>
> >>>
> >>> Unfortunately, no, mine just timed out while preparing the image.
> >>> Also, my server images for @SqueakSmalltalkBot were interrupted. I'd
> >>> opt for keeping preamble/postscript content in the update stream
> >>> strictly non-interactive. :-)
> >>>
> >>>
> >>> Best,
> >>>
> >>> Christoph
> >>>
> >>>
> >>> ------------------------------------------------------------------------
> >>> *Von:* Squeak-dev <[hidden email]> im
> >>> Auftrag von Taeumel, Marcel
> >>> *Gesendet:* Freitag, 16. April 2021 17:27:54
> >>> *An:* squeak-dev
> >>> *Betreff:* Re: [squeak-dev] The Inbox: Morphic-ct.1586.mcz
> >>> Hi all!
> >>>
> >>> It is now in Trunk. You can opt-out via the preference browser.
> >>> Still, you will be asked the first time when you update your image.
> >>> CI scripts will default to "true".
> >>>
> >>> Best,
> >>> Marcel
> >>>>
> >>>> Am 17.11.2019 17:36:11 schrieb Jakob Reschke <[hidden email]>:
> >>>>
> >>>> Thiede, Christoph <[hidden email]
> >>>> <mailto:[hidden email]>> schrieb am
> >>>> Fr., 15. Nov. 2019, 09:38:
> >>>>
> >>>>
> >>>>     Just another idea (I seem to have too many of them :D): Some
> >>>>     kind of UnderlyingObjectAttribute (with a better name, of
> >>>>     course) an editor can check the selection before compiling it
> >>>>     when inspectIt/exploreIt is pressed?
> >>>>
> >>>>
> >>>>     Example 1: ('2 + 3' asText) -> User presses inspectIt -> Editor
> >>>>     checks for UnderylingObjectAttribute -> none found, so the
> >>>>     string is compilaed as usual.
> >>>>
> >>>>     Example 2: (Text string: '2 + 3' attributes:
> >>>>     (UnderylingObjectAttribute for: 5)) -> User presses inspectIt ->
> >>>>     Editor finds an UnderylingObjectAttribute -> instead of
> >>>>     compiling the selection, the cached result is reused for
> >>>>     the inspector.
> >>>>
> >>>>     We would not even need to display this Attribute visually if it
> >>>>     works reliably.
> >>>>
> >>>>
> >>>> Make sure it is transient in some way because it would be quite
> >>>> annoying if the hidden object were out of date with regards to the text.
> >
> >



12