AbstractSyntaxHighlighter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 26 Mar 2016 07:56:56 +0000
branchjv
changeset 3735 6c929682760d
parent 3716 bcd80550baab
parent 3732 afcdb234bf38
child 3980 dbd096a81e74
permissions -rw-r--r--
Merge
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
3561
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
    14
"{ NameSpace: Smalltalk }"
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
    15
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
Parser subclass:#AbstractSyntaxHighlighter
2525
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
    17
	instanceVariableNames:'method sourceText preferences fullSelectorCheck'
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'System-Compiler'
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    23
!AbstractSyntaxHighlighter class methodsFor:'documentation'!
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
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    26
"
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    28
	      All Rights Reserved
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    29
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    30
 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
    31
 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
    32
 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
    33
 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
    34
 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
    35
 hereby transferred.
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    36
"
3345
718b64ff3db3 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3344
diff changeset
    37
!
718b64ff3db3 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3344
diff changeset
    38
718b64ff3db3 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3344
diff changeset
    39
documentation
718b64ff3db3 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3344
diff changeset
    40
"
718b64ff3db3 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3344
diff changeset
    41
    common superclass for (smalltalk-) syntax highlighting.
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    42
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    43
    This will parse the source code and update the local copy of the
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    44
    sourceText (in that instvar) by changing emphasis and color,
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    45
    as syntax elements are encountered.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    46
    This is done by redefining appropriate markXXX methods, which are
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    47
    called by the parser whenever an interesting syntactic construct is encountered.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    48
    These methods are no-ops in the Parser class, but redefined here to update
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    49
    the colorization of sourceText.
3345
718b64ff3db3 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3344
diff changeset
    50
"
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    51
! !
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
!AbstractSyntaxHighlighter class methodsFor:'api highlighting'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
formatClassDefinition:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    "format (recolor) a class definition 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
    ^ self formatExpression:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    62
formatClassDefinition:aString in:aClass elementsInto: elements
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    63
    "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
    64
     Return the text containing font changes and color information."
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    65
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    66
    ^ self formatExpression:aString in:aClass
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    67
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    68
    "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
    69
!
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
    70
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
formatExpression:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    "format (recolor) an expression in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    75
    |parser tree text|
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    aString isNil ifTrue:[^ nil].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    parser := self for:(ReadStream on:aString string) in:aClass.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    parser ignoreErrors:true.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    parser ignoreWarnings:true.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    parser sourceText:(text := aString string asText).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    "/ use an array here - this can be changed much faster using #at:put:
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    text emphasisCollection:(Array new:aString size).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    parser nextToken.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    tree := parser expression.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    "/ now, convert the emphasis-array to a runArray
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    text emphasisCollection:(text emphasis asRunArray).
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    tree == #Error ifTrue:[
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    92
        ^ self colorize:text forErrorAtPosition:parser sourceStream position withOriginal:aString.
2371
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
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
     self
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    98
        formatExpression:'(1 + 2) max:5'
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
    99
        in:UndefinedObject
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    "Modified: / 7.4.1998 / 09:57:19 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    "Created: / 9.4.1998 / 16:57:16 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
formatMethod:aString in:aClass
3191
e538b29d3cfb Mark methods as obsolete
Stefan Vogel <sv@exept.de>
parents: 3189
diff changeset
   107
    <resource: #obsolete>
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    self obsoleteMethodWarning:'use #formatMethodSource:in:'.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    ^ self formatMethod:nil source:aString in:aClass using:nil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
     self
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   116
	formatMethod:'foo
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    ^ self bar:''hello''.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
'
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   121
	in:UndefinedObject
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    "Modified: / 28-04-2010 / 13:03:04 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
formatMethod:aString in:aClass using:preferencesOrNil
3191
e538b29d3cfb Mark methods as obsolete
Stefan Vogel <sv@exept.de>
parents: 3189
diff changeset
   128
    <resource: #obsolete>
2371
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
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   146
	formatMethod:'foo
2371
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
'
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   151
	in:UndefinedObject
