src/Tools/jEdit/src/jedit_sessions.scala
author paulson <lp15@cam.ac.uk>
Wed, 24 Apr 2024 20:56:26 +0100
changeset 80149 40a3fc07a587
parent 78614 4da5cdaa4dcd
permissions -rw-r--r--
More tidying of proofs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62973
744266e32612 clarified modules;
wenzelm
parents: 62972
diff changeset
     1
/*  Title:      Tools/jEdit/src/jedit_sessions.scala
49246
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
     3
65256
c3d6dd17d626 more explicit options;
wenzelm
parents: 65254
diff changeset
     4
Isabelle/jEdit session information, based on implicit process environment
c3d6dd17d626 more explicit options;
wenzelm
parents: 65254
diff changeset
     5
and explicit options.
49246
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
     6
*/
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
     7
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
     8
package isabelle.jedit
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
     9
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
    10
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
    11
import isabelle._
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
    12
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
    13
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73802
diff changeset
    14
object JEdit_Sessions {
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    15
  /* session options */
62972
wenzelm
parents: 62754
diff changeset
    16
73367
77ef8bef0593 clarified signature --- fewer warnings;
wenzelm
parents: 73340
diff changeset
    17
  def session_dirs: List[Path] =
70382
23ba5a638e6d more robust: avoid folding of jEdit file-names wrt. JEDIT_SESSION_DIRS;
wenzelm
parents: 70105
diff changeset
    18
    Path.split(Isabelle_System.getenv("JEDIT_SESSION_DIRS")).filterNot(p => p.implode == "-")
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    19
73367
77ef8bef0593 clarified signature --- fewer warnings;
wenzelm
parents: 73340
diff changeset
    20
  def session_no_build: Boolean =
69854
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    21
    Isabelle_System.getenv("JEDIT_NO_BUILD") == "true"
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    22
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73802
diff changeset
    23
  def session_options(options: Options): Options = {
69854
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    24
    val options1 =
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    25
      Isabelle_System.getenv("JEDIT_BUILD_MODE") match {
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    26
        case "default" => options
70105
eadd87383e30 clarified build of standard heaps;
wenzelm
parents: 69854
diff changeset
    27
        case mode => options.bool.update("system_heaps", mode == "system")
69854
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    28
      }
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    29
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    30
    val options2 =
77483
291f5848bf55 clarified names;
wenzelm
parents: 77414
diff changeset
    31
      Isabelle_System.getenv("JEDIT_PROCESS_POLICY") match {
69854
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    32
        case "" => options1
77483
291f5848bf55 clarified names;
wenzelm
parents: 77414
diff changeset
    33
        case s => options1.string.update("process_policy", s)
69854
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    34
      }
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    35
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    36
    options2
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
    37
  }
69853
f7c9a1be333f more uniform session_system_mode (see also e57416b649d5);
wenzelm
parents: 69758
diff changeset
    38
75817
b702a015fb22 clarified signature;
wenzelm
parents: 75752
diff changeset
    39
  def sessions_structure(
b702a015fb22 clarified signature;
wenzelm
parents: 75752
diff changeset
    40
    options: Options = PIDE.options.value,
b702a015fb22 clarified signature;
wenzelm
parents: 75752
diff changeset
    41
    dirs: List[Path] = session_dirs
b702a015fb22 clarified signature;
wenzelm
parents: 75752
diff changeset
    42
  ): Sessions.Structure = {
69758
34a93af5b969 tuned signature;
wenzelm
parents: 68541
diff changeset
    43
    Sessions.load_structure(session_options(options), dirs = dirs)
75817
b702a015fb22 clarified signature;
wenzelm
parents: 75752
diff changeset
    44
  }
69758
34a93af5b969 tuned signature;
wenzelm
parents: 68541
diff changeset
    45
77022
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    46
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    47
  /* database store */
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    48
78178
a177f71dc79f clarified modules;
wenzelm
parents: 77483
diff changeset
    49
  def sessions_store(options: Options = PIDE.options.value): Store =
a177f71dc79f clarified modules;
wenzelm
parents: 77483
diff changeset
    50
    Store(session_options(options))
76728
421137ff146a clarified signature;
wenzelm
parents: 76679
diff changeset
    51
77022
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    52
  def open_session_context(
78178
a177f71dc79f clarified modules;
wenzelm
parents: 77483
diff changeset
    53
    store: Store = sessions_store(),
77022
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    54
    session_background: Sessions.Background = PIDE.resources.session_background,
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    55
    document_snapshot: Option[Document.Snapshot] = None
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    56
  ): Export.Session_Context = {
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    57
    Export.open_session_context(store, session_background, document_snapshot = document_snapshot)
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    58
  }
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
    59
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    60
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    61
  /* raw logic info */
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    62
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    63
  private val jedit_logic_option = "jedit_logic"
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    64
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    65
  def logic_name(options: Options): String =
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    66
    Isabelle_System.default_logic(
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    67
      Isabelle_System.getenv("JEDIT_LOGIC"),
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    68
      options.string(jedit_logic_option))
64602
8edca3465758 added isabelle jedit -R;
wenzelm
parents: 63986
diff changeset
    69
66988
7f8c1dd7576a support alternative ancestor session;
wenzelm
parents: 66987
diff changeset
    70
  def logic_ancestor: Option[String] = proper_string(Isabelle_System.getenv("JEDIT_LOGIC_ANCESTOR"))
68370
bcdc47c9d4af clarified signature;
wenzelm
parents: 68209
diff changeset
    71
  def logic_requirements: Boolean = Isabelle_System.getenv("JEDIT_LOGIC_REQUIREMENTS") == "true"
68541
12b4b3bc585d command-line option for include_sessions;
wenzelm
parents: 68370
diff changeset
    72
  def logic_include_sessions: List[String] =
12b4b3bc585d command-line option for include_sessions;
wenzelm
parents: 68370
diff changeset
    73
    space_explode(':', Isabelle_System.getenv("JEDIT_INCLUDE_SESSIONS"))
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    74
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    75
  def logic_info(options: Options): Option[Sessions.Info] =
75817
b702a015fb22 clarified signature;
wenzelm
parents: 75752
diff changeset
    76
    try { sessions_structure(options = options).get(logic_name(options)) }
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    77
    catch { case ERROR(_) => None }
64602
8edca3465758 added isabelle jedit -R;
wenzelm
parents: 63986
diff changeset
    78
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    79
  def logic_root(options: Options): Position.T =
68370
bcdc47c9d4af clarified signature;
wenzelm
parents: 68209
diff changeset
    80
    if (logic_requirements) logic_info(options).map(_.pos) getOrElse Position.none
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    81
    else Position.none
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    82
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
    83
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    84
  /* session selectors */
66979
wenzelm
parents: 66978
diff changeset
    85
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    86
  class Selector(
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    87
    val options: Options_Variable,
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    88
    val option_name: String,
76580
699d9a219e45 tuned signature;
wenzelm
parents: 76579
diff changeset
    89
    standalone: Boolean,
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    90
    batches: List[GUI.Selector.Entry[String]]*)
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    91
  extends GUI.Selector[String](batches: _*) with JEdit_Options.Entry {
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    92
    name = option_name
76581
e5bf43eda6ed more uniform tooltip for plugin options dialog;
wenzelm
parents: 76580
diff changeset
    93
    tooltip =
78614
4da5cdaa4dcd clarified signature;
wenzelm
parents: 78178
diff changeset
    94
      if (standalone) Word.capitalized(options.value.description(option_name))
76581
e5bf43eda6ed more uniform tooltip for plugin options dialog;
wenzelm
parents: 76580
diff changeset
    95
      else options.value.check_name(option_name).print_default
66979
wenzelm
parents: 66978
diff changeset
    96
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    97
    override val title: String =
76579
c79b43c1c7ab tuned signature;
wenzelm
parents: 76578
diff changeset
    98
      options.value.check_name(option_name).title_jedit
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
    99
    override def load(): Unit = {
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   100
      val value = options.string(option_name)
77183
45b9bbe6e375 avoid redundant SelectionChanged events;
wenzelm
parents: 77022
diff changeset
   101
      for (entry <- find_value(_ == value) if selection.item != entry) {
45b9bbe6e375 avoid redundant SelectionChanged events;
wenzelm
parents: 77022
diff changeset
   102
        selection.item = entry
45b9bbe6e375 avoid redundant SelectionChanged events;
wenzelm
parents: 77022
diff changeset
   103
      }
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   104
    }
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   105
    override def save(): Unit =
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   106
      for (value <- selection_value) options.string(option_name) = value
75829
b8a4f9b1eed6 clarified signature;
wenzelm
parents: 75828
diff changeset
   107
76580
699d9a219e45 tuned signature;
wenzelm
parents: 76579
diff changeset
   108
    override def changed(): Unit = if (standalone) save()
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   109
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   110
    load()
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   111
  }
76492
e228be7cd375 clarified GUI.Selector, with support for separator as pseudo-entry;
wenzelm
parents: 76391
diff changeset
   112
76679
fdaa17402af3 clarified signature;
wenzelm
parents: 76656
diff changeset
   113
  def logic_selector(options: Options_Variable, standalone: Boolean = false): Selector =
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   114
    GUI_Thread.require {
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   115
      val sessions = sessions_structure(options = options.value)
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   116
      val all_sessions = sessions.imports_topological_order
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   117
      val main_sessions = all_sessions.filter(name => sessions(name).main_group)
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   118
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   119
      val default_entry =
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   120
        GUI.Selector.item_description("", "default (" + logic_name(options.value) + ")")
76492
e228be7cd375 clarified GUI.Selector, with support for separator as pseudo-entry;
wenzelm
parents: 76391
diff changeset
   121
76580
699d9a219e45 tuned signature;
wenzelm
parents: 76579
diff changeset
   122
      new Selector(options, jedit_logic_option, standalone,
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   123
        default_entry :: main_sessions.map(GUI.Selector.item),
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   124
        all_sessions.sorted.map(GUI.Selector.item))
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   125
    }
75828
wenzelm
parents: 75817
diff changeset
   126
76679
fdaa17402af3 clarified signature;
wenzelm
parents: 76656
diff changeset
   127
  def document_selector(options: Options_Variable, standalone: Boolean = false): Selector =
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   128
    GUI_Thread.require {
76742
3f41f3c3696c only show sessions with document setup;
wenzelm
parents: 76729
diff changeset
   129
      val sessions = sessions_structure(options = options.value + "document")
3f41f3c3696c only show sessions with document setup;
wenzelm
parents: 76729
diff changeset
   130
      val all_sessions =
3f41f3c3696c only show sessions with document setup;
wenzelm
parents: 76729
diff changeset
   131
        sessions.build_topological_order.filter(name => sessions(name).documents.nonEmpty).sorted
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   132
      val doc_sessions = all_sessions.filter(name => sessions(name).doc_group)
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   133
76580
699d9a219e45 tuned signature;
wenzelm
parents: 76579
diff changeset
   134
      new Selector(options, "editor_document_session", standalone,
76578
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   135
        doc_sessions.map(GUI.Selector.item),
06b001094ddb more uniform session selectors, with persistent options;
wenzelm
parents: 76504
diff changeset
   136
        all_sessions.map(GUI.Selector.item))
66979
wenzelm
parents: 66978
diff changeset
   137
    }
wenzelm
parents: 66978
diff changeset
   138
wenzelm
parents: 66978
diff changeset
   139
wenzelm
parents: 66978
diff changeset
   140
  /* session build process */
64602
8edca3465758 added isabelle jedit -R;
wenzelm
parents: 63986
diff changeset
   141
76656
a8f452f7c503 clarified names;
wenzelm
parents: 76655
diff changeset
   142
  def session_background(options: Options): Sessions.Background =
a8f452f7c503 clarified names;
wenzelm
parents: 76655
diff changeset
   143
    Sessions.background(options,
73367
77ef8bef0593 clarified signature --- fewer warnings;
wenzelm
parents: 73340
diff changeset
   144
      dirs = JEdit_Sessions.session_dirs,
68541
12b4b3bc585d command-line option for include_sessions;
wenzelm
parents: 68370
diff changeset
   145
      include_sessions = logic_include_sessions,
68370
bcdc47c9d4af clarified signature;
wenzelm
parents: 68209
diff changeset
   146
      session = logic_name(options),
bcdc47c9d4af clarified signature;
wenzelm
parents: 68209
diff changeset
   147
      session_ancestor = logic_ancestor,
70683
8c7706b053c7 find theory files via session structure: much faster Prover IDE startup;
wenzelm
parents: 70382
diff changeset
   148
      session_requirements = logic_requirements)
65571
923e32ad0976 clarified modules;
wenzelm
parents: 65519
diff changeset
   149
65256
c3d6dd17d626 more explicit options;
wenzelm
parents: 65254
diff changeset
   150
  def session_build(
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73802
diff changeset
   151
    options: Options,
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73802
diff changeset
   152
    progress: Progress = new Progress,
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73802
diff changeset
   153
    no_build: Boolean = false
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73802
diff changeset
   154
  ): Int = {
71981
0be06f99b210 clarified signature;
wenzelm
parents: 71896
diff changeset
   155
    Build.build(session_options(options),
75752
a0253e471aa4 clarified signature;
wenzelm
parents: 75393
diff changeset
   156
      selection = Sessions.Selection.session(PIDE.resources.session_base.session_name),
73367
77ef8bef0593 clarified signature --- fewer warnings;
wenzelm
parents: 73340
diff changeset
   157
      progress = progress, build_heap = true, no_build = no_build, dirs = session_dirs,
76656
a8f452f7c503 clarified names;
wenzelm
parents: 76655
diff changeset
   158
      infos = PIDE.resources.session_background.infos).rc
62972
wenzelm
parents: 62754
diff changeset
   159
  }
wenzelm
parents: 62754
diff changeset
   160
76728
421137ff146a clarified signature;
wenzelm
parents: 76679
diff changeset
   161
  def session_start(options: Options): Unit = {
71604
c6fa217c9d5e clarified signature: more robust startup_join;
wenzelm
parents: 71598
diff changeset
   162
    val session = PIDE.session
76656
a8f452f7c503 clarified names;
wenzelm
parents: 76655
diff changeset
   163
    val session_background = PIDE.resources.session_background
77022
ac5ebdf19861 clarified signature;
wenzelm
parents: 76742
diff changeset
   164
    val store = sessions_store(options = options)
77414
0d5994eef9e6 clarified signature: allow to provide session_heaps by different means, e.g. from tmp directory or alternative session structure;
wenzelm
parents: 77183
diff changeset
   165
    val session_heaps =
0d5994eef9e6 clarified signature: allow to provide session_heaps by different means, e.g. from tmp directory or alternative session structure;
wenzelm
parents: 77183
diff changeset
   166
      ML_Process.session_heaps(store, session_background, logic = session_background.session_name)
69854
cc0b3e177b49 system option "system_heaps" supersedes various command-line options for "system build mode";
wenzelm
parents: 69853
diff changeset
   167
71604
c6fa217c9d5e clarified signature: more robust startup_join;
wenzelm
parents: 71598
diff changeset
   168
    session.phase_changed += PIDE.plugin.session_phase_changed
c6fa217c9d5e clarified signature: more robust startup_join;
wenzelm
parents: 71598
diff changeset
   169
77414
0d5994eef9e6 clarified signature: allow to provide session_heaps by different means, e.g. from tmp directory or alternative session structure;
wenzelm
parents: 77183
diff changeset
   170
    Isabelle_Process.start(store.options, session, session_background, session_heaps,
66973
829c3133c4ca added isabelle jedit options -B, -P, clarified -R;
wenzelm
parents: 66965
diff changeset
   171
      modes =
76728
421137ff146a clarified signature;
wenzelm
parents: 76679
diff changeset
   172
        (space_explode(',', store.options.string("jedit_print_mode")) :::
71604
c6fa217c9d5e clarified signature: more robust startup_join;
wenzelm
parents: 71598
diff changeset
   173
         space_explode(',', Isabelle_System.getenv("JEDIT_PRINT_MODE"))).reverse)
62972
wenzelm
parents: 62754
diff changeset
   174
  }
49246
248e66e8321f more systematic JEdit_Options.make_component;
wenzelm
parents:
diff changeset
   175
}