equal
deleted
inserted
replaced
35 /* plugin instance */ |
35 /* plugin instance */ |
36 |
36 |
37 var plugin: Plugin = null |
37 var plugin: Plugin = null |
38 var session: Session = null |
38 var session: Session = null |
39 |
39 |
40 val thy_load = new JEdit_Thy_Load |
40 def thy_load(): JEdit_Thy_Load = |
41 val thy_info = new Thy_Info(thy_load) |
41 session.thy_load.asInstanceOf[JEdit_Thy_Load] |
42 |
42 |
43 |
43 |
44 /* properties */ |
44 /* properties */ |
45 |
45 |
46 val OPTION_PREFIX = "options.isabelle." |
46 val OPTION_PREFIX = "options.isabelle." |
296 } |
296 } |
297 component.tooltip = "Isabelle logic image" |
297 component.tooltip = "Isabelle logic image" |
298 component |
298 component |
299 } |
299 } |
300 |
300 |
301 def start_session() |
301 def session_args(): List[String] = |
302 { |
302 { |
303 val dirs = Path.split(Isabelle_System.getenv("JEDIT_SESSION_DIRS")) |
|
304 val modes = space_explode(',', Isabelle_System.getenv("JEDIT_PRINT_MODE")).map("-m" + _) |
303 val modes = space_explode(',', Isabelle_System.getenv("JEDIT_PRINT_MODE")).map("-m" + _) |
305 val logic = { |
304 val logic = { |
306 val logic = Property("logic") |
305 val logic = Property("logic") |
307 if (logic != null && logic != "") logic |
306 if (logic != null && logic != "") logic |
308 else Isabelle.default_logic() |
307 else Isabelle.default_logic() |
309 } |
308 } |
310 val name = Path.explode(logic).base.implode // FIXME more robust session name |
309 modes ::: List(logic) |
311 session.start(dirs, name, modes ::: List(logic)) |
310 } |
|
311 |
|
312 def session_content(): Build.Session_Content = |
|
313 { |
|
314 val dirs = Path.split(Isabelle_System.getenv("JEDIT_SESSION_DIRS")) |
|
315 val name = Path.explode(session_args().last).base.implode // FIXME more robust |
|
316 Build.session_content(dirs, name).check_errors |
312 } |
317 } |
313 |
318 |
314 |
319 |
315 /* convenience actions */ |
320 /* convenience actions */ |
316 |
321 |
357 |
362 |
358 val thys = |
363 val thys = |
359 for (buffer <- buffers; model <- Isabelle.document_model(buffer)) |
364 for (buffer <- buffers; model <- Isabelle.document_model(buffer)) |
360 yield model.name |
365 yield model.name |
361 |
366 |
|
367 val thy_info = new Thy_Info(Isabelle.thy_load) |
362 // FIXME avoid I/O in Swing thread!?! |
368 // FIXME avoid I/O in Swing thread!?! |
363 val files = Isabelle.thy_info.dependencies(thys).map(_._1.node). |
369 val files = thy_info.dependencies(thys).map(_._1.node). |
364 filter(file => !loaded_buffer(file) && Isabelle.thy_load.check_file(view, file)) |
370 filter(file => !loaded_buffer(file) && Isabelle.thy_load.check_file(view, file)) |
365 |
371 |
366 if (!files.isEmpty) { |
372 if (!files.isEmpty) { |
367 val files_list = new ListView(files.sorted) |
373 val files_list = new ListView(files.sorted) |
368 for (i <- 0 until files.length) |
374 for (i <- 0 until files.length) |
420 { |
426 { |
421 Swing_Thread.assert() |
427 Swing_Thread.assert() |
422 message match { |
428 message match { |
423 case msg: EditorStarted => |
429 case msg: EditorStarted => |
424 if (Isabelle.Boolean_Property("auto-start")) |
430 if (Isabelle.Boolean_Property("auto-start")) |
425 Isabelle.start_session() |
431 Isabelle.session.start(Isabelle.session_args()) |
426 |
432 |
427 case msg: BufferUpdate |
433 case msg: BufferUpdate |
428 if msg.getWhat == BufferUpdate.LOADED || msg.getWhat == BufferUpdate.PROPERTIES_CHANGED => |
434 if msg.getWhat == BufferUpdate.LOADED || msg.getWhat == BufferUpdate.PROPERTIES_CHANGED => |
429 if (Isabelle.session.is_ready) { |
435 if (Isabelle.session.is_ready) { |
430 val buffer = msg.getBuffer |
436 val buffer = msg.getBuffer |
457 case _ => |
463 case _ => |
458 } |
464 } |
459 } |
465 } |
460 |
466 |
461 override def start() |
467 override def start() |
462 { |
468 { // FIXME more robust error handling |
463 Isabelle.plugin = this |
469 Isabelle.plugin = this |
464 Isabelle.setup_tooltips() |
470 Isabelle.setup_tooltips() |
465 Isabelle_System.init() |
471 Isabelle_System.init() |
466 Isabelle_System.install_fonts() |
472 Isabelle_System.install_fonts() |
467 Isabelle.session = new Session(Isabelle.thy_load) |
473 |
|
474 val content = Isabelle.session_content() |
|
475 val thy_load = new JEdit_Thy_Load(content.loaded_theories, content.syntax) |
|
476 Isabelle.session = new Session(thy_load) |
|
477 |
468 SyntaxUtilities.setStyleExtender(new Token_Markup.Style_Extender) |
478 SyntaxUtilities.setStyleExtender(new Token_Markup.Style_Extender) |
469 if (ModeProvider.instance.isInstanceOf[ModeProvider]) |
479 if (ModeProvider.instance.isInstanceOf[ModeProvider]) |
470 ModeProvider.instance = new Token_Markup.Mode_Provider(ModeProvider.instance) |
480 ModeProvider.instance = new Token_Markup.Mode_Provider(ModeProvider.instance) |
471 Isabelle.session.phase_changed += session_manager |
481 Isabelle.session.phase_changed += session_manager |
472 } |
482 } |