2371
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
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   161
    "/ cg: I smell a wumpus: I don't think, all of this must be copied to subclasses
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   162
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   163
    |highlighter tree newText|
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    aString isNil ifTrue:[^ nil].
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    Error handle:[:ex |
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   168
        "/ Transcript showCR:ex description.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   169
        self breakPoint:#cg.
3201
13eb554c3f26 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3191
diff changeset
   170
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   171
        (ParseError handles:ex) ifFalse:[
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   172
            ex creator isHandled ifTrue:[
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   173
                "/ Transcript showCR:'handled' .
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   174
                ex reject.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   175
            ].
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   176
            "Parse error may happen when re-formatting incomplete code while editing"
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   177
            ('SyntaxHighlighter [info]: error during highlight: ' , ex description) infoPrintCR.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   178
            "/ ex suspendedContext fullPrintAll.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   179
        ].
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   180
        highlighter notNil ifTrue:[
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   181
            ^ self colorize:(newText ? aString) forErrorAtPosition:highlighter sourceStream position withOriginal:aString
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   182
        ].
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   183
        ^ aString
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    ] do:[
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   185
        |sourceString|
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   187
        sourceString := aString string.
3675
6a75a2fe7a83 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3599
diff changeset
   188
        newText := sourceString "asUnicode16String" asText.
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   189
        "/ use an array here (instead of the RunArray) - this can be changed much faster using #at:put:
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   190
        newText emphasisCollection:(Array new:sourceString size).
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   191
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   192
        highlighter := self for:(ReadStream on:aString string) in:aClass.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   193
        highlighter method:methodOrNil.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   194
        preferencesOrNil notNil ifTrue:[highlighter preferences:preferencesOrNil].
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   195
        "/ highlighter ignoreErrors:true.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   196
        highlighter ignoreWarnings:true.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   197
        highlighter sourceText:newText.
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   199
        tree := highlighter parseMethod.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   200
        newText := highlighter sourceText.  "/ might have changed identity
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   201
        "/ now, convert the emphasis-array to a runArray
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   202
        newText emphasisCollection:(newText emphasis asRunArray).
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   204
        tree == #Error ifTrue:[
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   205
            ^ self colorize:newText forErrorAtPosition:highlighter sourceStream position withOriginal:aString.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   206
        ].
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   207
        ^ newText
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    ]
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   209
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
     self
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   212
        formatMethod:'foo
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    ^ self bar:''hello''.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
'
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   217
        in:UndefinedObject
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    "Created: / 28-04-2010 / 13:01:42 / cg"
2527
a87cf2c8edf2 changed: #formatMethod:source:in:using:
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   221
    "Modified: / 05-07-2011 / 11:22:20 / cg"
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
2526
ecd1ee8f03bc category of: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 2525
diff changeset
   224
formatMethod:aMethodOrNil source:aString in:aClass using:preferencesOrNil elementsInto: elements
2568
44f3c6ce19f1 fixed #formatMethod:source:in:using:elementsInto:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   225
44f3c6ce19f1 fixed #formatMethod:source:in:using:elementsInto:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   226
    ^ self formatMethod:aMethodOrNil source:aString in:aClass using:preferencesOrNil
2526
ecd1ee8f03bc category of: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 2525
diff changeset
   227
ecd1ee8f03bc category of: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 2525
diff changeset
   228
    "Created: / 05-07-2011 / 10:41:14 / cg"
2568
44f3c6ce19f1 fixed #formatMethod:source:in:using:elementsInto:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   229
    "Modified: / 20-07-2011 / 16:29:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2526
ecd1ee8f03bc category of: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 2525
diff changeset
   230
