equal
deleted
inserted
replaced
109 |
109 |
110 def rendering_offset(node_pos: Line.Node_Position): Option[(VSCode_Rendering, Text.Offset)] = |
110 def rendering_offset(node_pos: Line.Node_Position): Option[(VSCode_Rendering, Text.Offset)] = |
111 for { |
111 for { |
112 model <- state.value.models.get(node_pos.name) |
112 model <- state.value.models.get(node_pos.name) |
113 rendering = model.rendering(options) |
113 rendering = model.rendering(options) |
114 offset <- model.doc.offset(node_pos.pos, text_length) |
114 offset <- model.doc.offset(node_pos.pos) |
115 } yield (rendering, offset) |
115 } yield (rendering, offset) |
116 |
116 |
117 |
117 |
118 /* input from client */ |
118 /* input from client */ |
119 |
119 |
132 def update_document(uri: String, text: String) |
132 def update_document(uri: String, text: String) |
133 { |
133 { |
134 state.change(st => |
134 state.change(st => |
135 { |
135 { |
136 val node_name = resources.node_name(uri) |
136 val node_name = resources.node_name(uri) |
137 val model = Document_Model(session, Line.Document(text), node_name, text_length) |
137 val model = Document_Model(session, Line.Document(text, text_length), node_name) |
138 st.copy(models = st.models + (uri -> model)) |
138 st.copy(models = st.models + (uri -> model)) |
139 }) |
139 }) |
140 delay_input.invoke() |
140 delay_input.invoke() |
141 } |
141 } |
142 |
142 |
263 for { |
263 for { |
264 (rendering, offset) <- rendering_offset(node_pos) |
264 (rendering, offset) <- rendering_offset(node_pos) |
265 info <- rendering.tooltip(Text.Range(offset, offset + 1)) |
265 info <- rendering.tooltip(Text.Range(offset, offset + 1)) |
266 } yield { |
266 } yield { |
267 val doc = rendering.model.doc |
267 val doc = rendering.model.doc |
268 val range = doc.range(info.range, text_length) |
268 val range = doc.range(info.range) |
269 val s = Pretty.string_of(info.info, margin = rendering.tooltip_margin) |
269 val s = Pretty.string_of(info.info, margin = rendering.tooltip_margin) |
270 (range, List("```\n" + s + "\n```")) // FIXME proper content format |
270 (range, List("```\n" + s + "\n```")) // FIXME proper content format |
271 } |
271 } |
272 channel.write(Protocol.Hover.reply(id, result)) |
272 channel.write(Protocol.Hover.reply(id, result)) |
273 } |
273 } |