AbstractSyntaxHighlighter.st
author Claus Gittinger <cg@exept.de>
Tue, 05 Jul 2011 11:05:08 +0200
changeset 2525 f08c56018d9b
parent 2506 3a8b4a11428e
child 2526 ecd1ee8f03bc
permissions -rw-r--r--
lifted the method instvar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     1
"
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     3
	      All Rights Reserved
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     4
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     5
 This software is furnished under a license and may be used
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     6
 only in accordance with the terms of that license and with the
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     8
 be provided or otherwise made available to, or used by, any
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
     9
 other person.  No title to or ownership of the software is
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    10
 hereby transferred.
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    11
"
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libcomp' }"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Parser subclass:#AbstractSyntaxHighlighter
2525
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
    15
	instanceVariableNames:'method sourceText preferences fullSelectorCheck'
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'System-Compiler'
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    21
!AbstractSyntaxHighlighter class methodsFor:'documentation'!
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    22
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    23
copyright
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    24
"
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    25
 COPYRIGHT (c) 2006 by eXept Software AG
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    26
	      All Rights Reserved
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    27
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    28
 This software is furnished under a license and may be used
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    29
 only in accordance with the terms of that license and with the
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    31
 be provided or otherwise made available to, or used by, any
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    32
 other person.  No title to or ownership of the software is
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    33
 hereby transferred.
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    34
"
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    35
! !
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!AbstractSyntaxHighlighter class methodsFor:'api highlighting'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
formatClassDefinition:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    "format (recolor) a class definition expression in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    ^ self formatExpression:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    46
formatClassDefinition:aString in:aClass elementsInto: elements
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    47
    "format (recolor) a class definition expression in a given class.
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    48
     Return the text containing font changes and color information."
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    49
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    50
    ^ self formatExpression:aString in:aClass
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    51
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    52
    "Created: / 10-04-2011 / 18:18:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    53
!
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    54
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
formatExpression:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    "format (recolor) an expression in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    |parser tree text endPos|
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    aString isNil ifTrue:[^ nil].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    parser := self for:(ReadStream on:aString string) in:aClass.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    parser ignoreErrors:true.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    parser ignoreWarnings:true.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    parser sourceText:(text := aString string asText).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    "/ use an array here - this can be changed much faster using #at:put:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    text emphasisCollection:(Array new:aString size).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    parser nextToken.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    tree := parser expression.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    "/ now, convert the emphasis-array to a runArray
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    text emphasisCollection:(text emphasis asRunArray).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    tree == #Error ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
        "/ mhmh - which is better ...
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
        "/ alternative1: color rest after error in red
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
"/        text 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
"/            emphasizeFrom:(parser sourceStream position) 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
"/            to:text size 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
"/            with:(#color->Color red).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
        "/ alternative2: take original emphasis for rest
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
        endPos := parser sourceStream position1Based.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
        endPos >= text size ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
            ^ text
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
        ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
        ^ (text copyTo:endPos) , (aString copyFrom:(endPos+1))
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
        "/ alternative3: no emphasis for rest.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
"/        ^ text "/ aString
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    ^ text
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
     self
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
        formatExpression:'(1 + 2) max:5' 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
        in:UndefinedObject
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    "Modified: / 7.4.1998 / 09:57:19 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    "Created: / 9.4.1998 / 16:57:16 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
formatMethod:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    self obsoleteMethodWarning:'use #formatMethodSource:in:'.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    ^ self formatMethod:nil source:aString in:aClass using:nil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
     self
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
        formatMethod:'foo 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    ^ self bar:''hello''.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
'
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
        in:UndefinedObject
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    "Modified: / 28-04-2010 / 13:03:04 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
formatMethod:aString in:aClass using:preferencesOrNil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    self obsoleteMethodWarning:'use #formatMethodSource:in:using:'.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    ^ self formatMethod:nil source:aString in:aClass using:preferencesOrNil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    "Modified: / 28-04-2010 / 13:03:15 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
formatMethod:methodOrNil source:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    ^ self formatMethod:methodOrNil source:aString in:aClass using:nil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
     self
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
        formatMethod:'foo 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    ^ self bar:''hello''.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