!
ecd1ee8f03bc category of: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 2525
diff changeset
   231
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
formatMethodSource:aString in:aClass
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    ^ self formatMethod:nil source:aString in:aClass using:nil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
     self
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   240
	formatMethod:'foo
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    ^ self bar:''hello''.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
'
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   245
	in:UndefinedObject
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    "
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    "Created: / 28-04-2010 / 12:58:13 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
formatMethodSource:aString in:aClass using:preferencesOrNil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
    "format (recolor) a method in a given class.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
     Return the text containing font changes and color information."
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    ^ self formatMethod:nil source:aString in:aClass using:preferencesOrNil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    "Modified: / 28-04-2010 / 13:02:11 / cg"
3716
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   258
!
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   259
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   260
formatStatements:aString in:aClass
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   261
    "Format (recolor) a list of statements with optional temporaries in a given class.
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   262
     Return the text containing font changes and color information."
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   263
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   264
    |parser tree text|
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   265
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   266
    aString isNil ifTrue:[^ nil].
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   267
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   268
    parser := self for:(ReadStream on:aString string) in:aClass.
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   269
    parser ignoreErrors:true.
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   270
    parser ignoreWarnings:true.
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   271
    parser sourceText:(text := aString string asText).
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   272
    "/ use an array here - this can be changed much faster using #at:put:
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   273
    text emphasisCollection:(Array new:aString size).
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   274
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   275
    parser nextToken.
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   276
    tree := parser parseMethodBody.
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   277
    "/ now, convert the emphasis-array to a runArray
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   278
    text emphasisCollection:(text emphasis asRunArray).
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   279
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   280
    tree == #Error ifTrue:[
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   281
        ^ self colorize:text forErrorAtPosition:parser sourceStream position withOriginal:aString.
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   282
    ].
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   283
    ^ text
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   284
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   285
    "
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   286
     SyntaxHighlighter
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   287
        formatStatements:'| a b | a error: b'
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   288
        in:UndefinedObject
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   289
    "
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   290
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   291
    "Created: / 22-02-2016 / 20:50:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   294
!AbstractSyntaxHighlighter class methodsFor:'highlighting'!
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   295
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   296
colorize:text forErrorAtPosition:pos withOriginal:originalString
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   297
    |eColor endPos|
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   298
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   299
    endPos := pos + 1.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   300
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   301
    "/ mhmh - which is better ...
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   302
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   303
    "/ alternative1: colorize the rest after the error in red
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   304
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   305
    eColor := UserPreferences current errorColor.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   306
    eColor notNil ifTrue:[
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   307
        ^ text
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   308
            emphasizeFrom:endPos 
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   309
            to:text size 
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   310
            with:(#color->eColor).
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   311
    ].
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   312
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   313
    "/ alternative2: take the original emphasis for the rest
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   314
    endPos >= text size ifTrue:[
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   315
        ^ text
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   316
    ] ifFalse:[
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   317
        ^ (text copyTo:endPos) , (originalString copyFrom:(endPos+1))
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   318
    ].
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   319
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   320
    "/ alternative3: no emphasis for rest.
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   321
    ^ text
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   322
! !
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   323
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   324
!AbstractSyntaxHighlighter class methodsFor:'misc'!
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   325
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   326
collectionEnumerationSelectors
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   327
    "these are considered wellknown, builtin selectors of very common
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   328
     collection enumeration methods.
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   329
     These are optionally shown with another color (dark green)"
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   330
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   331
    ^ #(
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   332
	collect:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   333
	select:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   334
	inject:into:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   335
	count:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   336
	collect:thenSelect:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   337
	select:thenCollect:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   338
    )
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   339
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   340
    "Created: / 14-02-2012 / 15:56:59 / cg"
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   341
!
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   342
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   343
controlFlowSelectors
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   344
    "these are considered wellknown, builtin selectors of very common
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   345
     control flow constructs. Correspond to syntax or special forms in other
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   346
     languages. These are optionally shown with another color (blue)"
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   347
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   348
    ^ #(
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   349
	ifTrue: ifFalse:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   350
	ifTrue:ifFalse: ifFalse:ifTrue:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   351
	ifNil: ifNotNil:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   352
	ifNil:ifNotNil: ifNotNil:ifNil:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   353
	and: or:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   354
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   355
	whileTrue:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   356
	whileFalse:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   357
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   358
	to:do:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   359
	downTo:do:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   360
	to:by:do:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   361
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   362
	loop
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   363
	whileTrue
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   364
	whileFalse
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   365
	doWhile:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   366
	doUntil:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   367
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   368
	do:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   369
	doWithIndex:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   370
	pairWiseDo:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   371
	keysAndValuesDo:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   372
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   373
	withPriority:do:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   374
	handle:do:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   375
	on:do:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   376
	catch:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   377
	ignoreIn:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   378
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   379
	"/ newProcess
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   380
	fork:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   381
	ensure:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   382
	ifCurtailed:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   383
	valueOnUnwindDo:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   384
	valueNowOrOnUnwindDo:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   385
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   386
	caseOf:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   387
	caseOf:otherwise:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   388
    )
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   389
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   390
    "Created: / 08-09-2006 / 15:56:47 / cg"
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   391
!
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   392
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   393
debugSelectors
3235
6385bfe15842 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3231
diff changeset
   394
    "these are considered harmful if left in a deployed application:
