tools/JavaLintService.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 04 Feb 2019 00:24:10 +0000
changeset 3886 292b73957757
parent 3719 b1d6e759426f
permissions -rw-r--r--
Fix initialization of system propertirs ...and use `amd64` consistenly instead of `x86_64`.
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
3418
3df0a2df585e java lint: validate language and source code when running Java lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3214
diff changeset
    14
"{ NameSpace: Smalltalk }"
3df0a2df585e java lint: validate language and source code when running Java lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3214
diff changeset
    15
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
    16
Tools::BackgroundSourceProcessingService subclass:#JavaLintService
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
    17
	instanceVariableNames:'highlighter showingJava'
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:'Debugging'
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'Languages-Java-Tools-Editor-Lint'
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
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
!JavaLintService class methodsFor:'documentation'!
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
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
 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
    28
	      All Rights Reserved
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
 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
    31
 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
    32
 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
    33
 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
    34
 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
    35
 hereby transferred.
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
! !
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
!JavaLintService class methodsFor:'accessing'!
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
debugging
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    ^Debugging == true
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    "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
    45
!
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
debugging: aBoolean
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    Debugging := aBoolean
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    "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
    52
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
label
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    "Answers short label - for UI"
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
    ^'Java - Static Checking'
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
    "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
    61
    "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
    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
priority
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    "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
    66
     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
    67
     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
    68
     priority service processes it"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    ^ 10
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
    "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
    73
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!JavaLintService class methodsFor:'queries'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
isUsefulFor:aCodeView
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    "this filters useful services.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
     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
    80
     for itself - not for subclasses"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
3214
c38fcee7b0da Fixes bad bug in Java thread handling that caused memory/resource leak.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3209
diff changeset
    82
    ^ (self == JavaLintService)
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    "Created: / 24-07-2013 / 11:35:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3214
c38fcee7b0da Fixes bad bug in Java thread handling that caused memory/resource leak.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3209
diff changeset
    85
    "Modified: / 08-08-2014 / 06:53:05 / 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
    86
! !
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
!JavaLintService class methodsFor:'testing'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
isAvailable
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    ^UserPreferences current smallSenseEnabled
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    "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
    95