'
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
        in:UndefinedObject
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    "Created: / 28-04-2010 / 13:44:24 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
formatMethod:methodOrNil source:aString in:aClass using:preferencesOrNil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    |highlighter tree text endPos eColor|
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    aString isNil ifTrue:[^ nil].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    Error handle:[:ex |
2392
c26d2d1dfffe changed: #formatMethod:source:in:using:
Claus Gittinger <cg@exept.de>
parents: 2371
diff changeset
   166
"/ Transcript showCR:ex description.
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
"/ self halt.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
        ex signal isHandled ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
            ex reject.    
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
        ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
        (self parseErrorSignal handles:ex) ifFalse:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
            "Parse error may happen when re-formatting incomplete code while editing"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
            ('SyntaxHighlighter [info]: error during highlight: ' , ex description) infoPrintCR.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
            "/ ex suspendedContext fullPrintAll.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
        ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
        ^ aString
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    ] do:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
        highlighter := self for:(ReadStream on:aString string) in:aClass.    
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
        preferencesOrNil notNil ifTrue:[highlighter preferences:preferencesOrNil].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
        "/ highlighter ignoreErrors:true.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
        highlighter ignoreWarnings:true.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
        highlighter sourceText:(text := aString string asText).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
        highlighter method:methodOrNil.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
        "/ use an array here - this can be changed much faster using #at:put:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
        text emphasisCollection:(Array new:aString size).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
        tree := highlighter parseMethod.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
        "/ now, convert the emphasis-array to a runArray
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
        text emphasisCollection:(text emphasis asRunArray).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
        tree == #Error ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
            eColor := UserPreferences current errorColor.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
            eColor notNil ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
                "/ mhmh - which is better ...
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
                "/ alternative1: color rest after error in red
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
                text 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
                    emphasizeFrom:(highlighter sourceStream position1Based) 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
                    to:text size 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
                    with:(#color->eColor).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
            ] ifFalse:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
                "/ alternative2: take original emphasis for rest
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
                endPos := highlighter sourceStream position1Based.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
                endPos >= text size ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
                    ^ text
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
                ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
                ^ (text copyTo:endPos) , (aString copyFrom:(endPos+1))
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
            ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
            "/ alternative3: no emphasis for rest.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
        ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
        ^ text
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    ]
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
     self
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
        formatMethod:'foo 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    ^ self bar:''hello''.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
'
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
        in:UndefinedObject
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    "Created: / 28-04-2010 / 13:01:42 / cg"
2392
c26d2d1dfffe changed: #formatMethod:source:in:using:
Claus Gittinger <cg@exept.de>
parents: 2371
diff changeset
   225
    "Modified: / 07-05-2010 / 12:24:52 / cg"
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
formatMethodSource:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    ^ self formatMethod:nil source:aString in:aClass using:nil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
     self
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
        formatMethod:'foo 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    ^ self bar:''hello''.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
'
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
        in:UndefinedObject
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
    "Created: / 28-04-2010 / 12:58:13 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
formatMethodSource:aString in:aClass using:preferencesOrNil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    ^ self formatMethod:nil source:aString in:aClass using:preferencesOrNil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
    "Modified: / 28-04-2010 / 13:02:11 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
2525
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   256
!AbstractSyntaxHighlighter class methodsFor:'highlighting'!
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   257
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   258
formatMethod:aMethodOrNil source:aString in:aClass using:preferencesOrNil elementsInto: elements
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   259
    ^ self formatMethod:aString in:aClass using:preferencesOrNil
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   260
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   261
    "Created: / 05-07-2011 / 10:41:14 / cg"
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   262
! !
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   263
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
!AbstractSyntaxHighlighter methodsFor:'accessing'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
method:aMethod
2525
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   267
    "the original method, if known (for subclasses which can make use of it)"
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   268
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   269
    method := aMethod.
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
    "Created: / 28-04-2010 / 13:15:33 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
preferences:something
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    preferences := something.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
sourceText
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    ^ sourceText
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    "Created: / 31.3.1998 / 11:49:05 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
sourceText:aString
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
    sourceText := aString.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    "Created: / 31-03-1998 / 11:49:05 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    "Modified: / 28-04-2010 / 13:22:27 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
