Tools__LintHighlighter.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 05 Oct 2022 11:57:26 +0100
branchjv
changeset 19637 28f5bfaa093d
parent 19617 96a62e7ef902
permissions -rw-r--r--
`NewSystemBrowser`: avoid updating package info when changed class is not selected This speeds up loading of packages when browser is open as it does not (needlessly) update package info which may involve scm round-trip.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     1
"
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
19617
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
     3
 COPYRIGHT (c) 2021 Patrik Svestka
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     4
              All Rights Reserved
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     5
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     6
 This software is furnished under a license and may be used
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     7
 only in accordance with the terms of that license and with the
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     8
 inclusion of the above copyright notice.   This software may not
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
     9
 be provided or otherwise made available to, or used by, any
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    10
 other person.  No title to or ownership of the software is
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    11
 hereby transferred.
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    12
"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    13
"{ Package: 'stx:libtool' }"
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    14
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    15
"{ NameSpace: Tools }"
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    16
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    17
Object subclass:#LintHighlighter
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    18
	instanceVariableNames:'rules rulesToIntervalsMap sequenceNumber formattingMethod
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    19
		emphasisError emphasisInformation emphasisWarning'
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    20
	classVariableNames:''
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    21
	poolDictionaries:''
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    22
	category:'Interface-Lint'
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    23
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    24
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    25
!LintHighlighter class methodsFor:'documentation'!
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    26
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    27
copyright
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    28
"
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    29
 COPYRIGHT (c) 2006 by eXept Software AG
19617
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
    30
 COPYRIGHT (c) 2021 Patrik Svestka
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    31
              All Rights Reserved
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    32
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    33
 This software is furnished under a license and may be used
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    34
 only in accordance with the terms of that license and with the
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    36
 be provided or otherwise made available to, or used by, any
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    37
 other person.  No title to or ownership of the software is
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    38
 hereby transferred.
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    39
"
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    40
! !
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    41
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    42
!LintHighlighter class methodsFor:'instance creation'!
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    43
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    44
new
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    45
    "return an initialized instance"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    46
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    47
    ^ self basicNew initialize.
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    48
! !
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    49
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    50
!LintHighlighter methodsFor:'accessing'!
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    51
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    52
rules
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    53
    ^ rules
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    54
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    55
11380
4801ade7604a changed:
Claus Gittinger <cg@exept.de>
parents: 11226
diff changeset
    56
rules:aCollectionOfRules
4801ade7604a changed:
Claus Gittinger <cg@exept.de>
parents: 11226
diff changeset
    57
    rules := aCollectionOfRules.
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    58
    rulesToIntervalsMap := nil.
11380
4801ade7604a changed:
Claus Gittinger <cg@exept.de>
parents: 11226
diff changeset
    59
4801ade7604a changed:
Claus Gittinger <cg@exept.de>
parents: 11226
diff changeset
    60
    "Modified (format): / 07-03-2012 / 17:24:02 / cg"
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    61
    "Modified: / 15-12-2014 / 20:25:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    62
!
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    63
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    64
rulesToIntervalsMap
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    65
    ^ rulesToIntervalsMap
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    66
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    67
    "Created: / 15-12-2014 / 15:20:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    68
!
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    69
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    70
sequenceNumber
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
    71
    ^ sequenceNumber
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    72
! !
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    73
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    74
!LintHighlighter methodsFor:'accessing-emphasis'!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    75
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    76
emphasisForError
11394
67ceb823b09f changed:
Claus Gittinger <cg@exept.de>
parents: 11380
diff changeset
    77
    |warnColor|
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    78
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    79
    emphasisError isNil ifTrue:[
11394
67ceb823b09f changed:
Claus Gittinger <cg@exept.de>
parents: 11380
diff changeset
    80
        warnColor := Color red.
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
    81
        emphasisError := Array
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
    82
            "/with: #backgroundColor -> warnColor lightened lightened
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
    83
            with: #underwave
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
    84
            with: #underlineColor -> warnColor
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    85
    ].
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    86
    ^emphasisError
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    87
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    88
    "Created: / 05-08-2011 / 09:31:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11394
67ceb823b09f changed:
Claus Gittinger <cg@exept.de>
parents: 11380
diff changeset
    89
    "Modified: / 08-03-2012 / 03:00:51 / cg"
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    90
    "Modified: / 20-04-2012 / 18:29:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    91
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    92
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    93
emphasisForInformation
11394
67ceb823b09f changed:
Claus Gittinger <cg@exept.de>
parents: 11380
diff changeset
    94
    |warnColor|
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    95
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
    96
    emphasisInformation isNil ifTrue:[
19617
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
    97
        warnColor := Color rgbValue: 16r78dce8.
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
    98
        emphasisInformation := Array
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
    99
            "/with: #backgroundColor -> warnColor lightened lightened
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   100
            with: #underwave
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   101
            with: #underlineColor -> warnColor
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   102
    ].
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   103
    ^emphasisInformation
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   104
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   105
    "Created: / 05-08-2011 / 09:31:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11394