6385bfe15842 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3231
diff changeset
   395
     selectors for debugging which open a debugger (unless haltSignal is
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   396
     caught or disabled, which end-user apps should do).
3235
6385bfe15842 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3231
diff changeset
   397
     These are optionally shown with another color (redish)"
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   398
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   399
    ^ #(
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   400
	halt halt:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   401
    )
3235
6385bfe15842 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3231
diff changeset
   402
6385bfe15842 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3231
diff changeset
   403
    "Modified (comment): / 27-07-2013 / 11:45:07 / cg"
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   404
!
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   405
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   406
errorRaisingSelectors
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   407
    "these are error raisers.
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   408
     These are optionally shown with another color (red)"
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   409
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   410
    ^ #(
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   411
	error error:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   412
	raise raiseRequest:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   413
	raiseErrorString: raiseRequestErrorString:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   414
	raiseWith: raiseRequestWith:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   415
	raiseWith:errorString: raiseRequestWith:errorString:
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   416
	subclassResponsibility
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   417
	obsoleteMethodWarning obsoleteMethodWarning:
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   418
    )
3342
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   419
!
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   420
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   421
isControlFlowSelector:aSelector
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   422
    "these are considered wellknown, builtin selectors of very common
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   423
     control flow constructs. Correspond to syntax or special forms in other
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   424
     languages. These are optionally shown with another color (blue)"
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   425
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   426
    (self controlFlowSelectors includesIdentical:aSelector) ifTrue:[^ true].
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   427
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   428
    true "((aSelector startsWith:'with') or:[ aSelector startsWith:'all'])" ifTrue:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   429
	((aSelector endsWith:'do:') or:[ aSelector endsWith:'Do:']) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   430
	    ^ true
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   431
	]
3342
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   432
    ].
d7aec03dc509 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3264
diff changeset
   433
    ^ false.
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   434
! !
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   435
3732
afcdb234bf38 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
   436
!AbstractSyntaxHighlighter class methodsFor:'queries'!
afcdb234bf38 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
   437
afcdb234bf38 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
   438
isAbstract
afcdb234bf38 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
   439
    ^ self == AbstractSyntaxHighlighter
afcdb234bf38 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
   440
! !
afcdb234bf38 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3675
diff changeset
   441
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   442
!AbstractSyntaxHighlighter class methodsFor:'utilities'!
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   443
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   444
mark:sourceText from:pos1 to:pos2 withAddedEmphasis:addedEmphasis
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   445
    sourceText emphasisFrom:pos1 to:pos2 add:addedEmphasis
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   446
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   447
    "Created: / 01-06-2012 / 21:43:36 / cg"
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   448
!
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   449
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   450
mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp color:clrIn
3352
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   451
    self mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp color:clrIn font:nil
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   452
!
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   453
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   454
mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp color:clrIn font:fontIn
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   455
    |e p2 clr|
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   456
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   457
    (clrIn isNil or:[clrIn = Color black]) ifTrue:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   458
	e := fontEmp
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   459
    ] ifFalse:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   460
	clr := clrIn onDevice:Screen current.
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   461
	fontEmp isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   462
	    e := (#color->clr)
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   463
	] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   464
	    e := Text addEmphasis:fontEmp to:(#color->clr).
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   465
	]
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   466
    ].