!AbstractSyntaxHighlighter methodsFor:'error handling'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
parseError:aMessage position:position to:endPos
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
"/ Transcript showCR:aMessage.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    super parseError:aMessage position:position to:endPos.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    self 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
        markFrom:position to:endPos 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
        withEmphasis:nil color:UserPreferences current errorColor
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
showErrorMessage:aMessage position:pos
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
"/ Transcript showCR:aMessage.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    super showErrorMessage:aMessage position:pos.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
    self 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
        markFrom:pos to:nil 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
        withEmphasis:nil color:UserPreferences current errorColor
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
syntaxError:aMessage position:position to:endPos
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
"/ Transcript showCR:aMessage.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    super syntaxError:aMessage position:position to:endPos.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    self 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
        markFrom:position to:endPos 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
        withEmphasis:nil color:UserPreferences current errorColor
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
warning:msg position:pos1 to:pos2
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
"/    self markUnknownIdentifierFrom:pos1 to:pos2
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
"/    self
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
"/        markFrom:pos1 to:pos2 
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
"/        withEmphasis:nil color:UserPreferences current errorColor
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
    "Modified: / 25.9.1999 / 18:42:30 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
!AbstractSyntaxHighlighter methodsFor:'initialization'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
initialize
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    super initialize.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
    foldConstants := false.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
    preferences := UserPreferences current.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
    fullSelectorCheck := preferences fullSelectorCheck.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
    "Created: / 31-03-1998 / 15:12:55 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
    "Modified: / 28-04-2010 / 13:17:45 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
!AbstractSyntaxHighlighter methodsFor:'misc'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
controlFlowSelectors
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
    ^ #(
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
        ifTrue:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
        ifFalse:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
        ifTrue:ifFalse:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
        ifFalse:ifTrue:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
        whileTrue:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
        whileFalse:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
        to:do:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
        downTo:do:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
        to:by:do:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
        loop
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
        whileTrue
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
        whileFalse
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
        doWhile:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
        doUntil:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
        do:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
        keysAndValuesDo:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    )
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
    "Created: / 08-09-2006 / 15:56:47 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
defineAsUndeclaredVariable:aName
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
    "redefined to NOT declare undefined vars"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
    ^ VariableNode globalNamed:aName
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
    "Modified: / 19.10.1998 / 19:38:12 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
isSyntaxHighlighter
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
    ^ true
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
plausibilityCheck:aNode
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
    "redefined to NOT do checks"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
    ^ nil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
    "Modified: / 19.10.1998 / 19:38:12 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
    "Created: / 19.10.1998 / 19:57:18 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
!AbstractSyntaxHighlighter methodsFor:'syntax detection'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
markFrom:pos1 to:pos2 withAddedEmphasis:addedEmphasis
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
    sourceText emphasisFrom:pos1 to:pos2 add:addedEmphasis
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
    "Created: / 15-01-2008 / 11:48:18 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
markFrom:pos1 to:pos2 withEmphasis:fontEmp color:clrIn
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
    |e p2 clr|
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
    (clrIn isNil or:[clrIn = Color black]) ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
        e := fontEmp
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
    ] ifFalse:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
        clr := clrIn onDevice:Screen current.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
        fontEmp isNil ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
            e := (#color->clr)
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
        ] ifFalse:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
            e := Text addEmphasis:fontEmp to:(#color->clr).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
        ]
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
    ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
    (p2 := pos2) isNil ifTrue:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
        p2 := sourceText size
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
    ] ifFalse:[
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
        p2 := p2 min:sourceText size
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
    ].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
    sourceText emphasizeFrom:pos1 to:p2 with:e
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
    "Created: / 31-03-1998 / 13:26:53 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
    "Modified: / 28-04-2010 / 14:12:31 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
markVariable:v
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
    |pos endPos|
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
    pos := tokenPosition.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
    endPos := pos+tokenName size-1.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
    self markVariable:v from:pos to:endPos
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
2464
595ec0d9efa9 comment/format in: #markVariable:
Claus Gittinger <cg@exept.de>
parents: 2392
diff changeset
   433
    "Modified: / 30-11-2010 / 14:44:28 / cg"
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
!AbstractSyntaxHighlighter class methodsFor:'documentation'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
version_CVS
2525
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   439
    ^ '$Header: /cvs/stx/stx/libcomp/AbstractSyntaxHighlighter.st,v 1.5 2011-07-05 09:05:08 cg Exp $'
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
   440
!
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
   441
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
   442
version_SVN
2525
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   443
    ^ '§ Id §'
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
! !