67ceb823b09f changed:
Claus Gittinger <cg@exept.de>
parents: 11380
diff changeset
   106
    "Modified: / 08-03-2012 / 03:01:22 / cg"
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   107
    "Modified: / 20-04-2012 / 18:29:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
19617
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
   108
    "Modified: / 05-11-2021 / 14:22:21 / Patrik Svestka <patrik.svestka@gmail.com>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   109
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   110
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   111
emphasisForSeverity: severity
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   112
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   113
    severity == #error ifTrue:[^self emphasisForError].
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   114
    severity == #information ifTrue:[^self emphasisForInformation].
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   115
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   116
    ^self emphasisForWarning
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   117
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   118
    "Created: / 05-08-2011 / 09:31:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   119
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   120
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   121
emphasisForWarning
11394
67ceb823b09f changed:
Claus Gittinger <cg@exept.de>
parents: 11380
diff changeset
   122
    |warnColor|
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   123
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   124
    emphasisWarning isNil ifTrue:[
15696
0f6aaa582319 class: Tools::LintHighlighter
Claus Gittinger <cg@exept.de>
parents: 15125
diff changeset
   125
        warnColor := Color yellow slightlyDarkened. "/ (Color redByte: 224 greenByte: 200 blueByte: 45).
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   126
        emphasisWarning := Array
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   127
            "/with: #backgroundColor -> warnColor lightened lightened
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   128
            with: #underwave
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   129
            with: #underlineColor -> warnColor
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   130
    ].
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   131
    ^emphasisWarning
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   132
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   133
    "Created: / 05-08-2011 / 09:31:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11394
67ceb823b09f changed:
Claus Gittinger <cg@exept.de>
parents: 11380
diff changeset
   134
    "Modified: / 08-03-2012 / 03:00:19 / cg"
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   135
    "Modified: / 20-04-2012 / 18:29:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   136
! !
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   137
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   138
!LintHighlighter methodsFor:'formatting'!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   139
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   140
formatClassDefinition:source in:class
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   141
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   142
    formattingMethod := false.
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   143
    ^ self format: source in: class
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   144
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   145
    "Created: / 04-08-2011 / 23:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   146
    "Modified: / 02-12-2014 / 11:29:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   147
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   148
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   149
formatClassDefinition:source in:class elementsInto: elements
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   150
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   151
    formattingMethod := false.
15823
682d7a61504c class: Tools::LintHighlighter
Claus Gittinger <cg@exept.de>
parents: 15811
diff changeset
   152
    ^ self format: source asString asText in: class
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   153
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   154
    "Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   155
    "Modified: / 02-12-2014 / 11:29:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   156
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   157
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   158
formatExpression:source in:class
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   159
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   160
    formattingMethod := false.
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   161
    ^ self format: source in: class
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   162
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   163
    "Created: / 04-08-2011 / 23:45:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   164
    "Modified: / 02-12-2014 / 11:29:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   165
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   166
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   167
formatExpression:source in:class elementsInto: elements
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   168
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   169
    formattingMethod := false.
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   170
    ^ self format: source in: class
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   171
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   172
    "Created: / 04-08-2011 / 23:43:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   173
    "Modified: / 02-12-2014 / 11:29:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   174
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   175
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   176
formatMethod:mth source:source in:class using: preferences
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   177
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   178
    formattingMethod := true.
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   179
    ^ self format: source in: class
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   180
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   181
    "Created: / 04-08-2011 / 23:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   182
    "Modified: / 02-12-2014 / 11:29:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   183
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   184
16606
91041ef4f3a1 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 16440
diff changeset
   185
formatMethod:mth source:sourceString in:class using: preferences elementsInto: elements
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   186
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   187
    formattingMethod := true.
16606
91041ef4f3a1 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 16440
diff changeset
   188
    ^ self format: sourceString in: class
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   189
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   190
    "Created: / 04-08-2011 / 23:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   191
    "Modified: / 02-12-2014 / 11:30:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   192
! !
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   193
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   194
!LintHighlighter methodsFor:'formatting-private'!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   195
16606
91041ef4f3a1 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 16440
diff changeset
   196
format: sourceString in: class
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   197
    | tree t |
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   198
17050
d55a96ea8f12 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 16606
diff changeset
   199
    tree := RBParser 
d55a96ea8f12 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 16606
diff changeset
   200
                parseMethod: sourceString string 
d55a96ea8f12 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 16606
diff changeset
   201
                onError:[:error :pos| ^ sourceString ].
16606
91041ef4f3a1 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 16440
diff changeset
   202
    t := sourceString asText.
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   203
    self format: t tree: tree in: class.
14096
3d2f347c2cbc class: Tools::LintHighlighter
Claus Gittinger <cg@exept.de>
parents: 14068
diff changeset
   204
    ^t
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   205
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   206
    "Created: / 02-12-2014 / 11:27:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   207
    "Modified: / 15-12-2014 / 18:42:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   208
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   209
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   210
format: text tree: tree in: class
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   211
    rulesToIntervalsMap := Dictionary new.
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   212
    sequenceNumber := sequenceNumber + 1.
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   213
    rules ? #() do:[:rule|
