tools/JavaLintService.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 20 Sep 2013 10:57:50 +0100
branchdevelopment
changeset 2740 5c458398e060
parent 2735 e20dd8496371
child 2741 a9ac61c2c454
permissions -rw-r--r--
Fixes for JavaLintService/Highlighter: correctly flush previous problems... ...upon reparsing.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
	      All Rights Reserved
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 hereby transferred.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libjava/tools' }"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
Tools::BackgroundSourceProcessingService subclass:#JavaLintService
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
    15
	instanceVariableNames:'highlighter problems lastClass'
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	classVariableNames:'Debugging'
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	poolDictionaries:''
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	category:'Languages-Java-Tools-Editor-Lint'
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!JavaLintService class methodsFor:'documentation'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
copyright
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
 COPYRIGHT (c) 2006 by eXept Software AG
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	      All Rights Reserved
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
 hereby transferred.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!JavaLintService class methodsFor:'initialization'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
initialize
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    "
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    | map |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    map := Screen current keyboardMap.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    map bindValue:#CodeCompletion to: #'Ctrl '.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    map bindValue:#CodeCompletion to: #'Ctrlspace'.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    "
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    Smalltalk isInitialized ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
        Smalltalk addStartBlock:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
            Screen current notNil ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
                | map |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
                map := Screen current keyboardMap.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
                (map keyAtValue:#CodeCompletion) isNil ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
                    map bindValue:#CodeCompletion to: #'Ctrl '.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
                    map bindValue:#CodeCompletion to: #'Ctrlspace'.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
                ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
           ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    "Modified: / 15-08-2013 / 15:19:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
!JavaLintService class methodsFor:'accessing'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
debugging
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    ^Debugging == true
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    "Created: / 17-02-2012 / 00:48:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
debugging: aBoolean
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    Debugging := aBoolean
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    "Created: / 16-02-2012 / 16:22:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
label
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    "Answers short label - for UI"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    ^'Java - Static Checking'
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    "Created: / 07-03-2010 / 14:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    "Modified: / 16-09-2013 / 10:01:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
priority
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    "Answers a priority of the service. Services with higher priority
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
     will get the event notification before ones with lower priority.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
     Therefore, a lower-priority service might not get the event if high
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
     priority service processes it"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    ^ 10
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    "Created: / 01-02-2012 / 10:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
!JavaLintService class methodsFor:'queries'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
isUsefulFor:aCodeView
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    "this filters useful services.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
     must be redefined to return true in subclasses (but each class must do it only
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
     for itself - not for subclasses"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    ^ self == JavaLintService
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    "Created: / 24-07-2013 / 11:35:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    "Modified: / 16-09-2013 / 09:56:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
!JavaLintService class methodsFor:'testing'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
isAvailable
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    ^UserPreferences current smallSenseEnabled
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    "Created: / 04-02-2012 / 22:20:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
!JavaLintService methodsFor:'accessing'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
syntaxHighlighter
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    "Returns a syntax highligter class or nil. The highlighting
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
     process gather all syntaxHighlighterClasses from all services
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
     and then use them one by one to highlight the text. Individual
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
     services may override this method to provide additional
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
     highliging of the source code"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    | lang |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    JavaCompiler isNil ifTrue: [
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
        ^ nil
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    lang := codeView language.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    ^ (lang notNil and: [ lang isJava and:[ problems notEmptyOrNil ]])
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
        ifTrue: [ highlighter ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
        ifFalse: [ nil ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    "Created: / 05-08-2011 / 10:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    "Modified: / 16-09-2013 / 13:33:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
!JavaLintService methodsFor:'change & update'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
sourceChanged:force
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    | lang |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    ((lang := codeView language) isNil or:[lang isJava not]) ifTrue:[ ^ self ].
2740
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   151
"/    highlighter reset.
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
    super sourceChanged:force.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    "Created: / 18-02-2012 / 22:50:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2740
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   155
    "Modified: / 20-09-2013 / 03:14:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
!JavaLintService methodsFor:'event handling'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
buttonPress:button x:x y:y in:view 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
    |lineNr|
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    view == gutterView ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
        button == 1 ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
            lineNr := textView yVisibleToLineNr:y.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
            lineNr notNil ifTrue:[ 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
                ^ self showInfoWindowForLine: lineNr 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
            ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
            ^ false.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
        ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    ^ false
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    "Created: / 30-01-2012 / 21:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    "Modified: / 16-09-2013 / 09:41:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
!JavaLintService methodsFor:'initialization'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
initialize
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    super initialize.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    highlighter := JavaLintHighlighter new.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    "Created: / 05-08-2011 / 11:53:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
    "Modified: / 16-09-2013 / 10:13:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
!JavaLintService methodsFor:'private'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
annotationAtLine: lineNo
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    | annotations |        
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    (annotations := highlighter annotations) isEmptyOrNil ifTrue:[ ^ nil ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
    annotations do:[:a|
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
        | line |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
        line := a line.    
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
        line > lineNo ifTrue:[ ^ nil ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
        line == lineNo ifTrue:[ ^ a ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    ^nil
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
    "Created: / 30-01-2012 / 21:06:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    "Modified: / 16-09-2013 / 13:38:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
process
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    "(Re)starts the processing job. Should be called whenever a source 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
     must be (re)processed."
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
    codeView language isNil ifTrue: [ ^ self ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
    codeView language isJava ifFalse: [ ^ self ]. 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
    ^super process.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    "Created: / 24-01-2012 / 12:43:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
    "Modified: / 16-09-2013 / 09:42:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
process: delayed
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    "Do the real source processing. If delayed is true, actuall data update must
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
     be done within the event queue using #pushUserEvent:...
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    "
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
    | cls oldCodeList oldCode |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
    codeView language isNil ifTrue: [ ^ self ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
    codeView language isJava ifFalse: [ ^ self ]. 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
    done := false.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
    modified := false.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
"/    cls := codeView klass.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
"/        cls isNil ifTrue:[^ self ].    
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    Delay waitForMilliseconds: 200."Give user some time to write"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    (cls notNil and:[cls isObsolete]) ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
        cls isMeta ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
            cls := (Smalltalk at:cls theNonMetaclass name) class
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
        ] ifFalse:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
            cls := Smalltalk at:cls name
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
        ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
    "textView" modified ifFalse:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
        oldCodeList := textView list copy.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
        oldCodeList isEmptyOrNil ifTrue: [ ^ self ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
        "textView" modified ifFalse:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
            oldCodeList isNil ifFalse:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
                oldCode := oldCodeList asStringWithoutEmphasis.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
                oldCode isEmptyOrNil ifTrue:[ ^ self ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
                "textView" modified ifFalse:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
                    Screen currentScreenQuerySignal answer:codeView device
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
                    do:[
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   257
                        | rehighlight |
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   258
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
                        Error handle:[:ex |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
                            |errMsg|
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
                            errMsg := ex description asStringCollection first asString.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
                            Debugging == true ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
                                Debugging := false.    
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
                                ex pass.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
                            ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
                            "/ Transcript topView raiseDeiconified.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
                            "/ Transcript showCR:'ParseError: ', ex description.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
"/ self halt.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
                            "/ self showInfo:(errMsg colorizeAllWith:Color red).
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
                        ] do:[
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   274
                            | compiler newProblems |
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
                            compiler := JavaCompiler new.
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   277
                            newProblems := compiler check: oldCode.
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   278
                            rehighlight := newProblems notEmpty or:[ problems notEmpty ].
2740
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   279
                            rehighlight ifTrue:[
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   280
                                 problems := newProblems.
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   281
                            ].
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
                            highlighter problem: problems ? #()
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
                        ].
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   284
                        rehighlight ifTrue:[
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   285
                            delayed ifTrue:[
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   286
                                codeView sensor pushUserEvent:#rehighlight: for:self withArgument: true.
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   287
                            ] ifFalse:[
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   288
                                self rehighlight: true.
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   289
                            ]
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   290
                        ].
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
                    ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
                ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
            ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
        ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
    "Created: / 24-01-2012 / 12:44:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2740
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   298
    "Modified: / 20-09-2013 / 03:09:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
rehighlight: delayed
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
    | service |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
    service := self service: #'SmallSense::SyntaxHighlightingService'.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    service isNil ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
        service := self service: Tools::CodeHighlightingService name
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    service notNil ifTrue:[
2740
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   309
        "/highlighter reset.
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
        highlighter problems: problems.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
        service sourceChanged: true.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
    ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
    "Created: / 27-01-2012 / 17:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2740
5c458398e060 Fixes for JavaLintService/Highlighter: correctly flush previous problems...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2735
diff changeset
   315
    "Modified: / 20-09-2013 / 03:12:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
showInfoWindowForLine: lineNo 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
    | ann |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
    ann := self annotationAtLine: lineNo.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
    ann isNil ifTrue: [
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
        ^ false
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    (JavaLintPopupWindow new)
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
        problem: ann problem;
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
        codeView: codeView;
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
        allButOpen;
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
        openWindowAt: (Screen current pointerPosition - (20 @ 20)).
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
    ^ true
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
    "Created: / 30-01-2012 / 21:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    "Modified: / 16-09-2013 / 13:40:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
!JavaLintService methodsFor:'redrawing'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
drawLine:lineNo in:view atX:x y:y width:w height:h from:startCol to:endColOrNil with:fg and:bg 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
    "Called by both gutterView and textView (well, not yet) to
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
     allow services to draw custom things on text view.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
     Ask JV what the args means if unsure (I'm lazy to document
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
     them, now it is just an experiment...)"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
    | lang annotation |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
    ((lang := codeView language) isNil or:[lang isJava not]) ifTrue:[ ^ self ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
    annotation :=  self annotationAtLine: lineNo.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
    annotation notNil ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
        self drawAnnotationIcon: (ToolbarIconLibrary smalllintWarning16x16)
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
                atX: x y: y  width: w height: h.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
    "Created: / 30-01-2012 / 15:11:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
    "Modified: / 16-09-2013 / 13:36:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   358
!JavaLintService methodsFor:'registering'!
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   359
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   360
registerIn: aCodeView
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   361
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   362
    super registerIn: aCodeView.
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   363
    aCodeView languageHolder addDependent: self.
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   364
    aCodeView classHolder    addDependent: self.
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   365
    aCodeView methodHolder   addDependent: self.
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   366
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   367
    "Created: / 17-09-2013 / 00:31:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   368
! !
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   369
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
JavaLintService initialize!