FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
processing/app/src/processing/app/syntax/SyntaxDocument.java at master · orgicus/processing · GitHub
orgicus
processing
Repository navigation
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
processing
/
app
/
src
/
processing
/
app
/
syntax
/
SyntaxDocument.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
166 lines (149 loc) · 5.63 KB
Breadcrumbs
processing
/
app
/
src
/
processing
/
app
/
syntax
/
SyntaxDocument.java
Copy path
File metadata and controls
166 lines (149 loc) · 5.63 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*
* SyntaxDocument.java - Document that can be tokenized
* Copyright (C) 1999 Slava Pestov
*
* You may use and modify this package for any purpose. Redistribution is
* permitted, in both source and binary form, provided that this notice
* remains intact in all source distributions of this package.
*/
package
processing
.
app
.
syntax
;
import
javax
.
swing
.
event
.*;
import
javax
.
swing
.
text
.*;
import
javax
.
swing
.
undo
.
UndoableEdit
;
/**
* A document implementation that can be tokenized by the syntax highlighting
* system.
*
* @author Slava Pestov
* @version $Id$
*/
public
class
SyntaxDocument
extends
PlainDocument
{
/**
* Returns the token marker that is to be used to split lines
* of this document up into tokens. May return null if this
* document is not to be colorized.
*/
public
TokenMarker
getTokenMarker
()
{
return
tokenMarker
;
}
/**
* Sets the token marker that is to be used to split lines of
* this document up into tokens. May throw an exception if
* this is not supported for this type of document.
* @param tm The new token marker
*/
public
void
setTokenMarker
(
TokenMarker
tm
)
{
tokenMarker
=
tm
;
if
(
tm
==
null
)
return
;
tokenMarker
.
insertLines
(
0
,
getDefaultRootElement
()
.
getElementCount
());
tokenizeLines
();
}
/**
* Reparses the document, by passing all lines to the token
* marker. This should be called after the document is first
* loaded.
*/
public
void
tokenizeLines
()
{
tokenizeLines
(
0
,
getDefaultRootElement
().
getElementCount
());
}
/**
* Reparses the document, by passing the specified lines to the
* token marker. This should be called after a large quantity of
* text is first inserted.
* @param start The first line to parse
* @param len The number of lines, after the first one to parse
*/
public
void
tokenizeLines
(
int
start
,
int
len
)
{
if
(
tokenMarker
==
null
|| !
tokenMarker
.
supportsMultilineTokens
())
return
;
Segment
lineSegment
=
new
Segment
();
Element
map
=
getDefaultRootElement
();
len
+=
start
;
try
{
for
(
int
i
=
start
;
i
<
len
;
i
++)
{
Element
lineElement
=
map
.
getElement
(
i
);
int
lineStart
=
lineElement
.
getStartOffset
();
getText
(
lineStart
,
lineElement
.
getEndOffset
()
-
lineStart
-
1
,
lineSegment
);
tokenMarker
.
markTokens
(
lineSegment
,
i
);
}
}
catch
(
BadLocationException
bl
)
{
bl
.
printStackTrace
();
}
}
/**
* Starts a compound edit that can be undone in one operation.
* Subclasses that implement undo should override this method;
* this class has no undo functionality so this method is
* empty.
*/
public
void
beginCompoundEdit
() {}
/**
* Ends a compound edit that can be undone in one operation.
* Subclasses that implement undo should override this method;
* this class has no undo functionality so this method is
* empty.
*/
public
void
endCompoundEdit
() {}
/**
* Adds an undoable edit to this document's undo list. The edit
* should be ignored if something is currently being undone.
* @param edit The undoable edit
*
* @since jEdit 2.2pre1
*/
public
void
addUndoableEdit
(
UndoableEdit
edit
) {}
// protected members
protected
TokenMarker
tokenMarker
;
/**
* We overwrite this method to update the token marker
* state immediately so that any event listeners get a
* consistent token marker.
*/
protected
void
fireInsertUpdate
(
DocumentEvent
evt
)
{
if
(
tokenMarker
!=
null
)
{
DocumentEvent
.
ElementChange
ch
=
evt
.
getChange
(
getDefaultRootElement
());
if
(
ch
!=
null
)
{
tokenMarker
.
insertLines
(
ch
.
getIndex
() +
1
,
ch
.
getChildrenAdded
().
length
-
ch
.
getChildrenRemoved
().
length
);
}
}
super
.
fireInsertUpdate
(
evt
);
}
/**
* We overwrite this method to update the token marker
* state immediately so that any event listeners get a
* consistent token marker.
*/
protected
void
fireRemoveUpdate
(
DocumentEvent
evt
)
{
if
(
tokenMarker
!=
null
)
{
DocumentEvent
.
ElementChange
ch
=
evt
.
getChange
(
getDefaultRootElement
());
if
(
ch
!=
null
)
{
tokenMarker
.
deleteLines
(
ch
.
getIndex
() +
1
,
ch
.
getChildrenRemoved
().
length
-
ch
.
getChildrenAdded
().
length
);
}
}
super
.
fireRemoveUpdate
(
evt
);
}
}
Back
|
FazBrowse Home
|
New Git URL