17050
d55a96ea8f12 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 16606
diff changeset
   214
        rule isEmpty ifFalse:[
d55a96ea8f12 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 16606
diff changeset
   215
            self format: text tree: tree in: class rule: rule
d55a96ea8f12 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 16606
diff changeset
   216
        ].
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   217
    ].
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   218
    ^text
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   219
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   220
    "Created: / 02-12-2014 / 11:28:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   221
    "Modified: / 15-12-2014 / 18:43:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   222
!
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   223
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   224
format: text tree: tree in: class rule: rule
17091
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   225
    | string |
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   226
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   227
    string := text string.
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   228
    "rule result isParseTreeEnvironment"true ifTrue:[
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   229
        formattingMethod ifTrue:[
17091
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   230
            rule 
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   231
                resultSelectionIntervalsForSource: string tree: tree in: class 
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   232
                do: [:interval|
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   233
                    interval notEmptyOrNil ifTrue:[
17301
6a1aa6e554dd #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17091
diff changeset
   234
                        ((interval first == 1 and:[interval last == text size]) or:[interval last > text size]) ifTrue:[
17091
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   235
                            self debuggingCodeFor:#jv is:[
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   236
                                 Transcript showCR:'>> no meaningful selection interval for ' , rule printString.
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   237
                            ].
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   238
                        ] ifFalse:[
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   239
                            self mark: text from: interval first to: interval last for: rule.
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   240
                        ]
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   241
                    ]
17091
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   242
                ].
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   243
        ].
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   244
    ] ifFalse: [
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   245
        | searches |
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   246
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   247
        searches := rule result searchStrings asSet.
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   248
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   249
        searches do:[:search|
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   250
            | i |
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   251
            i := 1.
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   252
            [
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   253
                i := string findString: search startingAt: i.
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   254
                i ~~ 0
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   255
            ] whileTrue:[
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   256
                self mark: text from: i to: (i + search size - 1) for: rule.
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   257
                i := i + search size + 1.
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   258
            ]
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   259
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   260
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   261
        ]
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   262
    ]
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   263
14965
02bfa1f4aa9a When highlighing rules, pass a class to selectionIntervals so the highlighter/searcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14096
diff changeset
   264
    "Created: / 02-12-2014 / 11:28:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   265
    "Modified (format): / 15-12-2014 / 18:58:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17091
eb7ebf213755 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17050
diff changeset
   266
    "Modified (format): / 19-11-2016 / 13:35:25 / cg"
17301
6a1aa6e554dd #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 17091
diff changeset
   267
    "Modified: / 30-01-2017 / 14:51:18 / stefan"
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   268
! !
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   269
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   270
!LintHighlighter methodsFor:'initialization'!
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   271
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   272
initialize
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   273
    sequenceNumber := 0.
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   274
! !
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   275
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   276
!LintHighlighter methodsFor:'markup'!
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   277
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   278
mark: text from: start to: end for: rule
15811
e6f8c138b759 class: Tools::LintHighlighter
Claus Gittinger <cg@exept.de>
parents: 15696
diff changeset
   279
    "this underwaves the rule's complaint"
e6f8c138b759 class: Tools::LintHighlighter
Claus Gittinger <cg@exept.de>
parents: 15696
diff changeset
   280
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   281
    | emphasis |
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   282
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   283
    emphasis := self emphasisForSeverity: rule severity.
15038
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   284
    text emphasisFrom: start to: end add: emphasis.
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   285
    (rulesToIntervalsMap at: rule ifAbsentPut: [ Set new ])
1b224d84aab7 Oops, stc fixes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15031
diff changeset
   286
        add: (start to: end)
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   287
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   288
    "Created: / 30-01-2012 / 15:30:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15031
fd2c24c7f230 LintHighlighter/.LintService refactored to show multiple rules at line...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14965
diff changeset
   289
    "Modified: / 15-12-2014 / 15:52:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   290
! !
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   291
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   292
!LintHighlighter class methodsFor:'documentation'!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   293
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   294
version
15696
0f6aaa582319 class: Tools::LintHighlighter
Claus Gittinger <cg@exept.de>
parents: 15125
diff changeset
   295
    ^ '$Header$'
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   296
!
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   297
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   298
version_CVS
15696
0f6aaa582319 class: Tools::LintHighlighter
Claus Gittinger <cg@exept.de>
parents: 15125
diff changeset
   299
    ^ '$Header$'
19617
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
   300
!
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
   301
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
   302
version_HG
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
   303
96a62e7ef902 Tools::LintHighlighter warning blue color to support dark skin
Patrik Svestka <patrik.svestka@gmail.com>
parents: 18532
diff changeset
   304
    ^ '$Changeset: <not expanded> $'
10485
abd25bbd5625 initial checkin
vrany
parents:
diff changeset
   305
! !
13829
5b5d3d945e2a merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 11394
diff changeset
   306