author | wenzelm |
Thu, 07 Aug 2025 22:42:21 +0200 | |
changeset 82968 | b2b88d5b01b6 |
parent 82949 | 728762181377 |
permissions | -rw-r--r-- |
52971
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
1 |
/* Title: Pure/PIDE/editor.scala |
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
2 |
Author: Makarius |
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
3 |
|
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
4 |
General editor operations. |
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
5 |
*/ |
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
6 |
|
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
7 |
package isabelle |
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
8 |
|
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
9 |
|
82928
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
10 |
object Editor { |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
11 |
/* output messages */ |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
12 |
|
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
13 |
object Output { |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
14 |
val none: Output = Output(defined = false) |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
15 |
val init: Output = Output() |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
16 |
} |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
17 |
|
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
18 |
sealed case class Output( |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
19 |
results: Command.Results = Command.Results.empty, |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
20 |
messages: List[XML.Elem] = Nil, |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
21 |
defined: Boolean = true |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
22 |
) |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
23 |
} |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
24 |
|
75393 | 25 |
abstract class Editor[Context] { |
76794 | 26 |
/* PIDE session and document model */ |
66082 | 27 |
|
52971
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
28 |
def session: Session |
66084 | 29 |
def flush(): Unit |
54461 | 30 |
def invoke(): Unit |
66101
0f0f294e314f
maintain overlays within main state of document models;
wenzelm
parents:
66094
diff
changeset
|
31 |
|
76794 | 32 |
def get_models(): Iterable[Document.Model] |
33 |
||
34 |
||
76609
cc9ddf373bd2
maintain global state of document editor views, notably for is_active operation;
wenzelm
parents:
75393
diff
changeset
|
35 |
/* document editor */ |
cc9ddf373bd2
maintain global state of document editor views, notably for is_active operation;
wenzelm
parents:
75393
diff
changeset
|
36 |
|
cc9ddf373bd2
maintain global state of document editor views, notably for is_active operation;
wenzelm
parents:
75393
diff
changeset
|
37 |
protected val document_editor: Synchronized[Document_Editor.State] = |
cc9ddf373bd2
maintain global state of document editor views, notably for is_active operation;
wenzelm
parents:
75393
diff
changeset
|
38 |
Synchronized(Document_Editor.State()) |
cc9ddf373bd2
maintain global state of document editor views, notably for is_active operation;
wenzelm
parents:
75393
diff
changeset
|
39 |
|
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
40 |
protected def document_state(): Document_Editor.State = document_editor.value |
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
41 |
|
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
42 |
protected def document_state_changed(): Unit = {} |
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
43 |
private def document_state_change(f: Document_Editor.State => Document_Editor.State): Unit = { |
76705
ddf5764684dd
proper state change, e.g. on open/close of "Document" panel;
wenzelm
parents:
76701
diff
changeset
|
44 |
val changed = |
ddf5764684dd
proper state change, e.g. on open/close of "Document" panel;
wenzelm
parents:
76701
diff
changeset
|
45 |
document_editor.change_result { st => |
ddf5764684dd
proper state change, e.g. on open/close of "Document" panel;
wenzelm
parents:
76701
diff
changeset
|
46 |
val st1 = f(st) |
76725
c8d5cc19270a
more thorough GUI updates, notably for multiple Document dockables;
wenzelm
parents:
76720
diff
changeset
|
47 |
val changed = |
c8d5cc19270a
more thorough GUI updates, notably for multiple Document dockables;
wenzelm
parents:
76720
diff
changeset
|
48 |
st.active_document_theories != st1.active_document_theories || |
76739
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
49 |
st.selection != st1.selection |
76725
c8d5cc19270a
more thorough GUI updates, notably for multiple Document dockables;
wenzelm
parents:
76720
diff
changeset
|
50 |
(changed, st1) |
76705
ddf5764684dd
proper state change, e.g. on open/close of "Document" panel;
wenzelm
parents:
76701
diff
changeset
|
51 |
} |
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
52 |
if (changed) document_state_changed() |
76705
ddf5764684dd
proper state change, e.g. on open/close of "Document" panel;
wenzelm
parents:
76701
diff
changeset
|
53 |
} |
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
54 |
|
77144
42c3970e1ac1
clarified Document_Editor.Session: more explicit types, more robust operations;
wenzelm
parents:
77142
diff
changeset
|
55 |
def document_session(): Document_Editor.Session = |
77161
913c781ff6ba
support document preparation from already loaded theories;
wenzelm
parents:
77144
diff
changeset
|
56 |
document_state().session(session) |
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
57 |
|
76739
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
58 |
def document_required(): List[Document.Node.Name] = { |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
59 |
val st = document_state() |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
60 |
if (st.is_active) { |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
61 |
for { |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
62 |
a <- st.all_document_theories |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
63 |
b = session.resources.migrate_name(a) |
77197
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
64 |
if st.selection(b.theory) |
76739
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
65 |
} yield b |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
66 |
} |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
67 |
else Nil |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
68 |
} |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
69 |
|
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
70 |
def document_node_required(name: Document.Node.Name): Boolean = { |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
71 |
val st = document_state() |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
72 |
st.is_active && |
77197
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
73 |
st.selection.contains(name.theory) && |
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
74 |
st.all_document_theories.exists(a => a.theory == name.theory) |
76739
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
75 |
} |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
76 |
|
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
77 |
def document_theories(): List[Document.Node.Name] = |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
78 |
document_state().active_document_theories.map(session.resources.migrate_name) |
cb72b5996520
proper migrate_name between different kinds of Resources, notably for Windows;
wenzelm
parents:
76732
diff
changeset
|
79 |
|
77197
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
80 |
def document_selection(): Set[String] = document_state().selection |
76716
a7602257a825
clarified state document nodes for Theories_Status / Document_Dockable;
wenzelm
parents:
76715
diff
changeset
|
81 |
|
76701 | 82 |
def document_setup(background: Option[Sessions.Background]): Unit = |
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
83 |
document_state_change(_.copy(session_background = background)) |
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
84 |
|
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
85 |
def document_select( |
77197
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
86 |
theories: Iterable[String], |
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
87 |
set: Boolean = false, |
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
88 |
toggle: Boolean = false |
77197
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
89 |
): Unit = document_state_change(_.select(theories, set = set, toggle = toggle)) |
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
90 |
|
76720 | 91 |
def document_select_all(set: Boolean = false): Unit = |
77197
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
92 |
document_state_change(st => |
a541da01ba67
clarified signature selection: SortedSet[String], which fits better to stored json and works properly on Windows (NB: document theories have an authentic session-theory name);
wenzelm
parents:
77161
diff
changeset
|
93 |
st.select(st.active_document_theories.map(_.theory), set = set)) |
76720 | 94 |
|
76715
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
95 |
def document_init(id: AnyRef): Unit = document_state_change(_.register_view(id)) |
bf5ff407f32f
clarified state of document model vs. document editor selection (again, see also a9d52d02bd83);
wenzelm
parents:
76705
diff
changeset
|
96 |
def document_exit(id: AnyRef): Unit = document_state_change(_.unregister_view(id)) |
76609
cc9ddf373bd2
maintain global state of document editor views, notably for is_active operation;
wenzelm
parents:
75393
diff
changeset
|
97 |
|
cc9ddf373bd2
maintain global state of document editor views, notably for is_active operation;
wenzelm
parents:
75393
diff
changeset
|
98 |
|
66101
0f0f294e314f
maintain overlays within main state of document models;
wenzelm
parents:
66094
diff
changeset
|
99 |
/* current situation */ |
0f0f294e314f
maintain overlays within main state of document models;
wenzelm
parents:
66094
diff
changeset
|
100 |
|
52971
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
101 |
def current_node(context: Context): Option[Document.Node.Name] |
52978 | 102 |
def current_node_snapshot(context: Context): Option[Document.Snapshot] |
52974 | 103 |
def node_snapshot(name: Document.Node.Name): Document.Snapshot |
53844
71f103629327
skip ignored commands, similar to former proper_command_at (see d68ea01d5084) -- relevant to Output, Query_Operation etc.;
wenzelm
parents:
52980
diff
changeset
|
104 |
def current_command(context: Context, snapshot: Document.Snapshot): Option[Command] |
52977
15254e32d299
central management of Document.Overlays, independent of Document_Model;
wenzelm
parents:
52974
diff
changeset
|
105 |
|
66082 | 106 |
|
82925 | 107 |
/* output messages */ |
108 |
||
109 |
def output_state(): Boolean |
|
110 |
||
82928
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
111 |
def output( |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
112 |
snapshot: Document.Snapshot, |
82946
962b73cc57dc
clarified signature: more self-contained operation;
wenzelm
parents:
82945
diff
changeset
|
113 |
caret_offset: Text.Offset, |
82928
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
114 |
restriction: Option[Set[Command]] = None |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
115 |
): Editor.Output = { |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
116 |
if (snapshot.is_outdated) Editor.Output.none |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
117 |
else { |
82946
962b73cc57dc
clarified signature: more self-contained operation;
wenzelm
parents:
82945
diff
changeset
|
118 |
val thy_command_range = snapshot.loaded_theory_command(caret_offset) |
962b73cc57dc
clarified signature: more self-contained operation;
wenzelm
parents:
82945
diff
changeset
|
119 |
val thy_command = thy_command_range.map(_._1) |
82935
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
120 |
|
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
121 |
def filter(msg: XML.Elem): Boolean = |
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
122 |
(for { |
82946
962b73cc57dc
clarified signature: more self-contained operation;
wenzelm
parents:
82945
diff
changeset
|
123 |
(command, command_range) <- thy_command_range |
82949 | 124 |
msg_offset <- Position.Offset.unapply(msg.markup.properties) |
125 |
} yield command_range.contains(command.chunk.decode(msg_offset))) getOrElse true |
|
82935
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
126 |
|
82946
962b73cc57dc
clarified signature: more self-contained operation;
wenzelm
parents:
82945
diff
changeset
|
127 |
thy_command orElse snapshot.current_command(snapshot.node_name, caret_offset) match { |
82928
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
128 |
case None => Editor.Output.init |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
129 |
case Some(command) => |
82935
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
130 |
if (thy_command.isDefined || restriction.isEmpty || restriction.get.contains(command)) { |
82928
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
131 |
val results = snapshot.command_results(command) |
82930 | 132 |
val messages = { |
82935
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
133 |
val (states, other) = { |
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
134 |
List.from( |
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
135 |
for ((_, msg) <- results.iterator if !Protocol.is_result(msg) && filter(msg)) |
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
136 |
yield msg).partition(Protocol.is_state) |
2b7080493211
more accurate output, based on persistent "command_range" markup;
wenzelm
parents:
82930
diff
changeset
|
137 |
} |
82930 | 138 |
val (urgent, regular) = other.partition(Protocol.is_urgent) |
139 |
urgent ::: (if (output_state()) states else Nil) ::: regular |
|
140 |
} |
|
82928
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
141 |
Editor.Output(results = results, messages = messages) |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
142 |
} |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
143 |
else Editor.Output.none |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
144 |
} |
90e4e9091531
clarified Editor.Output: more uniform handling in Isabelle/jEdit and Isabelle/VSCode;
wenzelm
parents:
82926
diff
changeset
|
145 |
} |
82926 | 146 |
} |
147 |
||
82925 | 148 |
|
66082 | 149 |
/* overlays */ |
150 |
||
66101
0f0f294e314f
maintain overlays within main state of document models;
wenzelm
parents:
66094
diff
changeset
|
151 |
def node_overlays(name: Document.Node.Name): Document.Node.Overlays |
73340 | 152 |
def insert_overlay(command: Command, fn: String, args: List[String]): Unit |
153 |
def remove_overlay(command: Command, fn: String, args: List[String]): Unit |
|
66082 | 154 |
|
155 |
||
156 |
/* hyperlinks */ |
|
52980 | 157 |
|
75393 | 158 |
abstract class Hyperlink { |
64663 | 159 |
def external: Boolean = false |
56494
1b74abf064e1
avoid confusion about pointless cursor movement with external links;
wenzelm
parents:
55884
diff
changeset
|
160 |
def follow(context: Context): Unit |
1b74abf064e1
avoid confusion about pointless cursor movement with external links;
wenzelm
parents:
55884
diff
changeset
|
161 |
} |
66084 | 162 |
|
52980 | 163 |
def hyperlink_command( |
64664 | 164 |
focus: Boolean, snapshot: Document.Snapshot, id: Document_ID.Generic, offset: Symbol.Offset = 0) |
60893 | 165 |
: Option[Hyperlink] |
66094 | 166 |
|
167 |
||
168 |
/* dispatcher thread */ |
|
169 |
||
170 |
def assert_dispatcher[A](body: => A): A |
|
171 |
def require_dispatcher[A](body: => A): A |
|
172 |
def send_dispatcher(body: => Unit): Unit |
|
173 |
def send_wait_dispatcher(body: => Unit): Unit |
|
52971
31926d2c04ee
tuned signature -- more abstract PIDE editor operations;
wenzelm
parents:
diff
changeset
|
174 |
} |