3352
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   467
    fontIn notNil ifTrue:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   468
	e := Text addEmphasis:e to:(#font->fontIn)
3352
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   469
    ].
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   470
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   471
    (p2 := pos2) isNil ifTrue:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   472
	p2 := sourceText size
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   473
    ] ifFalse:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   474
	p2 := p2 min:sourceText size
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   475
    ].
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   476
    sourceText emphasizeFrom:pos1 to:p2 with:e
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   477
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   478
    "Created: / 01-06-2012 / 21:42:41 / cg"
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   479
!
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   480
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   481
mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   482
    |e p2 clr fgClr|
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   483
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   484
    fgClr := fgClr1 ? fgClr2.
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   485
    (fgClr isNil or:[fgClr = Color black]) ifTrue:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   486
	e := fontEmp
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   487
    ] ifFalse:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   488
	clr := fgClr onDevice:Screen current.
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   489
	fontEmp isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   490
	    e := (#color->clr)
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   491
	] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   492
	    e := Text addEmphasis:fontEmp to:(#color->clr).
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   493
	]
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   494
    ].
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   495
    bgClr notNil ifTrue:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   496
	e := Text addEmphasis:(#backgroundColor->bgClr) to:e.
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   497
    ].
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   498
    (p2 := pos2) isNil ifTrue:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   499
	p2 := sourceText size
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   500
    ] ifFalse:[
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   501
	p2 := p2 min:sourceText size
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   502
    ].
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   503
    sourceText emphasizeFrom:pos1 to:p2 with:e
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   504
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   505
    "Created: / 01-06-2012 / 21:44:17 / cg"