! !
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
!JavaLintService methodsFor:'accessing'!
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
syntaxHighlighter
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    "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
   101
     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
   102
     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
   103
     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
   104
     highliging of the source code"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   106
    ^ showingJava
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
        ifTrue: [ highlighter ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
        ifFalse: [ nil ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    "Created: / 05-08-2011 / 10:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   111
    "Modified: / 07-08-2014 / 00:33:03 / 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
   112
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   114
!JavaLintService methodsFor:'change & update'!
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   115
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   116
sourceChanged: aBoolean
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   117
    modified := true.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   118
    super sourceChanged: aBoolean
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   119
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   120
    "Created: / 07-08-2014 / 01:10:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   121
!
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   122
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   123
update:something with:aParameter from:changedObject
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   124
    "Invoked when an object that I depend upon sends a change notification."
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   125
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   126
    textView notNil ifTrue:[ 
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   127
        (changedObject == textView and:[something == #sizeOfContents]) ifTrue:[
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   128
            modified := true.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   129
            ^self.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   130
        ].
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   131
        (modified and:[changedObject == textView cursorLineHolder]) ifTrue:[ 
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   132
            self process.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   133
        ].
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   134
    ].
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   135
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   136
    changedObject == codeView ifTrue:[
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   137
        (#(methodHolder classHolder languageHolder) includes: something) ifTrue:[
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   138
            aParameter key removeDependent: self.
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   139
            aParameter value addDependent: self.                         
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   140
        ].
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   141
    ].
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   142
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   143
    (changedObject == codeView languageHolder 
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   144
        or:[changedObject == codeView classHolder
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   145
        or:[changedObject == codeView methodHolder]]) ifTrue:[
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   146
        | lang |
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   147
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   148
        lang := codeView language.
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   149
        showingJava := JavaCompiler notNil and:[lang notNil and:[lang isJava]].
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   150
        ^ self
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   151
    ].    
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   152
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   153
    super update:something with:aParameter from:changedObject
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   154
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   155
    "Modified: / 07-08-2014 / 01:18:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   156
! !
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   157
2734
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
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   163
    showingJava ifFalse:[ ^ false ].
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   164
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
    view == gutterView ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
        button == 1 ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
            lineNr := textView yVisibleToLineNr:y.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
            lineNr notNil ifTrue:[ 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
                ^ self showInfoWindowForLine: lineNr 
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
            ^ false.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
        ].
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
    ^ false
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
    "Created: / 30-01-2012 / 21:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   177
    "Modified: / 21-10-2013 / 15:12:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   178
!
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   179
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   180
linesModifiedFrom:start to:end
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   181
    showingJava ifTrue:[ 
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   182
        (end - start) == 0 ifTrue:[ 
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   183
            "/ Only one like has been modified - edited?
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   184
            "/ Remove all (possible obsolete) error emphasis, but keep
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   185
            "/ annotations...
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   186
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   187
            "/ Does not work yet, we would have to remove problem from
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   188
            "/ highlughter problems too!!
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   189
"/            | line |
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   190
"/
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   191
"/            line := textView list at: start.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   192
"/            line notEmptyOrNil ifTrue:[ 
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   193
"/                highlighter unmark: line from: 1 to: line size.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   194
"/            ].
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   195
        ] ifFalse:[
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   196
            "/ More lines has been modified, trigger compilation
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   197
            self sourceChanged: true.  
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   198
        ].
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   199
    ]
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   200
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   201
    "Created: / 07-08-2014 / 00:57:24 / 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
   202
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
!JavaLintService methodsFor:'initialization'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
initialize
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
    super initialize.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    highlighter := JavaLintHighlighter new.
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   211
    showingJava := false.
2734
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
    "Created: / 05-08-2011 / 11:53:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   214
    "Modified: / 21-10-2013 / 15:11:16 / 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
   215
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
!JavaLintService methodsFor:'private'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
annotationAtLine: lineNo
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
    | annotations |        
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
    (annotations := highlighter annotations) isEmptyOrNil ifTrue:[ ^ nil ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    annotations do:[:a|
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
        | line |
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
        line := a line.    
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
        line > lineNo ifTrue:[ ^ nil ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
        line == lineNo ifTrue:[ ^ a ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
    ^nil
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
    "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
   233
    "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
   234
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   236
rehighlight: delayed
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   237
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   238
    | service |
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   239
    service := self service: SmallSense::CodeHighlightingService name.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   240
    service isNil ifTrue:[
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   241
        service := self service: Tools::CodeHighlightingService name
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   242
    ].
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   243
    service notNil ifTrue:[
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   244
        service sourceChanged: true.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   245
    ]
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   246
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   247
    "Created: / 27-01-2012 / 17:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   248
    "Modified: / 23-09-2013 / 22:27:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   249
!
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   250
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
showInfoWindowForLine: lineNo 
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
    | ann |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
    ann := self annotationAtLine: lineNo.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
    ann isNil ifTrue: [
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
        ^ false
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
    (JavaLintPopupWindow new)
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
        problem: ann problem;
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
        codeView: codeView;
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
        allButOpen;
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
        openWindowAt: (Screen current pointerPosition - (20 @ 20)).
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
    ^ true
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
    "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
   266
    "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
   267
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   269
!JavaLintService methodsFor:'processing'!
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   270
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   271
process
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   272
    showingJava ifTrue:[ 
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   273
        super process
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   274
    ].
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   275
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   276
    "Created: / 07-08-2014 / 00:42:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   277
!
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   278
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   279
process:delayed
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   280
    "Actually process source code. If `delayed` is true, view should be updated
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   281
     asynchronously using #pushUserEvent:. Individual services should override
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   282
     this method.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   283
     
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   284
     NOTE: Do not call this method from custom code directly, always call
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   285
     #processSafely: which handle possible errors and protect against
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   286
     'debugger bomb'"
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   287
3418
3df0a2df585e java lint: validate language and source code when running Java lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3214
diff changeset
   288
    | lang |
3df0a2df585e java lint: validate language and source code when running Java lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3214
diff changeset
   289
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   290
    done := false.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   291
    modified := false.
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   292
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   293
    Delay waitForMilliseconds: 1000."Give user some time to finish coding"
3418
3df0a2df585e java lint: validate language and source code when running Java lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3214
diff changeset
   294
    lang := codeView language.
3df0a2df585e java lint: validate language and source code when running Java lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3214
diff changeset
   295
    lang isJava ifFalse:[ ^ self ].
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   296
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   297
    modified ifFalse:[
3438
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   298
        | list code |
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   299
        list := textView list.
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   300
        list notEmptyOrNil ifTrue:[
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   301
        code := list asStringWithoutEmphasis.
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   302
            code notEmptyOrNil ifTrue:[ 
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   303
                modified ifFalse:[
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   304
                    | problems |
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   305
3438
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   306
                    problems := JavaCompiler new check: code.
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   307
                    modified ifFalse:[ 
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   308
                        highlighter problems: problems.
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   309
                        self rehighlight: delayed  
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   310
                    ].
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   311
                ]
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   312
            ].
3418
3df0a2df585e java lint: validate language and source code when running Java lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3214
diff changeset
   313
        ].
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   314
    ]
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   315
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   316
    "Created: / 07-08-2014 / 00:41:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3438
83b000465fe0 Fix in JavaLintService: handle race condition
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3418
diff changeset
   317
    "Modified: / 14-04-2015 / 18:35:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   318
! !
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   319
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
!JavaLintService methodsFor:'redrawing'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
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
   323
    "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
   324
     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
   325
     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
   326
     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
   327
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   328
    | annotation |
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   330
    showingJava ifFalse:[ ^ self ].
2734
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
    annotation :=  self annotationAtLine: lineNo.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    annotation notNil ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
        self drawAnnotationIcon: (ToolbarIconLibrary smalllintWarning16x16)
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
                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
   336
    ].
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
    "Created: / 30-01-2012 / 15:11:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2882
dc03c9cd404a Optimization in JavaLintService: cache language of the code view in an instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2789
diff changeset
   339
    "Modified: / 21-10-2013 / 15:12:24 / 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
   340
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   342
!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
   343
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   344
registerIn: aCodeView
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   345
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   346
    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
   347
    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
   348
    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
   349
    aCodeView methodHolder   addDependent: self.
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   350
    aCodeView textView cursorLineHolder addDependent: self.
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   351
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   352
    "Created: / 17-09-2013 / 00:31:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   353
    "Modified: / 07-08-2014 / 01:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2890
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   354
!
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   355
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   356
unregister
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   357
    codeView textView cursorLineHolder removeDependent: self.
2890
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   358
    codeView languageHolder removeDependent: self.
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   359
    codeView classHolder    removeDependent: self.
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   360
    codeView methodHolder   removeDependent: self.
3124
553b1c08b6b1 Bugfix in JavaLintService>>unregister: call super unregister at the end of the unregister method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2890
diff changeset
   361
    super unregister.
2890
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   362
96f3d8a73343 Fixed JavaLintService>>#unregister - break dependencies when unregistering
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2882
diff changeset
   363
    "Created: / 24-10-2013 / 23:12:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3209
b96f863a8500 Java lint service now do dry-compilation to get more accurate problem list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3124
diff changeset
   364
    "Modified: / 07-08-2014 / 01:05:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2735
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   365
! !
e20dd8496371 Initial support for source code indexing (for semi-modal navigation)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   366
2771
08ef7d05987b Update JavaLintService after rename of SmallSense::SyntaxHighlightingService...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2741
diff changeset
   367
!JavaLintService class methodsFor:'documentation'!
08ef7d05987b Update JavaLintService after rename of SmallSense::SyntaxHighlightingService...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2741
diff changeset
   368
08ef7d05987b Update JavaLintService after rename of SmallSense::SyntaxHighlightingService...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2741
diff changeset
   369
version_HG
08ef7d05987b Update JavaLintService after rename of SmallSense::SyntaxHighlightingService...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2741
diff changeset
   370
08ef7d05987b Update JavaLintService after rename of SmallSense::SyntaxHighlightingService...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2741
diff changeset
   371
    ^ '$Changeset: <not expanded> $'
08ef7d05987b Update JavaLintService after rename of SmallSense::SyntaxHighlightingService...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2741
diff changeset
   372
! !
08ef7d05987b Update JavaLintService after rename of SmallSense::SyntaxHighlightingService...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2741
diff changeset
   373
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
JavaLintService initialize!