SmallSense__SmalltalkParseNodeFinder.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 09 Jul 2014 12:06:40 +0100
changeset 249 8bc64027b189
parent 240 e2277fd8f082
child 252 feba6ee5c814
permissions -rw-r--r--
Package renamed to stx:goodies/smallsense
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
249
8bc64027b189 Package renamed to stx:goodies/smallsense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
     1
"{ Package: 'stx:goodies/smallsense' }"
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     3
"{ NameSpace: SmallSense }"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
     4
101
a300290bf8fc Classes renamed to better express theit purpose.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 98
diff changeset
     5
SmalltalkParseNodeVisitor subclass:#SmalltalkParseNodeFinder
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'position match previous'
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
101
a300290bf8fc Classes renamed to better express theit purpose.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 98
diff changeset
     9
	category:'SmallSense-Smalltalk'
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
101
a300290bf8fc Classes renamed to better express theit purpose.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 98
diff changeset
    13
!SmalltalkParseNodeFinder methodsFor:'finding'!
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    15
findNodeIn: source tree: tree comments: comments line: line column: col
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    | sourceS |
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    sourceS := source readStream.
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
    line - 1 timesRepeat:[
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
        (sourceS nextLine) isNil ifTrue:[
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
            "No such line"                                
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
            ^nil
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
        ].        
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    ].
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    25
    ^self findNodeIn: source tree: tree comments: comments position: sourceS position + col
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    27
    "Created: / 29-01-2014 / 10:20:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
184
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    30
findNodeIn:source tree:tree comments:comments position:pos 
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    31
    | i s e |
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
    position := pos - 1.
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    34
    i := 1.
184
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    35
    [
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    36
        i < comments size and:[ (s := comments at:i) notNil ]
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    37
    ] whileTrue:[
240
e2277fd8f082 Fix in parse node finder - do not return any node when in comment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 191
diff changeset
    38
        e := "s + "(comments at:i + 1)" - 1".
184
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    39
        (pos between:s and:e) ifTrue:[
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    40
            ^ nil -> pos.
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    41
        ].
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    42
        i := i + 2.
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    43
    ].
184
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    44
    (s notNil and:[ source size == e ]) ifTrue:[ 
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    45
        ^ nil -> pos.     
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    46
    ].
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    47
    self visit:tree.
0da7032dfd5a Fixed issue #3
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    48
    ^ (match ? previous) -> pos.
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    50
    "Created: / 29-01-2014 / 10:20:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240
e2277fd8f082 Fix in parse node finder - do not return any node when in comment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 191
diff changeset
    51
    "Modified: / 17-06-2014 / 16:04:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
! !
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
101
a300290bf8fc Classes renamed to better express theit purpose.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 98
diff changeset
    54
!SmalltalkParseNodeFinder methodsFor:'visiting'!
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
visit:anObject 
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    anObject isNil ifTrue:[^self].
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
98
c21c3e61a377 Fixes for ParseNodeInspector. Display nodes with no source position info in red.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    60
    (anObject endPosition notNil and:[position > anObject endPosition]) ifTrue:[
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
        previous := anObject.
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
        anObject acceptVisitor: self.
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
        ^self.
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    ].
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
98
c21c3e61a377 Fixes for ParseNodeInspector. Display nodes with no source position info in red.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    66
    (anObject startPosition notNil 
c21c3e61a377 Fixes for ParseNodeInspector. Display nodes with no source position info in red.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    67
        and:[anObject endPosition notNil 
c21c3e61a377 Fixes for ParseNodeInspector. Display nodes with no source position info in red.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    68
        and:[position between: anObject startPosition and: anObject endPosition]]) ifTrue:[
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
        match := anObject.
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    ].
98
c21c3e61a377 Fixes for ParseNodeInspector. Display nodes with no source position info in red.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    71
    anObject acceptVisitor: self.
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    "Created: / 26-11-2011 / 15:40:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
98
c21c3e61a377 Fixes for ParseNodeInspector. Display nodes with no source position info in red.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    74
    "Modified: / 19-09-2013 / 11:15:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
visitStatementNode:anObject 
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    self visit: anObject expression.
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    self visit: anObject nextStatement.
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    "Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 26-11-2011 / 15:40:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
! !
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
101
a300290bf8fc Classes renamed to better express theit purpose.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 98
diff changeset
    86
!SmalltalkParseNodeFinder class methodsFor:'documentation'!
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
29
fe650a6e5704 Moved NavigationState>>selectedClasses to package stx:libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    88
version_HG
fe650a6e5704 Moved NavigationState>>selectedClasses to package stx:libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    89
fe650a6e5704 Moved NavigationState>>selectedClasses to package stx:libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    90
    ^ '$Changeset: <not expanded> $'
fe650a6e5704 Moved NavigationState>>selectedClasses to package stx:libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    91
!
fe650a6e5704 Moved NavigationState>>selectedClasses to package stx:libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    92
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
version_SVN
174
3e08d765d86f sync from current CVS head; fixed comment highlighting for STXEOLRule
Claus Gittinger
parents: 107
diff changeset
    94
    ^ '$Id: SmallSense__SmalltalkParseNodeFinder.st,v 1.2 2014/02/12 14:49:29 sr Exp $'
0
893cc7b0ed1d copied smallsense from old /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
! !
29
fe650a6e5704 Moved NavigationState>>selectedClasses to package stx:libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    96