3561
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   506
!
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   507
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   508
mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp ifNil:fontEmp2 color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   509
    |e p2 clr fgClr|
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   510
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   511
    fgClr := fgClr1 ? fgClr2.
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   512
    (fgClr isNil or:[fgClr = Color black]) ifTrue:[
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   513
        e := fontEmp ? fontEmp2
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   514
    ] ifFalse:[
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   515
        clr := fgClr onDevice:Screen current.
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   516
        (fontEmp ? fontEmp2) isNil ifTrue:[
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   517
            e := (#color->clr)
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   518
        ] ifFalse:[
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   519
            e := Text addEmphasis:(fontEmp ? fontEmp2) to:(#color->clr).
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   520
        ]
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   521
    ].
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   522
    bgClr notNil ifTrue:[
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   523
        e := Text addEmphasis:(#backgroundColor->bgClr) to:e.
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   524
    ].
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   525
    (p2 := pos2) isNil ifTrue:[
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   526
        p2 := sourceText size
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   527
    ] ifFalse:[
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   528
        p2 := p2 min:sourceText size
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   529
    ].
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   530
    sourceText emphasizeFrom:pos1 to:p2 with:e
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   531
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   532
    "Created: / 01-06-2012 / 21:44:17 / cg"
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   533
! !
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   534
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
!AbstractSyntaxHighlighter methodsFor:'accessing'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
method:aMethod
2525
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   538
    "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
   539
f08c56018d9b lifted the method instvar
Claus Gittinger <cg@exept.de>
parents: 2506
diff changeset
   540
    method := aMethod.
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
    "Created: / 28-04-2010 / 13:15:33 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
preferences:something
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
    preferences := something.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
sourceText
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   550
    "retrieve the updated source text after the highlighting process"
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   551
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
    ^ sourceText
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   554
    "Created: / 31.3.1998 / 11:49:05 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   555
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   556
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   557
sourceText:aString
3599
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   558
    "this text will be updated by the highlighting process"
a999663bd83f some code cleanup
Claus Gittinger <cg@exept.de>
parents: 3561
diff changeset
   559
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   560
    sourceText := aString.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   561
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
    "Created: / 31-03-1998 / 11:49:05 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   563
    "Modified: / 28-04-2010 / 13:22:27 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   565
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   566
!AbstractSyntaxHighlighter methodsFor:'error handling'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
parseError:aMessage position:position to:endPos
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   569
"/ Transcript showCR:aMessage.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   570
    super parseError:aMessage position:position to:endPos.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   571
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   572
    self
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   573
	markFrom:position to:endPos
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   574
	withEmphasis:nil color:UserPreferences current errorColor
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   575
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   576
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
showErrorMessage:aMessage position:pos
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
"/ Transcript showCR:aMessage.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
    super showErrorMessage:aMessage position:pos.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   580
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   581
    self
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   582
	markFrom:pos to:nil
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   583
	withEmphasis:nil color:UserPreferences current errorColor
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
syntaxError:aMessage position:position to:endPos
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
"/ Transcript showCR:aMessage.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
    super syntaxError:aMessage position:position to:endPos.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   590
    self
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   591
	markFrom:position to:endPos
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   592
	withEmphasis:nil color:UserPreferences current errorColor
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
warning:msg position:pos1 to:pos2
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
"/    self markUnknownIdentifierFrom:pos1 to:pos2
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
"/    self
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   599
"/        markFrom:pos1 to:pos2
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   600
"/        withEmphasis:nil color:UserPreferences current errorColor
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
    "Modified: / 25.9.1999 / 18:42:30 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
!AbstractSyntaxHighlighter methodsFor:'initialization'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   606
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   607
initialize
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   608
    super initialize.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   609
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   610
    foldConstants := false.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   611
    preferences := UserPreferences current.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
    fullSelectorCheck := preferences fullSelectorCheck.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   614
    "Created: / 31-03-1998 / 15:12:55 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
    "Modified: / 28-04-2010 / 13:17:45 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   616
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   617
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   618
!AbstractSyntaxHighlighter methodsFor:'misc'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   619
2817
b92ea70a5a9f added: #collectionEnumerationSelectors
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   620
collectionEnumerationSelectors
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   621
    ^ self class collectionEnumerationSelectors
2817
b92ea70a5a9f added: #collectionEnumerationSelectors
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   622
!
b92ea70a5a9f added: #collectionEnumerationSelectors
Claus Gittinger <cg@exept.de>
parents: 2813
diff changeset
   623
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   624
controlFlowSelectors
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   625
    ^ self class controlFlowSelectors
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   626
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   627
3228
e276f545e004 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
   628
debugSelectors
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   629
    ^ self class debugSelectors
3228
e276f545e004 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
   630
!
e276f545e004 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
   631
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   632
defineAsUndeclaredVariable:aName
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   633
    "redefined to NOT declare undefined vars"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   634
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   635
    ^ VariableNode globalNamed:aName
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   636
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   637
    "Modified: / 19.10.1998 / 19:38:12 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   638
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   639
3228
e276f545e004 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
   640
errorRaisingSelectors
3231
44b2709db25e class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
   641
    ^ self class errorRaisingSelectors
3228
e276f545e004 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
   642
!
e276f545e004 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
   643
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   644
isSyntaxHighlighter
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   645
    ^ true
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   646
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   647
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   648
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   649
plausibilityCheck:aNode
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   650
    "redefined to NOT do checks"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   651
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   652
    ^ nil
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   654
    "Modified: / 19.10.1998 / 19:38:12 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   655
    "Created: / 19.10.1998 / 19:57:18 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   656
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   658
!AbstractSyntaxHighlighter methodsFor:'syntax detection'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   659
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   660
markFrom:pos1 to:pos2 withAddedEmphasis:addedEmphasis
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   661
    self class
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   662
	mark:sourceText from:pos1 to:pos2 withAddedEmphasis:addedEmphasis
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   663
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   664
    "Created: / 15-01-2008 / 11:48:18 / cg"
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   665
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   667
markFrom:pos1 to:pos2 withEmphasis:fontEmp color:clrIn
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   668
    self class
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   669
	mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp color:clrIn
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   670
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
    "Created: / 31-03-1998 / 13:26:53 / cg"
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   672
    "Modified: / 01-06-2012 / 21:43:04 / cg"
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   673
!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   674
3352
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   675
markFrom:pos1 to:pos2 withEmphasis:fontEmp color:clrIn font:fontInOrNil
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   676
    self class
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   677
	mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp color:clrIn font:fontInOrNil
3352
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   678
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   679
    "Created: / 31-03-1998 / 13:26:53 / cg"
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   680
    "Modified: / 01-06-2012 / 21:43:04 / cg"
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   681
!
42a5ad1adb52 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3345
diff changeset
   682
2813
51e4b12f18dc added: #markFrom:to:withEmphasis:color:ifNil:backgroundColor:
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
   683
markFrom:pos1 to:pos2 withEmphasis:fontEmp color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
2872
f992970ef1cd refactored mark code for reuse by other classes
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
   684
    self class
3469
Claus Gittinger <cg@exept.de>
parents: 3352
diff changeset
   685
	mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
2813
51e4b12f18dc added: #markFrom:to:withEmphasis:color:ifNil:backgroundColor:
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
   686
51e4b12f18dc added: #markFrom:to:withEmphasis:color:ifNil:backgroundColor:
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
   687
    "Created: / 13-02-2012 / 11:48:09 / cg"
51e4b12f18dc added: #markFrom:to:withEmphasis:color:ifNil:backgroundColor:
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
   688
!
51e4b12f18dc added: #markFrom:to:withEmphasis:color:ifNil:backgroundColor:
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
   689
3561
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   690
markFrom:pos1 to:pos2 withEmphasis:fontEmp ifNil:fontEmp2 color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   691
    self class
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   692
        mark:sourceText from:pos1 to:pos2 withEmphasis:fontEmp ifNil:fontEmp2 color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   693
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   694
    "Created: / 13-02-2012 / 11:48:09 / cg"
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   695
!
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   696
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
markVariable:v
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
    |pos endPos|
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   699
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   700
    pos := tokenPosition.
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   701
    endPos := pos+tokenName size-1.
3189
5a4bb1727d08 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3145
diff changeset
   702
    self markVariable:v from:pos to:endPos assigned:false
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   703
2464
595ec0d9efa9 comment/format in: #markVariable:
Claus Gittinger <cg@exept.de>
parents: 2392
diff changeset
   704
    "Modified: / 30-11-2010 / 14:44:28 / cg"
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   705
! !
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   706
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
!AbstractSyntaxHighlighter class methodsFor:'documentation'!
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   708
2663
e94fe6b650ad changed: #controlFlowSelectors
Claus Gittinger <cg@exept.de>
parents: 2662
diff changeset
   709
version
3675
6a75a2fe7a83 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3599
diff changeset
   710
    ^ '$Header$'
2663
e94fe6b650ad changed: #controlFlowSelectors
Claus Gittinger <cg@exept.de>
parents: 2662
diff changeset
   711
!
e94fe6b650ad changed: #controlFlowSelectors
Claus Gittinger <cg@exept.de>
parents: 2662
diff changeset
   712
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   713
version_CVS
3675
6a75a2fe7a83 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3599
diff changeset
   714
    ^ '$Header$'
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
   715
!
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
   716
3716
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   717
version_HG
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   718
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   719
    ^ '$Changeset: <not expanded> $'
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   720
!
bcd80550baab Added AbstractSyntaxHighlighter class>>formatStatements:in:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3675
diff changeset
   721
2506
3a8b4a11428e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2464
diff changeset
   722
version_SVN
3189
5a4bb1727d08 class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3145
diff changeset
   723
    ^ '$ Id $'
2371
2348d09fb80e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   724
! !
3561
f04a8db1590f class: AbstractSyntaxHighlighter
Claus Gittinger <cg@exept.de>
parents: 3469
diff changeset
   725